made add and list compatible
[ZNCAdmin.git] / zncadmin / ZNCServer.class.php
index d001947fcf7c2f67f9a088919c805c99c870846a..bc5093b9ad9fd76ab40460ff15eb9f37d839cab3 100644 (file)
@@ -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('<div class="toptable">', $html);
                $exp = explode('</div>', $exp[1]);
                $exp = explode('<tbody>', $exp[0]);
@@ -58,18 +58,16 @@ class ZNCServer {
                        $exp2 = explode('</td>', $exp[2]);
                        $userdata['user'] = $exp2[0];
                        $exp2 = explode('</td>', $exp[3]);
-                       $userdata['clients'] = $exp2[0];
-                       $exp2 = explode('</td>', $exp[4]);
                        $userdata['server'] = $exp2[0];
-                       $exp2 = explode('</td>', $exp[5]);
-                       $userdata['nick'] = $exp2[0];
+                       $exp2 = explode('</td>', $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('<div class="toptable">', $html);
                $exp = explode('</div>', $exp[1]);
                $exp = explode('<tbody>', $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);
     }
     
 }