Recuperer l'host en perl (xchat)

Résolu
Signaler
Messages postés
108
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
10 mars 2005
-
Messages postés
108
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
10 mars 2005
-
J'essaie de faire une commande en perl qui récupere l'host d'un user placé en parametre.

en gros /host [nick] doit renvoyer un truc du style : *!*@xxx.xx.xx.xx

J'ai cru comprendre qu'il fallait utiliser Xchat::user_info()

Mais je m'en sors pas....

David

-----
Un jour, je saurai !

8 réponses

Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
5
Le userhost peut donner une idée quand même...
Voila un truc ptet plus proche de ce que tu voulais après avoir cherché un peu :

Xchat::hook_command("host", "host");
sub host {
$nick = $_[0][1];
%host = %{ Xchat::user_info($nick) };
if ($host{"host"} =~ /@(.*)/) { Xchat::print "$nick : *!*@" . $1;}
return 1;
}

/host

PaDa
Messages postés
311
Date d'inscription
dimanche 23 février 2003
Statut
Membre
Dernière intervention
1 mai 2009

Je doute quil y ai vraiment des personnes qui soie adapte du PERL sur ircfr , c'est pas la meilleur place.
Messages postés
108
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
10 mars 2005

J'ai vu trainer des sources pour xchat :) alors je me suis dit que certains devait coder en perl ou python.

David

-----
Un jour, je saurai !
Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
5
N'ayant aucune doc sur la lib XChat:: , j'utilise la lib IRC:: mais ca pourra ptet t'aider :
en fait le plus simple c'est d'utiliser /userhost

#début du .pl nécessaire apparemment
IRC::register("SuperAuteur","SuperVersion","","");
#lorsqu'on recoit un raw 302 on exécute la subroutine "raw302"
IRC::add_message_handler("302","raw302");
#subroutine
sub raw302 {
#extractiondu pseudo , le truc compris entre ":" et "="
if ($_[0] =~ /:([^:]+)=/) { $nick = $1;}
#extraction du host , le truc compris entre un @ et la fin...
if ($_[0] =~ /@(.+)/) { $host = "*!*@" . $1;}
#affichage du nick et du host
IRC::print " Host for $nick : $host";
#on empêche pour finir l'affichage standard par ca:
return 1;
}

soit en non commenté :

IRC::register("SuperAuteur","SuperVersion","","");
IRC::add_message_handler("302","raw302");
sub raw302 {
if ($_[0] =~ /:([^:]+)=/) { $nick = $1;}
if ($_[0] =~ /@(.+)/) { $host = "*!*@" . $1;}
IRC::print "Host for $nick : $host";
return 1;
}

(c'est surement hyper maladroit je débute en Perl/Xchat ... indulgence indulgence)

PaDa
Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
5
Ps : j'ajoute que Xchat gère certainement une liste d'adresse interne modulo un /who mais bon j'fais des essais j'en suis au niveau vraiment ras les paquerettes lol
Ps2: si qq1 d'autre se met un peu a Perl (pour Xchat ou non) j'suis preneur avancer à plusieurs c'est toujours plus facile ... pmsg ou #scripting@irc.rs2i.net =]

PaDa
Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
5
Passage (bidon en fait) a Xchat::

Xchat::register("SuperAuteur","SuperVersion","","");
Xchat::hook_server("302","raw302");
sub raw302 {
if ($_[0][3] =~ /:([^:]+)=/) { $nick = $1;}
if ($_[0][3] =~ /@(.+)/) { $host = "*!*@" . $1;}
Xchat::print "Host for $nick : $host";
return 1;
}

PaDa
Messages postés
108
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
10 mars 2005

Oui bien sur, xchat gère ca tout seul comme un grand. Mais c'est pour faire une partie d'un script. J'ai besoin de récuperer l'host pour le comparer à une liste.

David

-----
Un jour, je saurai !
Messages postés
108
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
10 mars 2005

Un grand merci ! C'est exactement ce que je cherchais :)

Je vais pouvoir continuer pour le reste !

David

-----
Un jour, je saurai !