grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026B ×v”•?Ú„mã@sRddlZddlZddlmZddddddgZd Zd Zd ZGd d „d eƒZGdd„deƒZ Gdd„deƒZ Gdd„deƒZ Gdd„deƒZ ee efZdZdZGdd„dƒZy ddlZWnek rÌdZYn0XejZGdd„deƒZe d¡ee eejfZdadd„Zdadd„Zdd„Zdd„Zdd „Z d(d#d$„Z!d%d&„Z"e#d'k�rNe"ƒdS))éN)Ú_GLOBAL_DEFAULT_TIMEOUTÚFTPÚ error_replyÚ error_tempÚ error_permÚ error_protoÚ all_errorsééi c@s eZdZdS)ÚErrorN)Ú__name__Ú __module__Ú __qualname__©rrú+/opt/alt/python37/lib64/python3.7/ftplib.pyr 9sr c@s eZdZdS)rN)r r rrrrrr:sc@s eZdZdS)rN)r r rrrrrr;sc@s eZdZdS)rN)r r rrrrrr<sc@s eZdZdS)rN)r r rrrrrr=sz s c@s¤eZdZdZdZeZeZdZ dZ dZ dZ dZ dZddddedfdd„Zd d „Zd d „Zd[dd„Zdd„Zdd„ZeZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Z d(d)„Z!d*d+„Z"d,d-„Z#d.d/„Z$d0d1„Z%d\d2d3„Z&d]d4d5„Z'd^d6d7„Z(d_d9d:„Z)d`d;d<„Z*dad=d>„Z+dbd?d@„Z,dAdB„Z-dCdD„Z.dEdF„Z/dgfdGdH„Z0dIdJ„Z1dKdL„Z2dMdN„Z3dOdP„Z4dQdR„Z5dSdT„Z6dUdV„Z7dWdX„Z8dYdZ„Z9dS)crrÚNr zlatin-1FcCs0||_||_|r,| |¡|r,| |||¡dS)N)Úsource_addressÚtimeoutÚconnectÚlogin)ÚselfÚhostÚuserÚpasswdÚacctrrrrrÚ__init__rs  z FTP.__init__cCs|S)Nr)rrrrÚ __enter__{sz FTP.__enter__c GsN|jdk rJz*y | ¡Wnttfk r0YnXWd|jdk rH| ¡XdS)N)ÚsockÚquitÚOSErrorÚEOFErrorÚclose)rÚargsrrrÚ__exit__s    z FTP.__exit__éüÿÿcCs„|dkr||_|dkr||_|dkr*||_|dk r8||_tj|j|jf|j|jd�|_|jj|_|jj d|j d�|_ |  ¡|_ |j S)Nrriüÿÿ)rÚr)Úencoding)rÚportrrÚsocketÚcreate_connectionrZfamilyÚafÚmakefiler&ÚfileÚgetrespÚwelcome)rrr'rrrrrr‰s   z FTP.connectcCs|jrtd| |j¡ƒ|jS)Nz *welcome*)Ú debuggingÚprintÚsanitizer.)rrrrÚ getwelcome szFTP.getwelcomecCs ||_dS)N)r/)rÚlevelrrrÚset_debuglevel§szFTP.set_debuglevelcCs ||_dS)N)Ú passiveserver)rÚvalrrrÚset_pasv°sz FTP.set_pasvcCsJ|dd…dkrBt| d¡ƒ}|dd…d|d||d…}t|ƒS)Né>úpass úPASS z Ú*)ÚlenÚrstripÚrepr)rÚsÚirrrr1·s$z FTP.sanitizecCsRd|ksd|krtdƒ‚|t}|jdkr:td| |¡ƒ|j | |j¡¡dS)Nú Ú z4an illegal newline character should not be containedr z*put*) Ú ValueErrorÚCRLFr/r0r1rÚsendallÚencoder&)rÚlinerrrÚputline¾s  z FTP.putlinecCs$|jrtd| |¡ƒ| |¡dS)Nz*cmd*)r/r0r1rH)rrGrrrÚputcmdÇsz FTP.putcmdcCsŽ|j |jd¡}t|ƒ|jkr.td|jƒ‚|jdkrHtd| |¡ƒ|sPt‚|dd…t krn|dd…}n|dd…t krŠ|dd…}|S)Nr zgot more than %d bytesz*get*éþÿÿÿéÿÿÿÿ) r,ÚreadlineÚmaxliner<r r/r0r1r rD)rrGrrrÚgetlineÍs  z FTP.getlinecCsd| ¡}|dd…dkr`|dd…}x:| ¡}|d|}|dd…|kr&|dd…dkr&Pq&W|S)Nééú-rB)rN)rrGÚcodeZnextlinerrrÚ getmultilineßs  zFTP.getmultilinecCsp| ¡}|jrtd| |¡ƒ|dd…|_|dd…}|dkrD|S|dkrTt|ƒ‚|dkrdt|ƒ‚t|ƒ‚dS)Nz*resp*rOr >Ú3Ú2Ú1Ú4Ú5)rSr/r0r1Zlastresprrr)rÚrespÚcrrrr-ís z FTP.getrespcCs$| ¡}|dd…dkr t|ƒ‚|S)Nr rU)r-r)rrYrrrÚvoidrespûsz FTP.voidrespcCsTdt}|jdkr"td| |¡ƒ|j |t¡| ¡}|dd…dkrPt|ƒ‚|S)NsABORr z *put urgent*rO>Ú426Ú225Ú226) ÚB_CRLFr/r0r1rrEÚMSG_OOBrSr)rrGrYrrrÚaborts z FTP.abortcCs| |¡| ¡S)N)rIr-)rÚcmdrrrÚsendcmds z FTP.sendcmdcCs| |¡| ¡S)N)rIr[)rrbrrrÚvoidcmds z FTP.voidcmdcCsB| d¡}t|dƒt|dƒg}||}dd |¡}| |¡S)NÚ.ézPORT ú,)Úsplitr>Újoinrd)rrr'ZhbytesZpbytesÚbytesrbrrrÚsendports  z FTP.sendportcCsbd}|jtjkrd}|jtjkr$d}|dkr4tdƒ‚dt|ƒ|t|ƒdg}dd |¡}| |¡S)Nrr ézunsupported address familyrzEPRT ú|)r*r(ÚAF_INETZAF_INET6rr>rird)rrr'r*ZfieldsrbrrrÚsendeprt$s  z FTP.sendeprtc Csd}d}xˆt dd|jtjdtj¡D]j}|\}}}}}yt |||¡}| |¡Wn8tk rŠ} z| }|rt| ¡d}w$Wdd} ~ XYnXPq$W|dkr°|dk r¨|‚ntdƒ‚| d¡|  ¡d} |j   ¡d} |jtj krî|  | | ¡} n |  | | ¡} |jtk �r| |j¡|S)Nrz!getaddrinfo returns an empty listr )r(Z getaddrinfor*Z SOCK_STREAMZ AI_PASSIVEZbindrr!ZlistenZ getsocknamerrnrkrorrÚ settimeout) rÚerrrZresr*ZsocktypeÚprotoZ canonnameZsaÚ_r'rrYrrrÚmakeport1s6       z FTP.makeportcCs\|jtjkr:t| d¡ƒ\}}|jr*|}qT|j ¡d}nt| d¡|j ¡ƒ\}}||fS)NÚPASVrZEPSV) r*r(rnÚparse227rcÚtrust_server_pasv_ipv4_addressrZ getpeernameÚparse229)rZuntrusted_hostr'rrrrÚmakepasvQs z FTP.makepasvc Cs6d}|jr”| ¡\}}tj||f|j|jd�}yL|dk rF| d|¡| |¡}|ddkrd| ¡}|ddkrxt|ƒ‚Wn|  ¡‚YnXn€|  ¡�r}|dk r´| d|¡| |¡}|ddkrÒ| ¡}|ddkræt|ƒ‚|  ¡\}} |jt k �r |  |j¡WdQRX|dd…dk�r.t|ƒ}||fS)N)rzREST %srrUrVrOÚ150)r5ryr(r)rrrcr-rr!rtZacceptrrpÚparse150) rrbÚrestÚsizerr'ÚconnrYrZsockaddrrrrÚ ntransfercmd]s<             zFTP.ntransfercmdcCs| ||¡dS)Nr)r)rrbr|rrrÚ transfercmd”szFTP.transfercmdcCsŠ|sd}|sd}|sd}|dkr0|dkr0|d}| d|¡}|ddkrX| d|¡}|ddkrr| d |¡}|dd kr†t|ƒ‚|S) NZ anonymousr>rrQz anonymous@zUSER rrTzPASS zACCT rU)rcr)rrrrrYrrrr˜s    z FTP.loginé c Csb| d¡| ||¡�>}x| |¡}|s*P||ƒqWtdk rPt|tƒrP| ¡WdQRX| ¡S)NzTYPE I)rdr€ZrecvÚ _SSLSocketÚ isinstanceÚunwrapr[)rrbÚcallbackÚ blocksizer|r~ÚdatarrrÚ retrbinary²s   zFTP.retrbinaryc Csü|dkr t}| d¡}| |¡�Î}|jd|jd��²}x�| |jd¡}t|ƒ|jkrbtd|jƒ‚|j dkrzt dt |ƒƒ|s€P|dd…t krž|dd…}n|d d…d krº|dd …}||ƒq6Wt dk ràt|t ƒrà| ¡WdQRXWdQRX| ¡S) NzTYPE Ar%)r&r zgot more than %d bytesrlz*retr*rJrKrB)Ú print_linercr€r+r&rLrMr<r r/r0r>rDr‚rƒr„r[)rrbr…rYr~ÚfprGrrrÚ retrlinesÌs*      z FTP.retrlinesc Csp| d¡| ||¡�L}x*| |¡}|s*P| |¡|r||ƒqWtdk r^t|tƒr^| ¡WdQRX| ¡S)NzTYPE I)rdr€ÚreadrEr‚rƒr„r[)rrbrŠr†r…r|r~ÚbufrrrÚ storbinaryïs    zFTP.storbinaryc CsÀ| d¡| |¡�ž}x|| |jd¡}t|ƒ|jkrDtd|jƒ‚|sJP|dd…tkrz|dtkrr|dd…}|t}| |¡|r||ƒqWtdk r®t |tƒr®|  ¡WdQRX|  ¡S)NzTYPE Ar zgot more than %d bytesrJrK) rdr€rLrMr<r r_rEr‚rƒr„r[)rrbrŠr…r~r�rrrÚ storlines s$     z FTP.storlinescCsd|}| |¡S)NzACCT )rd)rZpasswordrbrrrr+szFTP.acctcGs4d}x|D]}|d|}q Wg}| ||j¡|S)NZNLSTú )r‹Úappend)rr"rbÚargÚfilesrrrÚnlst0s  zFTP.nlstcGsld}d}|dd…r>t|dƒtdƒkr>|dd…|d}}x|D]}|rD|d|}qDW| ||¡dS)NZLISTrKrr�)Útyper‹)rr"rbÚfuncr’rrrÚdir9s  zFTP.dirc cs®|r| dd |¡d¡|r*d|}nd}g}| ||j¡xh|D]`}| t¡ d¡\}}}i} x6|dd… d¡D] } |  d¡\} }} | | |  ¡<qxW|| fVqFWdS)Nz OPTS MLST ú;zMLSD %sZMLSDr�rKú=) rcrir‹r‘r=rDÚ partitionrhÚlower) rÚpathZfactsrbÚlinesrGZ facts_foundrsÚnameÚentryZfactÚkeyÚvaluerrrÚmlsdHs   zFTP.mlsdcCs0| d|¡}|ddkr"t|ƒ‚| d|¡S)NzRNFR rrTzRNTO )rcrrd)rZfromnameZtonamerYrrrÚrenameds z FTP.renamecCs.| d|¡}|dd…dkr"|St|ƒ‚dS)NzDELE rO>Ú250Ú200)rcr)rÚfilenamerYrrrÚdeleteksz FTP.deletec Csn|dkrPy | d¡Stk rL}z|jddd…dkr<‚Wdd}~XYq\Xn |dkr\d}d|}| |¡S) Nz..ZCDUPrrOÚ500rrezCWD )rdrr")rÚdirnameÚmsgrbrrrÚcwdss zFTP.cwdcCs:| d|¡}|dd…dkr6|dd… ¡}t|ƒSdS)NzSIZE rOZ213)rcÚstripÚint)rr¦rYr?rrrr}€szFTP.sizecCs$| d|¡}| d¡sdSt|ƒS)NzMKD Ú257r)rdÚ startswithÚparse257)rr©rYrrrÚmkdˆs zFTP.mkdcCs| d|¡S)NzRMD )rd)rr©rrrÚrmd‘szFTP.rmdcCs | d¡}| d¡sdSt|ƒS)NZPWDr®r)rdr¯r°)rrYrrrÚpwd•s  zFTP.pwdcCs| d¡}| ¡|S)NZQUIT)rdr!)rrYrrrržs zFTP.quitcCsDz |j}d|_|dk r| ¡Wd|j}d|_|dk r>| ¡XdS)N)r,r!r)rr,rrrrr!¤s z FTP.close)rrr$N)N)N)rrr)r�N)N)r�NN)N):r r rr/rÚFTP_PORTr'ÚMAXLINErMrr,r.r5r&rwrrrr#rr2r4Údebugr7r1rHrIrNrSr-r[rarcrdrkrortryrr€rrˆr‹rŽr�rr”r—r¢r£r§r«r}r±r²r³rr!rrrrrJsj      7    #      c @sjeZdZejZdddddddedf dd„Zddd„Zdd „Z d d „Z d d „Z dd„Z ddd„Z dd„ZdS)ÚFTP_TLSrNc Cs¢|dk r|dk rtdƒ‚|dk r0|dk r0tdƒ‚|dk s@|dk rVddl} |  dtd¡||_||_|dkr|tj|j||d�}||_ d|_ t   ||||||| ¡dS)Nz4context and keyfile arguments are mutually exclusivez5context and certfile arguments are mutually exclusiverzAkeyfile and certfile are deprecated, use a custom context insteadrl)ÚcertfileÚkeyfileF) rCÚwarningsÚwarnÚDeprecationWarningr¹r¸ÚsslZ_create_stdlib_contextÚ ssl_versionÚcontextÚ_prot_prr) rrrrrr¹r¸r¿rrrºrrrrÛs"zFTP_TLS.__init__TcCs*|rt|jtjƒs| ¡t ||||¡S)N)rƒrr½Ú SSLSocketÚauthrr)rrrrZsecurerrrròsz FTP_TLS.logincCsft|jtjƒrtdƒ‚|jtjkr.| d¡}n | d¡}|jj |j|j d�|_|jj d|j d�|_ |S)NzAlready using TLSzAUTH TLSzAUTH SSL)Úserver_hostnamer%)Úmoder&)rƒrr½rÁrCr¾Z PROTOCOL_TLSrdr¿Ú wrap_socketrr+r&r,)rrYrrrrÂ÷s     z FTP_TLS.authcCs0t|jtjƒstdƒ‚| d¡}|j ¡|_|S)Nz not using TLSZCCC)rƒrr½rÁrCrdr„)rrYrrrÚcccs   z FTP_TLS.ccccCs| d¡| d¡}d|_|S)NzPBSZ 0zPROT PT)rdrÀ)rrYrrrÚprot_p s  zFTP_TLS.prot_pcCs| d¡}d|_|S)NzPROT CF)rdrÀ)rrYrrrÚprot_cs zFTP_TLS.prot_ccCs2t |||¡\}}|jr*|jj||jd�}||fS)N)rÃ)rrrÀr¿rÅr)rrbr|r~r}rrrr$s  zFTP_TLS.ntransfercmdcCs8dt}|j |¡| ¡}|dd…dkr4t|ƒ‚|S)NsABORrO>r\r]r^)r_rrErSr)rrGrYrrrra+s  z FTP_TLS.abort)rrrT)N)r r rr½ZPROTOCOL_TLS_CLIENTr¾rrrrÂrÆrÇrÈrrarrrrr·¸s!    r·cCs\|dd…dkrt|ƒ‚tdkrt |dƒ}||fS) NrOZ227rz#(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)rerPér8) rÚ_227_rerÊrËrÍÚsearchrÚgroupsrir­)rYrÊrÐZnumbersrr'rrrrvNs rvcCsÀ|dd…dkrt|ƒ‚| d¡}|dkr2t|ƒ‚| d|d¡}|dkrRt|ƒ‚||d||dkrrt|ƒ‚||d|… ||d¡}t|ƒdkr¤t|ƒ‚|d}t|dƒ}||fS)NrOZ229ú(rú)r r8)rÚfindrrhr<r­)rYZpeerÚleftÚrightÚpartsrr'rrrrxbs    rxcCsŒ|dd…dkrt|ƒ‚|dd…dkr,dSd}d}t|ƒ}xJ||kr†||}|d}|dkr|||ksr||dkrtP|d}||}q>W|S)NrOr®r8z "rr ú")rr<)rYr©r@ÚnrZrrrr°xs   r°cCs t|ƒdS)N)r0)rGrrrr‰�sr‰rÚIc Csš|s|}d|}| |¡| |¡t| d¡ƒ\}}| ||¡| d|¡}|dd…dkrdt‚| d|¡}|dd…dkr†t‚| ¡| ¡dS)NzTYPE ruzSTOR rO>rzÚ125zRETR )rdrvrcrkrr[) ÚsourceZ sourcenameÚtargetZ targetnamer•Z sourcehostZ sourceportZtreplyZsreplyrrrÚftpcp”s   rác Csìttjƒdkr"ttjƒt d¡ddl}d}d}x"tjddkrT|d}tjd=q4Wtjddd…dkr†tjddd…}tjd=tjd}t|ƒ}|  |¡d}}}y| |¡}Wn(t k rä|dk ràtj   d¡Yn:Xy|  |¡\}}}Wn"tk �rtj   d¡YnX| |||¡x²tjdd…D] } | dd…d k�rf| | dd…¡nt| dd…dk�rªd } | dd…�rž| d | dd…} | | ¡} n0| d k�rÄ| |j ¡n| d | tjj d¡�q'sN   k  |  9