f ddlZddlZddlmZgdZdZdZdZGddeZGd d eZ Gd d eZ Gd deZ GddeZ ee efZdZdZGddZ ddlZejZGddeZedee eejfZn #e$rdZYnwxYwdadZdadZdZdZdZ d!dZ!dZ"e#d kr e"dSdS)"N)_GLOBAL_DEFAULT_TIMEOUT)FTP error_reply error_temp error_perm error_proto all_errors ceZdZdS)ErrorN__name__ __module__ __qualname__-/opt/alt/python311/lib64/python3.11/ftplib.pyrr9rrceZdZdS)rNrrrrrr:rrrceZdZdS)rNrrrrrr;rrrceZdZdS)rNrrrrrr<rrrceZdZdS)rNrrrrrr=rrr s cXeZdZ dZdZeZeZdZ dZ dZ dZ dZ ddddedfdddZd Zd Zd3d Zd ZdZeZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$d4dZ%d4dZ&d5d Z'd6d"Z(d4d#Z)d7d$Z*d4d%Z+d&Z,d'Z-d(Z.dgfd)Z/d*Z0d+Z1d,Z2d-Z3d.Z4d/Z5d0Z6d1Z7d2Z8dS)8rrNTFutf-8encodingc ||_||_||_|r0|||r||||dSdSdSN)r source_addresstimeoutconnectlogin)selfhostuserpasswdacctr$r#r s r__init__z FTP.__init__msq ! ,  / LL    / 4..... / / / /rc|Sr"rr's r __enter__z FTP.__enter__}s rc|jm |n#ttf$rYnwxYw|j|dSdS#|j|wwxYwdSr")sockquitOSErrorEOFErrorclose)r'argss r__exit__z FTP.__exit__s 9  ! X&    9(JJLLLLL)(49(JJLLLL) ! s!A2A2AA2c |dkr||_|dkr||_|dkr||_|j|jstd|||_t jd||j|jtj|j|jf|j|j|_ |j j |_ |j d|j |_||_|jS) Nrrr8z0Non-blocking socket (timeout=0) is not supportedzftplib.connectr#rr)r(portr$ ValueErrorr#sysauditsocketcreate_connectionr1familyafmakefiler filegetrespwelcome)r'r(r<r$r#s rr%z FTP.connects  2::DI !88DI d??"DL < #DL #OPP P  %"0D  "D$)TY???,di-CT\<@ < +t}}T\:: ; ; ;|rc ||_dSr")rI)r'levels rset_debuglevelzFTP.set_debuglevels H rc ||_dSr") passiveserver)r'vals rset_pasvz FTP.set_pasvs 7!rc|dddvr@t|d}|ddd|dz zz||dz}t|S)N>pass PASS r*)lenrstriprepr)r'sis rrKz FTP.sanitizesa RaR5& & &AHHV$$%%A"1"QqS !AabbE)AAwwrc4d|vsd|vrtdtjd|||tz}|jdkr#t d|||j| |j dS)N  z4an illegal newline character should not be containedzftplib.sendcmdr z*put*) r=r>r?CRLFrIrJrKr1sendallencoder r'lines rputlinez FTP.putlines 4<<44<<STT T "D$///d{ >A   '4==.. / / / $++dm4455555rc|jr#td||||dS)Nz*cmd*)rIrJrKrfrds rputcmdz FTP.putcmds= >>5$--*=*=>>> Trc|j|jdz}t||jkrt d|jz|jdkr#t d|||st|ddtkr |dd}n|ddtvr |dd}|S)Nr got more than %d bytesz*get*) rEreadlinemaxlinerYrrIrJrKr4rards rgetlinez FTP.getlinesy!!$,"233 t99t| # #04<?@@ @ >A   '4==.. / / / N 9  9DD "##Y$  9D rc|}|dddkrE|dd} |}|d|zz}|dd|kr|dddkrn:|S)N-r r`)ro)r'recodenextlines r getmultilinezFTP.getmultilines||~~ !9  8D <<>>th/BQB<4'' 1 ,,    rc.|}|jr#td|||dd|_|dd}|dvr|S|dkrt ||dkrt |t|)Nz*resp*rqr >12345)rvrIrJrKlastresprrr)r'respcs rrFz FTP.getresps  "" > 1 (DMM$// 0 0 0RaR !H   K 88T"" " 88T"" "$rcj |}|dddkrt||S)Nr ry)rFrr'r~s rvoidrespz FTP.voidresps63||~~ 8s??d## # rc dtz}|jdkr#td|||j|t |}|dddvrt||S)NABORr z *put urgent*rq225226426) B_CRLFrIrJrKr1rbMSG_OOBrvrr'rer~s rabortz FTP.aborts D >A   .$--"5"5 6 6 6 $(((  "" 80 0 0d## # rcV |||Sr")rhrFr'cmds rsendcmdz FTP.sendcmds%5 C||~~rcV |||Sr")rhrrs rvoidcmdz FTP.voidcmds%F C}}rc |d}t|dzt|dzg}||z}dd|z}||S)N.zPORT ,)splitr[joinr)r'r(r<hbytespbytesbytesrs rsendportz FTP.sendport se CtSy//4S>>2'||C   rc* d}|jtjkrd}|jtjkrd}|dkrt ddt ||t |dg}dd|z}||S)Nrr zunsupported address familyrzEPRT |)rCr@AF_INETAF_INET6rr[rr)r'r(r<rCfieldsrs rsendeprtz FTP.sendeprt*sS  7fn $ $B 7fo % %B 77:;; ;d2hhd4jj"5(((||C   rc tjd|jd}|d}|jd}|jtjkr|||}n|||}|jtur| |j|S)N)rrr )rBbacklogr) r@ create_serverrC getsocknamer1rrrr$r settimeout)r'r1r<r(r~s rmakeportz FTP.makeport7sA#GDGQGGG!!!$y$$&&q) 7fn $ $==t,,DD==t,,D <6 6 6 OODL ) ) ) rcN |jtjkrOt|d\}}|jr|}n]|jd}n=t|d|j\}}||fS)NPASVrEPSV) rCr@rparse227rtrust_server_pasv_ipv4_addressr1 getpeernameparse229)r'untrusted_hostr<r(s rmakepasvz FTP.makepasvDsJ 7fn $ $#+DLL,@,@#A#A ND2 2%y,,..q1!$,,v"6"6 8M8M8O8OPPJD$Tzrc d}|jr|\}}tj||f|j|j} ||d|z||}|ddkr|}|ddkrt|n#| xYw| 5}||d|z||}|ddkr|}|ddkrt|| \}} |jtur| |jdddn #1swxYwY|dddkrt|}||fS)Nr:zREST %srryrxrq150)rQrr@rAr$r#rrFrr5racceptrrparse150) r'rrestsizer(r<connr~r1sockaddrs r ntransfercmdzFTP.ntransfercmdPs   ! 2JD$+T4L$,;?;NPPPD #LLT!1222||C((7c>><<>>D7c>>%d+++"   2D#LLT!1222||C((7c>><<>>D7c>>%d+++!%h<'>>>OODL111 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 8u  D>>DTzs A*B11CB*FFFc< |||dS)Nr)r)r'rrs r transfercmdzFTP.transfercmds >  d++A..rc4 |sd}|sd}|sd}|dkr |dvr|dz}|d|z}|ddkr|d|z}|ddkr|d |z}|dd krt||S) N anonymousr>rrsz anonymous@zUSER rrzrWACCT ryrr)r'r)r*r+r~s rr&z FTP.logins' D F D ;  6Y#6#6l*F||GdN++ 7c>><<& 011D 7c>><<$//D 7c>>d## # rr c\ |d|||5} ||}|sn ||$t)t |tr|dddn #1swxYwY|SNzTYPE I)rrrecv _SSLSocket isinstanceunwrapr)r'rcallback blocksizerrdatas r retrbinaryzFTP.retrbinarys  X   c4 ( ( D yy++   %*T:*F*F%                }}sABBBc |t}|d}||5}|d|j5} ||jdz}t||jkrtd|jz|j dkrtdt||snB|ddtkr |dd}n|d dd kr |dd }||t)t|tr|dddn #1swxYwYdddn #1swxYwY|S) NTYPE Ar;rr rjrz*retr*rkrlr`) print_linerrrDr rmrnrYrrIrJr[rarrrr)r'rrr~rfpres r retrlinesz FTP.retrliness   !H||H%%   c " " dsT];; ?A {{4A%%(DJJ///9$$9DD"##Y$&&9D %*T:*F*F% #                              $}}s6E C+E = E  E E E E  E$'E$c |d|||5} ||}|sn#|||r ||;t)t |tr|dddn #1swxYwY|Sr)rrreadrbrrrr)r'rrrrrrbufs r storbinaryzFTP.storbinarys  X   c4 ( ( D "ggi(( S!!!"HSMMM  "%*T:*F*F%                }}sA-B&&B*-B*cb |d||5} ||jdz}t ||jkrt d|jz|snY|ddt kr#|dt vr |dd}|t z}|||r ||t)t|tr| dddn #1swxYwY| S)Nrr rjrkrl) rrrmrnrYrrrbrrrr)r'rrrrrs r storlinesz FTP.storlinessi  X   c " " d "kk$,"233s88dl** 84< GHHHrss8v%%2w&((CRC#,C S!!!"HSMMM "%*T:*F*F%                 }}sCDDDc8 d|z}||S)Nrr)r'passwordrs rr+zFTP.accts!$ ||C   rc` d}|D] }|d|zz} g}|||j|S)NNLST )rappend)r'r6rargfiless rnlstzFTP.nlst#sIP $ $Cs#CC sEL))) rc d}d}|ddr8t|dtdkr|dd|d}}|D] }|r|d|zz} |||dS)NLISTrlrr)typer)r'r6rfuncrs rdirzFTP.dir,s G  9 -d2h48833crcDH$D ( (C (S3Y' sD!!!!!rc#K |r.|dd|zdz|rd|z}nd}g}|||j|D]}|t d\}}}i} |dddD]2} | d\} }} | | | <3|| fVdS)Nz OPTS MLST ;zMLSD %sMLSDrrl=) rrrrrZra partitionrlower) r'pathfactsrlinesre facts_found_nameentryfactkeyvalues rmlsdzFTP.mlsd;s   ? LL7#= > > >  d"CCC sEL)))  D#';;t#4#4#>#>s#C#C KDE#CRC(..s33 + + $s 3 3 Q%*ciikk""-       rc |d|z}|ddkrt||d|zS)NzRNFR rrzzRNTO )rrr)r'fromnametonamer~s rrenamez FTP.renameWsM||Gh.// 7c>>d## #||Gf,---rcn |d|z}|dddvr|St|)NzDELE rq>200250r)r'filenamer~s rdeletez FTP.delete^sA||Gh.// 8~ % %Kd## #rc |dkrG |dS#t$r$}|jddddkrYd}~nd}~wwxYw|dkrd}d|z}||S) Nz..CDUPrrq500rrzCWD )rrr6)r'dirnamemsgrs rcwdzFTP.cwdfs$ d?? ||F+++   8A;rr?e++,++++ ]]Gw||C   s A AA c |d|z}|dddkr+|dd}t|SdS)NzSIZE rq213)rstripint)r'rr~r\s rrzFTP.sizessX*||Gh.// 8u  QRR  Aq66M  rc |d|z}|dsdSt|S)NzMKD 257rr startswithparse257)r'rr~s rmkdzFTP.mkd{sB9||FW,--u%% 2~~rc4 |d|zS)NzRMD r)r'rs rrmdzFTP.rmds!||FW,---rcz |d}|dsdSt|S)NPWDr rr rs rpwdzFTP.pwds=/||E""u%% 2~~rcZ |d}||S)NQUIT)rr5rs rr2zFTP.quits(-||F##  rc |j}d|_|||j}d|_||dSdS#|j}d|_||wwxYwr")rEr5r1)r'rEr1s rr5z FTP.closesF 9DDI 9DDI  9DDI  s $A'A6)rrr8Nr")rrr)r N)r NN)9rrrrIr(FTP_PORTr<MAXLINErnr1rErGrQrrr,r/r7r%rLrOdebugrSrKrfrhrorvrFrrrrrrrrrrr&rrrrr+rrrrrrrrrrr2r5rrrrrJs .I D DG D DGM%*"R0/!///// !!!4 E!!!666   $            !!! ! ! !      5555n////44!!!!F:>!!!  " " ""    8...$$$ ! ! !...     rrc ~eZdZ ejZdddddddedf ddfd Zdfd ZdZ d Z d Z d Z dfd Z d ZxZS)FTP_TLSrNrrc  `||td||td|| ddl} | dtd||_||_|t j|j||}||_ 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)certfilekeyfileFr) r=warningswarnDeprecationWarningrrssl_create_stdlib_context ssl_versioncontext_prot_psuperr,) r'r(r)r*r+rrr&r$r#r r  __class__s rr,zFTP_TLS.__init__s"w': "-..."x'; "-..."h&: 78JAOOO"DL$DM4T5E>F=DFFF#DL DL GG  T4$nx  I I I I IrTc|r3t|jtjs|t |||Sr")rr1r# SSLSocketauthr(r&)r'r)r*r+securer)s rr&z FTP_TLS.loginsG jCMBB  77==vt44 4rc t|jtjrt d|jtjkr|d}n|d}|j |j|j |_|j d|j |_ |S)NzAlready using TLSzAUTH TLSzAUTH SSLserver_hostnamer;)moder )rr1r#r+r=r% PROTOCOL_TLSrr& wrap_socketr(rDr rErs rr,z FTP_TLS.auths D$)S]33 6 !45553#333||J//||J// 00DI0VVDI **dm*LLDIKrc t|jtjst d|d}|j|_|S)Nz not using TLSCCC)rr1r#r+r=rrrs rcccz FTP_TLS.cccsT Adi77 2 111<<&&D ((**DIKrcj |d|d}d|_|S)NzPBSZ 0zPROT PTrr'rs rprot_pzFTP_TLS.prot_ps6 0 LL " " "<<))DDLKrc@ |d}d|_|S)NzPROT CFr8rs rprot_czFTP_TLS.prot_cs" 4<<))D DLKrct||\}}|jr!|j||j}||fS)Nr/)r(rr'r&r3r()r'rrrrr)s rrzFTP_TLS.ntransfercmdsZ--c488JD$| K|//@D 0KK: rcdtz}|j||}|dddvrt ||S)Nrrqr)rr1rbrvrrs rrz FTP_TLS.abortsZV#D I  d # # #$$&&DBQBx444!$'''Kr)rrrTr")rrrr#PROTOCOL_TLS_CLIENTr%rr,r&r,r6r9r;rr __classcell__)r)s@rrrs @- "BR!D$4T I& I I I I I I I2 5 5 5 5 5 5                          rrc |dddkrt|t'ddl}|d|j|jzat|}|sdSt|dS)Nrqrrz150 .* \((\d+) bytes\)r ) r_150_rerecompile IGNORECASEASCIImatchr group)r~rBms rrr.s BQBx5$ ** %r}rx'?AA dA t qwwqzz??rc |dddkrt|tddl}|d|jat|}|st ||}d|dd}t|ddzt|dz}||fS) Nrq227rz#(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)rrrrU) r_227_rerBrCrEsearchrgroupsrr )r~rBrHnumbersr(r<s rrrBs5 BQBx5$ **CRXNNtA  $hhjjG 88GBQBK D  OOq C OO 3D :rc |dddkrt||d}|dkrt||d|dz}|dkrt|||dz||dz krt|||dz|||dz}t |dkrt||d}t |d}||fS)Nrq229(r)r rU)rfindrrrYr )r~peerleftrightpartsr(r<s rrrUs 5 BQBx5$ 99S>>D axx{4((( IIc4!8 $ $E qyy$ D1H~eai(($ % & &tDF| 4 4E 5zzQ$ 7D uQx==D :rc |dddkrt||dddkrdSd}d}t|}||kr6||}|dz}|dkr||ks ||dkrn|dz}||z}||k6|S)Nrqr rUz "rr ")rrY)r~rr]nrs rrrjs3 BQBx5$ AaCyDrG A D A a%% G aC 88AvvaC!AA+ a%% Nrc& t|dSr")rJ)res rrrs5 $KKKKKrrIc |s|}d|z}||||t|d\}}||||d|z}|dddvrt|d|z}|dddvrt||dS)NzTYPE rzSTOR rq>125rRETR )rrrrrr) source sourcenametarget targetnamer sourcehost sourceporttreplysreplys rftpcpris5   T>D NN4 NN4%fnnV&<&<==J  OOJ +++^^Gj0 1 1F bqbz'' ^^Gj0 1 1F bqbz'' OO OOrc ttjdkr-ttjtjdddl}d}d}tjddkr(|dz}tjd=tjddk(tjddddkr'tjddd}tjd=tjd}t|}| |dx}x}} ||} | |\}}}n_#ttf$rtdtj Yn1wxYw#t$r |td tj YnwxYw||||tjddD]} | ddd kr|| ddn| dddkr2d } | ddr| d z| ddz} || } ns| d kr||j nQ|d| ztjjjdtjjtj|dS)Nrrr z-dz-rrz$No account -- using anonymous login.)rEz5Could not open account file -- using anonymous login.z-lCWDrz-pr`i)rYr>argvrJtest__doc__exitnetrcrrOauthenticatorsKeyError TypeErrorstderrr3r&rrrSrQrstdoutbufferwriteflushr2) rprIrcfiler(ftpuseridr*r+netrcobjrErr~s rrmrms  38}}q dl  LLLI F (1+  aK HQK (1+   x{2A2$!QRR HQK 8A;D d))Cy!!!FVd K;;v&&  K#+#:#:4#@#@ FD&&)$ K K K 8sz J J J J J J K ###   Iz # # # ##IIffd###   8t   GGDH     "1"X  CABBx 3sSy483;;s##DD T\\ LLS.. / / / / NN7T>:,2D : : : J  # # % % % HHJJJJJs$E6*E,E32E36'F F __main__)rr])$r>r@r__all__rrr Exceptionrrrrrr3r4r rarrr#r+rrrSSLError ImportErrorrArrLrrrrrirmrrrrrs^L ******      I%% Wh '  X X X X X X X X tE:JJJJ{{{{{#{{{z NN9(CL9JJGJJJL $ &*, ,===@ zDFFFFFs7B11B;:B;