From 1010de69b902158e5a75112d6b78c7b80a5b44d3 Mon Sep 17 00:00:00 2001 From: NurPech Date: Sun, 27 Jan 2013 17:00:27 +0100 Subject: [PATCH] made add and list compatible --- zncadmin.php | 4 +-- zncadmin/ZNCServer.class.php | 48 +++++++++++++++++++++++++++++++----- 2 files changed, 44 insertions(+), 8 deletions(-) diff --git a/zncadmin.php b/zncadmin.php index 7893792..bbc5e95 100644 --- a/zncadmin.php +++ b/zncadmin.php @@ -159,7 +159,7 @@ function zncadmin_search() { } $mask = preg_prepare($mask); $table = new Table(5); - $table->add("Server", "User", "Clients", "Server", "Nick"); + $table->add("Server", "User", "Clients", "Server"); $count = 0; foreach($zncservers as $zncserver) { $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']); @@ -209,7 +209,7 @@ function zncadmin_search() { } if($skip) continue; if(preg_match("#^".$mask."$#i", $user['user'])) { - $table->add($zncserver['name'], $user['user'], $user['clients'], $user['server'], $user['nick']); + $table->add($zncserver['name'], $user['user'], $user['clients'], $user['server']); $count++; } } diff --git a/zncadmin/ZNCServer.class.php b/zncadmin/ZNCServer.class.php index d019be0..bc5093b 100644 --- a/zncadmin/ZNCServer.class.php +++ b/zncadmin/ZNCServer.class.php @@ -58,11 +58,9 @@ 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; @@ -106,7 +104,7 @@ class ZNCServer { $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,17 +112,55 @@ 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/global/webadmin/addnetwork", $post); return !preg_match("/Invalid Submission/i", $html); } -- 2.20.1