X-Git-Url: https://ruin.nu/git/?p=NDIRC.git;a=blobdiff_plain;f=Misc.pm;h=bada45151b3df42dc46c3c60f289a7937021727d;hp=2b479dd789e2a2ecf84c71a0bf590ffb7f08c237;hb=e8c94cdebefdc428ea92fde6db63f18d3e8399b2;hpb=9e84f393649d1ecbc24a94476352a28f49afa458 diff --git a/Misc.pm b/Misc.pm index 2b479dd..bada451 100644 --- a/Misc.pm +++ b/Misc.pm @@ -16,34 +16,73 @@ # Free Software Foundation, Inc., * # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * #**************************************************************************/ -package ND::IRC::Misc; +package NDIRC::Misc; use strict; use warnings; +use feature ':5.10'; + require Exporter; -our @ISA = qw/Exporter/; +use NDIRC::Context; -our @EXPORT = qw/valuecolor/; +our @ISA = qw/Exporter/; -$ND::defchan = "#def-ndawn"; -$ND::memchan = "#nd"; -$ND::scanchan = "#ndef"; -$ND::bcchan = "#nd-day"; -$ND::intelchan = "#ndintel"; -$ND::officerchan = "#nd-officers"; -$ND::communitychan = "#ndawn"; -$ND::pubchan = "#newdawn"; -$ND::xanchan = "#ViolatorS"; +our @EXPORT = qw/valuecolor parseCommand/; sub valuecolor { my $s = $_; - $s = $_[1] if defined $_[1]; + $s = $_[1] if $#_ >= 1; $s = "" unless defined $s; - return chr(3)."5$s".chr(3) if $s eq 'Hostile'; - return chr(3)."3$s".chr(3) if $s eq 'Friendly'; - return chr(3)."3$s".chr(3) if $s eq 'Nap' or $s eq 'NAP'; - return chr(2)."$s".chr(2) if $_[0]; + return chr(3)."5$s".chr(15) if $s eq 'Hostile'; + return chr(3)."3$s".chr(15) if $s eq 'Friendly'; + return chr(3)."3$s".chr(15) if $s eq 'Nap' or $s eq 'NAP'; + return chr(2)."$s".chr(15) if $_[0]; return $s; } +sub parseCommand { + my ($msg, $server, $nick, $address, $channel, $disp,$model) = @_; + + return if $channel !~ /^#/ && $msg =~ /^~/; + $msg = ".$msg" if $channel !~ /^#/ && $msg =~ /^[^.!]/; + + my ($p,$command,$args) = ($msg =~ /^([.!~])(\S+)(?: (.+))?/); + + if ($msg =~ m{http://[\w.]+/.+?scan(_id|_grp)?=(\w+)}){ + if (!$command || $command =~ m{^http://}){ + ($p,$command,$args) = ('.','addscan',$msg); + }elsif($command ne 'addscan'){ + parseCommand (".addscan $msg", $server, $nick, $address, $channel, $disp,$model) + } + } + + return 0 unless $disp->has_command($command,$channel); + + my $reply_string; + given ($p){ + when ('!'){ + $reply_string = "privmsg $nick"; + } + when ('~'){ + $reply_string = "privmsg $channel"; + } + default { + $reply_string = "notice $nick"; + } + } + + $address =~ s/.*@(.*)/$1/; + my $c = NDIRC::Context->new({ + host => $address, + nick => $nick, + channel => $channel, + disp => $disp, + model => $model, + server => $server, + reply_string => $reply_string, + }); + + return $disp->run_command($c,$command,$args); +} + 1;