first cahnges
[ZNCAdmin.git] / zncadmin / ZNCServer.class.php
index d5d4badbc6ff85050cb1eaf12abfebaaada96d7d..d019be005b9925b292bb6ab19a093993e5ff6537 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]);
@@ -69,7 +69,7 @@ class ZNCServer {
        }
     
     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,7 +99,7 @@ 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];
@@ -124,12 +124,12 @@ class ZNCServer {
         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/adduser", $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 +137,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) {
@@ -209,10 +209,54 @@ class ZNCServer {
             $content = $content[0];
             $post[$name] = $content;
         }
+        //select boxes
+        $selectboxes = explode("<select ", $html);
+        for($j = 1; $j < count($selectboxes); $j++) {
+            $exp = explode(">", $selectboxes[$j], 2);
+            $name = explode("name=\"", $exp[0]);
+            $name = explode("\"", $name[1]);
+            $name = $name[0];
+            $content = explode("</select", $exp[1]);
+            $content = $content[0];
+            preg_match_all("<option ([^\>]*)>", $content, $matches);
+            foreach($matches[0] as $input) {
+                $fields = array(0 => "");
+                $esc = false; $str = false;
+                $fieldid = 0;
+                for($i = 0; $i < strlen($input); $i++) {
+                    if($esc) {
+                        $esc = false;
+                        $fields[$fieldid] .= $input[$i];
+                        continue;
+                    }
+                    if($input[$i] == "\\") {
+                        $esc = true;
+                    }
+                    if($input[$i] == "\"") {
+                        $str = !$str;
+                        continue;
+                    }
+                    if($input[$i] == " " && !$str) {
+                        $fields[++$fieldid] = "";
+                        continue;
+                    }
+                    $fields[$fieldid] .= $input[$i];
+                }
+                $cfields = array();
+                foreach($fields as $field) {
+                    $fieldexp = explode("=", $field, 2);
+                    if(count($fieldexp) != 2) continue;
+                    $cfields[$fieldexp[0]] = $fieldexp[1];
+                }
+                if(!$post[$name] || $cfields['selected']) {
+                    $post[$name] = $cfields['value'];
+                }
+            }
+        }
     }
     
     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();
@@ -238,12 +282,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();
@@ -254,12 +298,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]);
@@ -270,12 +314,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]);
@@ -294,7 +338,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);
     }
     
 }