grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026 й¼]‡ˆã @sàddlZddlZddlZddlZddlmZdgZdZdZdZGdd„de ƒZ Gd d „d e ƒZ Gd d „d e ƒZ Gd d„de ƒZ Gdd„de ƒZe eefZdZdZGdd„dƒZyddlZWnek r!dZYnBXejZGdd„deƒZejdƒe eeejfZdadd„Zdadd„Zdd„Z dd„Z!dd„Z"d d!d"d#„Z#d$d%„Z$e%d&krÜe$ƒdS)'éN)Ú_GLOBAL_DEFAULT_TIMEOUTÚFTPééi c@seZdZdS)ÚErrorN)Ú__name__Ú __module__Ú __qualname__©r r ú+/opt/alt/python35/lib64/python3.5/ftplib.pyr:s rc@seZdZdS)Ú error_replyN)rrr r r r r r ;s r c@seZdZdS)Ú error_tempN)rrr r r r r r <s r c@seZdZdS)Ú error_permN)rrr r r r r r=s rc@seZdZdS)Ú error_protoN)rrr r r r r r>s rz s c@s€eZdZdZdZeZeZdZ dZ dZ dZ dZ ddddeddd„Zdd „Zd d „ZdddZdd d„Zdd„Zdd„ZeZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Z d)d*„Z!d+d,„Z"d-d.„Z#d/d0„Z$dd1d2„Z%dd3d4„Z&dddd5d6„Z'd7dd8d9„Z(dd:d;„Z)d7ddd<d=„Z*dd>d?„Z+d@dA„Z,dBdC„Z-dDdE„Z.dgdFdG„Z/dHdI„Z0dJdK„Z1dLdM„Z2dNdO„Z3dPdQ„Z4dRdS„Z5dTdU„Z6dVdW„Z7dXdY„Z8dS)[rrÚNrzlatin-1cCsB||_||_|r>|j|ƒ|r>|j|||ƒdS)N)Úsource_addressÚtimeoutÚconnectÚlogin)ÚselfÚhostÚuserÚpasswdÚacctrrr r r Ú__init__qs    z FTP.__init__cCs|S)Nr )rr r r Ú __enter__zsz FTP.__enter__cGs]|jdk rYz-y|jƒWnttfk r:YnXWd|jdk rX|jƒXdS)N)ÚsockÚquitÚOSErrorÚEOFErrorÚclose)rÚargsr r r Ú__exit__~s z FTP.__exit__içcCsÄ|dkr||_|dkr*||_|dkr?||_|dk rT||_tj|j|jf|jd|jƒ|_|jj|_|jj dd|j ƒ|_ |j ƒ|_ |j S)NrriçrÚrÚencodingiüÿÿ)rÚportrrÚsocketÚcreate_connectionrÚfamilyÚafÚmakefiler$ÚfileÚgetrespÚwelcome)rrr%rrr r r rˆs        z FTP.connectcCs)|jr"td|j|jƒƒ|jS)Nz *welcome*)Ú debuggingÚprintÚsanitizer-)rr r r Ú getwelcomeŸs zFTP.getwelcomecCs ||_dS)N)r.)rÚlevelr r r Úset_debuglevel¦szFTP.set_debuglevelcCs ||_dS)N)Ú passiveserver)rÚvalr r r Úset_pasv¯sz FTP.set_pasvcCs_|dd…dkrUt|jdƒƒ}|dd…d|d||d…}t|ƒS)Néúpass úPASS z Ú*>r8r9)ÚlenÚrstripÚrepr)rÚsÚir r r r0¶s*z FTP.sanitizecCssd|ksd|kr$tdƒ‚|t}|jdkrStd|j|ƒƒ|jj|j|jƒƒdS)Nú Ú z4an illegal newline character should not be containedrz*put*) Ú ValueErrorÚCRLFr.r/r0rÚsendallÚencoder$)rÚliner r r Úputline½s   z FTP.putlinecCs0|jrtd|j|ƒƒ|j|ƒdS)Nz*cmd*)r.r/r0rG)rrFr r r ÚputcmdÆs z FTP.putcmdcCsÅ|jj|jdƒ}t|ƒ|jkrAtd|jƒ‚|jdkrftd|j|ƒƒ|srt‚|dd…t kr›|dd…}n&|dd…t krÁ|dd…}|S) Nrzgot more than %d bytesz*get*ééþÿÿÿrJéÿÿÿÿrK) r+ÚreadlineÚmaxliner;rr.r/r0rrC)rrFr r r ÚgetlineÌsz FTP.getlinecCs„|jƒ}|dd…dkr€|dd…}xK|jƒ}|d|}|dd…|kr5|dd…dkr5Pq5W|S)Nééú-rA)rN)rrFÚcodeZnextliner r r Ú getmultilineÞs  zFTP.getmultilinecCsž|jƒ}|jr+td|j|ƒƒ|dd…|_|dd…}|d kr^|S|dkrvt|ƒ‚|dkrŽt|ƒ‚t|ƒ‚dS) Nz*resp*rOrÚ1Ú2Ú3Ú4Ú5>rVrUrT)rSr.r/r0Zlastrespr rr)rÚrespÚcr r r r,ìs       z FTP.getrespcCs2|jƒ}|dd…dkr.t|ƒ‚|S)NrrU)r,r )rrYr r r Úvoidrespús  z FTP.voidrespcCstdt}|jdkr/td|j|ƒƒ|jj|tƒ|jƒ}|dd…dkrpt|ƒ‚|S) NsABORrz *put urgent*rOÚ426Ú225Ú226>r]r\r^) ÚB_CRLFr.r/r0rrDÚMSG_OOBrSr)rrFrYr r r Úaborts   z FTP.abortcCs|j|ƒ|jƒS)N)rHr,)rÚcmdr r r Úsendcmds z FTP.sendcmdcCs|j|ƒ|jƒS)N)rHr[)rrbr r r Úvoidcmds z FTP.voidcmdcCsY|jdƒ}t|dƒt|dƒg}||}ddj|ƒ}|j|ƒS)NÚ.ézPORT ú,)Úsplitr=Újoinrd)rrr%ZhbytesZpbytesÚbytesrbr r r Úsendports   z FTP.sendportcCs�d}|jtjkrd}|jtjkr6d}|dkrNtdƒ‚dt|ƒ|t|ƒdg}ddj|ƒ}|j|ƒS)NrrrIzunsupported address familyrzEPRT ú|)r)r&ÚAF_INETÚAF_INET6rr=rird)rrr%r)Zfieldsrbr r r Úsendeprt#s  !z FTP.sendeprtc Cszd}d}x²tjdd|jtjdtjƒD]‰}|\}}}}}y&tj|||ƒ}|j|ƒWnDtk r»} z$| }|r |jƒd}w4WYdd} ~ XnXPq4W|dkrî|dk râ|‚n tdƒ‚|jdƒ|j ƒd} |j j ƒd} |jtj krE|j | | ƒ} n|j | | ƒ} |jtk rv|j|jƒ|S)Nrz!getaddrinfo returns an empty listr)r&Ú getaddrinfor)Ú SOCK_STREAMÚ AI_PASSIVEÚbindrr ÚlistenÚ getsocknamerrmrkrorrÚ settimeout) rÚerrrÚresr)ÚsocktypeÚprotoÚ canonnameÚsaÚ_r%rrYr r r Úmakeport0s6.      z FTP.makeportcCsa|jtjkr0t|jdƒƒ\}}n't|jdƒ|jjƒƒ\}}||fS)NÚPASVZEPSV)r)r&rmÚparse227rcÚparse229rÚ getpeername)rrr%r r r ÚmakepasvPs'z FTP.makepasvc CsŸd}|jrÈ|jƒ\}}tj||f|jd|jƒ}yh|dk re|jd|ƒ|j|ƒ}|ddkr�|jƒ}|ddkr¬t|ƒ‚Wqs|j ƒ‚YqsXn«|j ƒ�œ}|dk rô|jd|ƒ|j|ƒ}|ddkr|jƒ}|ddkr;t|ƒ‚|j ƒ\}} |jt k rl|j |jƒWdQRX|dd…dkr•t|ƒ}||fS)NrzREST %srrUrTrOÚ150)r4rƒr&r'rrrcr,r r r~ÚacceptrrvÚparse150) rrbÚrestÚsizerr%ÚconnrYrZsockaddrr r r Ú ntransfercmdWs<          zFTP.ntransfercmdcCs|j||ƒdS)Nr)rŠ)rrbr‡r r r Ú transfercmdŽszFTP.transfercmdcCs¿|s d}|sd}|s$d}|dkrF|d krF|d}|jd|ƒ}|ddkr||jd|ƒ}|ddkrŸ|jd |ƒ}|dd kr»t|ƒ‚|S) NZ anonymousrrQz anonymous@zUSER rrVzPASS zACCT rU>rrQ)rcr )rrrrrYr r r r’s   z FTP.logini c Cs|jdƒ|j||ƒ�S}x$|j|ƒ}|s;P||ƒq%Wtdk rnt|tƒrn|jƒWdQRX|jƒS)NzTYPE I)rdr‹ÚrecvÚ _SSLSocketÚ isinstanceÚunwrapr[)rrbÚcallbackÚ blocksizer‡r‰Údatar r r Ú retrbinary¬s zFTP.retrbinarycCsR|dkrt}|jdƒ}|j|ƒ�}|jdd|jƒ�ó}xÄ|j|jdƒ}t|ƒ|jkr�td|jƒ‚|j dkr±t dt |ƒƒ|s¸P|d d…t krá|dd …}n&|d d…dkr|dd …}||ƒqQWt dk r:t|t ƒr:|jƒWdQRXWdQRX|jƒS) NzTYPE Ar#r$rzgot more than %d bytesrIz*retr*rArJrJrKrK)Ú print_linercr‹r*r$rLrMr;rr.r/r=rCr�rŽr�r[)rrbr�rYr‰ÚfprFr r r Ú retrlinesÆs* z FTP.retrlinesc Cs’|jdƒ|j||ƒ�f}x7|j|ƒ}|s;P|j|ƒ|r%||ƒq%Wtdk r�t|tƒr�|jƒWdQRX|jƒS)NzTYPE I)rdr‹ÚreadrDr�rŽr�r[)rrbr•r‘r�r‡r‰Úbufr r r Ú storbinaryés  zFTP.storbinaryc Csþ|jdƒ|j|ƒ�Õ}x¦|j|jdƒ}t|ƒ|jkr`td|jƒ‚|sgP|dd…tkr§|dtkr�|dd…}|t}|j|ƒ|r"||ƒq"Wtdk rít |tƒrí|j ƒWdQRX|j ƒS)NzTYPE Arzgot more than %d bytesrIrJrKrK) rdr‹rLrMr;rr_rDr�rŽr�r[)rrbr•r�r‰r˜r r r Ú storliness$   z FTP.storlinescCsd|}|j|ƒS)NzACCT )rd)rZpasswordrbr r r r%s zFTP.acctcGsBd}x|D]}|d|}q Wg}|j||jƒ|S)NZNLSTú )r–Úappend)rr!rbÚargÚfilesr r r Únlst*s  zFTP.nlstcGsŒd}d}|dd…rSt|dƒtdƒkrS|dd…|d}}x"|D]}|rZ|d|}qZW|j||ƒdS) NÚLISTrrr›rKrKrKrK)Útyper–)rr!rbÚfuncr�r r r Údir3s, zFTP.dirc csé|r$|jddj|ƒdƒ|r7d|}nd}g}|j||jƒxŒ|D]„}|jtƒjdƒ\}}}i} xI|dd…jdƒD].} | jdƒ\} }} | | | jƒr±r°)rcr )rÚfilenamerYr r r Údeleteesz FTP.deletecCs‘|dkrhy|jdƒSWqztk rd}z%|jddd…dkrR‚WYdd}~XqzXn|dkrzd}d|}|j|ƒS) Nz..ZCDUPrrOÚ500rrezCWD )rdrr!)rÚdirnameÚmsgrbr r r Úcwdms   zFTP.cwdcCsM|jd|ƒ}|dd…dkrI|dd…jƒ}t|ƒSdS)NzSIZE rOZ213)rcÚstripÚint)rr²rYr>r r r rˆzszFTP.sizecCs0|jd|ƒ}|jdƒs&dSt|ƒS)NzMKD Ú257r)rdÚ startswithÚparse257)rrµrYr r r Úmkd‚szFTP.mkdcCs|jd|ƒS)NzRMD )rd)rrµr r r Úrmd‹szFTP.rmdcCs,|jdƒ}|jdƒs"dSt|ƒS)NZPWDrºr)rdr»r¼)rrYr r r Úpwd�szFTP.pwdcCs|jdƒ}|jƒ|S)NZQUIT)rdr )rrYr r r r˜s zFTP.quitc Cs\z,|j}d|_|dk r+|jƒWd|j}d|_|dk rW|jƒXdS)N)r+r r)rr+rr r r r žs      z FTP.closeiüÿÿ)9rrr r.rÚFTP_PORTr%ÚMAXLINErMrr+r-r4r$rrrr"rr1r3Údebugr6r0rGrHrNrSr,r[rarcrdrkror~rƒrŠr‹rr“r–r™ršrrŸr£r®r¯r³r·rˆr½r¾r¿rr r r r r rKsh                 7#       c @s£eZdZejZdddddddeddd„ Zdddddd„Zdd „Z d d „Z d d „Z dd„Z ddd„Z dd„ZdS)ÚFTP_TLSrNc Cs¹|dk r$|dk r$tdƒ‚|dk rH|dk rHtdƒ‚||_||_|dkr„tj|jd|d|ƒ}||_d|_tj ||||||| ƒdS)Nz4context and keyfile arguments are mutually exclusivez5context and certfile arguments are mutually exclusiveÚcertfileÚkeyfileF) rBrÅrÄÚsslZ_create_stdlib_contextÚ ssl_versionÚcontextÚ_prot_prr) rrrrrrÅrÄrÈrrr r r rÕs        zFTP_TLS.__init__TcCs<|r&t|jtjƒ r&|jƒtj||||ƒS)N)rŽrrÆÚ SSLSocketÚauthrr)rrrrZsecurer r r rès z FTP_TLS.logincCsšt|jtjƒr!tdƒ‚|jtjkrE|jdƒ}n|jdƒ}|jj |jd|j ƒ|_|jj ddd|j ƒ|_ |S)NzAlready using TLSzAUTH TLSzAUTH SSLÚserver_hostnameÚmoder#r$)rŽrrÆrÊrBrÇÚPROTOCOL_SSLv23rdrÈÚ wrap_socketrr*r$r+)rrYr r r rËís !z FTP_TLS.authcCsFt|jtjƒs!tdƒ‚|jdƒ}|jjƒ|_|S)Nz not using TLSZCCC)rŽrrÆrÊrBrdr�)rrYr r r Úcccús  z FTP_TLS.ccccCs)|jdƒ|jdƒ}d|_|S)NzPBSZ 0zPROT PT)rdrÉ)rrYr r r Úprot_ps  zFTP_TLS.prot_pcCs|jdƒ}d|_|S)NzPROT CF)rdrÉ)rrYr r r Úprot_cs zFTP_TLS.prot_ccCsItj|||ƒ\}}|jr?|jj|d|jƒ}||fS)NrÌ)rrŠrÉrÈrÏr)rrbr‡r‰rˆr r r rŠs   zFTP_TLS.ntransfercmdcCsLdt}|jj|ƒ|jƒ}|dd…dkrHt|ƒ‚|S)NsABORrOr\r]r^>r]r\r^)r_rrDrSr)rrFrYr r r ra!s    z FTP_TLS.abort)rrr rÆrÎrÇrrrrËrÐrÑrÒrŠrar r r r ròs !    rÃcCs‚|dd…dkr"t|ƒ‚tdkrVddl}|jd|j|jBƒatj|ƒ}|sodSt|jdƒƒS)NrOr„rz150 .* \((\d+) bytes\)r) r Ú_150_reÚreÚcompileÚ IGNORECASEÚASCIIÚmatchr¹Úgroup)rYrÔÚmr r r r†0s   r†cCsÁ|dd…dkr"t|ƒ‚tdkrOddl}|jd|jƒatj|ƒ}|spt|ƒ‚|jƒ}dj|dd…ƒ}t |dƒd>t |dƒ}||fS) NrOZ227rz#(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)rerPér7) r Ú_227_rerÔrÕr×ÚsearchrÚgroupsrir¹)rYrÔrÚZnumbersrr%r r r r€Ds     "r€cCs|dd…dkr"t|ƒ‚|jdƒ}|dkrIt|ƒ‚|jd|dƒ}|dkrwt|ƒ‚||d||dkrŸt|ƒ‚||d|…j||dƒ}t|ƒdkrât|ƒ‚|d}t|dƒ}||fS)NrOZ229ú(rú)rr7)r Úfindrrhr;r¹)rYZpeerÚleftÚrightÚpartsrr%r r r r�Xs      %  r�cCs¼|dd…dkr"t|ƒ‚|dd…dkr<dSd}d}t|ƒ}xa||kr·||}|d}|dkrª||ksŸ||dkr P|d}||}qWW|S)NrOrºr7z "rrú")r r;)rYrµr?ÚnrZr r r r¼ns       r¼cCst|ƒdS)N)r/)rFr r r r”…sr”rÚIc CsÑ|s |}d|}|j|ƒ|j|ƒt|jdƒƒ\}}|j||ƒ|jd|ƒ}|dd…dkrŠt‚|jd|ƒ}|dd…d kr¹t‚|jƒ|jƒdS) NzTYPE rzSTOR rOÚ125r„zRETR >r„rè>r„rè)rdr€rcrkrr[) ÚsourceZ sourcenameÚtargetZ targetnamer¡Z sourcehostZ sourceportZtreplyZsreplyr r r ÚftpcpŠs    rëc Csnttjƒdkr/ttjƒtjdƒddl}d}d}x+tjddkrt|d}tjd=qJWtjddd…dkr³tjddd…}tjd=tjd}t|ƒ}|j |ƒd}}}y|j|ƒ}Wn.t k r*|dk r&tj j dƒYnBXy|j |ƒ\}}}Wn"tk rktj j dƒYnX|j|||ƒxÞtjdd…D]É} | dd…d krÉ|j| dd…ƒq“| dd…dkrd } | dd…r | d | dd…} |j| ƒ} q“| d kr?|j|j ƒq“|jd | tjj dƒq“W|jƒdS)NrIrrz-dz-rrz5Could not open account file -- using anonymous login.z$No account -- using anonymous login.z-lZCWDr›z-pzRETR i)r;ÚsysÚargvr/ÚtestÚ__doc__ÚexitÚnetrcrr3rÚstderrÚwriteZauthenticatorsÚKeyErrorrr£rcr6r4r“Ústdoutr) rñr.ZrcfilerZftpZuseridrrZnetrcobjr+rbrYr r r rî sP                rîÚ__main__)&Úosrìr&ÚwarningsrÚ__all__r`rÀrÁÚ Exceptionrr r rrrrZ all_errorsrCr_rrÆÚ ImportErrorr�rÊrÃrœZSSLErrorrÓr†rÜr€r�r¼r”rërîrr r r r Ú'sL     ÿÿb   x       9