From f28f40f7a62b9a6fe939c05b10366b0d66c9ec1e Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Fri, 27 Feb 2009 12:50:34 -0500
Subject: [PATCH] Fixed amavisd socket path.

---
 server/mods-available/monitor_core_module.inc.php |  262 ++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 214 insertions(+), 48 deletions(-)

diff --git a/server/mods-available/monitor_core_module.inc.php b/server/mods-available/monitor_core_module.inc.php
index 3222094..db0e27f 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,8 @@
         $this->monitorMailQueue();
         $this->monitorRaid();
         $this->monitorRkHunter();
+		$this->monitorFail2ban();
+        $this->monitorSysLog();
     }
 
     function monitorServer(){
@@ -156,9 +168,9 @@
         $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->dbmaster->query($sql);
@@ -180,8 +192,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 +209,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,9 +233,9 @@
         $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->dbmaster->query($sql);
@@ -251,7 +264,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,9 +284,9 @@
         $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->dbmaster->query($sql);
@@ -301,7 +314,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,9 +329,9 @@
         $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->dbmaster->query($sql);
@@ -440,9 +453,9 @@
         $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->dbmaster->query($sql);
@@ -520,9 +533,9 @@
         $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->dbmaster->query($sql);
@@ -566,9 +579,9 @@
         $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->dbmaster->query($sql);
@@ -626,6 +639,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,9 +678,9 @@
         $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->dbmaster->query($sql);
@@ -682,7 +711,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,9 +738,9 @@
         $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->dbmaster->query($sql);
@@ -720,7 +749,101 @@
         $this->_delOldRecords($type, 0, 2);
     }
 
-    function monitorMailLog()
+    function monitorFail2ban(){
+        global $app;
+        global $conf;
+
+        /* the id of the server as int */
+        $server_id = intval($conf["server_id"]);
+
+        /** The type of the data */
+        $type = 'log_fail2ban';
+
+        /* This monitoring is only available if fail2ban is installed */
+        $location = shell_exec('which fail2ban-client');
+        if($location != ''){
+			/*  Get the data of the log */
+			$data = $this->_getLogData($type);
+
+            /*
+             * At this moment, there is no state (maybe later)
+             */
+            $state = 'no_state';
+        }
+        else {
+            /*
+             * fail2ban is not installed, so there is no data and no state
+             *
+             * no_state, NOT unknown, because "unknown" is shown as state
+             * inside the GUI. no_state is hidden.
+             *
+             * We have to write NO DATA inside the DB, because the GUI
+             * could not know, if there is any dat, or not...
+             */
+            $state = 'no_state';
+            $data = '';
+        }
+
+        /*
+         * 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 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,9 +869,9 @@
         $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->dbmaster->query($sql);
@@ -783,9 +906,9 @@
         $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->dbmaster->query($sql);
@@ -820,9 +943,9 @@
         $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->dbmaster->query($sql);
@@ -858,9 +981,9 @@
         $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->dbmaster->query($sql);
@@ -869,6 +992,43 @@
         $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,9 +1090,9 @@
         $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->dbmaster->query($sql);
@@ -964,9 +1124,9 @@
         $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->dbmaster->query($sql);
@@ -998,9 +1158,9 @@
         $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->dbmaster->query($sql);
@@ -1024,11 +1184,17 @@
             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';
                 break;
             case 'log_clamav':
                 $logfile = '/var/log/clamav/clamav.log';
+                break;
+            case 'log_fail2ban':
+                $logfile = '/var/log/fail2ban.log';
                 break;
             case 'log_ispconfig':
                 $logfile = '/var/log/ispconfig/ispconfig.log';
@@ -1067,7 +1233,7 @@
 
     function _checkTcp ($host,$port) {
 
-        $fp = @fsockopen ($host, $port, &$errno, &$errstr, 2);
+        $fp = @fsockopen ($host, $port, $errno, $errstr, 2);
 
         if ($fp) {
             fclose($fp);
@@ -1079,7 +1245,7 @@
 
     function _checkUdp ($host,$port) {
 
-        $fp = @fsockopen ('udp://'.$host, $port, &$errno, &$errstr, 2);
+        $fp = @fsockopen ('udp://'.$host, $port, $errno, $errstr, 2);
 
         if ($fp) {
             fclose($fp);
@@ -1111,7 +1277,7 @@
         $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->dbmaster->query($sql);
@@ -1195,4 +1361,4 @@
 
 } // end class
 
-?>
\ No newline at end of file
+?>

--
Gitblit v1.9.1