[nexuiz-commits] r6462 - trunk/server/rcon2irc
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Thu Apr 9 03:52:50 EDT 2009
Author: div0
Date: 2009-04-09 03:52:43 -0400 (Thu, 09 Apr 2009)
New Revision: 6462
Modified:
trunk/server/rcon2irc/rcon2irc-example.conf
trunk/server/rcon2irc/rcon2irc.pl
Log:
secure auth now also in rcon2irc
Modified: trunk/server/rcon2irc/rcon2irc-example.conf
===================================================================
--- trunk/server/rcon2irc/rcon2irc-example.conf 2009-04-09 07:47:31 UTC (rev 6461)
+++ trunk/server/rcon2irc/rcon2irc-example.conf 2009-04-09 07:52:43 UTC (rev 6462)
@@ -26,13 +26,14 @@
#irc_trigger = nexnexnex
# Tuning
+#dp_secure = 1
#dp_server_from_wan =
-#dp_listen = 141.2.16.23:27771
+#dp_listen =
#dp_status_delay = 30
#irc_reconnect_delay = 300
#irc_admin_timeout = 3600
#irc_admin_quote_re =
-#irc_local = 141.2.16.23
+#irc_local =
#irc_ping_delay = 120
#irc_nickserv_identify = PRIVMSG NickServ :IDENTIFY %2$s
#irc_nickserv_ghost = PRIVMSG NickServ :GHOST %1$s %2$s
@@ -46,3 +47,6 @@
#irc_nickserv_identify = AUTHSERV AUTH myauthname %2$s
#irc_nickserv_ghost =
#irc_nickserv_ghost_attempts = 0
+
+# Example: connect to a non-secure DP server
+#dp_secure = 0
Modified: trunk/server/rcon2irc/rcon2irc.pl
===================================================================
--- trunk/server/rcon2irc/rcon2irc.pl 2009-04-09 07:47:31 UTC (rev 6461)
+++ trunk/server/rcon2irc/rcon2irc.pl 2009-04-09 07:52:43 UTC (rev 6462)
@@ -436,16 +436,19 @@
package Channel::QW;
use strict;
use warnings;
+use Digest::HMAC;
+use Digest::MD4;
# Constructor:
# my $chan = new Channel::QW($connection, "password");
-sub new($$)
+sub new($$$)
{
- my ($class, $conn, $password) = @_;
+ my ($class, $conn, $password, $secure) = @_;
my $you = {
connector => $conn,
password => $password,
recvbuf => "",
+ secure => $secure,
};
return
bless $you, 'Channel::QW';
@@ -461,7 +464,16 @@
sub send($$$)
{
my ($self, $line, $nothrottle) = @_;
- return $self->{connector}->send("\377\377\377\377rcon $self->{password} $line");
+ if($self->{secure})
+ {
+ my $t = sprintf "%ld", time();
+ my $key = Digest::HMAC::hmac("$t $line", $self->{password}, \&Digest::MD4::md4);
+ return $self->{connector}->send("\377\377\377\377srcon HMAC-MD4 TIME $key $t $line");
+ }
+ else
+ {
+ return $self->{connector}->send("\377\377\377\377rcon $self->{password} $line");
+ }
}
# Note: backslash and quotation mark escaping is a DarkPlaces extension.
@@ -653,6 +665,7 @@
irc_quakenet_challengeprefix => ':Q!TheQBot at CServe.quakenet.org NOTICE [^:]+ :CHALLENGE',
dp_server => undef,
+ dp_secure => 1,
dp_listen => "",
dp_password => undef,
dp_status_delay => 30,
@@ -740,7 +753,7 @@
# Create the two channels to gateway between...
$channels{irc} = new Channel::Line(new Connection::Socket(tcp => $config{irc_local} => $config{irc_server} => 6667));
-$channels{dp} = new Channel::QW(my $dpsock = new Connection::Socket(udp => $config{dp_listen} => $config{dp_server} => 26000), $config{dp_password});
+$channels{dp} = new Channel::QW(my $dpsock = new Connection::Socket(udp => $config{dp_listen} => $config{dp_server} => 26000), $config{dp_password}, $config{dp_secure});
$config{dp_listen} = $dpsock->sockname();
print "Listening on $config{dp_listen}\n";
More information about the nexuiz-commits
mailing list