Soyez le premier à donner votre avis sur cette source.
Snippet vu 5 720 fois - Téléchargée 30 fois
alias host { set -u2 %black [ $+ [ $1 ] ] $address($1,2) set -u2 %bl [ $+ [ $1 ] ] $right(%black [ $+ [ $1 ] ],-4) set -u2 %bh4 [ $+ [ $1 ] ] $left(%bl [ $+ [ $1 ] ],-4) set -u2 %bh3 [ $+ [ $1 ] ] $left(%bl [ $+ [ $1 ] ],-3) write hostlog.html </tr><tr><td style="width:150px;"> $date(dd/mm/yyyy) $date(HH:nn:ss) </td><td style="width:120px;"> $1 </td><td> $address($1,2) </td><td> $longip(%bh3 [ $+ [ $1 ] ]) ** $longip(%bh4 [ $+ [ $1 ] ]) </td><td> } ;¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯; ; ftp send, par `kenji` <kenji-irc@altern.org> ; ; ; ; bout de codé réalisé pour mIRC6.x ; ; 02:40 11/07/02 - fr ; ;______________________________________________________; ; permet d'envoyer un fichier donné sur un compte ftp ; ; (configuration à la main, voir plus bas...) ; ; nb: ce script est à but éducatif. il est basique ; ; mais il sera facile d'y implémenter une interface.. ; ; virer les "echo etc.." ou mettre un ";" pour ne pas ; ; avoir d'affichage. ; ; ; ; utilisation: /ftp_send ; ;______________________________________________________; ;; /ftp_send ; déclenche l'envoi du fichier spéficié sur le serveur ftp donné. ; (les informations sont à modifier ci-dessous..) alias ftp_send { var %sock = $+(ftpsend_,$ticks) ftpdata_create %sock ;;=== informations à modifier =====================================;; ; ci dessous, le fichier à envoyer (spécifier le chemin complet) var %fichier = $mircdir/hostlog.html ; l'adresse du serveur ftp var %serveur = mon_serveur ; le port du serveur ftp (habituellement 21) var %port = 21 ; le nom d'utilisateur var %login = mon_login ; le mot de passe associé au nom d'utilisateur var %pass = mon_pass ; le répertoire distant dans lequel sera déposé le fichier var %rep = / ;;=================================================================;; ; inscription des données en mémoire.. (hash) ftpdata_add %sock file %fichier ftpdata_add %sock host %serveur ftpdata_add %sock port %port ftpdata_add %sock user %login ftpdata_add %sock pass %pass ftpdata_add %sock cwd %rep ftpdata_add %sock pos 0 sockopen %sock $ftpdata_get(%sock,host) $ftpdata_get(%sock,port) } ;; gestion des données en mémoire (une hash associée à chaque socket) alias -l ftpdata_create { var %hash = $$1 | if !$hget(%hash) { hmake %hash 5 } } alias -l ftpdata_clear { var %hash = $$1 | if $hget(%hash) { hfree %hash } } alias -l ftpdata_add { var %hash = $1 | if $hget(%hash) { hadd %hash $2 $$3- } } alias -l ftpdata_get { var %hash = $1 | return $iif($hget(%hash),$hget(%hash,$2)) } ;;=====================================;; ; gestion des sockets ; ;;=====================================;; ;------ - ------------- - --- ---; ; canal de commande ; ;----------- ----- -- ----------; ; gestion de l'ouverture du socket on *:sockopen:ftpsend_*:{ if $sockerr { echo 4 -ta ..ftpsend: erreur lors de la connexion au serveur. envoi annulé. | ftpdata_clear $sockname | return } } ; lecture des données on *:sockread:ftpsend_*:{ if $sockerr { return } sockread %temp while $sockbr { ; affichage des données reçues echo -ta ..ftpsend: $sockname -> %temp ; traitement du code reçu var %code = $gettok(%temp,1,32) ftpsend_treatcode $sockname %code $gettok(%temp,2-,32) ; lecture du prochain paquet.. sockread %temp } } ;------ - ------------- - --- ---; ; canal de données ; ;----------- ----- -- ----------; ; envoi des données du fichier on *:sockopen:t_ftp_send_*:{ if $sockerr { echo 4 -a erreur | return } echo -a canal de données ouvert } on *:sockwrite:t_ftpsend_*:{ if $sockerr { return } var %sock = $remove($sockname,t_) , %pos = $ftpdata_get(%sock,pos) , %file = $quoted($ftpdata_get(%sock,file)) ; pour un affichage éventuel des données.. var %pourcent = $+($round($calc((%pos * 100)/ $file(%file).size),1),%) var %size = ( $+ $bytes(%pos,3).suf $+ / $+ $bytes($file(%file).size,3).suf $+ ) echo -ta ..ftpsend: $nopath($longfn(%file)) : %pourcent : %size ; tant que la totalité du fichier n'a pas été envoyée.. if (%pos < $file(%file).size) { bread %file %pos 8192 &data sockwrite $sockname &data ftpdata_add %sock pos $calc(%pos + $bvar(&data,0)) } ; sinon, le transfert du fichier est complet. on ferme socket de données et session. else { sockclose $sockname | sockwrite -n %sock QUIT } } ;------ - ------------- - --- ---; ; gestion des codes reçus ; ;----------- ----- -- ----------; ;; /ftpsend_treatcode <socket> <code> [données] ; exécute l'action associée au code de réponse <code> du serveur ftp alias -l ftpsend_treatcode { var %sock = $1 , %code = $$2 , %data = $3- ; nom d'utilisateur if (%code == 220) { sockwrite -n %sock user $ftpdata_get(%sock,user) } ; mot de passe elseif (%code == 331) { sockwrite -n %sock pass $ftpdata_get(%sock,pass) } ; logged in elseif (%code == 230) { sockwrite -n $sockname TYPE I } ; type *image* OK elseif (%code == 200) { sockwrite -n %sock PASV } ; mode passif OK. elseif (%code == 227) { ; tentative d'ouverture du canal de données, suivant les informations fournies var %addr = $remove($gettok(%data,-1,32),$chr(40),$chr(41)) var %host = $replace($gettok(%addr,1-4,44),$chr(44),$chr(46)) var %hport = $gettok(%addr,5,44) , %lport = $gettok(%addr,6,44) , %port = $calc(%hport * 2^8 + %lport) sockopen $+(t_,%sock) %host %port ; on change le répertoire courant sockwrite -n %sock CWD $iif($ftpdata_get(%sock,cwd),$ifmatch,/) } ; changement de répertoire courant OK. elseif (%code == 250) { ; commande d'envoi du fichier de données, via la canal de commande var %file = $ftpdata_get(%sock,file) sockwrite -n %sock STOR $nopath($longfn(%file)) } ; le canal de donnée est ouvert. on envoie le fichier. elseif (%code == 150) { var %pos = $ftpdata_get(%sock,pos) , %file = $ftpdata_get(%sock,file) bread %file %pos 8192 &data sockwrite $+(t_,%sock) &data ftpdata_add %sock pos $calc(%pos + $bvar(&data,0)) } ; session terminée. elseif (%code == 221) { ftpdata_clear %sock } } ;------ - ------------- - --- ---; ; librairie ; ;----------- ----- -- ----------; ;; $quoted(chemin/fichier) ; renvoie une chaine "chemin/fichier" (pour les chemins contenant des espaces) alias -l quoted return $iif(" isin $$1-,$$1-,$+(",$$1-,"))
28 mars 2004 à 11:46
Tempusus
28 mars 2004 à 11:32
27 mars 2004 à 22:53
Mais sinon, rien à redire.
ça merite un bon 8/10 :)
Tempusus
27 mars 2004 à 19:20
27 mars 2004 à 17:51
Sinon c'est excélent :D
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.