antifuck.pl: add option to ignore/whitelist servers
This commit is contained in:
parent
17149d0f01
commit
3bfbeb5a42
@ -17,6 +17,8 @@ my %OPTIONS = (
|
|||||||
'You can always do this manually with /antifuck part', '0'],
|
'You can always do this manually with /antifuck part', '0'],
|
||||||
delay => ['Delay in milliseconds to wait before autoparting', '5000'],
|
delay => ['Delay in milliseconds to wait before autoparting', '5000'],
|
||||||
forward => ['Whether to allow channel forwards (+f on freenode)', '1'],
|
forward => ['Whether to allow channel forwards (+f on freenode)', '1'],
|
||||||
|
ignore => ['Servers to ignore (e.g. for non-ZNC bouncers), '.
|
||||||
|
'separated by commas', ''],
|
||||||
);
|
);
|
||||||
|
|
||||||
my (%channels, %part, %partbuf, $fuckbuf, $timeout_cb);
|
my (%channels, %part, %partbuf, $fuckbuf, $timeout_cb);
|
||||||
@ -40,6 +42,7 @@ HELP
|
|||||||
weechat::hook_signal('buffer_closed', 'buffer_closed', '');
|
weechat::hook_signal('buffer_closed', 'buffer_closed', '');
|
||||||
weechat::hook_signal('*,irc_out1_join', 'client_join', '');
|
weechat::hook_signal('*,irc_out1_join', 'client_join', '');
|
||||||
weechat::hook_signal('*,irc_out1_part', 'client_part', '');
|
weechat::hook_signal('*,irc_out1_part', 'client_part', '');
|
||||||
|
weechat::hook_signal('*,irc_raw_in_001', 'irc_001', '');
|
||||||
weechat::hook_modifier('irc_in_366', 'irc_366', '');
|
weechat::hook_modifier('irc_in_366', 'irc_366', '');
|
||||||
weechat::hook_modifier('irc_in_part', 'irc_part', '');
|
weechat::hook_modifier('irc_in_part', 'irc_part', '');
|
||||||
|
|
||||||
@ -58,7 +61,6 @@ HELP
|
|||||||
lc weechat::buffer_get_string($buf, 'localvar_server')}{
|
lc weechat::buffer_get_string($buf, 'localvar_server')}{
|
||||||
lc weechat::buffer_get_string($buf, 'localvar_channel')} = 1;
|
lc weechat::buffer_get_string($buf, 'localvar_channel')} = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
weechat::infolist_free($iptr);
|
weechat::infolist_free($iptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,6 +71,14 @@ sub mynick
|
|||||||
return lc weechat::buffer_get_string($buf, 'localvar_nick') eq lc $nick;
|
return lc weechat::buffer_get_string($buf, 'localvar_nick') eq lc $nick;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub ignored
|
||||||
|
{
|
||||||
|
my $server = shift;
|
||||||
|
my $ignore_conf = lc weechat::config_get_plugin('ignore');
|
||||||
|
|
||||||
|
return $ignore_conf =~ /(^|,)$server($|,)/;
|
||||||
|
}
|
||||||
|
|
||||||
sub servchan
|
sub servchan
|
||||||
{
|
{
|
||||||
my $buf = shift;
|
my $buf = shift;
|
||||||
@ -131,6 +141,7 @@ sub buffer_opened {
|
|||||||
my ($server, $channel) = servchan($buffer);
|
my ($server, $channel) = servchan($buffer);
|
||||||
|
|
||||||
return weechat::WEECHAT_RC_OK if exists $channels{$server}{$channel};
|
return weechat::WEECHAT_RC_OK if exists $channels{$server}{$channel};
|
||||||
|
return weechat::WEECHAT_RC_OK if ignored($server);
|
||||||
|
|
||||||
$fuckbuf = weechat::buffer_new(
|
$fuckbuf = weechat::buffer_new(
|
||||||
'antifuck',
|
'antifuck',
|
||||||
@ -176,6 +187,22 @@ sub client_part
|
|||||||
return weechat::WEECHAT_RC_OK;
|
return weechat::WEECHAT_RC_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub irc_001
|
||||||
|
{
|
||||||
|
my (undef, $server, $message) = (shift,
|
||||||
|
shift =~ /(.+),irc_raw_in_001/, shift);
|
||||||
|
|
||||||
|
$server = lc $server;
|
||||||
|
return weechat::WEECHAT_RC_OK unless $message =~ / :- Welcome to ZNC -$/;
|
||||||
|
|
||||||
|
my $ignore_conf = lc weechat::config_get_plugin('ignore');
|
||||||
|
return weechat::WEECHAT_RC_OK if $ignore_conf =~ /(^|,)$server($|,)/;
|
||||||
|
|
||||||
|
weechat::config_set_plugin('ignore', "$ignore_conf,$server");
|
||||||
|
|
||||||
|
return weechat::WEECHAT_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
sub irc_366
|
sub irc_366
|
||||||
{
|
{
|
||||||
my ($server, $message) = ($_[2], $_[3]);
|
my ($server, $message) = ($_[2], $_[3]);
|
||||||
@ -185,6 +212,7 @@ sub irc_366
|
|||||||
|
|
||||||
return $message unless mynick($buffer, $nick);
|
return $message unless mynick($buffer, $nick);
|
||||||
return $message if exists $channels{$server}{$channel};
|
return $message if exists $channels{$server}{$channel};
|
||||||
|
return $message if ignored($server);
|
||||||
|
|
||||||
weechat::print($buffer, weechat::prefix('network').
|
weechat::print($buffer, weechat::prefix('network').
|
||||||
'Forcejoined, not syncing modes');
|
'Forcejoined, not syncing modes');
|
||||||
@ -249,6 +277,7 @@ sub irc_part
|
|||||||
|
|
||||||
return $message unless mynick($buffer, $nick);
|
return $message unless mynick($buffer, $nick);
|
||||||
return $message unless exists $channels{$lserver}{$lchannel};
|
return $message unless exists $channels{$lserver}{$lchannel};
|
||||||
|
return $message if ignored($lserver);
|
||||||
|
|
||||||
weechat::print($buffer, weechat::prefix('quit').
|
weechat::print($buffer, weechat::prefix('quit').
|
||||||
weechat::color('irc.color.message_quit').
|
weechat::color('irc.color.message_quit').
|
||||||
|
Loading…
Reference in New Issue
Block a user