<?php
-/********************************* PHP-P10 ******************************
- * P10 uplink class by pk910 (c)2011 pk910 *
- ************************************************************************
- * Version 2 (OOP) *
+/******************************* PHP-P10 v2 *****************************
+ * Copyright (C) 2011-2012 Philipp Kreil (pk910) *
* *
- * PHP-P10 is free software; you can redistribute it and/or modify *
+ * This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
+ * the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
- * along with PHP-P10; if not, write to the Free Software Foundation, *
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
* *
************************************************************************
- *
+ *
* Bots/PHPGod.class.php
*
* simple PHP debugger...
class {$_NAME} extends Bot {
private $uplink;
private $php, $phpcache = array();
-
+
public function load($uplink, $old = false) {
$this->uplink = $uplink;
if(!$old) {
if(is_a($this->php, "P10_User")) {
$this->uplink->join($this->php, "#php", (P10_Channel::USERPRIV_OPED | P10_Channel::USERPRIV_VOICE));
$this->uplink->join($this->php, "#dev", P10_Channel::USERPRIV_VOICE);
+ $this->uplink->join($this->php, "#CoderCom", P10_Channel::USERPRIV_VOICE);
}
} else {
$this->php = $old;
}
-
+
ModCMD::bind($this, BIND_CHANMSG, "recive_privmsg");
ModCMD::bind($this, BIND_QUIT, "recive_quit");
}
-
+
public function unload($rehash = false) {
foreach($this->phpcache as $id => $php) {
fclose($php['pipes'][1]);
$this->uplink->delUser($this->php, "Bye.");
}
}
-
+
public function loop() {
foreach($this->phpcache as $id => $php) {
if(!$this->checkstate($php)) {
}
}
}
-
+
function recive_privmsg($user, $channel, $message) {
$opOnPHPChannel = false;
$PHPChannel = P10_Channel::getChannelByName("#PHP");
return;
}
$entry['time'] = time();
- fwrite($entry['pipes'][0], "<"."?php ".$exp[1]." ?".">");
+ 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 = $codecontent;
+ } else {
+ $code = "<"."?php " . $exp[1] . " ?".">";
+ };
+ fwrite($entry['pipes'][0], $code);
fclose($entry['pipes'][0]);
$this->phpcache[] = $entry;
break;
}
}
-
+
function recive_quit($user, $reason) {
if($user === $this->php) {
$this->load($this->uplink);
}
}
-
+
function checkstate($php) {
$data = proc_get_status($php['proc']);
if(!$data['running']) {
$i++;
if($i>1000) {
$this->uplink->privmsg($this->php, $php['channel'], "too many lines!");
- break;
+ break;
}
$this->uplink->privmsg($this->php, $php['channel'], $line);
}
$i=0;
foreach($lines as $line) {
$i++;
- if($i>1000) {
+ if($i>1000) {
$this->uplink->privmsg($this->php, $php['channel'], "too many lines!");
- break;
+ break;
}
$this->uplink->privmsg($this->php, $php['channel'], "\ 34".$line."\ 3");
}
} else {
proc_terminate($php['proc']);
$php['term']=true;
- $this->uplink->privmsg($this->php, $php['channel'], "php timeout. (maximum of 10 seconds exceeded) sending SIGTERM");
+ $this->uplink->privmsg($this->php, $php['channel'], "php timeout. (maximum of 10 seconds exceeded) sending SIGTERM");
return true;
}
}
}
}
-
+
}
?>
\ No newline at end of file