grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026U iÛf9‰ã@sRddlZddlZddlmZddddddgZd Zd Zd ZGd d „d eƒZGdd„deƒZ Gdd„deƒZ Gdd„deƒZ Gdd„deƒZ ee efZdZdZGdd„dƒZz 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ééé c@s eZdZdS)ÚErrorN©Ú__name__Ú __module__Ú __qualname__©rrú+/opt/alt/python38/lib64/python3.8/ftplib.pyr 9sr c@s eZdZdS)rNr rrrrr:sc@s eZdZdS)rNr rrrrr;sc@s eZdZdS)rNr rrrrr<sc@s eZdZdS)rNr rrrrr=sú 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|Srr©rrrrÚ __enter__{sz FTP.__enter__c GsN|jdk rJz*z | ¡Wnttfk r0YnXW5|jdk rH| ¡XdSr)ÚsockÚcloseÚquitÚOSErrorÚEOFError)rÚargsrrrÚ__exit__s    z FTP.__exit__éüÿÿcCs˜|dkr||_|dkr||_|dkr*||_|dk r8||_t d||j|j¡tj|j|jf|j|jd�|_|jj |_ |jj d|j d�|_ | ¡|_|jS)Nrrr)zftplib.connect©rÚr©Úencoding)rÚportrrÚsysÚauditÚsocketÚcreate_connectionr"ÚfamilyÚafÚmakefiler-ÚfileÚgetrespÚwelcome)rrr.rrrrrr‰s ÿ  z FTP.connectcCs|jrtd| |j¡ƒ|jS)Nz *welcome*)Ú debuggingÚprintÚsanitizer8r rrrÚ getwelcome¡szFTP.getwelcomecCs ||_dSr)r9)rÚlevelrrrÚset_debuglevel¨szFTP.set_debuglevelcCs ||_dSr)Ú passiveserver)rÚvalrrrÚset_pasv±sz FTP.set_pasvcCsJ|dd…dkrBt| d¡ƒ}|dd…d|d||d…}t|ƒS)Né>úPASS úpass rÚ*)ÚlenÚrstripÚrepr)rÚsÚirrrr;¸s$z FTP.sanitizecCs`d|ksd|krtdƒ‚t d||¡|t}|jdkrHtd| |¡ƒ|j |  |j ¡¡dS)Nú Ú z4an illegal newline character should not be containedzftplib.sendcmdr z*put*) Ú ValueErrorr/r0ÚCRLFr9r:r;r"ÚsendallÚencoder-©rÚlinerrrÚputline¿s z FTP.putlinecCs$|jrtd| |¡ƒ| |¡dS)Nz*cmd*)r9r:r;rSrQrrrÚputcmdÉsz FTP.putcmdcCsŽ|j |jd¡}t|ƒ|jkr.td|jƒ‚|jdkrHtd| |¡ƒ|sPt‚|dd…t krn|dd…}n|dd…t krŠ|dd…}|S)Nr úgot more than %d bytesz*get*éþÿÿÿéÿÿÿÿ) r6ÚreadlineÚmaxlinerFr r9r:r;r&rNrQrrrÚgetlineÏs  z FTP.getlinecCs`| ¡}|dd…dkr\|dd…}| ¡}|d|}|dd…|kr$|dd…dkr$q\q$|S)Nééú-rL)rZ)rrRÚcodeZnextlinerrrÚ getmultilineás  ÿzFTP.getmultilinecCsp| ¡}|jrtd| |¡ƒ|dd…|_|dd…}|dkrD|S|dkrTt|ƒ‚|dkrdt|ƒ‚t|ƒ‚dS)Nz*resp*r[r >Ú2Ú3Ú1Ú4Ú5)r_r9r:r;Zlastresprrr)rÚrespÚcrrrr7ïs z FTP.getrespcCs$| ¡}|dd…dkr t|ƒ‚|S)Nr r`)r7r©rrerrrÚvoidrespýsz FTP.voidrespcCsTdt}|jdkr"td| |¡ƒ|j |t¡| ¡}|dd…dkrPt|ƒ‚|S)NóABORr z *put urgent*r[¾Ú225Ú426Ú226) ÚB_CRLFr9r:r;r"rOÚMSG_OOBr_r©rrRrerrrÚaborts z FTP.abortcCs| |¡| ¡Sr)rTr7©rÚcmdrrrÚsendcmds z FTP.sendcmdcCs| |¡| ¡Sr)rTrhrrrrrÚvoidcmds z FTP.voidcmdcCsB| d¡}t|dƒt|dƒg}||}dd |¡}| |¡S)NÚ.ézPORT ú,)ÚsplitrHÚjoinru)rrr.ZhbytesZpbytesÚbytesrsrrrÚsendports  z FTP.sendportcCsbd}|jtjkrd}|jtjkr$d}|dkr4tdƒ‚dt|ƒ|t|ƒdg}dd |¡}| |¡S)Nrr ézunsupported address familyrzEPRT ú|)r4r1ÚAF_INETZAF_INET6rrHrzru)rrr.r4ZfieldsrsrrrÚsendeprt&s  z FTP.sendeprtcCsltjd|jdd�}| ¡d}|j ¡d}|jtjkrF| ||¡}n | ||¡}|jt k rh|  |j¡|S)N)rrr )r3Zbacklogr) r1Z create_serverr4Z getsocknamer"rr|r€rrÚ settimeout)rr"r.rrerrrÚmakeport3s     z FTP.makeportcCs\|jtjkr:t| d¡ƒ\}}|jr*|}qT|j ¡d}nt| d¡|j ¡ƒ\}}||fS)NÚPASVrZEPSV) r4r1rÚparse227rtÚtrust_server_pasv_ipv4_addressr"Z getpeernameÚparse229)rZuntrusted_hostr.rrrrÚmakepasv@s z FTP.makepasvc Cs6d}|jr”| ¡\}}tj||f|j|jd�}zL|dk rF| d|¡| |¡}|ddkrd| ¡}|ddkrxt|ƒ‚Wn|  ¡‚YnXn€|  ¡�r}|dk r´| d|¡| |¡}|ddkrÒ| ¡}|ddkræt|ƒ‚|  ¡\}} |jt k �r |  |j¡W5QRX|dd…dk�r.t|ƒ}||fS)Nr*zREST %srr`rbr[Ú150)r?r‡r1r2rrrtr7rr#r‚Zacceptrr�Úparse150) rrsÚrestÚsizerr.Úconnrer"ZsockaddrrrrÚ ntransfercmdLs> ÿ           zFTP.ntransfercmdcCs| ||¡dS)Nr)r�)rrsrŠrrrÚ transfercmdƒszFTP.transfercmdcCsŠ|sd}|sd}|sd}|dkr0|dkr0|d}| d|¡}|ddkrX| d|¡}|ddkrr| d |¡}|dd kr†t|ƒ‚|S) NZ anonymousr>rr]z anonymous@zUSER rrarCúACCT r`©rtr)rrrrrerrrr‡s    z FTP.loginr c Cs^| d¡| ||¡�:}| |¡}|s(q2||ƒqtdk rLt|tƒrL| ¡W5QRX| ¡S©NzTYPE I)rurŽZrecvÚ _SSLSocketÚ isinstanceÚunwraprh)rrsÚcallbackÚ blocksizerŠrŒÚdatarrrÚ retrbinary¡s   zFTP.retrbinaryc Csø|dkr t}| d¡}| |¡�Ê}|jd|jd��®}| |jd¡}t|ƒ|jkr`td|jƒ‚|j dkrxt dt |ƒƒ|s~qÂ|dd…t krœ|dd…}n|d d…d kr¸|dd …}||ƒq4t dk rÜt|t ƒrÜ| ¡W5QRXW5QRX| ¡S) NúTYPE Ar+r,r rUr}z*retr*rVrWrL)Ú print_linertrŽr5r-rXrYrFr r9r:rHrNr’r“r”rh)rrsr•rerŒÚfprRrrrÚ retrlines»s,   ÿ   z FTP.retrlinesc Csl| d¡| ||¡�H}| |¡}|s(q@| |¡|r||ƒqtdk rZt|tƒrZ| ¡W5QRX| ¡Sr‘)rurŽÚreadrOr’r“r”rh)rrsr›r–r•rŠrŒÚbufrrrÚ storbinaryÞs    zFTP.storbinaryc Cs¼| d¡| |¡�š}| |jd¡}t|ƒ|jkrBtd|jƒ‚|sHq�|dd…tkrx|dtkrp|dd…}|t}| |¡|r||ƒqtdk rªt |tƒrª|  ¡W5QRX|  ¡S)Nr™r rUrVrW) rurŽrXrYrFr rnrOr’r“r”rh)rrsr›r•rŒržrrrÚ storlinesûs"     z FTP.storlinescCsd|}| |¡S)Nr�©ru)rZpasswordrsrrrrszFTP.acctcGs0d}|D]}|d|}qg}| ||j¡|S)NZNLSTú )rœÚappend)rr'rsÚargÚfilesrrrÚnlsts zFTP.nlstcGshd}d}|dd…r>t|dƒtdƒkr>|dd…|d}}|D]}|rB|d|}qB| ||¡dS)NZLISTrWrr¢)Útyperœ)rr'rsÚfuncr¤rrrÚdir(s zFTP.dirc cs¦|r| dd |¡d¡|r*d|}nd}g}| ||j¡|D]\}| t¡ d¡\}}}i} |dd… d¡D] } |  d¡\} }} | | |  ¡<qt|| fVqDdS)Nz OPTS MLST ú;zMLSD %sZMLSDr¢rWú=) rtrzrœr£rGrNÚ partitionryÚlower) rÚpathZfactsrsÚlinesrRZ facts_foundÚ_ÚnameÚentryZfactÚkeyÚvaluerrrÚmlsd7s  zFTP.mlsdcCs0| d|¡}|ddkr"t|ƒ‚| d|¡S)NzRNFR rrazRNTO )rtrru)rZfromnameZtonamererrrÚrenameSs z FTP.renamecCs.| d|¡}|dd…dkr"|St|ƒ‚dS)NzDELE r[>Ú250Ú200r�)rÚfilenamererrrÚdeleteZsz FTP.deletec Csp|dkrRz | d¡WStk rN}z|jddd…dkr>‚W5d}~XYq^Xn |dkr^d}d|}| |¡S) Nz..ZCDUPrr[Ú500rrvzCWD )rurr')rÚdirnameÚmsgrsrrrÚcwdbs zFTP.cwdcCs:| d|¡}|dd…dkr6|dd… ¡}t|ƒSdS)NzSIZE r[Z213)rtÚstripÚint)rr¹rerIrrrr‹oszFTP.sizecCs$| d|¡}| d¡sdSt|ƒS)NzMKD Ú257r©ruÚ startswithÚparse257)rr¼rerrrÚmkdws zFTP.mkdcCs| d|¡S)NzRMD r¡)rr¼rrrÚrmd€szFTP.rmdcCs | d¡}| d¡sdSt|ƒS)NZPWDrÁrrÂrgrrrÚpwd„s  zFTP.pwdcCs| d¡}| ¡|S)NZQUIT)rur#rgrrrr$�s zFTP.quitcCsDz |j}d|_|dk r| ¡W5|j}d|_|dk r>| ¡XdSr)r"r#r6)rr"r6rrrr#“s z FTP.close)rrr)N)N)N)rrr)r N)N)r NN)N):rrrr9rÚFTP_PORTr.ÚMAXLINErYr"r6r8r?r-r…rrr!r(rr<r>ÚdebugrAr;rSrTrZr_r7rhrqrtrur|r€r‚r‡r�rŽrr˜rœrŸr rr¦r©rµr¶rºr¾r‹rÅrÆrÇr$r#rrrrrJsnÿ       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 insteadr})ÚcertfileÚkeyfileF) rMÚ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 ||||¡Sr)r“r"rÑÚ 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©Zserver_hostnamer+)Úmoder-)r“r"rÑrÕrMrÒZ PROTOCOL_TLSrurÓÚ wrap_socketrr5r-r6rgrrrrÖæs    ÿz FTP_TLS.authcCs0t|jtjƒstdƒ‚| d¡}|j ¡|_|S)Nz not using TLSZCCC)r“r"rÑrÕrMrur”rgrrrÚcccós   z FTP_TLS.ccccCs| d¡| d¡}d|_|S)NzPBSZ 0zPROT PT©rurÔrgrrrÚprot_pûs  zFTP_TLS.prot_pcCs| d¡}d|_|S)NzPROT CFrÛrgrrrÚprot_c s zFTP_TLS.prot_ccCs2t |||¡\}}|jr*|jj||jd�}||fS)Nr×)rr�rÔrÓrÙr)rrsrŠrŒr‹rrrr�s ÿzFTP_TLS.ntransfercmdcCs8dt}|j |¡| ¡}|dd…dkr4t|ƒ‚|S)Nrir[rj)rnr"rOr_rrprrrrqs  z FTP_TLS.abort)rrrT)N)rrrrÑZPROTOCOL_TLS_CLIENTrÒrrrrÖrÚrÜrÝr�rqrrrrr˧s! þ    rËcCs\|dd…dkrt|ƒ‚tdkrt |dƒ}||fS) Nr[Z227rz#(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)rvr\érB) rÚ_227_rerßràrâÚsearchrÚgroupsrzrÀ)rerßråZnumbersrr.rrrr„=s r„cCsÀ|dd…dkrt|ƒ‚| d¡}|dkr2t|ƒ‚| d|d¡}|dkrRt|ƒ‚||d||dkrrt|ƒ‚||d|… ||d¡}t|ƒdkr¤t|ƒ‚|d}t|dƒ}||fS)Nr[Z229ú(rú)r rB)rÚfindrryrFrÀ)reZpeerÚleftÚrightÚpartsrr.rrrr†Qs    r†cCsˆ|dd…dkrt|ƒ‚|dd…dkr,dSd}d}t|ƒ}||kr„||}|d}|dkrz||ks„||dkrrq„|d}||}q<|S)Nr[rÁrBz "rr ú")rrF)rer¼rJÚnrfrrrrÄgs  rÄcCs t|ƒdSr)r:)rRrrrrš~sršrÚIc Csš|s|}d|}| |¡| |¡t| d¡ƒ\}}| ||¡| d|¡}|dd…dkrdt‚| d|¡}|dd…dkr†t‚| ¡| ¡dS)NzTYPE rƒzSTOR r[>Ú125rˆúRETR )rur„rtr|rrh) ÚsourceZ sourcenameÚtargetZ targetnamer§Z sourcehostZ sourceportZtreplyZsreplyrrrÚftpcpƒs   r÷c Csättjƒdkr"ttjƒt d¡ddl}d}d}tjddkrR|d}tjd=q2tjddd…dkr‚tjddd…}tjd=tjd}t|ƒ}|  |¡d}}}z| |¡}Wn(t k rà|dk rÜtj   d¡Yn:Xz|  |¡\}}}Wn"tk �rtj   d¡YnX| |||¡tjdd…D] } | dd…d k�r`| | dd…¡nt| dd…dk�r¤d } | dd…�r˜| d | dd…} | | ¡} n0| d k�r¾| |j ¡n| d | tjj d¡�q6| ¡dS)Nr}rr z-dz-rrz5Could not open account file -- using anonymous login.z$No account -- using anonymous login.z-lZCWDr¢z-prôi)rFr/Úargvr:ÚtestÚ__doc__ÚexitÚnetrcrr>r%ÚstderrÚwriteZauthenticatorsÚKeyErrorrr©rtrAr?r˜Ústdoutr$) rür9ZrcfilerZftpZuseridrrZnetrcobjr6rsrerrrrù™sV       ÿ    ÿrùÚ__main__)rrò)$r/r1rÚ__all__rorÈrÉÚ Exceptionr rrrrr%r&rrNrnrrÑÚ ImportErrorr’rÕrËr£ZSSLErrorrÞr‰rçr„r†rÄršr÷rùrrrrrÚ'sP  ÿ Z  |  9