grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026o ®û|j¡Œã@sL ddlZddlZddlmZgd¢ZdZdZdZGdd„deƒZGd d „d eƒZ Gd d „d eƒZ Gd d„deƒZ Gdd„deƒZ ee efZdZdZGdd„dƒZzddlZWn eybdZYnwejZGdd„deƒZe d¡ee eejfZdadd„Zdadd„Zdd„Zdd„Zdd „Z d(d#d$„Z!d%d&„Z"e#d'kr¤e"ƒdSdS))éN)Ú_GLOBAL_DEFAULT_TIMEOUT)ÚFTPÚ error_replyÚ error_tempÚ error_permÚ error_protoÚ all_errorsééé c@ó eZdZdS)ÚErrorN©Ú__name__Ú __module__Ú __qualname__©rrú-/opt/alt/python310/lib64/python3.10/ftplib.pyr 9ó r c@r )rNrrrrrr:rrc@r )rNrrrrrr;rrc@r )rNrrrrrr<rrc@r )rNrrrrrr=rrú s c@s¨eZdZ dZdZeZeZdZ 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(d]dd?„Z*d]d@dA„Z+dBdC„Z,dDdE„Z-dFdG„Z.dgfdHdI„Z/dJdK„Z0dLdM„Z1dNdO„Z2dPdQ„Z3dRdS„Z4dTdU„Z5dVdW„Z6dXdY„Z7dZd[„Z8dS)arrÚNTFúutf-8©ÚencodingcCs@ ||_||_||_|r| |¡|r| |||¡dSdSdS©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 Gsf|jdur1z z| ¡Wn ttfyYnwW|jdur$| ¡dSdS|jdur0| ¡wwdSr)ÚsockÚquitÚOSErrorÚEOFErrorÚclose)rÚargsrrrÚ__exit__�s  ÿ€  ÿ ÿúz FTP.__exit__éüÿÿcCs² |dkr||_|dkr||_|dkr||_|jdur"|js"tdƒ‚|dur)||_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)rr r1rrrrrr‹s&ÿ  z FTP.connectcCs |jr td| |j¡ƒ|jS)Nz *welcome*)Ú debuggingÚprintÚsanitizer<r%rrrÚ getwelcome¥szFTP.getwelcomecCó ||_dSr)r=)rÚlevelrrrÚset_debuglevel¬s zFTP.set_debuglevelcCrAr)Ú passiveserver)rÚvalrrrÚset_pasvµs z FTP.set_pasvcCsJ|dd…dvr!t| d¡ƒ}|dd…d|d||d…}t|ƒS)Né>úPASS zpass rÚ*)ÚlenÚrstripÚrepr)rÚsÚirrrr?¼s$z FTP.sanitizecCs`d|vsd|vr tdƒ‚t d||¡|t}|jdkr$td| |¡ƒ|j |  |j ¡¡dS)Nú Ú z4an illegal newline character should not be containedzftplib.sendcmdr z*put*) r2r3r4ÚCRLFr=r>r?r'ÚsendallÚencoder©rÚlinerrrÚputlineÃs z FTP.putlinecCs$|jr td| |¡ƒ| |¡dS)Nz*cmd*)r=r>r?rVrTrrrÚputcmdÍsz FTP.putcmdcCs�|j |jd¡}t|ƒ|jkrtd|jƒ‚|jdkr$td| |¡ƒ|s(t‚|dd…t kr8|dd…}|S|dd…t vrF|dd…}|S)Nr úgot more than %d bytesz*get*éþÿÿÿéÿÿÿÿ) r:ÚreadlineÚmaxlinerJr r=r>r?r*rQrTrrrÚgetlineÓs  þ z FTP.getlinecCsf| ¡}|dd…dkr1|dd…} | ¡}|d|}|dd…|kr0|dd…dkr0 |Sq|S)Nééú-r rP)r])rrUÚcodeZnextlinerrrÚ getmultilineås  úzFTP.getmultilinecCsl| ¡}|jrtd| |¡ƒ|dd…|_|dd…}|dvr"|S|dkr*t|ƒ‚|dkr2t|ƒ‚t|ƒ‚)Nz*resp*r^r >Ú3Ú2Ú1Ú4Ú5)rbr=r>r?Zlastresprrr)rÚrespÚcrrrr;ós z FTP.getrespcCs& | ¡}|dd…dkrt|ƒ‚|S)Nr rd)r;r©rrhrrrÚvoidresps z FTP.voidrespcCsV dt}|jdkrtd| |¡ƒ|j |t¡| ¡}|dd…dvr)t|ƒ‚|S)NóABORr z *put urgent*r^¾Z225Z426Z226) ÚB_CRLFr=r>r?r'rRÚMSG_OOBrbr©rrUrhrrrÚaborts z FTP.abortcCó | |¡| ¡Sr)rWr;©rÚcmdrrrÚsendcmdó z FTP.sendcmdcCrrr)rWrkrsrrrÚvoidcmdrvz FTP.voidcmdcCsD | d¡}t|dƒt|dƒg}||}dd |¡}| |¡S)NÚ.ézPORT ú,)ÚsplitrLÚjoinrw)rr r1ZhbytesZpbytesÚbytesrtrrrÚsendport s   z FTP.sendportcCsd d}|jtjkr d}|jtjkrd}|dkrtdƒ‚dt|ƒ|t|ƒdg}dd |¡}| |¡S)Nrr ézunsupported address familyrzEPRT ú|)r8r5ÚAF_INETZAF_INET6rrLr|rw)rr r1r8ZfieldsrtrrrÚsendeprt*s   z FTP.sendeprtcCsn tjd|jdd�}| ¡d}|j ¡d}|jtjkr$| ||¡}n| ||¡}|jt ur5|  |j¡|S)N)rrr )r7Zbacklogr) r5Z create_serverr8Z getsocknamer'r�r~r‚rrÚ settimeout)rr'r1r rhrrrÚmakeport7s     z FTP.makeportcCsj |jtjkr$t| d¡ƒ\}}|jr|}||fS|j ¡d}||fSt| d¡|j ¡ƒ\}}||fS)NÚPASVrZEPSV) r8r5r�Úparse227ruÚtrust_server_pasv_ipv4_addressr'Ú getpeernameÚparse229)rÚuntrusted_hostr1r rrrÚmakepasvDs ýÿz FTP.makepasvc Cs@ d}|jrG| ¡\}}tj||f|j|jd�}z&|dur$| d|¡| |¡}|ddkr3| ¡}|ddkr=t|ƒ‚WnQ|  ¡‚|  ¡�=}|durW| d|¡| |¡}|ddkrf| ¡}|ddkrpt|ƒ‚|  ¡\}} |jt ur�|  |j¡Wdƒn1s‹wY|dd…dkrœt|ƒ}||fS)Nr/zREST %srrdrer^Ú150)rDr‹r5r6rrrur;rr+r„ZacceptrrƒÚparse150) rrtÚrestÚsizer r1Úconnrhr'ZsockaddrrrrÚ ntransfercmdPsF ÿ   ÿ       €õ zFTP.ntransfercmdcCs | ||¡dS)Nr)r‘)rrtrŽrrrÚ transfercmd‡szFTP.transfercmdcCsŒ |sd}|s d}|s d}|dkr|dvr|d}| d|¡}|ddkr-| d|¡}|ddkr:| d |¡}|dd krDt|ƒ‚|S) NZ anonymousr>rr`z anonymous@zUSER rrcrHúACCT rd©rur)rr!r"r#rhrrrr‹s"   z FTP.loginr cCs¤ | d¡| ||¡�:} | |¡}|sn||ƒqtdur2t|tƒr<| ¡Wdƒ| ¡SWdƒ| ¡SWdƒ| ¡S1sIwY| ¡S©NzTYPE I)rwr’ZrecvÚ _SSLSocketÚ isinstanceÚunwraprk)rrtÚcallbackÚ blocksizerŽr�ÚdatarrrÚ retrbinary¥s*  ü  ø þ ù þ ù ÷ zFTP.retrbinaryc Cs> |durt}| d¡}| |¡�‚}|jd|jd��]} | |jd¡}t|ƒ|jkr2td|jƒ‚|j dkr>t dt |ƒƒ|sAn"|dd…t krP|dd…}n|d d…d kr^|dd …}||ƒqt durpt|t ƒrp| ¡Wdƒn1szwYWdƒ| ¡SWdƒ| ¡S1s–wY| ¡S) NúTYPE Ar0rr rXrz*retr*rYrZrP)Ú print_linerur’r9rr[r\rJr r=r>rLrQr–r—r˜rk)rrtr™rhr�ÚfprUrrrÚ retrlines¿s>   ÿ  ô€(ï îîz FTP.retrlinescCs² | d¡| ||¡�A} | |¡}|sn | |¡|r!||ƒqtdur9t|tƒrC| ¡Wdƒ| ¡SWdƒ| ¡SWdƒ| ¡S1sPwY| ¡Sr•)rwr’ÚreadrRr–r—r˜rk)rrtrŸršr™rŽr�ÚbufrrrÚ storbinaryâs.   ú  ö þ ÷ þ ÷ õ zFTP.storbinarycCs | d¡| |¡�j} | |jd¡}t|ƒ|jkr#td|jƒ‚|s&n$|dd…tkr>|dtvr:|dd…}|t}| |¡|rI||ƒq tdurat |tƒrk|  ¡Wdƒ|  ¡SWdƒ|  ¡SWdƒ|  ¡S1sxwY|  ¡S)Nr�r rXrYrZ) rwr’r[r\rJr rnrRr–r—r˜rk)rrtrŸr™r�r¢rrrÚ storlinesÿs8  õ  ñþ òþ òðz FTP.storlinescCs d|}| |¡S)Nr“©rw)rZpasswordrtrrrr#s zFTP.acctcGs2 d}|D]}|d|}qg}| ||j¡|S)NZNLSTú )r Úappend)rr,rtÚargÚfilesrrrÚnlst#szFTP.nlstcGsj d}d}|dd…r t|dƒtdƒkr |dd…|d}}|D] }|r,|d|}q"| ||¡dS)NZLISTrZrr¦)Útyper )rr,rtÚfuncr¨rrrÚdir,s  €zFTP.dirc csª� |r| dd |¡d¡|rd|}nd}g}| ||j¡|D].}| t¡ d¡\}}}i} |dd… d¡D]} |  d¡\} }} | | |  ¡<q<|| fVq$dS)Nz OPTS MLST ú;zMLSD %sZMLSDr¦rZú=) rur|r r§rKrQÚ partitionr{Úlower) rÚpathZfactsrtÚlinesrUZ facts_foundÚ_ÚnameÚentryZfactÚkeyÚvaluerrrÚmlsd;s"€   úzFTP.mlsdcCs2 | d|¡}|ddkrt|ƒ‚| d|¡S)NzRNFR rrczRNTO )rurrw)rZfromnameZtonamerhrrrÚrenameWs  z FTP.renamecCs, | d|¡}|dd…dvr|St|ƒ‚)NzDELE r^>Z250Z200r”)rÚfilenamerhrrrÚdelete^s z FTP.deletec Csr |dkr*z| d¡WSty)}z|jddd…dkr‚WYd}~n d}~ww|dkr0d}d|}| |¡S) Nz..ZCDUPrr^Ú500rrxzCWD )rwrr,)rÚdirnameÚmsgrtrrrÚcwdfs  ÿ€ÿ zFTP.cwdcCs< | d|¡}|dd…dkr|dd… ¡}t|ƒSdS)NzSIZE r^Z213)ruÚstripÚint)rr»rhrMrrrr�ss þzFTP.sizecCs& | d|¡}| d¡sdSt|ƒS)NzMKD Ú257r©rwÚ startswithÚparse257)rr¾rhrrrÚmkd{s  zFTP.mkdcCs | d|¡S)NzRMD r¥)rr¾rrrÚrmd„szFTP.rmdcCs" | d¡}| d¡s dSt|ƒS)NZPWDrÃrrÄrjrrrÚpwdˆs   zFTP.pwdcCs | d¡}| ¡|S)NZQUIT)rwr+rjrrrr(‘s zFTP.quitcCsf z!|j}d|_|dur| ¡W|j}d|_|dur!| ¡dSdS|j}d|_|dur2| ¡wwr)r:r+r')rr:r'rrrr+—s"€ ÿþ ÿz FTP.close)rrr.Nr)rrr)r N)r NN)9rrrr=r ÚFTP_PORTr1ÚMAXLINEr\r'r:r<rDr‡rr$r&r-rr@rCÚdebugrFr?rVrWr]rbr;rkrqrurwr~r‚r„r‹r‘r’rrœr r£r¤r#rªr­r¹rºr¼rÀr�rÇrÈrÉr(r+rrrrrJsrÿ þ     7    #     rc s‚eZdZ ejZdddddddedf ddœ‡fdd„ Zd‡fdd „ Zd d „Z d d „Z dd„Z dd„Z d‡fdd„ Z dd„Z‡ZS)ÚFTP_TLSrNrrc  s¦|dur |dur tdƒ‚|dur|durtdƒ‚|dus |dur+ddl} |  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) r2ÚwarningsÚwarnÚDeprecationWarningrÏrÎÚsslZ_create_stdlib_contextÚ ssl_versionÚcontextÚ_prot_pÚsuperr$) rr r!r"r#rÏrÎrÕrrrrЩÚ __class__rrr$Îs*ÿþ ÿzFTP_TLS.__init__Tcs*|r t|jtjƒs | ¡tƒ |||¡Sr)r—r'rÓÚ SSLSocketÚauthr×r)rr!r"r#ZsecurerØrrrçsz FTP_TLS.logincCsh t|jtjƒr tdƒ‚|jtjkr| d¡}n| d¡}|jj |j|j d�|_|jj d|j d�|_ |S)NzAlready using TLSzAUTH TLSzAUTH SSL©Zserver_hostnamer0)Úmoder)r—r'rÓrÚr2rÔZ PROTOCOL_TLSrwrÕÚ wrap_socketr r9rr:rjrrrrÛìs   z FTP_TLS.authcCs2 t|jtjƒs tdƒ‚| d¡}|j ¡|_|S)Nz not using TLSZCCC)r—r'rÓrÚr2rwr˜rjrrrÚcccøs   z FTP_TLS.ccccCs | d¡| d¡}d|_|S)NzPBSZ 0zPROT PT©rwrÖrjrrrÚprot_ps  zFTP_TLS.prot_pcCs | d¡}d|_|S)NzPROT CFràrjrrrÚprot_cs zFTP_TLS.prot_ccs2tƒ ||¡\}}|jr|jj||jd�}||fS)NrÜ)r×r‘rÖrÕrÞr )rrtrŽr�r�rØrrr‘s ÿzFTP_TLS.ntransfercmdcCs8dt}|j |¡| ¡}|dd…dvrt|ƒ‚|S)Nrlr^rm)rnr'rRrbrrprrrrqs  z FTP_TLS.abort)rrrTr)rrrrÓZPROTOCOL_TLS_CLIENTrÔrr$rrÛrßrárâr‘rqÚ __classcell__rrrØrrÍ«s  þý rÍcCs^ |dd…dkr t|ƒ‚tdurddl}| d|j|jB¡at |¡}|s(dSt| d¡ƒS)Nr^rŒrz150 .* \((\d+) bytes\)r ) rÚ_150_reÚreÚcompileÚ IGNORECASEÚASCIIÚmatchrÂÚgroup)rhråÚmrrrr�.s ÿ r�cCsŒ |dd…dkr t|ƒ‚tdurddl}| d|j¡at |¡}|s't|ƒ‚| ¡}d |dd…¡}t |dƒd>t |dƒ}||fS) Nr^Z227rz#(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)rxr_érG) rÚ_227_rerårærèÚsearchrÚgroupsr|rÂ)rhrårëZnumbersr r1rrrr†Bs r†cCs |dd…dkr t|ƒ‚| d¡}|dkrt|ƒ‚| d|d¡}|dkr*t|ƒ‚||d||dkr:t|ƒ‚||d|… ||d¡}t|ƒdkrSt|ƒ‚|d}t|dƒ}||fS)Nr^Z229ú(rú)r rG)rÚfindrr{rJrÂ)rhZpeerÚleftÚrightÚpartsr r1rrrr‰Us    r‰cCs” |dd…dkr t|ƒ‚|dd…dkrdSd}d}t|ƒ}||krH||}|d}|dkr@||ks9||dkr< |S|d}||}||ks#|S)Nr^rÃrGz "rr ú")rrJ)rhr¾rNÚnrirrrrÆjs&þùrÆcCs t|ƒdSr)r>)rUrrrrž€s ržrÚIc Cs¶ |s|}d|}| |¡| |¡t| d¡ƒ\}}|jr"|}n|j ¡d}| ||¡| d|¡}|dd…dvr@t‚| d|¡} | dd…dvrQt‚| ¡| ¡dS)NzTYPE r…rzSTOR r^>rŒZ125úRETR ) rwr†rur‡r'rˆr~rrk) ÚsourceZ sourcenameÚtargetZ targetnamer«rŠZ sourceportZ sourcehostZtreplyZsreplyrrrÚftpcp…s&    rüc Csâ ttjƒdkrttjƒt d¡ddl}d}d}tjddkr0|d}tjd=tjddks!tjddd…dkrHtjddd…}tjd=tjd}t|ƒ}|  |¡d}}}z| |¡}Wnt yv|durttj   d¡Ynwz |  |¡\}}}Wnty�tj   d¡Ynw| |||¡tjdd…D]K} | dd…d kr³| | dd…¡qŸ| dd…dkrÓd } | dd…rÍ| d | dd…} | | ¡} qŸ| d krß| |j ¡qŸ| d | tjj d¡qŸ| ¡dS)Nrrr z-dz-rrz5Could not open account file -- using anonymous login.z$No account -- using anonymous login.z-lZCWDr¦z-prùi)rJr3Úargvr>ÚtestÚ__doc__ÚexitÚnetrcrrCr)ÚstderrÚwriteZauthenticatorsÚKeyErrorrr­rurFrDrœÚstdoutr() rr=Zrcfiler ZftpZuseridr"r#Znetrcobjr:rtrhrrrrþ¤s\  þ     €þ ÿþ   ÿ rþÚ__main__)rrø)$r3r5rÚ__all__rorÊrËÚ Exceptionr rrrrr)r*rrQrnrrÓÚ ImportErrorr–rÚrÍr§ZSSLErrorrär�rír†r‰rÆržrürþrrrrrÚsT&  ^  ÿ } 9 ÿ