From b636c6b6a95af412ac1ecceff7f6ee9ad0749841 Mon Sep 17 00:00:00 2001 From: bw1 Date: Sat, 1 Apr 2017 15:19:21 +0200 Subject: [kicks][crit] use strict; open --- scripts/kicks.pl | 237 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 122 insertions(+), 115 deletions(-) (limited to 'scripts') diff --git a/scripts/kicks.pl b/scripts/kicks.pl index 9df9314..af9f567 100644 --- a/scripts/kicks.pl +++ b/scripts/kicks.pl @@ -4,76 +4,77 @@ # - http://www.penguin-breeder.org/irssi/ # +use strict; use vars qw($VERSION %IRSSI); use Irssi 20020120; -$VERSION = "0.26"; +$VERSION = "0.27"; %IRSSI = ( - authors => "c0ffee", - contact => "c0ffee\@penguin-breeder.org", - name => "Various kick and ban commands", - description => "Enhances /k /kb and /kn with some nice options.", - license => "Public Domain", - url => "http://www.penguin-breeder.org/irssi/", - changed => "Tue Nov 14 23:19:19 CET 2006", + authors => "c0ffee", + contact => "c0ffee\@penguin-breeder.org", + name => "Various kick and ban commands", + description => "Enhances /k /kb and /kn with some nice options.", + license => "Public Domain", + url => "http://www.penguin-breeder.org/irssi/", + changed => "2017-03-31", ); # my %kickreasons = ( - default => ["random kick victim", - "no", - "are you stupid?", - "i don't like you, go away!", - "oh, fsck off", - "waste other ppls time, elsewhere", - "get out and STAY OUT", - "don't come back", - "no thanks", - "on popular demand, you are now leaving the channel", - "\$N", - "*void*", - "/part is the command you're looking for", - "this is the irssi of borg. your mIRC will be assimilated. resistance is futile.", - "Autokick! mwahahahah!" - ], - none => [""], - topic => ["\$topic"], + default => ["random kick victim", + "no", + "are you stupid?", + "i don't like you, go away!", + "oh, fsck off", + "waste other ppls time, elsewhere", + "get out and STAY OUT", + "don't come back", + "no thanks", + "on popular demand, you are now leaving the channel", + "\$N", + "*void*", + "/part is the command you're looking for", + "this is the irssi of borg. your mIRC will be assimilated. resistance is futile.", + "Autokick! mwahahahah!" + ], + none => [""], + topic => ["\$topic"], ); # fine tune the script for different chatnets -# cmdline_k regular expr that matches a correct cmdline for /k -# req_chan 0/1 whether the channel is always part of the cmdline -# num_nicks number of nicks ... (-1 = inf) -# start_with_dash 0/1 whether the normal cmdline may start with a dash -# match_chn matches channels -# match_n match nicks -# match_reason matches reasons -# default_reason reason to give as "no reason" +# cmdline_k regular expr that matches a correct cmdline for /k +# req_chan 0/1 whether the channel is always part of the cmdline +# num_nicks number of nicks ... (-1 = inf) +# start_with_dash 0/1 whether the normal cmdline may start with a dash +# match_chn matches channels +# match_n match nicks +# match_reason matches reasons +# default_reason reason to give as "no reason" my %cfg = ( - IRC => { - cmdline_k => '\s*([!#+&][^\x0\a\n\r ]*)\s+[-\[\]\\\\\`{}\w_|^\'~]+(,[-\[\]\\\\\`{}\w_|^\'~]+)*\s+\S.*', - req_chan => 0, - num_nicks => 3, # actually, /k takes more, but - # normal irc servers only take - # three in a row - start_with_dash => 1, - match_chn => '([!#+&][^\x0\a\n\r ]*)\s', - match_n => '(?:^|\s+)([-\[\]\\\\\`{}\w_|^\'~]+(?:,[-\[\]\\\\\`{}\w_|^\']+)*)', - match_reason => '^\s*[!#+&][^\x0\a\n\r ]*\s+[-\[\]\\\\\`{}\w_|^\'~]+(?:,[-\[\]\\\\\`{}\w_|^\'~]+)*\s+(\S.*)$', - default_reason => '$N' - }, - - SILC => { - cmdline_k => '\s*[^\x0-\x20\*\?,@!]+\s+[^\x0-\x20\*\?,@!]+\s+\S.*', - req_chan => 1, - num_nicks => 1, - start_with_dash => 0, - match_chn => '\s*([^\x0-\x20\*\?,@!]+)\s+[^\x0-\x20\*\?,@!]+(?:,[^\x0-\x20\*\?,@!]+)*', - match_n => '\s*(?:[^\x0-\x20\*\?,@!]+\s+)?([^\x0-\x20\*\?,@!]+(?:,[^\x0-\x20\*\?,@!]+)*)', - match_reason => '\s*[^\x0-\x20\*\?,@!]+\s+[^\x0-\x20\*\?,@!]+(?:,[^\x0-\x20\*\?,@!]+)*\s+(\S.*)', - default_reason => '$N' - } + IRC => { + cmdline_k => '\s*([!#+&][^\x0\a\n\r ]*)\s+[-\[\]\\\\\`{}\w_|^\'~]+(,[-\[\]\\\\\`{}\w_|^\'~]+)*\s+\S.*', + req_chan => 0, + num_nicks => 3, # actually, /k takes more, but + # normal irc servers only take + # three in a row + start_with_dash => 1, + match_chn => '([!#+&][^\x0\a\n\r ]*)\s', + match_n => '(?:^|\s+)([-\[\]\\\\\`{}\w_|^\'~]+(?:,[-\[\]\\\\\`{}\w_|^\']+)*)', + match_reason => '^\s*[!#+&][^\x0\a\n\r ]*\s+[-\[\]\\\\\`{}\w_|^\'~]+(?:,[-\[\]\\\\\`{}\w_|^\'~]+)*\s+(\S.*)$', + default_reason => '$N' + }, + + SILC => { + cmdline_k => '\s*[^\x0-\x20\*\?,@!]+\s+[^\x0-\x20\*\?,@!]+\s+\S.*', + req_chan => 1, + num_nicks => 1, + start_with_dash => 0, + match_chn => '\s*([^\x0-\x20\*\?,@!]+)\s+[^\x0-\x20\*\?,@!]+(?:,[^\x0-\x20\*\?,@!]+)*', + match_n => '\s*(?:[^\x0-\x20\*\?,@!]+\s+)?([^\x0-\x20\*\?,@!]+(?:,[^\x0-\x20\*\?,@!]+)*)', + match_reason => '\s*[^\x0-\x20\*\?,@!]+\s+[^\x0-\x20\*\?,@!]+(?:,[^\x0-\x20\*\?,@!]+)*\s+(\S.*)', + default_reason => '$N' + } ); sub initialize { @@ -83,51 +84,53 @@ sub initialize { my ($basedir) = $conf_file =~ /^(.*\/).*?/; if (-f $conf_file) { - open CONF, $conf_file; - - while () { - $line++; - - next if /^\s*#/; - - chomp; - ($key, $reasons) = /^(\S+)\s+(.+)\s*$/ or next; - - if ($reasons =~ /\`([^\s]+).*?\`/) { - $kickreasons{$key} = "$reasons"; - Irssi::print("Added executable $1 as $key..."); - next; - } - - $reasons =~ s/^"(.*)"$/$1/; - $reasons =~ s/~/$ENV{HOME}/; - $reasons =~ s/^([^\/])/$basedir$1/; - - if (-f $reasons) { - - $kickreasons{$key} = []; - - open REASON, $reasons; - - while () { - chomp; - push @{$kickreasons{$key}}, $_; - } - - close REASON; - Irssi::print("Loaded $reasons as $key..."); - } else { - Irssi::print("can't parse config line $line..."); - } - } - close CONF; + open CONF, '<', $conf_file; + + my $line=0; + + while () { + $line++; + + next if /^\s*#/; + + chomp; + (my $key, my $reasons) = /^(\S+)\s+(.+)\s*$/ or next; + + if ($reasons =~ /\`([^\s]+).*?\`/) { + $kickreasons{$key} = "$reasons"; + Irssi::print("Added executable $1 as $key..."); + next; + } + + $reasons =~ s/^"(.*)"$/$1/; + $reasons =~ s/~/$ENV{HOME}/; + $reasons =~ s/^([^\/])/$basedir$1/; + + if (-f $reasons) { + + $kickreasons{$key} = []; + + open REASON, '<', $reasons; + + while () { + chomp; + push @{$kickreasons{$key}}, $_; + } + + close REASON; + Irssi::print("Loaded $reasons as $key..."); + } else { + Irssi::print("can't parse config line $line..."); + } + } + close CONF; } else { Irssi::print("Could not find configuration file for kicks..."); - Irssi::print("... use /set kicks_configuration "); + Irssi::print("... use /set kicks_configuration "); } } - + sub get_a_reason { my ($topic) = @_; @@ -142,20 +145,22 @@ sub get_a_reason { } sub cmd_realkick { - my ($data, $server, $channel, $cmd) = @_; + (my $data, my $server, my $channel, my $cmd) = @_; my $reasons = "default"; return if not $server or not defined $cfg{$server->{chat_type}} - or not $channel - or $data =~ /^$cfg{$server->{chat_type}}{cmdline_k}$/; + or not $channel + or $data =~ /^$cfg{$server->{chat_type}}{cmdline_k}$/; Irssi::signal_stop(); # let's see whether some options where supplied - $default = Irssi::settings_get_str("default_kick_options"); + my $default = Irssi::settings_get_str("default_kick_options"); $data = "$default $data" if not $default =~ /^\s*$/; - @opts = split /\s+/, $data; + my @opts = split /\s+/, $data; + my $opt; + my $fail=0; while (($opt) = (shift @opts) =~ /^\s*-(\S+)/) { @@ -163,18 +168,18 @@ sub cmd_realkick { $data =~ s/^\s*-$opt\s+//, $reasons = lc $opt, - next if defined $kickreasons{lc $opt}; + next if defined $kickreasons{lc $opt}; last if $cfg{$server->{chat_type}}{start_with_dash}; Irssi::print("Unknown option -$opt"); - $fail = true; + $fail = 1; } return if $fail; - $chn = ""; + my $chn = ""; ($chn) = $data =~ /^$cfg{$server->{chat_type}}{match_chn}/; if ($cfg{$server->{chat_type}}{req_chan} && ($chn eq "")) { @@ -184,37 +189,39 @@ sub cmd_realkick { # do we need to add a channel? if ($chn eq "") { - Irssi::print("Not joined to any channel"), return - if $channel->{type} ne "CHANNEL"; + Irssi::print("Not joined to any channel"), return + if $channel->{type} ne "CHANNEL"; $chn = $channel->{name}; - $data = "$chn $data"; + $data = "$chn $data"; } # is a reason already supplied? + my $reason; $reason = get_a_reason($reasons) if not (($reason) = $data =~ /$cfg{$server->{chat_type}}{match_reason}/); $reason = $cfg{$server->{chat_type}}{default_reason} if $reason =~ /^\s*$/; - @nicks = split /,/, ($data =~ /$cfg{$server->{chat_type}}{match_n}/)[0]; - $num_nicks = $cfg{$server->{chat_type}}{num_nicks}; + my @nicks = split /,/, ($data =~ /$cfg{$server->{chat_type}}{match_n}/)[0]; + my $num_nicks = $cfg{$server->{chat_type}}{num_nicks}; $num_nicks = @nicks if $num_nicks <= 0; + my @commands; undef @commands; while (@nicks) { - $tmp = ($chn ne "" ? "$chn " : "") . + my $tmp = ($chn ne "" ? "$chn " : "") . join ",", (splice @nicks,0,$num_nicks); - $tmp =~ s/([;\\\$])/\\$1/g; - push @commands, "$tmp $reason"; + $tmp =~ s/([;\\\$])/\\$1/g; + push @commands, "$tmp $reason"; } foreach (@commands) { if ($_ =~ /^$cfg{$server->{chat_type}}{cmdline_k}$/) { s/\s+$//; - $channel->command("EVAL $cmd $_") + $channel->command("EVAL $cmd $_"); } else { Irssi::print("BUG: generated invalid $cmd command: $_"); } @@ -237,7 +244,7 @@ sub cmd_kickban { Irssi::settings_add_str("misc", "default_kick_options", ""); Irssi::settings_add_str("misc", "kicks_configuration", - Irssi::get_irssi_dir() . "/kicks.conf"); + Irssi::get_irssi_dir() . "/kicks.conf"); Irssi::command_bind("kick", "cmd_kick"); Irssi::command_bind("kickban", "cmd_kickban"); -- cgit v1.2.3 From 7c018c5e88d5a22256a14651a7545c47d977c6a9 Mon Sep 17 00:00:00 2001 From: bw1 Date: Sat, 1 Apr 2017 17:30:41 +0200 Subject: [kicks][crit] my ($var1, $var2) --- scripts/kicks.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'scripts') diff --git a/scripts/kicks.pl b/scripts/kicks.pl index af9f567..76e87ea 100644 --- a/scripts/kicks.pl +++ b/scripts/kicks.pl @@ -94,7 +94,7 @@ sub initialize { next if /^\s*#/; chomp; - (my $key, my $reasons) = /^(\S+)\s+(.+)\s*$/ or next; + my ($key, $reasons) = /^(\S+)\s+(.+)\s*$/ or next; if ($reasons =~ /\`([^\s]+).*?\`/) { $kickreasons{$key} = "$reasons"; @@ -145,7 +145,7 @@ sub get_a_reason { } sub cmd_realkick { - (my $data, my $server, my $channel, my $cmd) = @_; + my ($data, $server, $channel, $cmd) = @_; my $reasons = "default"; return if not $server -- cgit v1.2.3