mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-22 20:41:25 +00:00
739 lines
23 KiB
PHP
739 lines
23 KiB
PHP
<?php
|
|
/* Based on parts of Example.php from SmartIRC
|
|
* Example.php Copyright (c) 2002-2003 Mirco "MEEBEY" Bauer <mail@meebey.net> <http://www.meebey.net>
|
|
* SRB2MS.php Copyright (c) 2004 by Logan Arias of Sonic Team JR.
|
|
*
|
|
* the Rest is Copyright (c) 2004 Logan Arias <Logan.GBA@gmail.net>
|
|
* This is LGPL! that means you can change and use as you like
|
|
*
|
|
* Full LGPL License: <http://www.meebey.net/lgpl.txt>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
include_once('./SmartIRC.php');
|
|
define('MAGPIE_DIR', './magpierss/');
|
|
// define('MAGPIE_CACHE_AGE', 30); // half-min
|
|
require_once(MAGPIE_DIR.'rss_fetch.inc');
|
|
require_once(MAGPIE_DIR.'rss_utils.inc');
|
|
$today = getdate();
|
|
$lastupdatetime = mktime($today['hours'],$today['minutes']-6,0,$today['mon'], $today['mday'], $today['year']);
|
|
$lastlisttime = mktime($today['hours'],$today['minutes']-1,0,$today['mon'], $today['mday'], $today['year']);
|
|
|
|
class SRB2MS_BOT
|
|
{
|
|
|
|
function ListUsersPM(&$irc, &$data)
|
|
{
|
|
global $rssdatabase;
|
|
if ($rssdatabase->users[0])
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, 'List of RSS users');
|
|
foreach ($rssdatabase->users as $users)
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, "$users");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, 'there are no RSS users');
|
|
}
|
|
}
|
|
|
|
function RSSupdateuser(&$irc, &$data)
|
|
{
|
|
global $rssdatabase;
|
|
if ($rssdatabase->OnList("$data->nick"))
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->message, "I am trying to update $data->nick to $data->message from the list");
|
|
if ($rssdatabase->ReplaceUser("$data->nick","$data->message"))
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->message, "I have changed $data->nick to $data->message on the list");
|
|
}
|
|
else
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->message, "$data->nick was not on the list");
|
|
}
|
|
}
|
|
}
|
|
|
|
function RSScheckuser(&$irc, &$data)
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, "I going to check if you are on the list");
|
|
global $rssdatabase;
|
|
if ($rssdatabase->OnList("$data->nick"))
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, "you are on the list");
|
|
}
|
|
else
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, "you are not on the list");
|
|
}
|
|
}
|
|
|
|
function RSSremoveuser(&$irc, &$data)
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, "I am trying to remove $data->nick from the list");
|
|
global $rssdatabase;
|
|
if ($rssdatabase->DeleteUser("$data->nick"))
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, "I have removed $data->nick from the list");
|
|
}
|
|
else
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, "$data->nick is not on the list");
|
|
}
|
|
}
|
|
|
|
function RSSadduser(&$irc, &$data)
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, "I am trying to add you $data->nick to the list");
|
|
global $rssdatabase;
|
|
if ($rssdatabase->AddUser("$data->nick"))
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, "I have added $data->nick to the list");
|
|
}
|
|
else
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, "$data->nick is already on the list");
|
|
}
|
|
}
|
|
/*
|
|
function RSSListGamesPM(&$irc, &$data)
|
|
{
|
|
$content = $this->GenFeed();
|
|
$SRB2MSRSS10 = new MagpieRSS( $content );
|
|
if ($SRB2MSRSS10)
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, 'Running SRB2 netgames ');
|
|
foreach ($SRB2MSRSS10->items as $item)
|
|
{
|
|
$description = $item['dc']['description'];
|
|
$title = $item['title'];
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, "Name: $title $description");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, '.magpie_error()');
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, 'The SRB2 MasterServer RSS feed is not up');
|
|
}
|
|
}
|
|
*/
|
|
function RSSListUpdate(&$irc)
|
|
{
|
|
global $lastupdatetime;
|
|
global $SRB2MS_mute;
|
|
if ($SRB2MS_mute)
|
|
{
|
|
return;
|
|
}
|
|
$RSS10content = $this->GenFeed();
|
|
$SRB2MSRSS10 = new MagpieRSS( $RSS10content );
|
|
if ($SRB2MSRSS10)
|
|
{
|
|
//$irc->message(SMARTIRC_TYPE_CHANNEL, '#srb2fun', 'Running SRB2 netgames ');
|
|
foreach ($SRB2MSRSS10->items as $item)
|
|
{
|
|
if ( $item['title'] == "No servers" )
|
|
{
|
|
// NOP
|
|
}
|
|
elseif ( $item['title'] == "No master server" )
|
|
{
|
|
// NOP
|
|
}
|
|
else
|
|
{
|
|
$published = parse_w3cdtf($item['dc']['date']);
|
|
if ( $published >= $lastupdatetime )
|
|
{
|
|
$title = $item['title'];
|
|
$serveraddress = $item['srb2ms']['address'];
|
|
$serverport = $item['srb2ms']['port'];
|
|
$serverversion = $item['srb2ms']['version'];
|
|
//if ( $serverversion == "1.09.3" )
|
|
//{
|
|
// $irc->message(SMARTIRC_TYPE_CHANNEL, '#srb2fun' , "New Server, $serveraddress:$serverport Name: $title");
|
|
//}
|
|
//else
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_CHANNEL, '#srb2fun' , "New Server, $serveraddress:$serverport Name: $title Version: $serverversion");
|
|
}
|
|
//$irc->message(SMARTIRC_TYPE_CHANNEL, '#srb2general', "New Server, Name: $title $description");
|
|
}
|
|
else
|
|
{
|
|
// NOP
|
|
}
|
|
}
|
|
|
|
}
|
|
$today = getdate();
|
|
// update time
|
|
$lastupdatetime = mktime($today['hours'],$today['minutes'],0,$today['mon'], $today['mday'], $today['year']);
|
|
}
|
|
else
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_CHANNEL, '#srb2fun', '.magpie_error()');
|
|
$irc->message(SMARTIRC_TYPE_CHANNEL, '#srb2fun', 'The SRB2 MasterServer RSS feed is not up');
|
|
}
|
|
}
|
|
|
|
function Mute(&$irc, &$data)
|
|
{
|
|
foreach ($irc->channel['#srb2fun']->ops as $nick => $key )
|
|
{
|
|
if ($data->nick == $nick || $data->nick == 'Logan_GBA')
|
|
{
|
|
global $lastupdatetime;
|
|
$today = getdate();
|
|
// update time
|
|
$lastupdatetime = mktime($today['hours'],$today['minutes'],0,$today['mon'], $today['mday'], $today['year']);
|
|
$GLOBALS['SRB2MS_mute'] = TRUE;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
function Unmute(&$irc, &$data)
|
|
{
|
|
foreach ($irc->channel['#srb2fun']->ops as $nick => $key )
|
|
{
|
|
if ($data->nick == $nick || $data->nick == 'Logan_GBA')
|
|
{
|
|
$GLOBALS['SRB2MS_mute'] = FALSE;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
function Mute2(&$irc, &$data)
|
|
{
|
|
if ($data->nick == 'Logan_GBA')
|
|
{
|
|
global $lastupdatetime;
|
|
$today = getdate();
|
|
// update time
|
|
$lastupdatetime = mktime($today['hours'],$today['minutes'],0,$today['mon'], $today['mday'], $today['year']);
|
|
$GLOBALS['SRB2MS_mute'] = TRUE;
|
|
}
|
|
}
|
|
|
|
function Unmute2(&$irc, &$data)
|
|
{
|
|
if ($data->nick == 'Logan_GBA')
|
|
{
|
|
$GLOBALS['SRB2MS_mute'] = FALSE;
|
|
}
|
|
}
|
|
|
|
function RSSListGames(&$irc, &$data)
|
|
{
|
|
global $lastlisttime;
|
|
$content = $this->GenFeed();
|
|
$today = getdate();
|
|
//$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, 'testing feed');
|
|
//$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, "$content");
|
|
//$content1 = $this->Gettextfromserver();
|
|
//$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, "$content1");
|
|
$SRB2MSRSS10 = new MagpieRSS( $content );
|
|
if ($SRB2MSRSS10)
|
|
{
|
|
if ((mktime($today['hours'],$today['minutes']-2,0,$today['mon'], $today['mday'], $today['year'])) >= $lastlisttime)
|
|
{
|
|
//$irc->message(SMARTIRC_TYPE_CHANNEL, '#srb2fun', 'Running SRB2 netgames ');
|
|
foreach ($SRB2MSRSS10->items as $item)
|
|
{
|
|
if ( $item['title'] == "No servers" )
|
|
{
|
|
//0$description = $item['dc']['description'];
|
|
$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, "No SRB2 Games are running, so why don't you start one?");
|
|
}
|
|
elseif ( $item['title'] == "No master server" )
|
|
{
|
|
$description = $item['dc']['description'];
|
|
$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, "$description");
|
|
}
|
|
else
|
|
{
|
|
$title = $item['title'];
|
|
$serveraddress = $item['srb2ms']['address'];
|
|
$serverport = $item['srb2ms']['port'];
|
|
$serverversion = $item['srb2ms']['version'];
|
|
//if ( $serverport == " 5029" )
|
|
//{
|
|
// $serverport = "5029";
|
|
//}
|
|
//if ( $serverversion == "1.09.3" )
|
|
//{
|
|
// $irc->message(SMARTIRC_TYPE_CHANNEL, '#srb2fun' , "$serveraddress:$serverport Name: $title");
|
|
//}
|
|
//else
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_CHANNEL, '#srb2fun' , "$serveraddress:$serverport Name: $title Version: $serverversion");
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
$today = getdate();
|
|
$lastlisttime = mktime($today['hours'],$today['minutes'],0,$today['mon'], $today['mday'], $today['year']);
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, ".magpie_error()");
|
|
$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, 'The SRB2 MasterServer RSS feed is not up');
|
|
}
|
|
}
|
|
|
|
function RSSListGamesPM(&$irc, &$data)
|
|
{
|
|
global $lastlisttime;
|
|
$content = $this->GenFeed();
|
|
$today = getdate();
|
|
//$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, 'testing feed');
|
|
//$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, "$content");
|
|
//$content1 = $this->Gettextfromserver();
|
|
//$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, "$content1");
|
|
$SRB2MSRSS10 = new MagpieRSS( $content );
|
|
if ($SRB2MSRSS10)
|
|
{
|
|
//if ((mktime($today['hours'],$today['minutes']-2,0,$today['mon'], $today['mday'], $today['year'])) >= $lastlisttime)
|
|
{
|
|
//$irc->message(SMARTIRC_TYPE_CHANNEL, '#srb2fun', 'Running SRB2 netgames ');
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, "Running SRB2 netgames from http://srb2.servegame.org/");
|
|
foreach ($SRB2MSRSS10->items as $item)
|
|
{
|
|
if ( $item['title'] == "No servers" )
|
|
{
|
|
//0$description = $item['dc']['description'];
|
|
//$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, "No SRB2 Games are running, so why don't you start one?");
|
|
}
|
|
elseif ( $item['title'] == "No master server" )
|
|
{
|
|
$description = $item['dc']['description'];
|
|
//$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, "$description");
|
|
}
|
|
else
|
|
{
|
|
$title = $item['title'];
|
|
$serveraddress = $item['srb2ms']['address'];
|
|
$serverport = $item['srb2ms']['port'];
|
|
$serverversion = $item['srb2ms']['version'];
|
|
//if ( $serverport == " 5029" )
|
|
//{
|
|
// $serverport = "5029";
|
|
//}
|
|
//if ( $serverversion == "1.09.3" )
|
|
//{
|
|
// $irc->message(SMARTIRC_TYPE_CHANNEL, '#srb2fun' , "$serveraddress:$serverport Name: $title");
|
|
//}
|
|
//else
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, "$serveraddress:$serverport Name: $title Version: $serverversion");
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
$today = getdate();
|
|
$lastlisttime = mktime($today['hours'],$today['minutes'],0,$today['mon'], $today['mday'], $today['year']);
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
//$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, ".magpie_error()");
|
|
//$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, 'The SRB2 MasterServer RSS feed is not up');
|
|
}
|
|
}
|
|
|
|
function ListGamesPM(&$irc, &$data)
|
|
{
|
|
$fd = fsockopen("srb2.servegame.org", 28900, $errno, $errstr, 5);
|
|
if ($fd)
|
|
{
|
|
$buff = "000012360000";
|
|
fwrite($fd, $buff);
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, 'Running SRB2 netgames ');
|
|
while (1)
|
|
{
|
|
$content=fgets($fd, 13); // skip 13 first bytes
|
|
$content=fgets($fd, 1024);
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, "$content");
|
|
//echo "$content";
|
|
if (feof($fd)) break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_NOTICE, $data->nick, 'The SRB2 MasterServer is not up');
|
|
}
|
|
}
|
|
|
|
function ListGamesChan(&$irc, &$data)
|
|
{
|
|
global $lastlisttime;
|
|
$today = getdate();
|
|
$fd = fsockopen("srb2.servegame.org", 28900, $errno, $errstr, 5);
|
|
if ($fd)
|
|
{
|
|
stream_set_timeout ($fd, 5);
|
|
$buff = "000012360000";
|
|
fwrite($fd, $buff);
|
|
if ( (mktime($today['hours'],$today['minutes']-5,0,$today['mon'], $today['mday'], $today['year'])) >= $lastlisttime )
|
|
{
|
|
$content = "";
|
|
while (1)
|
|
{
|
|
fgets($fd, 13); // skip 13 first bytes
|
|
$content = fgets($fd, 1024);
|
|
$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, "$content");
|
|
$today = getdate();
|
|
$lastlisttime = mktime($today['hours'],$today['minutes'],0,$today['mon'], $today['mday'], $today['year']);
|
|
if (feof($fd)) break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, 'The SRB2 MasterServer is not up');
|
|
}
|
|
}
|
|
|
|
function byebye(&$irc, &$data)
|
|
{
|
|
foreach ($irc->channel['#srb2fun']->ops as $quitnick => $key )
|
|
{
|
|
if ($data->nick == $quitnick)
|
|
{
|
|
$irc->setAutoReconnect(FALSE);
|
|
$irc->setAutoRetry(FALSE);
|
|
$irc->quit('This quit was done by' + "$data->nick");
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
function BeenInvited(&$irc, &$data)
|
|
{
|
|
if ($data->message == '#srb2fun')
|
|
$irc->join($data->message);
|
|
|
|
foreach ($irc->channel['#srb2fun']->ops as $invitenick => $key )
|
|
{
|
|
if ($data->nick == $invitenick)
|
|
{
|
|
$irc->join($data->message);
|
|
return;
|
|
}
|
|
}
|
|
foreach ($irc->channel['#srb2fun']->users as $nick => $key )
|
|
{
|
|
if ($data->nick == $nick)
|
|
{
|
|
$irc->kick('#srb2fun', $data->nick, "Sorry, but I don't like you, or your channel, $data->message");
|
|
return;
|
|
}
|
|
}
|
|
//$irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "Sorry, but I don't like you, or your channel, $data->message");
|
|
}
|
|
|
|
function Talk(&$irc, &$data)
|
|
{
|
|
foreach ($irc->channel['#srb2fun']->ops as $nick => $key)
|
|
{
|
|
if ($data->nick == $nick)
|
|
{
|
|
$msg = str_replace("!talk ", '', "$data->message");
|
|
$irc->message(SMARTIRC_TYPE_CHANNEL, '#srb2fun', $msg);
|
|
return;
|
|
}
|
|
}
|
|
foreach ($irc->channel['#srb2fun']->users as $nick => $key)
|
|
{
|
|
if ($data->nick == $nick)
|
|
{
|
|
$irc->kick('#srb2fun', $data->nick, 'Stop talking to me!');
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
function Action(&$irc, &$data)
|
|
{
|
|
foreach ($irc->channel['#srb2fun']->ops as $nick => $key)
|
|
{
|
|
if ($data->nick == $nick)
|
|
{
|
|
$msg = str_replace("!action ", '', "$data->message");
|
|
$irc->message(SMARTIRC_TYPE_ACTION, '#srb2fun', $msg);
|
|
return;
|
|
}
|
|
}
|
|
foreach ($irc->channel['#srb2fun']->users as $nick => $key)
|
|
{
|
|
if ($data->nick == $nick)
|
|
{
|
|
$irc->kick('#srb2fun', $data->nick, 'Stop talking to me!');
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
function Kick(&$irc, &$data)
|
|
{
|
|
foreach ($irc->channel['#srb2fun']->ops as $nick => $key)
|
|
{
|
|
if ($data->nick == $nick)
|
|
{
|
|
$msg = str_replace("!kick ", '', "$data->message");
|
|
$irc->kick('#srb2fun', $msg);
|
|
return;
|
|
}
|
|
}
|
|
foreach ($irc->channel['#srb2fun']->users as $nick => $key)
|
|
{
|
|
if ($data->nick == $nick)
|
|
{
|
|
$irc->kick('#srb2fun', $data->nick, 'Stop talking to me!');
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
function DebugPM(&$irc, &$data)
|
|
{
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "from:");
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "$data->from");
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "nick:");
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "$data->nick");
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "ident:");
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "$data->ident");
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "host:");
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "$data->host");
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "channel:");
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "$data->channel");
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "message:");
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "$data->message");
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "type:");
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "$data->type");
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "rawmessage:");
|
|
// $irc->message(SMARTIRC_TYPE_QUERY, $data->nick, "$data->rawmessage");
|
|
|
|
$irc->message(SMARTIRC_TYPE_QUERY, "Alam_GBC", "from: $data->from");
|
|
$irc->message(SMARTIRC_TYPE_QUERY, "Alam_GBC", "nick: $data->nick");
|
|
$irc->message(SMARTIRC_TYPE_QUERY, "Alam_GBC", "ident: $data->ident");
|
|
$irc->message(SMARTIRC_TYPE_QUERY, "Alam_GBC", "host: $data->host");
|
|
$irc->message(SMARTIRC_TYPE_QUERY, "Alam_GBC", "channel: $data->channel");
|
|
$irc->message(SMARTIRC_TYPE_QUERY, "Alam_GBC", "message: $data->message");
|
|
$irc->message(SMARTIRC_TYPE_QUERY, "Alam_GBC", "type: $data->type");
|
|
$irc->message(SMARTIRC_TYPE_QUERY, "Alam_GBC", "rawmessage: $data->rawmessage");
|
|
}
|
|
|
|
function GetRSS10datafromserver()
|
|
{
|
|
$content = "";
|
|
$fd = fsockopen("srb2.servegame.org", 28900, $errno, $errstr, 5);
|
|
if ($fd)
|
|
{
|
|
$buff = "000012400000";
|
|
fwrite($fd, $buff);
|
|
while (1)
|
|
{
|
|
fgets($fd, 13); // skip 13 first bytes
|
|
$content .= fgets($fd, 1024);
|
|
if (feof($fd)) break;
|
|
}
|
|
fclose($fd);
|
|
}
|
|
else
|
|
{
|
|
$content = '<items>';
|
|
$content .= '<rdf:Seq>';
|
|
$content .= '<rdf:li rdf:resource="http://srb2.servegame.org/" />';
|
|
$content .= '</rdf:Seq>';
|
|
$content .= '</items>';
|
|
$content .= '</channel>';
|
|
$content .= "\n";
|
|
$content .= '<item rdf:about="http://srb2.servegame.org/"> ';
|
|
$content .= '<title>No master server</title><dc:description>The master server is not running</dc:description></item>';
|
|
}
|
|
return "$content";
|
|
}
|
|
|
|
function GenFeed()
|
|
{
|
|
$content = '<?xml version="1.0" encoding="ISO-8859-1"?>';
|
|
$content .= "\n";
|
|
$content .= '<rdf:RDF';
|
|
$content .= ' xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"';
|
|
$content .= "\n";
|
|
$content .= ' xmlns="http://purl.org/rss/1.0/"';
|
|
$content .= "\n";
|
|
$content .= ' xmlns:dc="http://purl.org/dc/elements/1.1/"';
|
|
$content .= "\n";
|
|
$content .= ' xmlns:srb2ms="http://srb2.servegame.org/SRB2MS/elements/"';
|
|
$content .= "\n";
|
|
$content .= '>';
|
|
$content .= "\n";
|
|
$content .= "\n";
|
|
$content .= ' <channel rdf:about="http://srb2.servegame.org/srb2ms_status.php">';
|
|
$content .= "\n";
|
|
$content .= ' <title>SRB2 Master Server RSS Feed</title>';
|
|
$content .= "\n";
|
|
$content .= ' <link>http://srb2.servegame.org/srb2ms_status.php</link>';
|
|
$content .= "\n";
|
|
$content .= ' <description>Playing around with RSS</description>';
|
|
$content .= "\n";
|
|
$content .= ' <language>en-us</language>';
|
|
$content .= "\n";
|
|
$feed = $this->GetRSS10datafromserver();
|
|
$content .= "$feed";
|
|
$content .= '</rdf:RDF>';
|
|
return $content;
|
|
}
|
|
}
|
|
|
|
class RSSDataBase_Class
|
|
{
|
|
var $users = array();
|
|
|
|
function OnList($User)
|
|
{
|
|
$userbeenfound = FALSE;
|
|
foreach ($this->users as $Userlist)
|
|
{
|
|
if ($Userlist == $User) {
|
|
$userbeenfound = TRUE; }
|
|
}
|
|
return $userbeenfound;
|
|
}
|
|
|
|
function AddUser($User)
|
|
{
|
|
$userbeenfound = FALSE;
|
|
foreach ($this->users as $Userlist)
|
|
{
|
|
if ($Userlist == $User) {
|
|
$userbeenfound = TRUE; }
|
|
}
|
|
if (!$userbeenfound) {
|
|
$this->users[] = $User;
|
|
}
|
|
return !$userbeenfound;
|
|
}
|
|
|
|
function DeleteUser($User)
|
|
{
|
|
$userbeenfound = FALSE;
|
|
foreach ($this->users as $index => $Userlist)
|
|
{
|
|
if ($Userlist == $User)
|
|
{
|
|
$userbeenfound = TRUE;
|
|
$id = $index;
|
|
}
|
|
}
|
|
if ($userbeenfound)
|
|
{
|
|
unset($this->users[$id]);
|
|
$this->users = array_values($this->users);
|
|
}
|
|
return $userbeenfound;
|
|
}
|
|
function ReplaceUser($oldUser,$newUser)
|
|
{
|
|
$userbeenfound = FALSE;
|
|
foreach ($this->users as $index => $Userlist)
|
|
{
|
|
if ($Userlist == $oldUser)
|
|
{
|
|
$userbeenfound = TRUE;
|
|
$id = $index;
|
|
}
|
|
}
|
|
if ($userbeenfound)
|
|
{
|
|
$this->users[$id] = $newUser;
|
|
}
|
|
return $userbeenfound;
|
|
}
|
|
}
|
|
// gobal var for muting the Bot
|
|
$SRB2MS_mute = FALSE;
|
|
//$SRB2MSRSS10 = fetch_rss( 'http://srb2.servegame.org/RSS1.0.php' );
|
|
// thing to hold RSS stuff
|
|
$rssdatabase = &new RSSDataBase_Class();
|
|
// PHP error reporting
|
|
//error_reporting(E_ERROR);
|
|
// the Bot is the Class SRB2MS_BOT
|
|
$bot = &new SRB2MS_BOT();
|
|
// Create SmartIRC, and name it as <network>irc for use to, well, do irc stuff ^_^
|
|
$esperirc = &new Net_SmartIRC();
|
|
// To Debug or Not
|
|
//$esperirc->setDebug(SMARTIRC_DEBUG_ALL);
|
|
// Do connect to the Internet
|
|
$esperirc->setUseSockets(TRUE);
|
|
// kep a list of all the users in the channel
|
|
$esperirc->setChannelSyncing(TRUE);
|
|
// Register the triggers with the class of SRB2MS_BOT
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_CHANNEL, '^!gamelist$', $bot, 'ListGamesChan');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_QUERY, '^!gamelist$', $bot, 'ListGamesPM');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_QUERY, '^!RSSgamelist$', $bot, 'RSSListGamesPM');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_CHANNEL, '^!gamelist0$', $bot, 'RSSListGames');
|
|
$esperirc->registerActionhandler(SMARTIRC_TYPE_CHANNEL, '^!gamelist$', $bot, 'RSSListGamesPM');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_QUERY, '^!gamelist$', $bot, 'RSSListGamesPM');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_CHANNEL, '^!addme$', $bot, 'RSSadduser');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_CHANNEL, '^!removeme$', $bot, 'RSSremoveuser');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_CHANNEL, '^!listusers$', $bot, 'ListUsersPM');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_NICKCHANGE, '', $bot, 'RSSupdateuser');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_CHANNEL, '^!checkme$', $bot, 'RSScheckuser');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_CHANNEL, '^!shutdown$', $bot, 'byebye');
|
|
$esperirc->registerActionhandler(SMARTIRC_TYPE_CHANNEL, '^!mute$', $bot, 'Mute');
|
|
$esperirc->registerActionhandler(SMARTIRC_TYPE_CHANNEL, '^!unmute$', $bot, 'Unmute');
|
|
$esperirc->registerActionhandler(SMARTIRC_TYPE_CHANNEL, '^!shutup$', $bot, 'Mute2');
|
|
$esperirc->registerActionhandler(SMARTIRC_TYPE_CHANNEL, '^!talktome$', $bot, 'Unmute2');
|
|
$esperirc->registerTimehandler(120000, $bot, 'RSSListUpdate');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_CHANNEL, '^!gamelist$', $bot, 'ListGamesChan');
|
|
$esperirc->registerActionhandler(SMARTIRC_TYPE_INVITE, '', $bot, 'BeenInvited');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_QUERY, '^!talk', $bot, 'Talk');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_QUERY, '^!action', $bot, 'Action');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_QUERY, '^!kick', $bot, 'Kick');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_QUERY, '^!ban', $bot, 'Ban');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_ALL, '', $bot, 'DebugPM');
|
|
//$esperirc->registerActionhandler(SMARTIRC_TYPE_KICK | SMARTIRC_TYPE_QUIT | SMARTIRC_TYPE_PART, '', $bot, 'DebugPM');
|
|
// If you fail once, try agian
|
|
$esperirc->setAutoRetry(TRUE);
|
|
// Connect to EsperNet
|
|
//$esperirc->connect('irc.esper.net', 6667);
|
|
$esperirc->connect('excalibur.esper.net', 6667);
|
|
// Reconnect as needed
|
|
$esperirc->setAutoReconnect(TRUE);
|
|
// Use the name SRB2MS, and set other stuff
|
|
$esperirc->login('SRB2MS', 'Net_SmartIRC Client '.SMARTIRC_VERSION.' (SRB2MS_Bot.php)', 0, 'Net_SmartIRC');
|
|
// Join #srb2fun
|
|
$esperirc->join(array('#srb2fun'));
|
|
// SRB2MS_Pass.php have "$esperirc->message(SMARTIRC_TYPE_QUERY, 'nickserv', 'identify <password>');"
|
|
include('./SRB2MS_Pass.php');
|
|
// Idle
|
|
$esperirc->listen();
|
|
// Rejoin?
|
|
$esperirc->reconnect();
|
|
|
|
?>
|