#!/usr/bin/php5
<?php
date_default_timezone_set('Europe/Berlin');
$server = 'irc.myleap.de';
$port = 6667;
$nick = 'BubiBot';
$chan_list = array('#irc');
$commandprefix = ':';
$fp_connection = fsockopen($server, $port);
if(!$fp_connection)
{
die("Konnte nicht verbinden!\n");
}
$buffer = "";
sendline("NICK ".$nick."\r\n");
sendline("USER ".$nick." * * :bubis bot\r\n");
while(!feof($fp_connection))
{
$buffer .= str_replace("\r", "\n", fread($fp_connection, 4096));
$nlpos = strpos($buffer, "\n");
while($nlpos !== false)
{
$line = trim(substr($buffer, 0, $nlpos));
$buffer = substr($buffer, $nlpos+1);
if($line != '')
{
parse_line($line);
}
$nlpos = strpos($buffer, "\n");
}
}
function parse_line($line)
{
global $chan_list, $commandprefix;
if($line[0] == ':') $line = substr($line, 1);
if(param($line, 1) == 'PING')
{
sendline('PONG '.param($line,2,true));
return;
}
//nick, ident und host ermitteln
$nick = param($line, 1);
$ident = "";
$host = "";
$pos_a = strpos($nick, '!');
$pos_b = strpos($nick, '@');
if($pos_a !== false)
{
$ident = substr($nick, $pos_a+1);
$nick = substr($nick, 0, $pos_a);
$pos_b = strpos($ident, '@');
if($pos_b !== false)
{
$host = substr($ident, $pos_b+1);
$ident = substr($ident, 0, $pos_b);
}
}
elseif($pos_b !== false)
{
$host = substr($nick, $pos_b+1);
$nick = substr($nick, 0, $pos_b);
}
$command = strtoupper(param($line, 2));
if($command == '001')
{
//channel joinen
$tmp_chan_list = $chan_list;
while(count($tmp_chan_list) > 0)
{
$chans_per_join = 5;
$some_chans = array_slice($tmp_chan_list, 0, $chans_per_join);
$tmp_chan_list = array_slice($tmp_chan_list, $chans_per_join);
sendline('JOIN '.implode(',', $some_chans));
}
}
}
//some functions
function sendline($line)
{
global $fp_connection;
fwrite($fp_connection, $line."\r\n");
}
/* überprüft ob ein string valides utf-8 ist
function is_utf8($str)
{
if(preg_match(
'/^(([\x00-\x7F])|'.
'([\xC0-\xDF][\x80-\xBF])|'.
'([\xE0-\xEF][\x80-\xBF]{2})|'.
'([\xF0-\xF7][\x80-\xBF]{3}))*$/',
$str, $match))
{
return true;
}
return false;
}
*/
function param($line, $pos, $and_rest = false)
{
$line = trim($line);
while(strpos($line, " ") !== false)
{
$line = str_replace(" ", " ", $line);
}
$params = explode(" ", $line);
if(isset($params[$pos-1]))
{
if($and_rest)
{
return implode(" ", array_slice($params, $pos-1));
}
else
{
return $params[$pos-1];
}
}
else
{
return "";
}
}
?>