X-Git-Url: http://git.pk910.de/?p=PHP-P10.git;a=blobdiff_plain;f=Bots%2FCGod.class.php;h=f6f8d7156d1268e687c9db1101b239d7d4edb9d9;hp=db64989c70272f1385c5ce9eb85dd297bbd6da4f;hb=811bc0c7a1f583fb624a0f8c3601146e063c5a25;hpb=cb8ae96abd0d097059516dddda611a0725d4ea8d diff --git a/Bots/CGod.class.php b/Bots/CGod.class.php index db64989..f6f8d71 100644 --- a/Bots/CGod.class.php +++ b/Bots/CGod.class.php @@ -1,6 +1,6 @@ c, "P10_User")) { $this->uplink->join($this->c, "#c", (P10_Channel::USERPRIV_OPED | P10_Channel::USERPRIV_VOICE)); $this->uplink->join($this->c, "#dev", P10_Channel::USERPRIV_VOICE); + $this->uplink->join($this->c, "#CoderCom", P10_Channel::USERPRIV_VOICE); } } else { $this->c = $old; @@ -66,19 +67,21 @@ class {$_NAME} extends Bot { public function loop() { foreach($this->ccache as $id => $c) { if(!$this->checkstate($c)) { + unlink("tmp/debug_".$c['id'].".c"); + unlink("tmp/debug_".$c['id']); unset($this->ccache[$id]); } } } function recive_privmsg($user, $channel, $message) { - $opOnPHPChannel = false; - $PHPChannel = P10_Channel::getChannelByName("#PHP"); - if($PHPChannel) { - $privs = $PHPChannel->getUserPrivs($user); - $opOnPHPChannel = ($privs & P10_Channel::USERPRIV_OPED); + $opOnCChannel = false; + $CChannel = P10_Channel::getChannelByName("#C"); + if($CChannel) { + $privs = $CChannel->getUserPrivs($user); + $opOnCChannel = ($privs & P10_Channel::USERPRIV_OPED); } - if(!$user->getModes()->hasMode('o') && !$opOnPHPChannel) return 0; + if(!$user->getModes()->hasMode('o') && !$opOnCChannel) return 0; $exp=explode(" ", $message, 2); switch (strtolower($exp[0])) { case "~c": @@ -89,15 +92,30 @@ class {$_NAME} extends Bot { $entry=array(); $entry['channel'] = $channel; $entry['id'] = rand(1, 999999); + if(preg_match("#pastebin\.com/([a-zA-Z0-9]*)$#i", $exp[1])) { + $pasteid = explode("/", $exp[1]); + $pasteid = $pasteid[count($pasteid)-1]; + $codecontent = file_get_contents("http://pastebin.com/download.php?i=".$pasteid); + if(preg_match("#Unknown Paste ID!#i", $codecontent)) { + $this->uplink->notice($this->bot, $user, "Unknown Paste ID!"); + return; + } + $code = "#include \"includes.h\" + ".$codecontent; + } else { + $code = "#include \"includes.h\" + ".$exp[1]; + }; $fp = fopen("tmp/debug_".$entry['id'].".c", "w"); - fwrite($fp, "#include \"includes.h\"\n".$exp[1]); + fwrite($fp, $code); fclose($fp); - $err = shell_exec("gcc -o tmp/debug_".$entry['id']." tmp/debug_".$entry['id'].".c"); + $err = shell_exec("gcc -o tmp/debug_".$entry['id']." tmp/debug_".$entry['id'].".c 2>&1"); if($err) { $err=str_replace("\r","",$err); $lines=explode("\n",$err); $i=0; foreach($lines as $line) { + if($line == "") continue; $i++; if($i>100) { $this->uplink->privmsg($this->c, $entry['channel'], "too many lines!"); @@ -106,10 +124,12 @@ class {$_NAME} extends Bot { $this->uplink->privmsg($this->c, $entry['channel'], $line); } } - if(!file_exists("tmp/debug_".$entry['id'])) + if(!file_exists("tmp/debug_".$entry['id'])) { + unlink("tmp/debug_".$entry['id'].".c"); break; + } $descriptor = array(0 => array("pipe", "r"),1 => array("pipe", "w"),2 => array("pipe", "w")); - $entry['proc'] = proc_open('./debug_'.$entry['id'], $descriptor, $entry['pipes']); + $entry['proc'] = proc_open('tmp/debug_'.$entry['id'], $descriptor, $entry['pipes']); if(!is_resource($entry['proc'])) { $this->uplink->notice($this->c, $user, "error while loading c!"); return; @@ -143,6 +163,7 @@ class {$_NAME} extends Bot { $lines=explode("\n",$out); $i=0; foreach($lines as $line) { + if($line == "") continue; $i++; if($i>1000) { $this->uplink->privmsg($this->c, $c['channel'], "too many lines!"); @@ -156,6 +177,7 @@ class {$_NAME} extends Bot { $lines=explode("\n",$eout); $i=0; foreach($lines as $line) { + if($line == "") continue; $i++; if($i>1000) { $this->uplink->privmsg($this->c, $c['channel'], "too many lines!");