;############ DEBUT DU SERVEUR FTP ####################### dialog Wbs.Ftp.Server { title "Wbs.Ftp.Server" size -1 -1 209 140 option dbu tab "General", 8, 2 1 204 136 box "", 1, 123 14 81 121, tab 8 list 2, 5 17 117 116, tab 8 size text "Port d'ecoute:", 3, 125 24 34 8, tab 8 text "Nombre max de clients", 5, 125 39 58 8, tab 8 edit "21", 4, 160 23 41 10, tab 8 right edit "2", 6, 185 38 16 10, tab 8 right text "Nb max par client:", 23, 125 51 58 8, tab 8 edit "1", 24, 185 50 16 10, tab 8 right button "Fermer", 29, 165 121 37 12, tab 8 ok cancel tab "Dossiers Paratagé", 9 edit "", 10, 7 24 156 10, tab 9 autohs button "Selectioner", 15, 165 23 37 12, tab 9 button "Ajouter", 18, 171 60 29 12, tab 9 list 19, 4 75 200 47, tab 9 size button "Editer", 20, 6 124 37 12, tab 9 button "Effacer", 21, 45 124 37 12, tab 9 button "tout effacer", 22, 84 124 37 12, tab 9 box "Partage de dossier", 25, 5 16 199 59, tab 9 text "Nom d'utilisateur:", 16, 9 36 43 8, tab 9 edit "", 17, 53 35 50 10, tab 9 autohs text "Mot de passe:", 26, 8 47 44 8, tab 9 edit "", 27, 53 46 50 10, tab 9 pass autohs check "Annonyme", 28, 105 36 38 10, tab 9 text "Access", 34, 104 48 19 8, tab 9 edit "", 35, 124 47 47 10, tab 9 check "download", 36, 8 57 34 10, tab 9 check "Upload", 37, 47 57 28 10, tab 9 check "Effacer fichiers", 38, 77 57 48 10, tab 9 check "Creer dossier", 39, 127 57 42 10, tab 9 tab "Option", 11 check "Serveur actif", 12, 5 18 50 10, tab 11 check "Mode passif interdis", 13, 5 27 60 10, tab 11 check "Autoriser commande NOOP", 14, 5 36 76 10, tab 11 box "Black List", 7, 148 16 56 119, tab 11 edit "0.0.0.0", 30, 152 24 49 10, tab 11 button "Ajouter", 31, 151 35 49 10, tab 11 list 32, 150 58 51 74, tab 11 sort size button "Supprimer", 33, 151 47 49 10, tab 11 } on *:dialog:Wbs.Ftp.Server:*:*:{ if ($devent == init) { mdxinit wbs.mdx.table $dname 19 N°:40 Dossier:130 User:80 Pass:80 Anonyme:66 ;wbs.setcolor 21 2 1 10 27 17 var %file = $shortfn($wbsdir $+ \txt\config.ini) if ($readini(%file,FTP_server,enable)) { cdid 12 } if ($readini(%file,FTP_server,npasv)) { cdid 13 } if ($readini(%file,FTP_server,noop)) { cdid 14 } if ($readini(%file,FTP_server,port)) { odid 4 1 $ifmatch } if ($readini(%file,FTP_server,umax)) { odid 6 1 $ifmatch } if ($readini(%file,FTP_server,cmax)) { odid 24 1 $ifmatch } var %n = $ini(%file,Ftp_Server_Acounts,0) , %i 1 while (%i <= %n) { var %data = $readini(%file,Ftp_Server_Acounts,%i) adid 19 $+($chr(91),%i,$chr(93)) $chr(9) $gettok(%data,1,1) $chr(9) $gettok(%data,2,1) $chr(9) $gettok(%data,3,1) $chr(9) $iif($gettok(%data,4,1),Oui,Non) if ($gettok(%data,4,1)) { bdid 28 } inc %i } var %n = $ini(%file,Ftp_Server_Ban,0) , %i 1 while (%i <= %n) { adid 32 $ini(%file,Ftp_Server_Ban,%i) inc %i } } elseif ($devent == sclick) { var %file = $shortfn($wbsdir $+ \txt\config.ini) if ($did == 12) { writeini %file Ftp_Server enable $did(12).state } if ($did == 13) { writeini %file Ftp_Server npasv $did(13).state } if ($did == 14) { writeini %file Ftp_Server noop $did(14).state } if ($did == 28) { if ($did(28).state == 1) { bdid 27 17 } else { edid 27 17 } } elseif ($did == 15) { if ($sdir(c:\)) { odid 10 1 $ifmatch } } elseif ($did == 31) { if ($did(30)) { if ($count($did(30),.) == 3) && ($remove($did(30),.) isnum) { if ($readini(%file,Ftp_Server_Ban,$did(30))) { w.err Ip deja presente dans la banlist halt } adid 32 $did(30) writeini %file Ftp_Server_Ban $did(30) $ctime $?="motif optionel du ban" rdid 30 } else { w.err Format invalide. } } else { w.err Aucune ip entrée. } } elseif ($did == 22) { if ($?!="etes vous sur ?") { rdid 19 remini %file Ftp_Server_Acounts edid 28 } } elseif ($did == 32) { if ($did(32).seltext) odid 30 1 $ifmatch } elseif ($did == 33) { if ($did(32).seltext) { if ($?!="etes vous sur ?") { remini %file Ftp_Server_Ban $ifmatch ddid 32 $did(32).sel rdid 30 } } else { w.err aucune ip selectionée. } } elseif ($did == 18) { if (!$did(10)) { w.err Aucun dossier a ajouter. halt } var %n = $ini(%file,Ftp_Server_Acounts,0) if (!$did(27).state) { var %user = $did(17) , %pass = $did(27) if (!%user || !%pass) { var %anone 1 } } writeini %file Ftp_Server_Acounts $calc(%n +1) $+($shortfn($did(10)),$chr(1),%user,$chr(1),%pass,$chr(1),%anone) adid 19 $+($chr(91),$calc(%n +1),$chr(93)) $chr(9) $did(10) $chr(9) %user $chr(9) %pass $chr(9) $iif(%anone,Oui,Non) rdid 17 27 10 if (%anone) { bdid 28 } } } elseif ($devent == dclick) { if ($did == 2) { rdid 2 } } elseif ($devent == edit) { var %file = $shortfn($wbsdir $+ \txt\config.ini) if ($did == 4) { writeini %file ftp_server port $iif($did(4),$ifmatch,21) .sockclose Ftp_Server .socklisten Ftp_Server $did(4) } elseif ($did == 30) { if (!$did(30)) { bdid 31 } else { edid 31 } } elseif ($did == 6) { writeini %file ftp_server umax $iif($did(6),$ifmatch,2) } elseif ($did == 24) { writeini %file ftp_server cmax $iif($did(24),$ifmatch,1) } } } on *:socklisten:Ftp_Server:{ var %ip = $sock($sockname).ip , %table wbstmp.ftp.server. $+ %ip , %dname = wbs.Ftp.server if (%ip == $ip) { var %ip = 127.0.0.1 } if ($hget(%table)) { hfree %Table } hmake %Table hadd %table ip %ip hadd %table ctime $ctime if ($dialog(%dname).title) { did -a %dname 2 Ouverture du socket avec %ip } sockaccept $sockname $+ . $+ %ip $+ _ $+ $rand(1,999999999) } on *:sockclose:Ftp_Server.*:{ var %ip = $sock($sockname).ip , %table wbstmp.ftp.server. $+ %ip , %dname = wbs.Ftp.server if (%ip == $ip) { var %ip = 127.0.0.1 } if ($dialog(%dname).title) { did -a %dname 2 Fermeture du socket avec %ip if ($hget(%Table,ctime)) did -a %dname 2 Durée de la session: $intime($hget(%Table,ctime)) } if ($hget(%table)) { hfree %Table } } on *:sockopen:Ftp_Server.*.*.*.*_*:{ aecho $sockname var %dname = wbs.Ftp.server , %ip = $sock($sockname).ip if ($dialog(%dname).title) { did -a %dname 2 Socket Ouvert avec %ip } sadd 220 } on *:sockwrite:Ftp_Server.*:{ var %dname = wbs.Ftp.server if ($dialog(%dname).title) { did -a %dname 2 > $sock($sockname).sq } } on *:sockread:Ftp_Server.*:{ var %a $null , %dname = wbs.Ftp.server sockread -f %a tokenize 32 %A if ($dialog(%dname).title) && (%a) { did -a %dname 2 < %a } if (%A == quit) { sadd Bye. } elseif (%a == syst) { sadd 215 Windows $os } elseif (%a == NOOP ) sadd 200 NOOP command successful } alias -l sadd { sockwrite -n $sockname $1- } ;############ FIN DU SERVEUR FTP #######################