From 045beddf0eab55fe0cf94c43f9d146a1f3ad1e45 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Sun, 25 Jan 2009 06:30:01 -0500
Subject: [PATCH] Fixed: FS#474 - serial not updated for domain after changes 

---
 server/mods-available/monitor_core_module.inc.php |  238 +++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 174 insertions(+), 64 deletions(-)

diff --git a/server/mods-available/monitor_core_module.inc.php b/server/mods-available/monitor_core_module.inc.php
index bfed2e1..cf263a2 100644
--- a/server/mods-available/monitor_core_module.inc.php
+++ b/server/mods-available/monitor_core_module.inc.php
@@ -36,7 +36,16 @@
     /* No actions at this time. maybe later... */
     var $actions_available = array();
 
-    /*
+    //* This function is called during ispconfig installation to determine
+	//  if a symlink shall be created for this plugin.
+	function onInstall() {
+		global $conf;
+		
+		return true;
+		
+	}
+	
+	/*
         This function is called when the module is loaded
     */
     function onLoad() {
@@ -104,6 +113,7 @@
         $this->monitorMailWarnLog();
         $this->monitorMailErrLog();
         $this->monitorMessagesLog();
+        $this->monitorISPCCronLog();
         $this->monitorFreshClamLog();
         $this->monitorClamAvLog();
         $this->monitorIspConfigLog();
@@ -111,6 +121,7 @@
         $this->monitorMailQueue();
         $this->monitorRaid();
         $this->monitorRkHunter();
+        $this->monitorSysLog();
     }
 
     function monitorServer(){
@@ -156,12 +167,12 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 10);
@@ -180,8 +191,8 @@
         /** The state of the disk-usage */
         $state = 'ok';
 
-        /** Fetch the data into a array */
-        $dfData = shell_exec("df");
+        /** Fetch the data of ALL devices into a array (needed for monitoring!)*/
+        $dfData = shell_exec("df -hT");
 
         // split into array
         $df = explode("\n", $dfData);
@@ -197,11 +208,12 @@
                  */
                 $s = preg_split ("/[\s]+/", $df[$i]);
                 $data[$i]['fs'] = $s[0];
-                $data[$i]['size'] = $s[1];
-                $data[$i]['used'] = $s[2];
-                $data[$i]['available'] = $s[3];
-                $data[$i]['percent'] = $s[4];
-                $data[$i]['mounted'] = $s[5];
+                $data[$i]['type'] = $s[1];
+                $data[$i]['size'] = $s[2];
+                $data[$i]['used'] = $s[3];
+                $data[$i]['available'] = $s[4];
+                $data[$i]['percent'] = $s[5];
+                $data[$i]['mounted'] = $s[6];
                 /*
                  * calculate the state
                  */
@@ -220,12 +232,12 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 10);
@@ -251,7 +263,7 @@
         $memInfo = explode("\n", $miData);
 
         foreach($memInfo as $line){
-            $part = split(":", $line);
+            $part = preg_split("/:/", $line);
             $key = trim($part[0]);
             $tmp = explode(" ", trim($part[1]));
             $value = 0;
@@ -271,12 +283,12 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 10);
@@ -301,7 +313,7 @@
         $cpuInfo = explode("\n", $cpuData);
 
         foreach($cpuInfo as $line){
-            $part = split(":", $line);
+            $part = preg_split("/:/", $line);
             $key = trim($part[0]);
             $value = trim($part[1]);
             $data[$key] = $value;
@@ -316,12 +328,12 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 10);
@@ -337,7 +349,7 @@
         $server_id = intval($conf["server_id"]);
 
         /** get the "active" Services of the server from the DB */
-        $services = $app->db->queryOneRecord("SELECT * FROM server WHERE server_id = " . $server_id);
+        $services = $app->dbmaster->queryOneRecord("SELECT * FROM server WHERE server_id = " . $server_id);
 
         /* The type of the Monitor-data */
         $type = 'services';
@@ -440,12 +452,12 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 10);
@@ -520,12 +532,12 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 0, 2);
@@ -566,12 +578,12 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 10);
@@ -626,6 +638,22 @@
                     /* both Disk are not working */
                     $state = $this->_setState($state, 'error');
                 }
+                if (strpos($line, '[UU]') !== false)
+                {
+                    /* The disks are OK.
+                     * if the next line starts with "[>" or "[=" then
+                     * recovery (resync) is in state and the state is
+                     * information instead of ok
+                     */
+                    $nextLine = $tmp[$i+1];
+                    if ((strpos($nextLine, '[>') === false) && (strpos($nextLine, '[=') === false)) {
+                        $state = $this->_setState($state, 'ok');
+                    }
+                    else
+                    {
+                        $state = $this->_setState($state, 'info');
+                    }
+                }
             }
 
         }
@@ -649,12 +677,12 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 10);
@@ -682,7 +710,7 @@
             /*
              * Fetch the output
              */
-            $data['output'] = shell_exec('rkhunter --update --check --nocolors --skip-keypress');
+            $data['output'] = shell_exec('rkhunter --update --checkall --nocolors --skip-keypress');
 
             /*
              * At this moment, there is no state (maybe later)
@@ -709,18 +737,60 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 0, 2);
     }
 
-    function monitorMailLog()
+    function monitorSysLog(){
+        global $app;
+        global $conf;
+
+        /* the id of the server as int */
+        $server_id = intval($conf["server_id"]);
+
+        /** The type of the data */
+        $type = 'sys_log';
+
+	/*
+	 * is there any warning or error for this server?
+	 */
+	$state = 'ok';
+        $dbData = $app->dbmaster->queryAllRecords("SELECT loglevel FROM sys_log WHERE server_id = " . $server_id . " AND loglevel > 0");
+	if (is_array($dbData)) {
+	    foreach($dbData as $item){
+		if ($item['loglevel'] == 1) $state = $this->_setState($state, 'warning');
+		if ($item['loglevel'] == 2) $state = $this->_setState($state, 'error');
+	    }
+	}
+
+	/** There is no monitor-data because the data is in the sys_log table */
+        $data['output']= '';
+
+        /*
+         * Insert the data into the database
+         */
+        $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
+            "VALUES (".
+        $server_id . ", " .
+            "'" . $app->dbmaster->quote($type) . "', " .
+        time() . ", " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
+            "'" . $state . "'" .
+            ")";
+        $app->dbmaster->query($sql);
+
+        /* The new data is written, now we can delete the old one */
+        $this->_delOldRecords($type, 10);
+    }
+
+function monitorMailLog()
     {
         global $app;
         global $conf;
@@ -746,12 +816,12 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 10);
@@ -783,12 +853,12 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 10);
@@ -820,12 +890,12 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 10);
@@ -858,17 +928,54 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 10);
     }
 
+    function monitorISPCCronLog()
+    {
+        global $app;
+        global $conf;
+
+        /* the id of the server as int */
+        $server_id = intval($conf["server_id"]);
+
+        /** The type of the data */
+        $type = 'log_ispc_cron';
+
+        /* Get the data of the log */
+        $data = $this->_getLogData($type);
+
+        /*
+         * actually this info has no state.
+         * maybe someone knows better...???...
+         */
+        $state = 'no_state';
+
+        /*
+        Insert the data into the database
+        */
+        $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
+            "VALUES (".
+        $server_id . ", " .
+            "'" . $app->dbmaster->quote($type) . "', " .
+        time() . ", " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
+            "'" . $state . "'" .
+            ")";
+        $app->dbmaster->query($sql);
+
+        /* The new data is written, now we can delete the old one */
+        $this->_delOldRecords($type, 10);
+    }
+    
     function monitorFreshClamLog()
     {
         global $app;
@@ -930,12 +1037,12 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 10);
@@ -964,12 +1071,12 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 10);
@@ -998,12 +1105,12 @@
         $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
             "VALUES (".
         $server_id . ", " .
-            "'" . $app->db->quote($type) . "', " .
+            "'" . $app->dbmaster->quote($type) . "', " .
         time() . ", " .
-            "'" . $app->db->quote(serialize($data)) . "', " .
+            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
             "'" . $state . "'" .
             ")";
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
 
         /* The new data is written, now we can delete the old one */
         $this->_delOldRecords($type, 10);
@@ -1023,6 +1130,9 @@
                 break;
             case 'log_messages':
                 $logfile = '/var/log/messages';
+                break;
+            case 'log_ispc_cron':
+                $logfile = '/var/log/ispconfig/cron.log';
                 break;
             case 'log_freshclam':
                 $logfile = '/var/log/clamav/freshclam.log';
@@ -1111,10 +1221,10 @@
         $old = $now - ($min * 60) - ($hour * 60 * 60) - ($days * 24 * 60 * 60);
         $sql = "DELETE FROM monitor_data " .
             "WHERE " .
-            "type =" . "'" . $app->db->quote($type) . "' " .
+            "type =" . "'" . $app->dbmaster->quote($type) . "' " .
             "AND " .
             "created < " . $old;
-        $app->db->query($sql);
+        $app->dbmaster->query($sql);
     }
 
     /*
@@ -1195,4 +1305,4 @@
 
 } // end class
 
-?>
\ No newline at end of file
+?>

--
Gitblit v1.9.1