Pages : 1
#1 Le 08/02/2008, à 01:17
- Yannick_LM
Script pour Irssi
Bon, voilà. Un petit script inutile qui vous permet de savoir (à peu près) où habitent les gens avec qui vous parlez et l'heure qu'il est chez eux.
Edit : le script qui suit est parfaitement inutile, et peut être avantageusement remplacé par
/ctcp <pseudo> time, néanmoins, il fut amusant à écrire.
# Print the country name and the local time in /WHOIS replies
# Based on : country.pl by Timo Sirainen
# This script uses the IP-to-Country Database
# provided by WebHosting.Info (http://www.webhosting.info),
# available from http://ip-to-country.webhosting.info.
# Install :
# 1. Get the latest ip-to-country database at :
# http://ip-to-country.webhosting.info/downloads/ip-to-country.csv.zip
# and put it in ~/.irssi/scripts
# 2. Make a backup of your config files.
# 3. type (for instance):
# /format whois {nick $0} {nickhost $1@$2}%:{whois country $whois_country}%:{whois local $whois_local_time}%:{whois ircname $3}
# 4. Save the changes with /save
# Enjoy !
use strict;
use Irssi ;
use LWP::UserAgent;
use Socket;
use vars qw($VERSION %IRSSI);
$VERSION = "1.0.1";
%IRSSI = (
authors => "Yannick_LM",
contact => "yannicklm1337\@gmail.com",
name => "whois_local_time",
description => "Print the country name and the local time in /WHOIS replies",
license => "Public Domain",
changed => "Feb 8 2008"
);
our $HOME_DIR = $ENV{HOME};
our $GEOFILE = "$HOME_DIR/.irssi/scripts/ip-to-country.csv";
our $URL="http://www.worldtimeserver.com/";
our $time = "";
our $country ="";
# The last version of the file can be obtained there:
# http://ip-to-country.webhosting.info/downloads/ip-to-country.csv.zip
# Convert IP to number for use in the ip-to-country database.
sub ip_to_number {
my $ip = shift;
my (@octets, $ip_num);
$ip =~ s/\n//g;
@octets = split /\./, $ip;
$ip_num = 0;
foreach (@octets) {
$ip_num <<= 8;
$ip_num |= $_;
}
return $ip_num;
}
# Find the country name and code in the database
sub find_country {
my $ip=shift;
$ip = &ip_to_number($ip);
open GF, "<$GEOFILE" or die "Can't open $GEOFILE $!";
while (<GF>){
$_ =~ s/"//g;
$_ =~ s/\n//;
my ($start, $end, $CC, $CTRY);
($start, $end, $CC, $CTRY, $country) = split /,/, $_;
if (($ip >= $start) and ($ip <= $end)){
return "$CC";
last;
}
}
close GF;
die "Country no found in database";
}
sub find_time {
my $CC=shift;
# Queries worltimeserver.com
my $ua = new LWP::UserAgent;
$ua->agent("AgentName/0.1 " . $ua->agent);
my $req = new HTTP::Request GET => "$URL/current_time_in_$CC.aspx";
my $res = $ua->request($req);
my $content = $res->content;
my @lines = split("\n", $content);
# Parses the result
foreach(@lines) {
if ( $_ =~ /\s+(\d\d?:\d\d (A|P)M)/ ) {
return $1;
}
}
}
# Redirect whois signal
sub sig_whois {
my ($server, $data, $nick, $host) = @_;
my ($me, $nick, $user, $host) = split(" ", $data);
$host =~ s/^.*\@//;
eval {
# if it's a cloack, there is a slash in the host
if ($host =~ m,/,) {
die "$host is a cloak";
}
else {
# Else, find the IP adress
my $packed_ip = gethostbyname("$host");
defined $packed_ip or die "gethostbyname failed :(";
my $ip = inet_ntoa($packed_ip);
# Find coutry and time
my $CC = &find_country($ip);
$time = &find_time($CC);
}
};
if ($@) {
# Irssi::active_win->print("Error : $@"); # Debug > merci de décommenter ceci si vous avez des problèmes
$country="Not Found";
$time="Unknown";
}
}
# For use in the /format ligne
sub expando_whois_local_time {
return $time;
}
sub expando_whois_country {
return $country;
}
Irssi::signal_add_first('event 311', \&sig_whois);
Irssi::expando_create('whois_local_time', \&expando_whois_local_time,
{ 'event 311' => 'None' } );
Irssi::expando_create('whois_country', \&expando_whois_country,
{ 'event 311' => 'None' } );
Pour les non-anglophones :
1. Sauvegardez le fichier dans .irssi/scripts/autorun/whois_local_time.pl
2. téléchargez la base de données ip-to-country http://ip-to-country.webhosting.info/do … ry.csv.zip, et extrayez-la dans .irssi/scripts
3. Sauvegardez vos fichiers de configuration
4. Tapez : /format whois {nick $0} {nickhost $1@$2}%:{whois country $whois_country}%:{whois local $whois_local_time}%:{whois ircname $3}
5. Tapez /save
Retours, remarques, suggestions bienvenues.
Dernière modification par Yannick_LM (Le 17/04/2008, à 22:39)
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne
#2 Le 11/02/2008, à 21:58
- Yannick_LM
Hors ligne
#3 Le 22/03/2008, à 23:48
- Thomicide
Re : Script pour Irssi
Je l'ai mis, apparemment ça marche bien.
Mais il faut redemarrer irssi pour que ça fonctionne.
Merci!
Hors ligne
#4 Le 23/03/2008, à 03:36
- Yannick_LM
Re : Script pour Irssi
Mon Dieu, un utilisateur !
Bon, c'est pas encore parfait, hein. (Y a des problèmes de durée d'éxécution, qui pourrait facilement être réduite, et de gestion des cloaks).
<blague>
Maintenant que j'ai dit ça, j'vais être obligé de le faire en plus. J'aurais mieux fait de fermer ma grande g*ule
</blague>
Content que ça t'intéresse, Thomicide
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne
#5 Le 23/03/2008, à 13:19
- Thomicide
Re : Script pour Irssi
Ben j'essayerais la suite aussi ! Depeche toi!
Hors ligne
#6 Le 23/03/2008, à 18:11
- Yannick_LM
Re : Script pour Irssi
Bon, pour les cloaks, c'est fait.
Pour la vitesse d'exécution, j'avais pensé à quelque chose, mais c'était une fausse bonne idée
Quoiqu'il en soit, si le problème vous intéresse, jetez un œil...
Premier message édité.
EDIT2:
Utilisation de gethostbyname au lieu d'un shell->ping(), ce qui est plus propre.
(et potentiellement portable sous windows)
Dernière modification par Yannick_LM (Le 23/03/2008, à 20:23)
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne
#7 Le 24/03/2008, à 15:29
- Thomicide
Re : Script pour Irssi
Euh, tu as modifié le premier post? ou tu as oublié de poster le nouveau code?
Pour les cloak c'est cool si ça fonctionne! J'attendais ça justement!
edit: J'ai essayé le code du premier post, pour les cloaks, il ne met met rien dans Country ni dans Local.
Donc, a moins que j'ai foiré un truc, ça fonctionne pas.
Dernière modification par Thomicide (Le 24/03/2008, à 15:34)
Hors ligne
#8 Le 24/03/2008, à 15:45
- Yannick_LM
Re : Script pour Irssi
Alors, oui, j'ai modifié le code du premier post.
Et oui, tout le script tourne autour du nom de domaine que répond le whois.
Si le whois te donne un cloak, tu n'as pas de nom de domaine, donc pas d'information exploitable pour essayer de deviner où vit celui qui écrit.
Mais au moins, il y a plus de message d'erreur idiot
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne
#9 Le 25/03/2008, à 01:04
- Thomicide
Re : Script pour Irssi
Oui, j'ai remarqué pour le Message d'erreur.
En tout cas je trouve que c'est du bon travail.
C'est ton premier script? Moi j'essaye de faire un script pour ecrire dans une couleur donnée, mais, j'y arrive pas pour l'instant.
Hors ligne
#10 Le 26/03/2008, à 10:41
- Emralegna
Re : Script pour Irssi
Salut,
J'ai voulu utiliser ce script pour le tester, mais je suis passé sous Weechat qui m'a l'air davantage à jour, entre temps...
Dernière modification par Emralegna (Le 26/03/2008, à 10:44)
Hors ligne
#11 Le 26/03/2008, à 14:00
- Yannick_LM
Re : Script pour Irssi
Je vois aucune raison pour laquelle ce script fonctionnerait sous weechat
Cela dit, maintenant que t'as l'algorithme, rien ne t'empêches de faire la même chose dans le langage de ton choix, en plus
EDIT : en fait, non. J'ai vu nulle part comment customiser le whois sur weechat, désolé
Dernière modification par Yannick_LM (Le 26/03/2008, à 14:15)
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne
#12 Le 26/03/2008, à 14:30
- Emralegna
Re : Script pour Irssi
Je vois aucune raison pour laquelle ce script fonctionnerait sous weechat
[...]
Et bien, justement moi aussi je n'en voyais aucune.
Comme tu l'as précisé par la suite il n'y a pas de gestionnaire de thème par défaut, il faut un script. En revanche j'ignorai qu'il n'était pas du tout possible d'éditer les whois ; j'avoue ne pas m'être encore penché sur la personnalisation.
J'aurais effectivement pu modifier le code pour qu'il aille bien à Weechat, si au préalable je savais comment.
Je me pencherai sur la question quand j'aurais davantage de temps, et pourquoi pas par la suite y poster quelques autres scripts, dans un avenir lointain.
Hors ligne
#13 Le 27/03/2008, à 01:34
- Thomicide
Re : Script pour Irssi
Avec ton nouveau script, j'obtiens une erreur:
-!- Irssi: Error in script whois_local_time:
Global symbol "$ip" requires explicit package name at (eval 61) line 134.
Je ne sais pas la résoudre.
Hors ligne
#14 Le 27/03/2008, à 01:43
- Yannick_LM
Re : Script pour Irssi
Voilà, corrigé
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne
#15 Le 27/03/2008, à 23:44
- Thomicide
Re : Script pour Irssi
Et bien maintenant, j'ai une autre erreur!
Lorsque je fais un /whois, j'ai:
Can't exec "inet_ntoa": Aucun fichier ou répertoire de ce type at (eval 84) line 62.
Hors ligne
#16 Le 28/03/2008, à 00:53
- Yannick_LM
Re : Script pour Irssi
Hum.
à mon avis il te manque le paquet libwww-perl
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne
#17 Le 28/03/2008, à 21:04
- Thomicide
Re : Script pour Irssi
Je l'ai , si.
Hors ligne
#18 Le 28/03/2008, à 22:34
- Yannick_LM
Re : Script pour Irssi
bon, autant pour moi.
J'ai pas modifié le script correctement, mea culpa.
(Il manquait le use Socket; désolé)
Premier message édité
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne
#19 Le 05/04/2008, à 02:56
- Thomicide
Re : Script pour Irssi
Petite chose, au cas où.
/whois sur un cloak ne donne pas l'heure local, hors en faisant un ctcp sur un cloak, on l'a.
Saurais-tu par hasard, faire apparaitre l'heure dans le whois ?
Il parait que c'est possible, mais je ne sais pas comment.
Par contre, le temps entre /whois et le résultat sera plus long.
Voila, au cas où ça t'interesse.
Hors ligne
#20 Le 05/04/2008, à 17:23
- Yannick_LM
Re : Script pour Irssi
Arg !
Bon, tant pis. Joli exemple de la façon de réinventer la roue...
/ctcp <pseudo> time suffit amplement, et est bien plus rapide ...
Bon ben vous pouvez oublier le script, il ne sert à rien
EDIT : bon, je vais quand même refaire un script qui utilisera ctcp, parce que c'est vous
Dernière modification par Yannick_LM (Le 05/04/2008, à 17:31)
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne
#21 Le 06/04/2008, à 00:10
- Thomicide
Re : Script pour Irssi
Je ne sais pas si c'est une bonne idée le script qui utilise le ctcp.
Le whois va être long.
Et ton script Donne le pays, LUI.
Donc il est bien, moi perso je le garde sans le ctcp.
Hors ligne
#22 Le 06/04/2008, à 00:47
- Yannick_LM
Hors ligne
#23 Le 06/04/2008, à 12:10
- Emralegna
Re : Script pour Irssi
Pesonnellement j'ignore la plupart des CTCPs si ça n'est pas tous, dont le TIME, donc sans ce protocol il reste bien utile.
Hors ligne
#24 Le 07/04/2008, à 23:50
- Thomicide
Re : Script pour Irssi
T'as vu ça Yannick_LM, on est 2 sur le coup!:cool:
Hors ligne
Pages : 1