grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a XC?h¨Šã@sHddlZddlZddlmZgd¢ZdZdZdZGdd„deƒZGd d „d eƒZ Gd d „d eƒZ Gd d„deƒZ Gdd„deƒZ ee efZdZdZGdd„dƒZz ddlZWneyÂdZYn00ejZGdd„deƒZe d¡ee eejfZdadd„Zdadd„Zdd„Zdd„Zdd „Z d(d#d$„Z!d%d&„Z"e#d'k�rDe"ƒ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/python39/lib64/python3.9/ftplib.pyr 9ór c@s eZdZdS)rNr rrrrr:rrc@s eZdZdS)rNr rrrrr;rrc@s eZdZdS)rNr rrrrr<rrc@s eZdZdS)rNr rrrrr=rrú s c@s¦eZdZdZdZeZeZdZ dZ dZ dZ dZ ddddedfddœdd „Zd d „Zd d „Zd\dd„Zdd„Zdd„ZeZdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Z d+d,„Z!d-d.„Z"d/d0„Z#d1d2„Z$d]d3d4„Z%d^d5d6„Z&d_d7d8„Z'd`d:d;„Z(dadd?„Z*dcd@dA„Z+dBdC„Z,dDdE„Z-dFdG„Z.dgfdHdI„Z/dJdK„Z0dLdM„Z1dNdO„Z2dPdQ„Z3dRdS„Z4dTdU„Z5dVdW„Z6dXdY„Z7dZd[„Z8dS)drrÚNTFúutf-8©ÚencodingcCs6||_||_||_|r2| |¡|r2| |||¡dS©N)rÚsource_addressÚtimeoutÚconnectÚlogin)ÚselfÚhostÚuserÚpasswdÚacctrrrrrrÚ__init__ms z FTP.__init__cCs|Srr©rrrrÚ __enter__}sz FTP.__enter__c Gs^|jdurZz:z | ¡Wnttfy.Yn0W|jdurZ| ¡n|jdurX| ¡0dSr)ÚsockÚquitÚOSErrorÚEOFErrorÚclose)rÚargsrrrÚ__exit__�s    ÿ z FTP.__exit__éüÿÿcCs°|dkr||_|dkr||_|dkr*||_|jdurB|jsBtdƒ‚|durP||_t d||j|j¡tj|j|jf|j|jd�|_ |j j |_ |j j d|j d�|_| ¡|_|jS) Nrrr-z0Non-blocking socket (timeout=0) is not supportedzftplib.connect©rÚrr)rÚportrÚ ValueErrorrÚsysÚauditÚsocketÚcreate_connectionr&ÚfamilyÚafÚmakefilerÚfileÚgetrespÚwelcome)rrr0rrrrrr‹s$ÿ  z FTP.connectcCs|jrtd| |j¡ƒ|jS)Nz *welcome*)Ú debuggingÚprintÚsanitizer;r$rrrÚ getwelcome¥szFTP.getwelcomecCs ||_dSr)r<)rÚlevelrrrÚset_debuglevel¬szFTP.set_debuglevelcCs ||_dSr)Ú passiveserver)rÚvalrrrÚset_pasvµsz FTP.set_pasvcCsJ|dd…dvrBt| d¡ƒ}|dd…d|d||d…}t|ƒS)Né>úPASS zpass rÚ*)ÚlenÚrstripÚrepr)rÚsÚirrrr>¼s$z FTP.sanitizecCs`d|vsd|vrtdƒ‚t d||¡|t}|jdkrHtd| |¡ƒ|j |  |j ¡¡dS)Nú Ú z4an illegal newline character should not be containedzftplib.sendcmdr z*put*) r1r2r3ÚCRLFr<r=r>r&ÚsendallÚencoder©rÚlinerrrÚputlineÃs z FTP.putlinecCs$|jrtd| |¡ƒ| |¡dS)Nz*cmd*)r<r=r>rTrRrrrÚputcmdÍsz FTP.putcmdcCsŽ|j |jd¡}t|ƒ|jkr.td|jƒ‚|jdkrHtd| |¡ƒ|sPt‚|dd…t krn|dd…}n|dd…t vrŠ|dd…}|S)Nr úgot more than %d bytesz*get*éþÿÿÿéÿÿÿÿ) r9ÚreadlineÚmaxlinerHr r<r=r>r)rOrRrrrÚgetlineÓs  z FTP.getlinecCs`| ¡}|dd…dkr\|dd…}| ¡}|d|}|dd…|kr$|dd…dkr$q\q$|S)Nééú-rN)r[)rrSÚcodeZnextlinerrrÚ getmultilineås  ÿzFTP.getmultilinecCsp| ¡}|jrtd| |¡ƒ|dd…|_|dd…}|dvrD|S|dkrTt|ƒ‚|dkrdt|ƒ‚t|ƒ‚dS)Nz*resp*r\r >Ú2Ú3Ú1Ú4Ú5)r`r<r=r>Zlastresprrr)rÚrespÚcrrrr:ós z FTP.getrespcCs$| ¡}|dd…dkr t|ƒ‚|S)Nr ra)r:r©rrfrrrÚvoidrespsz FTP.voidrespcCsTdt}|jdkr"td| |¡ƒ|j |t¡| ¡}|dd…dvrPt|ƒ‚|S)NóABORr z *put urgent*r\¾Z225Z426Z226) ÚB_CRLFr<r=r>r&rPÚMSG_OOBr`r©rrSrfrrrÚaborts z FTP.abortcCs| |¡| ¡Sr)rUr:©rÚcmdrrrÚsendcmds z FTP.sendcmdcCs| |¡| ¡Sr)rUrirprrrÚvoidcmds z FTP.voidcmdcCsB| d¡}t|dƒt|dƒg}||}dd |¡}| |¡S)NÚ.ézPORT ú,)ÚsplitrJÚjoinrs)rrr0ZhbytesZpbytesÚbytesrqrrrÚsendport s  z FTP.sendportcCsbd}|jtjkrd}|jtjkr$d}|dkr4tdƒ‚dt|ƒ|t|ƒdg}dd |¡}| |¡S)Nrr ézunsupported address familyrzEPRT ú|)r7r4ÚAF_INETZAF_INET6rrJrxrs)rrr0r7ÚfieldsrqrrrÚsendeprt*s  z FTP.sendeprtcCsltjd|jdd�}| ¡d}|j ¡d}|jtjkrF| ||¡}n | ||¡}|jt urh|  |j¡|S)N)rrr )r6Zbacklogr) r4Z create_serverr7Z getsocknamer&r}rzrrrÚ settimeout)rr&r0rrfrrrÚmakeport7s     z FTP.makeportcCs\|jtjkr:t| d¡ƒ\}}|jr*|}qT|j ¡d}nt| d¡|j ¡ƒ\}}||fS)NÚPASVrZEPSV) r7r4r}Úparse227rrÚtrust_server_pasv_ipv4_addressr&Z getpeernameÚparse229)rZuntrusted_hostr0rrrrÚmakepasvDs z FTP.makepasvc CsLd}|jr”| ¡\}}tj||f|j|jd�}zL|durF| d|¡| |¡}|ddkrd| ¡}|ddkrxt|ƒ‚Wn|  ¡‚Yn0n–|  ¡�|}|dur´| d|¡| |¡}|ddkrÒ| ¡}|ddkræt|ƒ‚|  ¡\}} |jt u�r |  |j¡Wdƒn1�s 0Y|dd…dk�rDt|ƒ}||fS)Nr.zREST %srrarcr\Ú150)rBr†r4r5rrrrr:rr*r�Zacceptrr€Úparse150) rrqÚrestÚsizerr0Úconnrfr&ZsockaddrrrrÚ ntransfercmdPs> ÿ           ,zFTP.ntransfercmdcCs| ||¡dS)Nr)rŒ)rrqr‰rrrÚ transfercmd‡szFTP.transfercmdcCsŠ|sd}|sd}|sd}|dkr0|dvr0|d}| d|¡}|ddkrX| d|¡}|ddkrr| d |¡}|dd kr†t|ƒ‚|S) NZ anonymousr>rr^z anonymous@zUSER rrbrFúACCT ra©rrr)rr r!r"rfrrrr‹s    z FTP.loginr cCsr| d¡| ||¡�D}| |¡}|s(q2||ƒqtdurLt|tƒrL| ¡Wdƒn1s`0Y| ¡S©NzTYPE I)rsr�ZrecvÚ _SSLSocketÚ isinstanceÚunwrapri)rrqÚcallbackÚ blocksizer‰r‹ÚdatarrrÚ retrbinary¥s   &zFTP.retrbinaryc Cs"|dur 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 durÜt|t ƒrÜ| ¡Wdƒn1sð0YWdƒn1�s0Y| ¡S) NúTYPE Ar/rr rVr{z*retr*rWrXrN)Ú print_linerrr�r8rrYrZrHr r<r=rJrOr‘r’r“ri)rrqr”rfr‹ÚfprSrrrÚ retrlines¿s,   ÿ   Fz FTP.retrlinescCs€| d¡| ||¡�R}| |¡}|s(q@| |¡|r||ƒqtdurZt|tƒrZ| ¡Wdƒn1sn0Y| ¡Sr�)rsr�ÚreadrPr‘r’r“ri)rrqršr•r”r‰r‹ÚbufrrrÚ storbinaryâs    &zFTP.storbinarycCsÐ| d¡| |¡�¤}| |jd¡}t|ƒ|jkrBtd|jƒ‚|sHq�|dd…tkrx|dtvrp|dd…}|t}| |¡|r||ƒqtdurªt |tƒrª|  ¡Wdƒn1s¾0Y|  ¡S)Nr˜r rVrWrX) rsr�rYrZrHr rlrPr‘r’r“ri)rrqršr”r‹r�rrrÚ storlinesÿs    &z FTP.storlinescCsd|}| |¡S)NrŽ©rs)rZpasswordrqrrrr"szFTP.acctcGs0d}|D]}|d|}qg}| ||j¡|S)NZNLSTú )r›Úappend)rr+rqÚargÚfilesrrrÚnlst#s zFTP.nlstcGshd}d}|dd…r>t|dƒtdƒkr>|dd…|d}}|D]}|rB|d|}qB| ||¡dS)NZLISTrXrr¡)Útyper›)rr+rqÚ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¡rXú=) rrrxr›r¢rIrOÚ partitionrwÚlower) rÚpathZfactsrqÚlinesrSZ facts_foundÚ_ÚnameÚentryZfactÚkeyÚvaluerrrÚmlsd;s  zFTP.mlsdcCs0| d|¡}|ddkr"t|ƒ‚| d|¡S)NzRNFR rrbzRNTO )rrrrs)rZfromnameZtonamerfrrrÚrenameWs z FTP.renamecCs.| d|¡}|dd…dvr"|St|ƒ‚dS)NzDELE r\>Z200Z250r�)rÚfilenamerfrrrÚdelete^sz FTP.deletec Csr|dkrTz | d¡WStyP}z$|jddd…dkr<‚WYd}~q`d}~00n |dkr`d}d|}| |¡S) Nz..ZCDUPrr\Ú500rrtzCWD )rsrr+)rÚdirnameÚmsgrqrrrÚcwdfs zFTP.cwdcCs:| d|¡}|dd…dkr6|dd… ¡}t|ƒSdS)NzSIZE r\Z213)rrÚstripÚint)rr¶rfrKrrrrŠsszFTP.sizecCs$| d|¡}| d¡sdSt|ƒS)NzMKD Ú257r©rsÚ startswithÚparse257)rr¹rfrrrÚmkd{s zFTP.mkdcCs| d|¡S)NzRMD r )rr¹rrrÚrmd„szFTP.rmdcCs | d¡}| d¡sdSt|ƒS)NZPWDr¾rr¿rhrrrÚpwdˆs  zFTP.pwdcCs| d¡}| ¡|S)NZQUIT)rsr*rhrrrr'‘s zFTP.quitcCs`z<|j}d|_|dur| ¡W|j}d|_|dur\| ¡n|j}d|_|durZ| ¡0dSr)r9r*r&)rr9r&rrrr*—s  ýz FTP.close)rrr-N)N)N)rrr)r N)N)r NN)N)9rrrr<rÚFTP_PORTr0ÚMAXLINErZr&r9r;rBr„rr#r%r,rr?rAÚdebugrDr>rTrUr[r`r:rirorrrsrzrr�r†rŒr�rr—r›ržrŸr"r¥r¨r´rµr·r»rŠrÂrÃrÄr'r*rrrrrJsnÿþ       7    #      rc s€eZdZejZdddddddedf ddœ‡fdd„ Zd‡fdd „ Zd d „Z d d „Z dd„Z dd„Z d‡fdd„ Z dd„Z‡ZS)ÚFTP_TLSrNrrc  s¦|dur|durtdƒ‚|dur0|dur0tdƒ‚|dus@|durVddl} |  dtd¡||_||_|dur|tj|j||d�}||_ d|_ t ƒj |||||| | d�dS) Nz4context and keyfile arguments are mutually exclusivez5context and certfile arguments are mutually exclusiverzAkeyfile and certfile are deprecated, use a custom context insteadr{)ÚcertfileÚkeyfileFr) r1ÚwarningsÚwarnÚDeprecationWarningrÊrÉÚsslZ_create_stdlib_contextÚ ssl_versionÚcontextÚ_prot_pÚsuperr#) rrr r!r"rÊrÉrÐrrrrË©Ú __class__rrr#Îs*ÿþÿzFTP_TLS.__init__Tcs*|rt|jtjƒs| ¡tƒ |||¡Sr)r’r&rÎÚ SSLSocketÚauthrÒr)rr r!r"ZsecurerÓrrrç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Õr1rÏZ PROTOCOL_TLSrsrÐÚ wrap_socketrr8rr9rhrrrrÖìs   z FTP_TLS.authcCs0t|jtjƒstdƒ‚| d¡}|j ¡|_|S)Nz not using TLSZCCC)r’r&rÎrÕr1rsr“rhrrrÚcccøs   z FTP_TLS.ccccCs| d¡| d¡}d|_|S)NzPBSZ 0zPROT PT©rsrÑrhrrrÚprot_ps  zFTP_TLS.prot_pcCs| d¡}d|_|S)NzPROT CFrÛrhrrrÚprot_cs zFTP_TLS.prot_ccs2tƒ ||¡\}}|jr*|jj||jd�}||fS)Nr×)rÒrŒrÑrÐrÙr)rrqr‰r‹rŠrÓrrrŒs ÿzFTP_TLS.ntransfercmdcCs8dt}|j |¡| ¡}|dd…dvr4t|ƒ‚|S)Nrjr\rk)rlr&rPr`rrnrrrros  z FTP_TLS.abort)rrrT)N)rrrrÎZPROTOCOL_TLS_CLIENTrÏrr#rrÖrÚrÜrÝrŒroÚ __classcell__rrrÓrrÈ«s!þý rÈcCs\|dd…dkrt|ƒ‚tdurt |dƒ}||fS) Nr\Z227rz#(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)rtr]érE) rÚ_227_reràrárãÚsearchrÚgroupsrxr½)rfràræZnumbersrr0rrrrƒBs rƒcCsÀ|dd…dkrt|ƒ‚| d¡}|dkr2t|ƒ‚| d|d¡}|dkrRt|ƒ‚||d||dkrrt|ƒ‚||d|… ||d¡}t|ƒdkr¤t|ƒ‚|d}t|dƒ}||fS)Nr\Z229ú(rú)r rE)rÚfindrrwrHr½)rfZpeerÚleftÚrightÚpartsrr0rrrr…Us   r…cCsˆ|dd…dkrt|ƒ‚|dd…dkr,dSd}d}t|ƒ}||kr„||}|d}|dkrz||ks„||dkrrq„|d}||}q<|S)Nr\r¾rEz "rr ú")rrH)rfr¹rLÚnrgrrrrÁjs  rÁcCs t|ƒdSr)r=)rSrrrr™€sr™rÚIc Csš|s|}d|}| |¡| |¡t| d¡ƒ\}}| ||¡| d|¡}|dd…dvrdt‚| d|¡}|dd…dvr†t‚| ¡| ¡dS)NzTYPE r‚zSTOR r\>Z125r‡úRETR )rsrƒrrrzrri) Ú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 yÞ|durÚtj   d¡Yn80z|  |¡\}}}Wn t�ytj   d¡Yn0| |||¡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¡�q2| ¡dS)Nr{rr z-dz-rrz5Could not open account file -- using anonymous login.z$No account -- using anonymous login.z-lZCWDr¡z-prôi)rHr2Úargvr=ÚtestÚ__doc__ÚexitÚnetrcrrAr(ÚstderrÚwriteZauthenticatorsÚKeyErrorrr¨rrrDrBr—Ústdoutr') rür<ZrcfilerZftpZuseridr!r"Znetrcobjr9rqrfrrrrù›sR        ÿ "   ÿrùÚ__main__)rró)$r2r4rÚ__all__rmrÅrÆÚ Exceptionr rrrrr(r)rrOrlrrÎÚ ImportErrorr‘rÕrÈr¢ZSSLErrorrßrˆrèrƒr…rÁr™r÷rùrrrrrÚ'sL  ^   }  9