[nexuiz-commits] r8526 - trunk/server/rcon2irc
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Fri Jan 22 15:06:23 EST 2010
Author: div0
Date: 2010-01-22 15:06:20 -0500 (Fri, 22 Jan 2010)
New Revision: 8526
Modified:
trunk/server/rcon2irc/rcon2irc-example.conf
trunk/server/rcon2irc/rcon2irc.pl
Log:
merlijn's quakenet auth patch for rcon2irc
Modified: trunk/server/rcon2irc/rcon2irc-example.conf
===================================================================
--- trunk/server/rcon2irc/rcon2irc-example.conf 2010-01-22 20:05:53 UTC (rev 8525)
+++ trunk/server/rcon2irc/rcon2irc-example.conf 2010-01-22 20:06:20 UTC (rev 8526)
@@ -18,6 +18,8 @@
# IRC Quakenet challenge/response authentication (optional)
#irc_quakenet_authname = hack
#irc_quakenet_password = me
+# Users with a Q account listed here can use admin commands on the bot
+#irc_quakenet_authusers = a b c
# Extra plug-ins to load
#plugins =
Modified: trunk/server/rcon2irc/rcon2irc.pl
===================================================================
--- trunk/server/rcon2irc/rcon2irc.pl 2010-01-22 20:05:53 UTC (rev 8525)
+++ trunk/server/rcon2irc/rcon2irc.pl 2010-01-22 20:06:20 UTC (rev 8526)
@@ -701,6 +701,7 @@
irc_quakenet_authname => "",
irc_quakenet_password => "",
+ irc_quakenet_authusers => "",
irc_quakenet_getchallenge => 'PRIVMSG Q at CServe.quakenet.org :CHALLENGE',
irc_quakenet_challengeauth => 'PRIVMSG Q at CServe.quakenet.org :CHALLENGEAUTH',
irc_quakenet_challengeprefix => ':Q!TheQBot at CServe.quakenet.org NOTICE [^:]+ :CHALLENGE',
@@ -1125,7 +1126,7 @@
# IRC admin commands
[ irc => q{:(([^! ]*)![^ ]*) (?i:PRIVMSG) [^&#%]\S* :(.*)} => sub {
- return 0 unless $config{irc_admin_password} ne '';
+ return 0 unless ($config{irc_admin_password} ne '' || $config{irc_quakenet_authusers});
my ($hostmask, $nick, $command) = @_;
my $dpnick = color_dpfix $nick;
@@ -1307,6 +1308,44 @@
$store{irc_quakenet_challenge} = $1;
return irc_joinstage(0);
} ],
+
+ # Catch joins of people in a channel the bot is in and catch our own joins of a channel
+ [ irc => q{:(([^! ]*)![^ ]*) JOIN (#.+)} => sub {
+ my ($hostmask, $nick, $chan) = @_;
+ return 0 unless ($config{irc_quakenet_authusers});
+
+ if ($nick eq $config{irc_nick}) {
+ out irc => 0, "PRIVMSG Q :users $chan"; # get auths for all users
+ } else {
+ $store{quakenet_hosts}->{$nick} = $hostmask;
+ out irc => 0, "PRIVMSG Q :whois $nick"; # get auth for single user
+ }
+
+ return 0;
+ } ],
+
+ # Catch response of users request
+ [ irc => q{:Q!TheQBot at CServe.quakenet.org NOTICE [^:]+ :[@\+\s]?(\S+)\s+(\S+)\s*(\S*)\s*\((.*)\)} => sub {
+ my ($nick, $username, $flags, $host) = @_;
+ return 0 unless ($config{irc_quakenet_authusers});
+
+ $store{logins}{"$nick!$host"} = time() + 600 if ($store{quakenet_users}->{$username});
+
+ return 0;
+ } ],
+
+ # Catch response of whois request
+ [ irc => q{:Q!TheQBot at CServe.quakenet.org NOTICE [^:]+ :-Information for user (.*) \(using account (.*)\):} => sub {
+ my ($nick, $username) = @_;
+ return 0 unless ($config{irc_quakenet_authusers});
+
+ if ($store{quakenet_users}->{$username}) {
+ my $hostmask = $store{quakenet_hosts}->{$nick};
+ $store{logins}{$hostmask} = time() + 600;
+ }
+
+ return 0;
+ } ],
# shut down everything on SIGINT
[ system => q{quit (.*)} => sub {
@@ -1649,7 +1688,18 @@
}
+# If users for quakenet are listed, parse them into a hash and schedule a sub to query information
+if ($config{irc_quakenet_authusers} ne '') {
+ $store{quakenet_users} = { map { $_ => 1 } split ' ', $config{irc_quakenet_authusers} };
+
+ schedule sub {
+ my ($timer) = @_;
+ out irc => 0, "PRIVMSG Q :users " . $config{irc_channel};
+ schedule $timer => 300;;
+ } => 1;
+}
+
# verify that the server is up by letting it echo back a string that causes
# re-initialization of the required aliases
out dp => 0, 'echo "Unknown command \"rcon2irc_eval\""'; # assume the server has been restarted
More information about the nexuiz-commits
mailing list