summaryrefslogtreecommitdiffstats
path: root/scripts/sping.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/sping.pl')
-rw-r--r--scripts/sping.pl36
1 files changed, 36 insertions, 0 deletions
diff --git a/scripts/sping.pl b/scripts/sping.pl
new file mode 100644
index 0000000..49d8d78
--- /dev/null
+++ b/scripts/sping.pl
@@ -0,0 +1,36 @@
+use Irssi;
+use Irssi::Irc;
+use strict;
+
+use vars qw($VERSION %IRSSI);
+$VERSION = "0.9";
+%IRSSI = (
+ authors => "Maciek \'fahren\' Freudenheim",
+ contact => "fahren\@bochnia.pl",
+ name => "Server Ping",
+ description => "/SPING [server] - checks latency between current server and [server]",
+ license => "GNU GPLv2 or later",
+ changed => "Fri Mar 15 15:09:42 CET 2002"
+);
+
+my %askping;
+
+sub cmd_sping {
+ my ($target, $server, $winit) = @_;
+
+ $target = $server->{address} unless $target;
+ $askping{$target} = time();
+ $server->send_raw("PING $server->{address} $target");
+}
+
+sub event_pong {
+ my ($server, $args, $sname) = @_;
+
+ Irssi::signal_stop() if ($askping{$sname});
+
+ Irssi::print(">> $sname latency: " . (time() - $askping{$sname}) . "s");
+ undef $askping{$sname};
+}
+
+Irssi::signal_add("event pong", "event_pong");
+Irssi::command_bind("sping", "cmd_sping");