rcon2irc plugins by merlijn
authorfruitiex <fruitiex@f962a42d-fe04-0410-a3ab-8c8b0445ebaa>
Tue, 15 Sep 2009 14:16:17 +0000 (14:16 +0000)
committerfruitiex <fruitiex@f962a42d-fe04-0410-a3ab-8c8b0445ebaa>
Tue, 15 Sep 2009 14:16:17 +0000 (14:16 +0000)
git-svn-id: svn://svn.icculus.org/nexuiz/trunk@7813 f962a42d-fe04-0410-a3ab-8c8b0445ebaa

server/rcon2irc/echo-rcon.pl [new file with mode: 0644]
server/rcon2irc/joinmessage.pl [new file with mode: 0644]
server/rcon2irc/raw.pl [new file with mode: 0644]
server/rcon2irc/suggestmap.pl

diff --git a/server/rcon2irc/echo-rcon.pl b/server/rcon2irc/echo-rcon.pl
new file mode 100644 (file)
index 0000000..4e05ecd
--- /dev/null
@@ -0,0 +1,12 @@
+# Nexuiz rcon2irc plugin by Merlijn Hofstra licensed under GPL - echo-rcon.pl
+# Place this file inside the same directory as rcon2irc.pl and add the full filename to the plugins.
+
+sub out($$@);
+
+[ dp => q{server received rcon command from (.*):  (.*)} => sub {
+       my ($origin, $cmd) = @_;
+       return 0 if ($origin eq $config{dp_listen}); #do not relay rcon2irc commands
+       my $origin = color_dp2irc $origin;
+       out irc => 0, "PRIVMSG $config{irc_channel} :\00302* admin\017 command recieved from $origin: \00304$cmd\017";
+       return 0;
+} ],
diff --git a/server/rcon2irc/joinmessage.pl b/server/rcon2irc/joinmessage.pl
new file mode 100644 (file)
index 0000000..980538a
--- /dev/null
@@ -0,0 +1,33 @@
+# Nexuiz rcon2irc plugin by Merlijn Hofstra licensed under GPL - joinmessage.pl
+# Place this file inside the same directory as rcon2irc.pl and add the full filename to the plugins.
+
+# Do not use more than 5 lines here, as they will be cut off by the client.
+my @jmtext = (
+       "Welcome to this Nexuiz server",
+       "Have fun but please behave.",
+);
+
+$store{plugin_joinmessage} = \@jmtext;
+
+sub out($$@);
+
+[ dp => q{:join:(\d+):(\d+):([^:]*):(.*)} => sub {
+       my ($id, $slot, $ip, $nick) = @_;
+       my $text = $store{plugin_joinmessage};
+
+       return 0 if ( $ip =~ m/^bot$/i );
+       return 0 if defined $store{"playerid_byslot_$slot"};
+
+       foreach ( @{ $text } ) {
+               out dp => 0, "tell #$slot " . $_;
+       }
+       return 0;
+} ],
+
+[ dp => q{:part:(\d+)} => sub {
+       my ($id) = @_;
+       my $slot = $store{"playerslot_byid_$id"};
+
+       $store{"playerid_byslot_$slot"} = undef;
+       return 0;
+} ],
diff --git a/server/rcon2irc/raw.pl b/server/rcon2irc/raw.pl
new file mode 100644 (file)
index 0000000..2e874f2
--- /dev/null
@@ -0,0 +1,26 @@
+# Nexuiz rcon2irc plugin by Merlijn Hofstra licensed under GPL - raw.pl
+# Place this file inside the same directory as rcon2irc.pl and add the full filename to the plugins.
+
+# Use this plugin with extreme caution, it allows irc-admins to modify ANYTHING on your server.
+
+# Usage: In query with the bot the raw command directs commands to the server or irc connection.
+# Example: raw dp exec server.cfg
+# Example: raw irc PRIVMSG #nexuiz: YaY!
+
+sub out($$@);
+
+[ irc => q{:(([^! ]*)![^ ]*) (?i:PRIVMSG) [^&#%]\S* :(.*)} => sub {
+       my ($hostmask, $nick, $command) = @_;
+       
+       return 0 if (($store{logins}{$hostmask} || 0) < time());
+       
+       if ($command =~ m/^raw (dp|irc) (.+)/i) {
+               out irc => 0, $2 if ($1 eq 'irc');
+               out dp => 0, $2 if ($1 eq 'dp');
+               
+               out irc => 0, "PRIVMSG $nick :command executed";
+               return -1;
+       }
+       
+       return 0;
+} ],
index 0acd66f..bf4834c 100644 (file)
@@ -6,8 +6,7 @@ sub out($$@);
 #read the suggest vote
 [ dp => q{:vote:suggested:(.+):(\d+)} => sub {
        my ($map, $id) = @_;
-       my $nick = color_dp2irc $store{"playernick_byid_$id"};
-       $nick ||= '(console)';
+       my $nick = $store{"playernick_byid_$id"} || 'console';
        out irc => 0, "PRIVMSG $config{irc_channel} :* map suggested: \00304$map\017 by $nick\017";
        return 0;
 } ],