From a3b4bdd812010475e3a51d3296eed6fc9aeeec21 Mon Sep 17 00:00:00 2001 From: Elijah Perrault Date: Thu, 3 Feb 2011 20:15:43 -0700 Subject: [PATCH] Added chanstatus-based permissions. This works via user:chanstatus. It doesn't work well yet because we're not updating status. --- doc/CHANGELOG | 2 ++ install | 6 +++++- src/API/Std.pm | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/doc/CHANGELOG b/doc/CHANGELOG index b8f8464..5eb4108 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -3,6 +3,8 @@ Auto IRC Bot 3.0: Change Log 3.0 Indev ================================================================== + * Added chanstatus-based permissions. This works via + user:chanstatus. * Catch __WARN__ and __DIE__, logging to file. * Added Spanish translations. * Added EightBall module. diff --git a/install b/install index a862b80..e7ad048 100755 --- a/install +++ b/install @@ -61,6 +61,9 @@ if (defined $ARGV[0]) { elsif ($_ eq "--enable-sasl") { $features .= " sasl"; } + elsif ($_ eq "--enable-ssl") { + $features .= " ssl"; + } else { println "Warning: Unknown option '".$_."'"; } @@ -113,7 +116,8 @@ println "\0"; println "--- CPAN Modules ---"; modfind("Mouse"); modfind("Class::Unload"); -modfind("MIME::Base64") if ($features =~ /sasl/); +modfind("IO::Socket::SSL") if $features =~ /ssl/; +modfind("MIME::Base64") if $features =~ /sasl/; # Create build. println "\0"; diff --git a/src/API/Std.pm b/src/API/Std.pm index e67df61..32bb474 100644 --- a/src/API/Std.pm +++ b/src/API/Std.pm @@ -372,6 +372,20 @@ sub match_user return $userkey; } } + elsif ($uhk eq "chanstatus" and defined $ulhp{'net'}) { + my ($ccst, $ccnm) = split(':', ($ulhp{$uhk})[0][0]); + my $svr = $ulhp{net}[0]; + if (defined $Auto::SOCKET{$svr}) { + foreach my $bcj (@{ $Parser::IRC::botchans{$svr} }) { + if (API::IRC::match_mask($bcj, $ccnm)) { + API::IRC::names($svr, $bcj); + if (defined $Parser::IRC::chanusers{$svr}{$bcj}{$user{nick}}) { + return $userkey if $Parser::IRC::chanusers{$svr}{$bcj}{$user{nick}} =~ m/($ccst)/; + } + } + } + } + } } }