- ;csdZdkZdkZdkZdkZdkZdkZdkZdkZdk Z 4ei edZ 6dk l Z 7dk Z 8dkZ9dkZ:dkZ<deifdYZdeifdYZ)deifd YZMd eifd YZd eifd YZdkZdfdYZdfdYZeidjo3dfdYZdefdYZn dfdYZeidjo; ddZ.edjo/eei dnn+2dZ4edjo5en;hdd<d d!<d"d#<d$d%<d&d'<d(d)<d*d+<d,d-<d.d/<d0d1<d2d3<d4d5<d6d7<d8d9<d:d;<d<d=<d>d?<d@dA<dBdC<dDdE<dFdG<dHdI<dJdK<dLdM<dNdO<dPdQ<dRdS<dTdU<dVdW<dXdY<dZd[<d\d]<d^d_<d`da<dbdc<ddde<dfdg<dhdiZ/md?Z0ud@Z1dAZ2dBZ3RS(CNsunknowns0isappesdelesmkdsrmdsrnfrsrntosstorsstouicsNO||_Pd|_Q||_Rtii||S|idV|ddf|_ Xt |_ Yd|_ Zd|_ [t |_\t |_]t |_^d|_`|id|iitfdS(Nsas iiss:220 %s FTP server (Medusa Async V%s [experimental]) ready.(sserversselfs current_modesaddrsasynchats async_chats__init__sconnsset_terminators client_addrsNones client_dcs in_buffersclosingspassive_acceptorspassive_connections filesystems authorizedsrespondshostnamesVERSION(sselfsserversconnsaddr((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys__init__Ns          cs nqdS(N((sself((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys handle_exptnscsCst|i||_ut|idjoxd|_ndS(Nis(sselfs in_buffersdataslen(sselfsdata((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscollect_incoming_datassc sz||i} ~t|  o dSnti| d}|djo| | | |dg} n | g} ti| d}ti|ddjo:x0|o|dti jo|d}qWnd|}|djo(|i dt |idd!n|i d| dd d |_t || o|i| ddSnt||}|i o|d dd d fjo|idn|i| o|i|nyt|| f}Wn|iiiti\\}}} } }}|i o+y|i i!Wn nXn|id| ||| fnXdS(Ns iiisaborscmd_%sspasss<== %ss ssusershelpsquits$530 Please log in with USER and PASSs+451 Server Error: %s, %s: file: %s line: %s("sselfs in_bufferslineslensstringsfindsspslowerscommandsletterssfun_nameslogsreprshasattrscommand_not_understoodsgetattrsfuns authorizedsrespondscheck_command_authorizationscommand_not_authorizedsapplysresultsserverstotal_exceptionss incrementsasyncorescompact_tracebacksfilestsvstbinfos client_dcsclose( sselfstbinfosspsfun_namescommandsresultsfilesvsfunslinest((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysfound_terminatorzsH    (  '$  cs|i oxd|_|io|iin|io|iin|iiiti i|ndS(Ni( sselfsclosedspassive_acceptorscloses client_dcsserversclosed_sessionss incrementsasynchats async_chat(sself((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscloses   cs|ii|dSdS(Ni(sselfs filesystemscwdsline(sselfsline((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscwdscs|iiSdS(N(sselfs filesystemscdup(sselfsline((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscdupscs|ii||SdS(N(sselfs filesystemsopenspathsmode(sselfspathsmode((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysopenscs|ii||SdS(N(sselfs filesystemslistdirspathslong(sselfspathslong((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyslistdirscs|d}g}x<|D]1}|ddjo|i|nq#Wt|djo d}n|d}|i||SdS(Niis-s.( slinesargss path_argssargsappendslensdirsselfslistdirslong(sselfslineslongsdirsargsargss path_args((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys get_dir_lists     cs6||ijo|io dSndSdS(Nii(scommandsselfswrite_commandss read_only(sselfscommand((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscheck_command_authorizations cs;|iii|idd|id|fdS(Nis%d %si(sselfsserversloggerslogsaddrsmessage(sselfsmessage((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyslogscs/|id||i|ddS(Ns==> %ss (sselfslogsrespspush(sselfsresp((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysrespondscs|id|dS(Ns!500 '%s': command not understood.(sselfsrespondscommand(sselfscommand((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscommand_not_understoodscs|id|dS(Ns6530 You are not authorized to perform the '%s' command(sselfsrespondscommand(sselfscommand((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscommand_not_authorizedscsh|i}|o|ioc|ii\}}t||} |i| d|_  |ii  t |_nt|}n|i \}}t||i }|ititi|io$|id|iidfny|i||fWn+tij o}|idnX||_dS(Niss425 Can't build data connection(sselfspassive_acceptorspasreadysconnsaddrs xmit_channelscdcs set_sockets connectedsclosesNones client_addrsipsports create_socketssocketsAF_INETs SOCK_STREAMsbind_local_minus_onesbindsserversconnectserrorswhysresponds client_dc(sselfsaddrscdcsipsportspaswhysconn((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysmake_xmit_channels(     $c s@ |i}!|o"|ioc$|i\}}%t|||}&|i |'d|_ (|ii )t |_n,t|t |}n/|i \}}0t||i |}1|ititi2y3|i||fWn+4tij o}5|idnX6||_dS(Nis425 Can't build data connection(sselfspassive_acceptorspasreadysconnsaddrs recv_channelsfdscdcs set_sockets connectedsclosesNones client_addrsipsports create_socketssocketsAF_INETs SOCK_STREAMsconnectserrorswhysresponds client_dc( sselfsfdsaddrscdcsipswhyspasportsconn((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysmake_recv_channels$    sASCIIsasBinarysisEBCDICseslstsbcsJKMti|d}P|dddgjoQ|iti|npR|djo!t|djo|ddjoS|idn(U||_ V|id|i |d S( sspecify data transfer typeisasislis8s504 Byte size must be 8s200 Type set to %s.N( sstringslowerslinestsselfscommand_not_understoodsjoinslensresponds current_modestype_map(sselfslinest((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_typeJs4 cs'YZ[|id\|idS(sterminate sessions 221 Goodbye.N(sselfsrespondsclose_when_done(sselfsline((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_quitYscs^_`ti|dd}ati|d d}bti|ddti|d}g||f|_ h|i ddS( sspecify data connection portis,is.iis200 PORT command successful.N( sstringssplitslinesinfosjoinsipsatoisportsselfs client_addrsrespond(sselfslinesinfosipsport((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_port^s +csVjl|itj o m|iint|_not||_p|iSdS(N(sselfspassive_acceptorsNonesclose(sself((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysnew_passive_acceptorjs csrst|i}u|id}v|iid}w|idt i t i |dd|d|df~t |_ dS(s%prepare for server-to-server transferiis$227 Entering Passive Mode (%s,%d,%d)s.s,iN(sselfsnew_passive_acceptorspcsaddrsportscontrol_channels getsocknamesip_addrsrespondsstringsjoinssplitsNones client_dc(sselfslinespcsip_addrsport((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_pasvrs =csd|jo|idny|i|d}Wn<tij o*}|idt |dSnX|id|i |i |i |i i||i idS(s$give name list of files in directorys-FCis 550 Could not list directory: %sNs1150 Opening %s mode data connection for file list(slinesremovesselfs get_dir_listsdir_list_producersosserrorswhysrespondsreprstype_maps current_modesmake_xmit_channels client_dcspush_with_producersclose_when_done(sselfslineswhysdir_list_producer((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_nlsts  csy|i|d}Wn<tij o*}|idt|dSnX|id|i |i |i |i i ||i idS(sgive list files in a directoryis 550 Could not list directory: %sNs1150 Opening %s mode data connection for file list(sselfs get_dir_listslinesdir_list_producersosserrorswhysrespondsreprstype_maps current_modesmake_xmit_channels client_dcspush_with_producersclose_when_done(sselfslineswhysdir_list_producer((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_lists  csA|i|o|idn|iddS(schange working directorys250 CWD command successful.s550 No such directory.N(sselfscwdslinesrespond(sselfsline((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_cwdscsA|i|o|idn|iddS(s-change to parent of current working directorys250 CDUP command successful.s550 No such directory.N(sselfscdupslinesrespond(sselfsline((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_cdupscs'|id|iidS(s#print the current working directorys"257 "%s" is the current directory.N(sselfsresponds filesystemscurrent_directory(sselfsline((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_pwdsc s|d}|ii| o|id|ndti|ii|ti }|id|d|d|d|d|d|dfd S( s#show last modification time of fileis550 "%s" is not a files213 %4d%02d%02d%02d%02d%02diiiiiN( slinesfilenamesselfs filesystemsisfilesrespondstimesgmtimesstatsST_MTIMEsmtime(sselfslinesmtimesfilename((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_mdtms  %cs|iddS(s do nothings200 NOOP command successful.N(sselfsrespond(sselfsline((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_noopscsm|d}|ii| o|id|n(|id|ii|tidS(sreturn size of fileis550 "%s" is not a files213 %dN(slinesfilenamesselfs filesystemsisfilesrespondsstatsST_SIZE(sselfslinesfilename((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_sizes  cst|djo|iti|nf|d}|ii| o(|i d||i dny0d|i |i }|i||}Wn9tj o*}|i dt|dSnX|i d|i|i |f|i|io:y|i|iWn nXd |_n|iit||i||iidS( sretrieve a fileiis checking %ss550 No such filesrs'553 could not open file for reading: %sNs1150 Opening %s mode data connection for file '%s'i(slenslinesselfscommand_not_understoodsstringsjoinsfiles filesystemsisfileslog_infosresponds type_mode_maps current_modesmodesopensfdsIOErrorswhysreprstype_mapsmake_xmit_channelsrestart_positionsseeks client_dcspush_with_producers file_producersclose_when_done(sselfslinesfdsmodesfileswhy((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_retrs.  $  "swbcst|djo|iti|n |io$ d} |id dSn|d}y|i ||}Wn9t j o*}|idt|dSnX|id|i|i|f|i|dS(s store a fileiis%553 restart on STOR not yet supportedNis'553 could not open file for writing: %ss 150 Opening %s connection for %s(slenslinesselfscommand_not_understoodsstringsjoinsrestart_positionsrespondsfilesopensmodesfdsIOErrorswhysreprstype_maps current_modesmake_recv_channel(sselfslinesmodesfdsfileswhysrestart_position((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_stors     $cs;|io |iin!|iddS(sabort operations226 ABOR command successful.N(sselfs client_dcsclosesrespond(sselfsline((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_abors cs#$%|i|dSdS(sappend to a filesabN(sselfscmd_storsline(sselfsline((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_appe#scs'(t|djo)|iti|n+|d},|ii|oK-y'.|ii |/|i dWn01|i dnXn3|i d|dS(Niis250 DELE command successful.s550 error deleting file.s550 %s: No such file.( slenslinesselfscommand_not_understoodsstringsjoinsfiles filesystemsisfilesunlinksrespond(sselfslinesfile((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_dele's cs56t|djo 7|iiti|nU9|d}:y';|ii |<|i dWn=>|i dnXdS(Niis257 MKD command successful.s550 error creating directory.( slenslinesselfscommandsnot_understoodsstringsjoinspaths filesystemsmkdirsrespond(sselfslinespath((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_mkd5s  cs@At|djo B|iiti|nUD|d}Ey'F|ii |G|i dWnHI|i dnXdS(Niis250 RMD command successful.s550 error removing directory.( slenslinesselfscommandsnot_understoodsstringsjoinspaths filesystemsrmdirsrespond(sselfslinespath((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_rmd@s  cs]KLMt|djo$N|d|_O|idnQ|iti|dS(sspecify user nameis331 Password required.N(slenslinesselfsusersrespondscommand_not_understoodsstringsjoin(sselfsline((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_userKs csSTUt|djo Vd}nX|d}Y|iii||i|\}}}Z|oJ[|i d|\||_ ]d|_ ^|idt|n`|i d|dS(sspecify passwordisis230 %ssSuccessful login: Filesystem=%ss530 %sN(slenslinespwsselfsservers authorizers authorizesusersresultsmessagesfssresponds filesystems authorizedslog_infosrepr(sselfslinesfssresultsmessagespw((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_passSs  *   csybcdyeti|d}Wn/ftj o g|iti|nXh||_i|i d|dS(srestart incomplete transferisB350 Restarting at %d. Send STORE or RETRIEVE to initiate transfer.N( sstringsatoislinesposs ValueErrorsselfscommand_not_understoodsjoinsrestart_positionsrespond(sselfslinespos((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_restbs csBmno|ddjoq|idns|iddS(s&obsolete - set file transfer structureisfFs 200 STRU F Oks504 Unimplemented STRU typeN(slinesselfsrespond(sselfsline((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_strumscsBuvw|ddjoy|idn{|iddS(s!obsolete - set file transfer modeissSs 200 MODE S Oks502 Unimplemented MODE typeN(slinesselfsrespond(sselfsline((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_modeuscs|iddS(s+show operating system type of server systems215 UNIX Type: L8N(sselfsrespond(sselfsline((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_systs cs!dk}|i|i}g}x|D]}|d djokt||}t |t |i jo6|i o%|i d|d|i fnnnq:W|o=|i d|iti||i dn|i ddS(sgive help informationNiscmd_s %s %ss+214-The following commands are recognized s214 s214- Help Unavailable 214 (snewdirsdirsselfs __class__sattrss help_linessattrsgetattrsxstypescmd_helps__doc__sappendspushspush_with_producers producersslines_producer(sselfslinesnewdirsattrsxsattrss help_lines((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyscmd_helps     1 (4saddrs read_onlyswrite_commandssrestart_positionsbind_local_minus_ones__init__s handle_exptscollect_incoming_datasfound_terminatorsclosedsclosescwdscdupsopenslistdirs get_dir_listscheck_command_authorizationslogsrespondscommand_not_understoodscommand_not_authorizedsmake_xmit_channelsmake_recv_channelstype_maps type_mode_mapscmd_typescmd_quitscmd_portsnew_passive_acceptorscmd_pasvscmd_nlstscmd_listscmd_cwdscmd_cdupscmd_pwdscmd_mdtmscmd_noopscmd_sizescmd_retrscmd_storscmd_aborscmd_appescmd_delescmd_mkdscmd_rmdscmd_userscmd_passscmd_restscmd_struscmd_modescmd_systscmd_help(((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys ftp_channel<sh !     2          ! --           (        s ftp_servercs~eZdeZeddeeieidZ dZ dZ dZ dZ d ZRS( NsFTP Server (V%s)sics||_||_||_|tjoti|_n ||_t|_ t|_ t|_ t|_ t|_ t|_t|_tii||ititi|i|i|i|if|id| oti}n|oti|||_nti||_|i dt!i"t!i!t#|i|i|ifdS(Nis?FTP server started at %s Authorizer:%s Hostname: %s Port: %d($sipsselfsports authorizershostnamesNonessockets gethostnamescounterstotal_sessionssclosed_sessionsstotal_files_outstotal_files_instotal_bytes_outstotal_bytes_instotal_exceptionssasyncores dispatchers__init__s create_socketsAF_INETs SOCK_STREAMsset_reuse_addrsbindslistens logger_objectssyssstdoutsresolversloggersresolving_loggersunresolving_loggerslog_infostimesctimesrepr(sselfs authorizershostnamesipsportsresolvers logger_object((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys__init__s0       csdSdS(Ni((sself((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyswritablescs dS(N((sself((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys handle_readscs dS(N((sself((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyshandle_connectscsd|i\}}|ii|id|d|df|i|||dS(NsIncoming connection from %s:%dii(sselfsacceptsconnsaddrstotal_sessionss incrementslog_infosftp_channel_class(sselfsaddrsconn((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys handle_accepts"csd}tid|id|id|idd|id|ii|i idd |i d |i d d ||i id ||i id |ig SdS( Ncs titi|SdS(N(sstringsjoinsstatus_handlers english_bytessn(sn((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys nice_bytesss

%s

s
Listening on Host: %ssPort: %ds
SessionssTotal: %ssCurrent: %ds
FilessSent: %ssReceived: %ss
Bytess
Exceptions: %s(s nice_bytess producersslines_producersselfs SERVER_IDENTshostnamesportstotal_sessionssas_longsclosed_sessionsstotal_files_outstotal_files_instotal_bytes_outstotal_bytes_instotal_exceptions(sselfs nice_bytes((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysstatuss (s ftp_channelsftp_channel_classsVERSIONs SERVER_IDENTsNonesloggers file_loggerssyssstdouts__init__swritables handle_readshandle_connects handle_acceptsstatus(((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys ftp_servers  '1    spassive_acceptorcs2)*eZ,dZ=dZ@dZRS(Ncs,.tii|/||_0|ititi3|i |ii ddf7|i |_ 8|i ddS(Nii( sasyncores dispatchers__init__sselfscontrol_channels create_socketssocketsAF_INETs SOCK_STREAMsbinds getsocknamesaddrslisten(sselfscontrol_channel((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys__init__,s  #cs =>dS(N((sselfsignore((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyslog=scs@A|i\}}B|ii}C|tj o;D|i|E||_Fd|_ Gt|i_ nI||f|_ J|i dS(Ni( sselfsacceptsconnsaddrscontrol_channels client_dcsdcsNones set_sockets connectedspassive_acceptorsreadysclose(sselfsaddrsconnsdc((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys handle_accept@s  (sNonesreadys__init__slogs handle_accept(((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyspassive_acceptor)s   s xmit_channelcsnMSdZTdZVedZ^dZadZddZgdZldZxd Z RS( Ni@ics2VW||_X||_Ytii|dS(N(schannelsselfs client_addrsasynchats async_chats__init__(sselfschannels client_addr((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys__init__Vs  cs ^_dS(N((sargs((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyslog^scsab|i SdS(N(sselfs connected(sself((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysreadableascsdedSdS(Ni((sself((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyswritabledscs9ghtii||}i|i||_j|SdS(N(sasynchats async_chatssendsselfsdatasresults bytes_out(sselfsdatasresult((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyssendgscs>ln|iddoyp|iWn qrnXdS(Ns*unexpected disconnect on data xmit channelserror(sselfslog_infosclose(sself((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys handle_errorls csxy|i}z|i}{t|_||ii}|i i|i ~t |i  o|i dn#|i o|i dn~~|`tii|dS(Ns226 Transfer completes'426 Connection closed; transfer aborted(sselfschannelscsserversssNones client_dcstotal_files_outs incrementstotal_bytes_outs bytes_outslens producer_fifosrespondsclosedsasynchats async_chatsclose(sselfscss((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysclosexs    ( sac_out_buffer_sizes bytes_outsNones__init__slogsreadableswritablessends handle_errorsclose(((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys xmit_channelMs       s recv_channelcsbdZdZdZdZdZdZdZdZRS( NcsM||_||_||_tii|t|_dS(N( schannelsselfs client_addrsfdsasyncores dispatchers__init__scountersbytes_in(sselfschannels client_addrsfd((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys__init__s    cs dS(N((sselfsignore((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyslogscs dS(N((sself((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyshandle_connectscsdSdS(Ni((sself((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pyswritablescsLttii|}|d}|iit ||SdS(Ni( sapplysasyncores dispatchersrecvsargssresultsselfsbytes_ins incrementslen(sargssresultsself((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysrecvs i csp|i|i}|oJy|ii|Wn)tj o|iddnXndS(Nsgot exception writing block...serror(sselfsrecvs buffer_sizesblocksfdswritesIOErrorslog_info(sselfsblock((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys handle_reads  csr|ii}|ii|ii|ii|i i |ii d|i dS(Ns226 Transfer complete.( sselfschannelsserverssstotal_files_ins incrementstotal_bytes_insbytes_insas_longsfdsclosesrespond(sselfss((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys handle_closes (s__init__slogshandle_connectswritablesrecvs buffer_sizes handle_reads handle_close(((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys recv_channels       sdummy_authorizercs ddZdZRS(Ns/cs||_dS(N(srootsself(sselfsroot((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys__init__scsAddf|_d|_ddti|ifSdS(NiisOk.(schannelspersonas read_onlysfilesyss os_filesystemsselfsroot(sselfschannelsusernamespassword((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys authorizes (s__init__s authorize(((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysdummy_authorizerssanon_authorizercs ddZdZRS(Ns/cs||_dS(N(srootsself(sselfsroot((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys__init__scsk|ddfjo>ddf|_d|_ddti|ifSnddtfSdS(Nsftps anonymousiisOk.isPassword invalid.( susernameschannelspersonas read_onlysfilesyss os_filesystemsselfsrootsNone(sselfschannelsusernamespassword((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys authorizes   (s__init__s authorize(((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysanon_authorizerssposixsunix_authorizercsdZdZRS(Nc sdk}dk}y|i|}Wn&tj oddtfSnX|d}|i||d |joSd|_ t i d|dd|d|df}dd |fSndd tfSdS( Nis No such user.iis/ispersonaisLogin successful.sPassword invalid.(scryptspwdsgetpwnamsusernamesinfosKeyErrorsNonesmangledspasswordschannels read_onlysfilesyssschizophrenic_unix_filesystemsfs( sselfschannelsusernamespasswordsinfosfsscryptsmangledspwd((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys authorizes       csdSdS(Ns((sself((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys__repr__s(s authorizes__repr__(((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysunix_authorizers sunix_authorizer_with_anonymouscs#eddZdZRS(Nics||_||_dS(N(srootsselfs real_users(sselfsroots real_users((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys__init__s csati|ddgjodk}y|id}titiddjo|id}n|id}d|_ |i t jo|d|_ nti|i d}dd |fSWn&tj odd t fSnXnD|io&ti||||Sn dd t fSdS( Ns anonymoussftpislinuxsnobodyiis/sAnonymous Login SuccessfulsAnonymous account not set upsUser logins not allowed(sstringslowersusernamespwdsgetpwnams ftp_user_infosossunamesnobody_user_infoschannels read_onlysselfsrootsNonesfilesyssunix_filesystemsfssKeyErrors real_userssunix_authorizers authorizespassword(sselfschannelsusernamespasswordsfssnobody_user_infospwds ftp_user_info((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys authorizes( #   (sNones__init__s authorize(((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysunix_authorizer_with_anonymousss file_producercs&  dZ dZdZRS(Ni@cs ||_d|_dS(Ni(sfdsselfsdone(sselfsserversdcsfd((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys__init__ s csi|io dSnK|ii|i}| o |iid|_n|SdS(Nsi(sselfsdonesfdsreads block_sizesblocksclose(sselfsblock((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysmores   (s block_sizes__init__smore(((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys file_producer s  s8021cs !dk}"tt$dti|}&y'tiWn6(t j o')t i dd,ti nXdS(Nsports+FTP server shutting down. (received SIGINT)swarning( ssyss ftp_serversunix_authorizersstringsatoisportsfssasyncoresloopsKeyboardInterruptsselfslog_infos close_all(sportssyssfs((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pystest s  s__main__ics23tt}dS(N(s ftp_serversdummy_authorizersfs(sfs((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pystest2ssabort previous commandsaborsspecify account (ignored)sacctsallocate storage (vacuously)sallosappend to a filesappes-change to parent of current working directoryscdupschange working directoryscwds delete a filesdelesgive help informationshelpsgive list files in a directoryslistsmake a directorysmkds#show last modification time of filesmdtmsspecify data transfer modesmodes$give name list of files in directorysnlsts do nothingsnoopsspecify passwordspasss%prepare for server-to-server transferspasvsspecify data connection portsports#print the current working directoryspwdsterminate sessionsquitsrestart incomplete transfersrestsretrieve a filesretrsremove a directorysrmdsspecify rename-from file namesrnfrsspecify rename-to file namesrntos(non-standard commands (see next section)ssitesreturn size of filessizesreturn status of serversstats store a filesstorsstore a file with a unique namesstousspecify data transfer structuresstrus+show operating system type of server systemssystsspecify data transfer typestypesspecify user namesusers:change to parent of current working directory (deprecated)sxcups%change working directory (deprecated)sxcwdsmake a directory (deprecated)sxmkds0print the current working directory (deprecated)sxpwdsremove a directory (deprecated)sxrmdcs0fgtititdidSdS(Ns/proc/self/stati(sstringsatoissplitsopensreadline(((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys get_vm_sizefscsijdtdGHdS(Nsvm: %8dki(s get_vm_size(((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pysprint_vmis($sRCS_IDsasyncoresasynchatsossregsubssocketsstatsstringssysstimessplitsVERSIONscounters producerssstatus_handlersloggers async_chats ftp_channels dispatchers ftp_serverspassive_acceptors xmit_channels recv_channelsfilesyssdummy_authorizersanon_authorizersnamesunix_authorizersunix_authorizer_with_anonymouss file_producerstests__name__sargvscommand_documentations get_vm_sizesprint_vm(sstatsasyncoresstringsunix_authorizersunix_authorizer_with_anonymouss xmit_channelsprint_vms producersspassive_acceptorsVERSIONsstatus_handlersfilesyss get_vm_sizessyss ftp_serversasynchatssocketsanon_authorizerscommand_documentationsRCS_IDscounters ftp_channelsregsubs recv_channelstimestestsloggersoss file_producersdummy_authorizer((sI/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/ftp_server.pys?sP              wx$:) % `+