X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=zncadmin%2FZNCServer.class.php;h=bc5093b9ad9fd76ab40460ff15eb9f37d839cab3;hb=1010de69b902158e5a75112d6b78c7b80a5b44d3;hp=d001947fcf7c2f67f9a088919c805c99c870846a;hpb=91a6363f09693f044b82ba7b7b3bf90f7380da50;p=ZNCAdmin.git diff --git a/zncadmin/ZNCServer.class.php b/zncadmin/ZNCServer.class.php index d001947..bc5093b 100644 --- a/zncadmin/ZNCServer.class.php +++ b/zncadmin/ZNCServer.class.php @@ -45,7 +45,7 @@ class ZNCServer { } public function getUserList() { - $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/webadmin/listusers"); + $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/global/webadmin/listusers"); $exp = explode('
', $html); $exp = explode('
', $exp[1]); $exp = explode('', $exp[0]); @@ -58,18 +58,16 @@ class ZNCServer { $exp2 = explode('', $exp[2]); $userdata['user'] = $exp2[0]; $exp2 = explode('', $exp[3]); - $userdata['clients'] = $exp2[0]; - $exp2 = explode('', $exp[4]); $userdata['server'] = $exp2[0]; - $exp2 = explode('', $exp[5]); - $userdata['nick'] = $exp2[0]; + $exp2 = explode('', $exp[4]); + $userdata['clients'] = $exp2[0]; $userlist[] = $userdata; } return $userlist; } public function getSeenList() { - $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/lastseen/"); + $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/global/lastseen/"); $exp = explode('
', $html); $exp = explode('
', $exp[1]); $exp = explode('', $exp[0]); @@ -99,14 +97,14 @@ class ZNCServer { ident */ public function addZNC($username, $password, $settings, $servers, $modules, $others) { - $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/webadmin/adduser"); + $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/global/webadmin/adduser"); $exp = explode('name="_CSRF_Check" value="', $html); $exp = explode('"', $exp[1]); $csrf = $exp[0]; $post = array(); $post['_CSRF_Check'] = $csrf; $post['submitted'] = '1'; - $post['doconnect'] = '1'; + //$post['doconnect'] = '1'; $post['user'] = $username; $post['password'] = $password; $post['password2'] = $password; @@ -114,22 +112,60 @@ class ZNCServer { $post['altnick'] = $settings['altnick']; $post['ident'] = $settings['ident']; $post['statusprefix'] = '*'; - $post['servers'] = implode("\n", $servers); $post['loadmod'] = array(); foreach($modules as $name => $args) { $post['loadmod'][] = $name; if($args != "") $post['modargs_'.$name] = $args; } + + foreach($others as $name => $value) { + $post[$name] = $value; + } + + $html = $this->connector->post("http://".$this->host.":".$this->port."/mods/global/webadmin/adduser", $post); + + if(!preg_match("/Invalid Submission/i", $html)) { + if(!$this->addNetwork($username, $settings, $servers, $other)) { + $handle = fopen('/home/srvx/neonserv/log.txt', 'a'); + fwrite($handle, "addZNC3\r\n"); + fclose($handle); + return false; + } + return !preg_match("/Invalid Submission/i", $html); + } + return !preg_match("/Invalid Submission/i", $html); + } + + public function addNetwork($username, $settings, $servers, $other) { + $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/global/webadmin/addnetwork?user=".$username); + $exp = explode('name="_CSRF_Check" value="', $html); + $exp = explode('"', $exp[1]); + $csrf = $exp[0]; + $post = array(); + $post['_CSRF_Check'] = $csrf; + $post['submitted'] = '1'; + $post['network'] = 'default'; + $post['nick'] = $settings['nick']; + $post['altnick'] = $settings['altnick']; + $post['ident'] = $settings['ident']; + $post['servers'] = implode("\n", $servers); + $post['doconnect'] = '1'; + $post['floodprotection'] = '1'; + $post['floodrate'] = '1.0'; + $post['floodburst'] = '4'; + $post['user'] = $username; + foreach($others as $name => $value) { $post[$name] = $value; } - $html = $this->connector->post("http://".$this->host.":".$this->port."/mods/webadmin/adduser", $post); + + $html = $this->connector->post("http://".$this->host.":".$this->port."/mods/global/webadmin/addnetwork", $post); return !preg_match("/Invalid Submission/i", $html); } public function delZNC($username) { - $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/webadmin/deluser?user=".$username); + $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/global/webadmin/deluser?user=".$username); $exp = explode('name="_CSRF_Check" value="', $html); $exp = explode('"', $exp[1]); $csrf = $exp[0]; @@ -137,7 +173,7 @@ class ZNCServer { $post['_CSRF_Check'] = $csrf; $post['submitted'] = '1'; $post['user'] = $username; - $this->connector->post("http://".$this->host.":".$this->port."/mods/webadmin/deluser", $post); + $this->connector->post("http://".$this->host.":".$this->port."/mods/global/webadmin/deluser", $post); } private function parseHTMLFields($html, &$post) { @@ -256,7 +292,7 @@ class ZNCServer { } public function editZNC($username, $password = NULL, $new_servers = NULL, $add_modules = NULL, $del_modules = NULL, $others = NULL) { - $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/webadmin/edituser?user=".$username); + $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/global/webadmin/edituser?user=".$username); if(preg_match("/No such username/i", $html)) return false; $post = array(); $post['loadmod'] = array(); @@ -282,12 +318,12 @@ class ZNCServer { foreach($others as $name => $value) { $post[$name] = $value; } - $html = $this->connector->post("http://".$this->host.":".$this->port."/mods/webadmin/edituser?user=".$username, $post); + $html = $this->connector->post("http://".$this->host.":".$this->port."/mods/global/webadmin/edituser?user=".$username, $post); return !preg_match("/Invalid Submission/i", $html); } public function blockZNC($username, $block) { - $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/webadmin/edituser?user=".$username); + $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/global/webadmin/edituser?user=".$username); if(preg_match("/No such username/i", $html)) return ERR_USER_NOT_FOUND; $post = array(); $post['loadmod'] = array(); @@ -298,12 +334,12 @@ class ZNCServer { if(!$block) { $post['doconnect'] = 1; } - $html = $this->connector->post("http://".$this->host.":".$this->port."/mods/webadmin/edituser?user=".$username, $post); + $html = $this->connector->post("http://".$this->host.":".$this->port."/mods/global/webadmin/edituser?user=".$username, $post); return (preg_match("/Invalid Submission/i", $html) ? ERR_UNKNOWN : ERR_OK); } public function simulZNC($username, $raw, &$errmsg, $server = true) { - $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/send_raw/"); + $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/user/send_raw/"); if(preg_match("/Not Found/i", $html)) return ERR_MODULE_NOT_FOUND; $exp = explode('name="_CSRF_Check" value="', $html); $exp = explode('"', $exp[1]); @@ -314,12 +350,12 @@ class ZNCServer { $post['user'] = $username; $post['send_to'] = ($server ? "server" : "client"); $post['line'] = $raw; - $this->connector->post("http://".$this->host.":".$this->port."/mods/send_raw/", $post); + $this->connector->post("http://".$this->host.":".$this->port."/mods/user/send_raw/", $post); return ERR_OK; } public function addChan($username, $channel, $key = NULL, $buffer = NULL) { - $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/webadmin/addchan?user=".$username); + $html = $this->connector->get("http://".$this->host.":".$this->port."/mods/global/webadmin/addchan?user=".$username); if(preg_match("/No such username/i", $html)) return false; $exp = explode('name="_CSRF_Check" value="', $html); $exp = explode('"', $exp[1]); @@ -338,7 +374,7 @@ class ZNCServer { $default_buffer = $exp[0]; $post['buffercount'] = ($buffer ? $buffer : $default_buffer); $post['save'] = 'true'; - $this->connector->post("http://".$this->host.":".$this->port."/mods/webadmin/addchan?user=".$username, $post); + $this->connector->post("http://".$this->host.":".$this->port."/mods/global/webadmin/addchan?user=".$username, $post); } }