add some code for traffic stats
[ZNCAdmin.git] / zncadmin.php
index b89be854f43939140b2016b61191303e4c403c61..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,7 +159,7 @@ 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'], (isset($zncserver['version']) ? $zncserver['version'] : NULL));
@@ -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");
@@ -564,11 +570,25 @@ 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;