<?php
-/********************************* PHP-P10 ******************************
- * P10 uplink class by pk910 (c)2011 pk910 *
- ************************************************************************
- * Version 2 (OOP) *
+/******************************* PHP-P10 v2 *****************************
+ * Copyright (C) 2011 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, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* 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/>. *
* *
************************************************************************
*
class {$_NAME} extends Bot {
private $uplink;
- private $php, $phpcache;
+ private $php, $phpcache = array();
public function load($uplink, $old = false) {
$this->uplink = $uplink;
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;
}
public function unload($rehash = false) {
- foreach($this->phpcache as $id => &$php) {
+ foreach($this->phpcache as $id => $php) {
fclose($php['pipes'][1]);
fclose($php['pipes'][2]);
proc_terminate($php['proc'],9);
}
public function loop() {
- foreach($this->phpcache as $id => &$php) {
- if(!$this->checkstate(&$php)) {
+ foreach($this->phpcache as $id => $php) {
+ if(!$this->checkstate($php)) {
unset($this->phpcache[$id]);
}
}
$opOnPHPChannel = ($privs & P10_Channel::USERPRIV_OPED);
}
if(!$user->getModes()->hasMode('o') && !$opOnPHPChannel) return 0;
- $exp=explode(" ",$message);
+ $exp=explode(" ", $message, 2);
switch (strtolower($exp[0])) {
case "~php":
if(count($this->phpcache) > 5) {
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->modman) {
+ if($user === $this->php) {
$this->load($this->uplink);
}
}