a DOg@sHddlZddlZddlmZgdZdZdZdZGdddeZGd d d eZ Gd d d eZ Gd ddeZ GdddeZ ee efZdZdZGdddZz ddlZWneydZYn00ejZGdddeZedee eejfZdaddZdaddZddZddZdd Z d(d#d$Z!d%d&Z"e#d'krDe"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 9r c@s eZdZdS)rNr rrrrr:rrc@s eZdZdS)rNr rrrrr;rrc@s eZdZdS)rNr rrrrr<rrc@s eZdZdS)rNr rrrrr=rr s c@seZdZdZdZeZeZdZ dZ dZ dZ dZ ddddedfdddd Zd d Zd d Zd\ddZddZddZeZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Z d+d,Z!d-d.Z"d/d0Z#d1d2Z$d]d3d4Z%d^d5d6Z&d_d7d8Z'd`d:d;Z(dadd?Z*dcd@dAZ+dBdCZ,dDdEZ-dFdGZ.dgfdHdIZ/dJdKZ0dLdMZ1dNdOZ2dPdQZ3dRdSZ4dTdUZ5dVdWZ6dXdYZ7dZd[Z8dS)drrNTFutf-8encodingcCs6||_||_||_|r2|||r2||||dSN)rsource_addresstimeoutconnectlogin)selfhostuserpasswdacctrrrrrr__init__ms z FTP.__init__cCs|Srrrrrr __enter__}sz FTP.__enter__c Gs^|jdurZz:z |Wnttfy.Yn0W|jdurZ|n|jdurX|0dSr)sockquitOSErrorEOFErrorclose)rargsrrr__exit__s    z FTP.__exit__cCs|dkr||_|dkr||_|dkr*||_|jdurB|jsBtd|durP||_td||j|jtj|j|jf|j|jd|_ |j j |_ |j j d|j d|_||_|jS) Nrrr-z0Non-blocking socket (timeout=0) is not supportedzftplib.connectrrr)rportr ValueErrorrsysauditsocketcreate_connectionr&familyafmakefilerfilegetrespwelcome)rrr0rrrrrrs$  z FTP.connectcCs|jrtd||j|jS)Nz *welcome*) debuggingprintsanitizer;r$rrr getwelcomeszFTP.getwelcomecCs ||_dSr)r<)rlevelrrrset_debuglevelszFTP.set_debuglevelcCs ||_dSr) passiveserver)rvalrrrset_pasvsz FTP.set_pasvcCsJ|dddvrBt|d}|ddd|d||d}t|S)N>zpass PASS r*)lenrstriprepr)rsirrrr>s$z FTP.sanitizecCs`d|vsd|vrtdtd|||t}|jdkrHtd|||j| |j dS)N  z4an illegal newline character should not be containedzftplib.sendcmdr z*put*) r1r2r3CRLFr<r=r>r&sendallencoderrlinerrrputlines z FTP.putlinecCs$|jrtd||||dS)Nz*cmd*)r<r=r>rTrRrrrputcmdsz FTP.putcmdcCs|j|jd}t||jkr.td|j|jdkrHtd|||sPt|ddt krn|dd}n|ddt vr|dd}|S)Nr got more than %d bytesz*get*) r9readlinemaxlinerHr r<r=r>r)rOrRrrrgetlines  z FTP.getlinecCs`|}|dddkr\|dd}|}|d|}|dd|kr$|dddkr$q\q$|S)N-rN)r[)rrScodeZnextlinerrr getmultilines  zFTP.getmultilinecCsp|}|jrtd|||dd|_|dd}|dvrD|S|dkrTt||dkrdt|t|dS)Nz*resp*r\r >12345)r`r<r=r>Zlastresprrr)rrespcrrrr:s z FTP.getrespcCs$|}|dddkr t||S)Nr rb)r:rrrfrrrvoidrespsz FTP.voidrespcCsTdt}|jdkr"td|||j|t|}|dddvrPt||S)NABORr z *put urgent*r\Z225Z226Z426) B_CRLFr<r=r>r&rPMSG_OOBr`rrrSrfrrraborts z FTP.abortcCs|||Sr)rUr:rcmdrrrsendcmds z FTP.sendcmdcCs|||Sr)rUrirprrrvoidcmds z FTP.voidcmdcCsB|d}t|dt|dg}||}dd|}||S)N.zPORT ,)splitrJjoinrs)rrr0ZhbytesZpbytesbytesrqrrrsendport s  z FTP.sendportcCsbd}|jtjkrd}|jtjkr$d}|dkr4tddt||t|dg}dd|}||S)Nrr zunsupported address familyrzEPRT |)r7r4AF_INETZAF_INET6rrJrxrs)rrr0r7fieldsrqrrrsendeprt*s  z FTP.sendeprtcCsltjd|jdd}|d}|jd}|jtjkrF|||}n |||}|jt urh| |j|S)N)rrr )r6Zbacklogr) r4Z create_serverr7Z getsocknamer&r}rzrrr settimeout)rr&r0rrfrrrmakeport7s     z FTP.makeportcCs\|jtjkr:t|d\}}|jr*|}qT|jd}nt|d|j\}}||fS)NPASVrZEPSV) r7r4r}parse227rrtrust_server_pasv_ipv4_addressr&Z getpeernameparse229)rZuntrusted_hostr0rrrrmakepasvDs z FTP.makepasvc CsLd}|jr|\}}tj||f|j|jd}zL|durF|d|||}|ddkrd|}|ddkrxt|Wn| Yn0n| |}|dur|d|||}|ddkr|}|ddkrt|| \}} |jt ur | |jWdn1s 0Y|dddkrDt|}||fS)Nr.zREST %srrbrar\150)rBrr4r5rrrrr:rr*rZacceptrrparse150) rrqrestsizerr0connrfr&Zsockaddrrrr ntransfercmdPs>            ,zFTP.ntransfercmdcCs|||dS)Nr)r)rrqrrrr transfercmdszFTP.transfercmdcCs|sd}|sd}|sd}|dkr0|dvr0|d}|d|}|ddkrX|d|}|ddkrr|d |}|dd krt||S) NZ anonymousr>rr^z anonymous@zUSER rrcrFACCT rbrrr)rr r!r"rfrrrrs    z FTP.loginr cCsr|d|||D}||}|s(q2||qtdurLt|trL|Wdn1s`0Y|SNzTYPE I)rsrZrecv _SSLSocket isinstanceunwrapri)rrqcallback blocksizerrdatarrr retrbinarys   &zFTP.retrbinaryc Cs"|dur t}|d}||}|jd|jd}||jd}t||jkr`td|j|j dkrxt dt ||s~q|ddt kr|dd}n|d dd kr|dd }||q4t durt|t r|Wdn1s0YWdn1s0Y|S) NTYPE Ar/rr rVr{z*retr*rWrXrN) print_linerrrr8rrYrZrHr r<r=rJrOrrrri)rrqrrfrfprSrrr retrliness,      Fz FTP.retrlinescCs|d|||R}||}|s(q@|||r||qtdurZt|trZ|Wdn1sn0Y|Sr)rsrreadrPrrrri)rrqrrrrrbufrrr storbinarys    &zFTP.storbinarycCs|d||}||jd}t||jkrBtd|j|sHq|ddtkrx|dtvrp|dd}|t}|||r||qtdurt |tr| Wdn1s0Y| S)Nrr rVrWrX) rsrrYrZrHr rlrPrrrri)rrqrrrrrrr storliness    &z FTP.storlinescCsd|}||S)Nrrs)rZpasswordrqrrrr"szFTP.acctcGs0d}|D]}|d|}qg}|||j|S)NZNLST )rappend)rr+rqargfilesrrrnlst#s zFTP.nlstcGshd}d}|ddr>t|dtdkr>|dd|d}}|D]}|rB|d|}qB|||dS)NZLISTrXrr)typer)rr+rqfuncrrrrdir,s zFTP.dirc cs|r|dd|d|r*d|}nd}g}|||j|D]\}|td\}}}i} |dddD] } | d\} }} | | | <qt|| fVqDdS)Nz OPTS MLST ;zMLSD %sZMLSDrrX=) rrrxrrrIrO partitionrwlower) rpathZfactsrqlinesrSZ facts_found_nameentryZfactkeyvaluerrrmlsd;s  zFTP.mlsdcCs0|d|}|ddkr"t||d|S)NzRNFR rrczRNTO )rrrrs)rZfromnameZtonamerfrrrrenameWs z FTP.renamecCs.|d|}|dddvr"|St|dS)NzDELE r\>Z200Z250r)rfilenamerfrrrdelete^sz FTP.deletec Csr|dkrTz |dWStyP}z$|jddddkr<WYd}~q`d}~00n |dkr`d}d|}||S) Nz..ZCDUPrr\500rrtzCWD )rsrr+)rdirnamemsgrqrrrcwdfs zFTP.cwdcCs:|d|}|dddkr6|dd}t|SdS)NzSIZE r\Z213)rrstripint)rrrfrKrrrrsszFTP.sizecCs$|d|}|dsdSt|S)NzMKD 257rrs startswithparse257)rrrfrrrmkd{s zFTP.mkdcCs|d|S)NzRMD r)rrrrrrmdszFTP.rmdcCs |d}|dsdSt|S)NZPWDrrrrhrrrpwds  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<rFTP_PORTr0MAXLINErZr&r9r;rBrrr#r%r,rr?rAdebugrDr>rTrUr[r`r:rirorrrsrzrrrrrrrrrrr"rrrrrrrrrrr'r*rrrrrJsn       7    #      rc seZdZejZdddddddedf ddfdd Zdfdd Zd d Z d d Z ddZ ddZ dfdd Z ddZZS)FTP_TLSrNrrc  s|dur|durtd|dur0|dur0td|dus@|durVddl} | dtd||_||_|dur|tj|j||d}||_ d|_ t j |||||| | ddS) Nz4context and keyfile arguments are mutually exclusivez5context and certfile arguments are mutually exclusiverzAkeyfile and certfile are deprecated, use a custom context insteadr{)certfilekeyfileFr) r1warningswarnDeprecationWarningrrsslZ_create_stdlib_context ssl_versioncontext_prot_psuperr#) rrr r!r"rrrrrrr __class__rrr#s*zFTP_TLS.__init__Tcs*|rt|jtjs|t|||Sr)rr&r SSLSocketauthrr)rr r!r"Zsecurerrrrsz FTP_TLS.logincCsft|jtjrtd|jtjkr.|d}n |d}|jj |j|j d|_|jj d|j d|_ |S)NzAlready using TLSzAUTH TLSzAUTH SSLZserver_hostnamer/)moder)rr&rrr1rZ PROTOCOL_TLSrsr wrap_socketrr8rr9rhrrrrs   z FTP_TLS.authcCs0t|jtjstd|d}|j|_|S)Nz not using TLSZCCC)rr&rrr1rsrrhrrrcccs   z FTP_TLS.ccccCs|d|d}d|_|S)NzPBSZ 0zPROT PTrsrrhrrrprot_ps  zFTP_TLS.prot_pcCs|d}d|_|S)NzPROT CFrrhrrrprot_cs zFTP_TLS.prot_ccs2t||\}}|jr*|jj||jd}||fS)Nr)rrrrrr)rrqrrrrrrrs zFTP_TLS.ntransfercmdcCs8dt}|j||}|dddvr4t||S)Nrjr\rk)rlr&rPr`rrnrrrros  z FTP_TLS.abort)rrrT)N)rrrrZPROTOCOL_TLS_CLIENTrrr#rrrrrrro __classcell__rrrrrs! rcCs\|dddkrt|tdurt |d}||fS) Nr\Z227rz#(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)rtr]rE) r_227_rerrrsearchrgroupsrxr)rfrrZnumbersrr0rrrrBs rcCs|dddkrt||d}|dkr2t||d|d}|dkrRt|||d||dkrrt|||d|||d}t|dkrt||d}t|d}||fS)Nr\Z229(r)r rE)rfindrrwrHr)rfZpeerleftrightpartsrr0rrrrUs   rcCs|dddkrt||dddkr,dSd}d}t|}||kr||}|d}|dkrz||ks||dkrrq|d}||}q<|S)Nr\rrEz "rr ")rrH)rfrrLnrgrrrrjs  rcCs t|dSr)r=)rSrrrrsrrIc Cs|s|}d|}||||t|d\}}||||d|}|dddvrdt|d|}|dddvrt||dS)NzTYPE rzSTOR r\>Z125rRETR )rsrrrrzrri) sourceZ sourcenametargetZ targetnamerZ sourcehostZ sourceportZtreplyZsreplyrrrftpcps   rc Csttjdkr"ttjtdddl}d}d}tjddkrR|d}tjd=q2tjddddkrtjddd}tjd=tjd}t|}| |d}}}z||}Wn&t y|durtj dYn80z| |\}}}Wn tytj dYn0||||tjddD]} | ddd kr\|| ddnt| dddkrd } | ddr| d | dd} || } n0| d kr||j n|d | tjj dq2|dS)Nr{rr z-dz-rrz5Could not open account file -- using anonymous login.z$No account -- using anonymous login.z-lZCWDrz-pri)rHr2argvr=test__doc__exitnetrcrrAr(stderrwriteZauthenticatorsKeyErrorrrrrrDrBrstdoutr') rr<ZrcfilerZftpZuseridr!r"Znetrcobjr9rqrfrrrrsR         "   r__main__)rr)$r2r4r__all__rmrr Exceptionr rrrrr(r)rrOrlrr ImportErrorrrrrZSSLErrorrrrrrrrrrrrrrr'sL  ^   }  9