Multi whois system

Contenu du snippet

Ce snippet vous permettra de whoiser un nick sur plusieurs réseaux.
Il utilise des socket pour se connecter au site http://searchirc.com/

Source / Exemple :


;====================================================================
;Auteur:          JHD, Email: jhdestevez@hotmail.com
;Site:            JHDSCRIPT®, Home Page: www.jhdscript.fr.st
;Commentaire:     Ce snippet sert tout simplement à faire un whois
;                 sur plusieurs réseaux. P
;--------------------------------------------------------------------
;Remerciements:   http://searchirc.com/ car la recherche se fait en 
;                 connectant un socket sur leur site
;Date:            8/08/03
;====================================================================

;- les divers menu (popup)
menu status,channel,menubar {
  -
  Multi Whois système:/initmws $$?="Entre un pseudo"
  -
}
menu nicklist {
  -
  Multi Whois système:/initmws $$1
  -
}
menu @Multi-Whois-System {
  rclick
  .Nouvelle recherche:/initmws $$?="Entre un pseudo"
}

;-alias mettant dans une var le pseudo puis lancement de l alias multiwn
alias initmws { set %mwnick $1- | multiwn }

;-alias ouvrant la @win et démarrant la recherche
alias multiwn {
  ;-ouverture de la @win
  window -ak @Multi-Whois-System 200 200 450 400
  writemws 4 ===============================================
  writemws 4 Recherche pour le pseudo  $+ %mwnick $+ 
  writemws 4 ===============================================
  ;-on set une variable a 0 car  on en aura besoin par la suite
  set %mws.count 0
  ;-ouverture du socket avec une préfermeture de manière a ne pas avoir de message d' erreur sur l ouverture du socket
  sockclose multiwn
  sockopen multiwn 69.57.128.21 80
}

;-a l' ouverture du socket on envoie les requetes http de telle sorte à pouvoir effectuée la connection au site
on 1:sockopen:multiwn:{ 
  sockwrite -nt $sockname GET /whois/ $+ %mwnick HTTP/1.1
  sockwrite -nt $sockname HEAD http://searchirc.com/ HTTP/1.1 
  sockwrite -nt $sockname Accept: */* 
  sockwrite -nt $sockname User-Agent: Mozilla/4.0 (compatible; mIRC $version $+ )
  sockwrite -nt $sockname Host: searchirc.com $+ : $+ $sock($sockname).port 
  sockwrite -nt $sockname Connection: Keep-Alive 
  sockwrite -nt $sockname $lf
}

;-alias qui permet de supprimer les balises html contenue dans les données reçues par le socket
alias -l htmlfree {
  var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&nbsp;)
  return %x
}

;-alias servant à ajouter une ligne dans la @win
alias writemws {
  if ($window(@Multi-Whois-System)) { aline $1 @Multi-Whois-System $2- }
}

;-alias servant à ajouter une ligne de -- dans la @win
alias writemws2 {
  writemws 1 -------------------------------------------------------------------------------------
}

;-Traitement des données reçues - évènement on sockread
on 1:sockread:multiwn:{ 
  ;-on set le sockread dans une var
  sockread %multiwn
  ;-si le socket reçoit un msg d' erreur on relance la demande (en effet, qqfois, le site vous demande de patienter, ce que le socket gère mal)
  if (Please hold while we look up isin $htmlfree(%multiwn)) {   writemws 4 Erreur de connection au site - Reboot de la recherche | .timermws 1 5 multiwn | writemws 4 Veuillez patienter quelques secondes }
  if (All rights reserved isin $htmlfree(%multiwn)) {   writemws 4 =============================================== | writemws 4 Fin de la recherche de  $+ %mwnick $+  | writemws 4 =============================================== }
  ;-on incremente la var %mws.count de 1
  if (/WHOIS isin %multiwn) {
    inc %mws.count
  }
  ;-analyse des infos reçues si %mws.count est supérieur ou égale à 5 ( >= à 5 car les données reçue avant le 5ieme /whois ne sont pas intéressante)
  if (%mws.count >= 5) {
    ;- on vérifie si certains réseau sont dans le sockread - si tel est le cas on l' écrit dans la @win
    if (Undernet isin $htmlfree(%multiwn)) && ($chr(46) !isin $htmlfree(%multiwn)) { writemws2 | writemws 12 Réseau: $remove($htmlfree(%multiwn),/whois,%mwnick) }
    elseif (Quakenet isin $htmlfree(%multiwn)) && ($chr(46) !isin $htmlfree(%multiwn)) { writemws2 | writemws 12 Réseau: $remove($htmlfree(%multiwn),/whois,%mwnick) }
    elseif (Efnet isin $htmlfree(%multiwn)) && ($chr(46) !isin $htmlfree(%multiwn)) { writemws2 | writemws 12 Réseau: $remove($htmlfree(%multiwn),/whois,%mwnick) }
    elseif (IRCnet isin $htmlfree(%multiwn)) && ($chr(46) !isin $htmlfree(%multiwn)) { writemws2 | writemws 12 Réseau: $remove($htmlfree(%multiwn),/whois,%mwnick) }
    elseif (Gamesnet isin $htmlfree(%multiwn)) && ($chr(46) !isin $htmlfree(%multiwn)) { writemws2 | writemws 12 Réseau: $remove($htmlfree(%multiwn),/whois,%mwnick) }
    elseif (Dalnet isin $htmlfree(%multiwn)) && ($chr(46) !isin $htmlfree(%multiwn)) { writemws2 | writemws 12 Réseau: $remove($htmlfree(%multiwn),/whois,%mwnick) }
    elseif (Webchat isin $htmlfree(%multiwn)) && ($chr(46) !isin $htmlfree(%multiwn)) { writemws2 | writemws 12 Réseau: $remove($htmlfree(%multiwn),/whois,%mwnick) }
    elseif (Galaxynet isin $htmlfree(%multiwn)) && ($chr(46) !isin $htmlfree(%multiwn)) { writemws2 | writemws 12 Réseau: $remove($htmlfree(%multiwn),/whois,%mwnick) }
    elseif (mIRC-X isin $htmlfree(%multiwn)) && ($chr(46) !isin $htmlfree(%multiwn)) { writemws2 | writemws 12 Réseau: $remove($htmlfree(%multiwn),/whois,%mwnick) }
    elseif (EnterTheGame isin $htmlfree(%multiwn)) && ($chr(46) !isin $htmlfree(%multiwn)) { writemws2 | writemws 12 Réseau: $remove($htmlfree(%multiwn),/whois,%mwnick) }
    elseif (PTnet isin $htmlfree(%multiwn)) && ($chr(46) !isin $htmlfree(%multiwn)) { writemws2 | writemws 12 Réseau: $remove($htmlfree(%multiwn),/whois,%mwnick) }
    ;-Réception des nick + host que l' on inscris dans la @win - utilisation d' une boucle et de sockread -f car les informations sont obtenues sur plusieurs sockreads
    if (nick: isin $htmlfree(%multiwn)) { 
      set %tmmws 0
      :loop
      if ( %tmmws == 1) {
        writemws 10 Nick: $htmlfree(%multiwn)
      }
      elseif (%tmmws <= 1) { sockread -f %multiwn | inc %tmmws 1 | goto loop }
    }
    ;-idem que pr le nick mais pr le realname
    if (realname: isin $htmlfree(%multiwn)) { 
      set %tmmws 0
      :loop
      if ( %tmmws == 1) {
        writemws 10 Realname: $htmlfree(%multiwn)
      }
      elseif (%tmmws <= 1) { sockread -f %multiwn | inc %tmmws 1 | goto loop }
    }
    ;-idem que pr le nick mais pr le serveur
    if (Server: isin $htmlfree(%multiwn)) { 
      set %tmmws 0
      :loop
      if ( %tmmws == 1) {
        writemws 10 Serveur: $htmlfree(%multiwn)
      }
      elseif (%tmmws <= 1) { sockread -f %multiwn | inc %tmmws 1 | goto loop }
    }
    ;-idem que pr le nick mais pr les salons
    if (Channels: isin $htmlfree(%multiwn)) { 
      set %tmmws 0
      :loop
      if ( %tmmws == 1) {
        writemws 10 Salons: $htmlfree(%multiwn)
      }
      elseif (%tmmws <= 1) { sockread -f %multiwn | inc %tmmws 1 | goto loop }
    }
    ;-idem que pr le nick mais pr le status ( si le pseudo n' est pas conecté au serveur )
    if (Status: isin $htmlfree(%multiwn)) { 
      set %tmmws 0
      :loop
      if ( %tmmws == 2) {
        writemws 10 Status: $htmlfree(%multiwn)
      }
      elseif (%tmmws <= 2) { sockread -f %multiwn | inc %tmmws 1 | goto loop }
    }
  }
}

A voir également

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.