add some code for traffic stats
[ZNCAdmin.git] / zncadmin.php
index 4949a10ccebc7022c73c737ac4b4c6c0877991ca..28fce11803c4dadf58844750b95331b2a535284d 100644 (file)
@@ -1,19 +1,19 @@
 <?php
 /* czncadmin.php - main script - ZNCAdmin
  * Copyright (C) 2011-2012  Philipp Kreil (pk910)
- * 
+ *
  * 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 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 this program. If not, see <http://www.gnu.org/licenses/>. 
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
 
 error_reporting(E_ALL & ~E_NOTICE);
@@ -47,7 +47,7 @@ switch(strtolower($argv[1])) {
     case "search":
         zncadmin_search();
         break;
-       case "seen":
+    case "seen":
         zncadmin_seen();
         break;
     case "resetpass":
@@ -77,7 +77,7 @@ function preg_prepare($string,$wildcards = true,$pregstart = "#") {
     foreach($in as $item) {
         $out[] = "\\".$item;
     }
-    if($wildcards) { 
+    if($wildcards) {
         array_push($in,"*");
         array_push($out,"(.*)");
     }
@@ -159,10 +159,10 @@ function zncadmin_search() {
     }
     $mask = preg_prepare($mask);
     $table = new Table(5);
-    $table->add("Server", "User", "Clients", "Server");
+    $table->add("Server", "User", "Clients", "Server", "");
     $count = 0;
     foreach($zncservers as $zncserver) {
-        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']);
+        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
         $zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
         foreach($zncserver['conn']->getUserList() as $user) {
             $skip = false;
@@ -201,7 +201,7 @@ function zncadmin_search() {
                         $skip = (preg_match("#^".preg_prepare($flagval)."$#i", $zncserver['name']) != $positive);
                         break;
                     default:
-                        
+
                         break;
                 }
                 if($skip)
@@ -209,7 +209,13 @@ function zncadmin_search() {
             }
             if($skip) continue;
             if(preg_match("#^".$mask."$#i", $user['user'])) {
-                $table->add($zncserver['name'], $user['user'], $user['clients'], $user['server']);
+                $extra = "";
+                if(isset($user['nick'])) {
+                    if($extra != "")
+                        $extra .= ", ";
+                    $extra .= "Nick: ".$user['nick'];
+                }
+                $table->add($zncserver['name'], $user['user'], $user['clients'], $user['server'], $extra);
                 $count++;
             }
         }
@@ -227,13 +233,13 @@ function zncadmin_search() {
 //SUBCOMMAND: search
 function zncadmin_seen() {
     global $argv, $zncservers;
-       $time = $argv[2];
-       $over_time = true;
-       if($time[0] == '>' || $time[0] == '<') {
-               if($time[0] == '<') $over_time = false;
-               $time = substr($time, 1);
-       }
-       $time = time() - str2time($time);
+    $time = $argv[2];
+    $over_time = true;
+    if($time[0] == '>' || $time[0] == '<') {
+        if($time[0] == '<') $over_time = false;
+        $time = substr($time, 1);
+    }
+    $time = time() - str2time($time);
     $mask = $argv[3];
     if(!$time) {
         error("missing time parameter");
@@ -247,7 +253,7 @@ function zncadmin_seen() {
     $table->add("Server", "User", "Seen", "Info");
     $found = false;
     foreach($zncservers as $zncserver) {
-        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']);
+        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
         $zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
         foreach($zncserver['conn']->getSeenList() as $user) {
             if(preg_match("#^".$mask."$#i", $user['user']) && (($over_time && $user['seen_unix'] < $time) || (!$over_time && $user['seen_unix'] > $time))) {
@@ -277,7 +283,7 @@ function zncadmin_del() {
     foreach($zncservers as $zncserver) {
         if($argv[3] && (strtolower($argv[3]) != strtolower($zncserver['name']))) continue;
         if($username == strtolower($zncserver['auser'])) continue;
-        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']);
+        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
         $zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
         foreach($zncserver['conn']->getUserList() as $user) {
             if(strtolower($user['user']) == $username) {
@@ -320,7 +326,7 @@ function zncadmin_add() {
             error("Access denied\n");
             return;
         }
-        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']);
+        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
         $zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
         $zncserver['users'] = $zncserver['conn']->getUserList();
         $existing = false;
@@ -388,7 +394,7 @@ function zncadmin_resetpass() {
     foreach($zncservers as $zncserver) {
         if($argv[3] && (strtolower($argv[3]) != strtolower($zncserver['name']))) continue;
         if($username == strtolower($zncserver['auser'])) continue;
-        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']);
+        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
         $zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
         foreach($zncserver['conn']->getUserList() as $user) {
             if(strtolower($user['user']) == $username) {
@@ -446,7 +452,7 @@ function zncadmin_simul() {
     foreach($zncservers as $zncserver) {
         if($server && (strtolower($server) != strtolower($zncserver['name']))) continue;
         if($username == strtolower($zncserver['auser'])) continue;
-        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']);
+        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
         $zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
         foreach($zncserver['conn']->getUserList() as $user) {
             if(strtolower($user['user']) == $username) {
@@ -489,7 +495,7 @@ function zncadmin_block() {
     foreach($zncservers as $zncserver) {
         if($server && (strtolower($server) != strtolower($zncserver['name']))) continue;
         if($username == strtolower($zncserver['auser'])) continue;
-        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']);
+        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
         $zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
         foreach($zncserver['conn']->getUserList() as $user) {
             if(strtolower($user['user']) == $username) {
@@ -532,7 +538,7 @@ function zncadmin_unblock() {
     foreach($zncservers as $zncserver) {
         if($server && (strtolower($server) != strtolower($zncserver['name']))) continue;
         if($username == strtolower($zncserver['auser'])) continue;
-        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']);
+        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
         $zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
         foreach($zncserver['conn']->getUserList() as $user) {
             if(strtolower($user['user']) == $username) {
@@ -564,15 +570,29 @@ function zncadmin_unblock() {
 
 //SUBCOMMAND: stats
 function zncadmin_stats() {
-    global $argv, $zncservers;
+    global $argv, $zncservers, $force;
+    $server = $argv[2];
     $table = new Table(6);
     $table->add("Server", "Port / SSL Port", "Total ZNC's", "Connected (IRC)", "Online (User)", "Protected?");
     $count = 0;
     foreach($zncservers as $zncserver) {
+        if($server > 0 && $zncserver['name'] != $server) continue;
+        if($server > 0 && $zncserver['name'] == $server && $zncserver['protected'] === true && !$force) {
+            error("Access denied\n");
+            return;
+        } elseif($server > 0 && $zncserver['name'] == $server && (($zncserver['protected'] === true && $force) || $zncserver['protected'] === false)) {
+            $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
+            $zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
+            $trafficStats = $zncserver['conn']->getTrafficStats();
+        } else {
+            echo "No Servers configured...\n";
+            return;
+        }
+
         $total = 0;
         $connected = 0;
         $online = 0;
-        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port']);
+        $zncserver['conn'] = new ZNCServer($zncserver['host'], $zncserver['port'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
         $zncserver['conn']->login($zncserver['auser'], $zncserver['apass']);
         foreach($zncserver['conn']->getUserList() as $user) {
             if($user['server'] != "-N/A-") $connected++;