fantu
2008-12-29 f7b32b76cce0cca2dcd5a31b41cd9e4b3bdd5d69
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(){
@@ -251,7 +262,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;
@@ -301,7 +312,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;
@@ -626,6 +637,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');
                    }
                }
            }
        }
@@ -682,7 +709,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)
@@ -720,7 +747,49 @@
        $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;
@@ -869,6 +938,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;
@@ -1024,6 +1130,9 @@
            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;