# handle 005 and 010 server messages and reconnect to that server
#
# 2002 Thomas Graf
use strict;
use Irssi;
use Irssi::Irc;
use vars qw($VERSION %IRSSI);
$VERSION = "0.1";
%IRSSI = (
authors => 'Thomas Graf',
contact => '[email protected]',
name => 'redirect',
description => 'handle 005 and 010 server messages and reconnect to that server',
license => 'GNU GPLv2 or later',
url => 'http://irssi.reeler.org/',
);
sub sig_servermsg
{
my ($server, $line) = @_;
if ( $line =~ /^005\s.*Try\sserver\s(.*?),.*port\s(.*?)$/ ||
$line =~ /^010\s.*?\s(.*?)\s(.*?)\s/ ) {
my $redirect = $1;
my $port = $2;
Irssi::print "Server suggests to redirect to $redirect $port";
if ( Irssi::settings_get_bool("follow_redirect") ) {
$server->command("SERVER $redirect $port");
}
}
}
Irssi::settings_add_bool("server", "follow_redirect", 1);
Irssi::signal_add_last('server event', 'sig_servermsg');