Log des ips et mise en ligne de la page web. ( ftp )

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 172 fois - Téléchargée 28 fois

Contenu du snippet

Une petite source qui permet de convertir les ip long en court ( ou le contraire ) et qui les logs dans un fichier HTML qui sera mis online pour être consulter.

Source / Exemple :


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-,"))

Conclusion :


Pour la premiere fois :
Ouvrez bloc note, créer un fichier qui sappel hostlog et qui porte l'extension .html , et qui doit contenir :

<table cellspacing="0" cellpadding="2" rules="all" border="0" id="dg" style="border-width:0px;border-style:Solid;font-family:Verdana;font-size:XX-Small;width:100%;border-collapse:collapse;">
<tr style="background-color:PaleGoldenrod;border-width:1px;border-style:Ridge;font-weight:bold;font-style:italic;">
<td nowrap="nowrap">Quand</td><td nowrap="nowrap">Nick</td><td>Host</td><td>Ip (-3 left) ** (-4 left)</td>

Ensuite enrengistrez le fichier html dans le meme dossier que votre mIRC.
Puis regler l'add-on qui envoie le fichier sur un ftp.
Utiliser un timer de type :

/timertruc 0 200 /ftp_send

Ce qui permetra d'uploadé ce fichier toute les 200 secondes sur votre ftp .
Pour avoir une ip et la logé directement faite /host [pseudo]
Source quelque peut lamer mais qui peut avoir son utilité.

A voir également

Ajouter un commentaire

Commentaires

Kerrigan
Messages postés
708
Date d'inscription
lundi 15 juillet 2002
Statut
Membre
Dernière intervention
17 mars 2005
-
je trouve ça bien mais meme si c'est basique comme tu dis une interface ça ferait pas de mal. Vu le niveau du code je me demande si c pas de la flémardise ...
Sinon c'est excélent :D
juki_webmaster
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3 -
En faite je voulez sourtout afficher la source de Kenji.
tempusus
Messages postés
363
Date d'inscription
dimanche 8 février 2004
Statut
Modérateur
Dernière intervention
9 octobre 2017
1 -
très bon code, très bien ecrit. Et en plus très bien documenté. Vraiment très fort. manque juste une interface digne du code :)

Mais sinon, rien à redire.

ça merite un bon 8/10 :)

Tempusus
cs_tofu
Messages postés
1726
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
13 juin 2009
1 -
10/10 pour le code de kenji, sinon, ya pas grd chose..
tempusus
Messages postés
363
Date d'inscription
dimanche 8 février 2004
Statut
Modérateur
Dernière intervention
9 octobre 2017
1 -
tien, une idée pas mal: le rendre compatible ipv 6 :))

Tempusus

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.