From 37b29231e47a0c4458dc1c15d98588f16f07e1e2 Mon Sep 17 00:00:00 2001 From: Marius Cramer <m.cramer@pixcept.de> Date: Thu, 06 Aug 2015 03:18:44 -0400 Subject: [PATCH] - don't set password via remoting if field is empty --- server/lib/classes/monitor_tools.inc.php | 424 +++++++++++++++++++++++++++++++--------------------- 1 files changed, 253 insertions(+), 171 deletions(-) diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index 59c2c7c..ce3d4bb 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -55,64 +55,79 @@ $distname = 'Ubuntu'; $distid = 'debian40'; $distbaseid = 'debian'; - $ver = explode(' ',$issue); + $ver = explode(' ', $issue); $ver = array_filter($ver); $ver = next($ver); - $mainver = explode('.',$ver); + $mainver = explode('.', $ver); $mainver = array_filter($mainver); $mainver = current($mainver).'.'.next($mainver); switch ($mainver){ + case "15.04": + $relname = "(Vivid Vervet)"; + break; + case "14.10": + $relname = "(Utopic Unicorn)"; + break; + case "14.04": + $relname = "(Trusty Tahr)"; + break; + case "13.10": + $relname = "(Saucy Salamander)"; + break; + case "13.04": + $relname = "(Raring Ringtail)"; + break; case "12.10": $relname = "(Quantal Quetzal)"; - break; + break; case "12.04": $relname = "(Precise Pangolin)"; - break; + break; case "11.10": $relname = "(Oneiric Ocelot)"; - break; + break; case "11.14": $relname = "(Natty Narwhal)"; - break; + break; case "10.10": $relname = "(Maverick Meerkat)"; - break; + break; case "10.04": $relname = "(Lucid Lynx)"; - break; + break; case "9.10": $relname = "(Karmic Koala)"; - break; + break; case "9.04": $relname = "(Jaunty Jackpole)"; - break; + break; case "8.10": - $relname = "(Intrepid Ibex)"; - break; + $relname = "(Intrepid Ibex)"; + break; case "8.04": $relname = "(Hardy Heron)"; - break; + break; case "7.10": $relname = "(Gutsy Gibbon)"; - break; + break; case "7.04": $relname = "(Feisty Fawn)"; - break; + break; case "6.10": $relname = "(Edgy Eft)"; - break; + break; case "6.06": $relname = "(Dapper Drake)"; - break; + break; case "5.10": $relname = "(Breezy Badger)"; - break; + break; case "5.04": $relname = "(Hoary Hedgehog)"; - break; + break; case "4.10": $relname = "(Warty Warthog)"; - break; + break; default: $relname = "UNKNOWN"; } @@ -132,9 +147,14 @@ $distver = 'Squeeze/Sid'; $distid = 'debian60'; $distbaseid = 'debian'; - } elseif (strstr(trim(file_get_contents('/etc/debian_version')), '7.0') || strstr(trim(file_get_contents('/etc/debian_version')), '7.1') || trim(file_get_contents('/etc/debian_version')) == 'wheezy/sid') { + } elseif (strstr(trim(file_get_contents('/etc/debian_version')), '7.0') || substr(trim(file_get_contents('/etc/debian_version')),0,2) == '7.' || trim(file_get_contents('/etc/debian_version')) == 'wheezy/sid') { $distname = 'Debian'; $distver = 'Wheezy/Sid'; + $distid = 'debian60'; + $distbaseid = 'debian'; + } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '8') || substr(trim(file_get_contents('/etc/debian_version')),0,1) == '8') { + $distname = 'Debian'; + $distver = 'Jessie'; $distid = 'debian60'; $distbaseid = 'debian'; } else { @@ -201,6 +221,16 @@ $distver = '5.3'; $distid = 'centos53'; $distbaseid = 'fedora'; + } elseif(stristr($content, 'CentOS Linux release 6')) { + $distname = 'CentOS'; + $distver = 'Unknown'; + $distid = 'centos53'; + $distbaseid = 'fedora'; + } elseif(stristr($content, 'CentOS Linux release 7')) { + $distname = 'CentOS'; + $distver = 'Unknown'; + $distid = 'centos53'; + $distbaseid = 'fedora'; } else { $distname = 'Redhat'; $distver = 'Unknown'; @@ -226,16 +256,18 @@ return array('name' => $distname, 'version' => $distver, 'id' => $distid, 'baseid' => $distbaseid); } - // this function remains in the tools class, because it is used by cron AND rescue + // this function remains in the tools class, because it is used by cron AND rescue public function monitorServices() { global $app; global $conf; /** the id of the server as int */ + + $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->db->queryOneRecord('SELECT * FROM server WHERE server_id = ?', $server_id); /* * If the DB is down, we have to set the db to "yes". * If we don't do this, then the monitor will NOT monitor, that the db is down and so the @@ -331,14 +363,14 @@ $state = 'error'; // because service is down } } - $data['mongodbserver'] = -1; - if ($this->_checkTcp('localhost', 27017)) { - $data['mongodbserver'] = 1; - } else { - $data['mongodbserver'] = 0; - //$state = 'error'; // because service is down - /* TODO!!! check if this is a mongodbserver at all, otherwise it will always throw an error state!!! */ - } + $data['mongodbserver'] = -1; + if ($this->_checkTcp('localhost', 27017)) { + $data['mongodbserver'] = 1; + } else { + $data['mongodbserver'] = 0; + //$state = 'error'; // because service is down + /* TODO!!! check if this is a mongodbserver at all, otherwise it will always throw an error state!!! */ + } /* * Return the Result @@ -349,7 +381,7 @@ $res['state'] = $state; return $res; } - + public function _getLogData($log) { global $conf; @@ -367,108 +399,111 @@ } switch ($log) { - case 'log_mail': - if ($dist == 'debian') { - $logfile = '/var/log/mail.log'; - } elseif ($dist == 'redhat') { - $logfile = '/var/log/maillog'; - } elseif ($dist == 'suse') { - $logfile = '/var/log/mail.info'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/maillog'; - } - break; - case 'log_mail_warn': - if ($dist == 'debian') { - $logfile = '/var/log/mail.warn'; - } elseif ($dist == 'redhat') { - $logfile = '/var/log/maillog'; - } elseif ($dist == 'suse') { - $logfile = '/var/log/mail.warn'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/maillog'; - } - break; - case 'log_mail_err': - if ($dist == 'debian') { - $logfile = '/var/log/mail.err'; - } elseif ($dist == 'redhat') { - $logfile = '/var/log/maillog'; - } elseif ($dist == 'suse') { - $logfile = '/var/log/mail.err'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/maillog'; - } - break; - case 'log_messages': - if ($dist == 'debian') { - $logfile = '/var/log/syslog'; - } elseif ($dist == 'redhat') { - $logfile = '/var/log/messages'; - } elseif ($dist == 'suse') { - $logfile = '/var/log/messages'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/messages'; - } - break; - case 'log_ispc_cron': - if ($dist == 'debian') { - $logfile = $conf['ispconfig_log_dir'] . '/cron.log'; - } elseif ($dist == 'redhat') { - $logfile = $conf['ispconfig_log_dir'] . '/cron.log'; - } elseif ($dist == 'suse') { - $logfile = $conf['ispconfig_log_dir'] . '/cron.log'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/cron'; - } - break; - case 'log_freshclam': - if ($dist == 'debian') { - $logfile = '/var/log/clamav/freshclam.log'; - } elseif ($dist == 'redhat') { - $logfile = (is_file('/var/log/clamav/freshclam.log') ? '/var/log/clamav/freshclam.log' : '/var/log/freshclam.log'); - } elseif ($dist == 'suse') { - $logfile = '/var/log/freshclam.log'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/clamav/freshclam.log'; - } - break; - case 'log_clamav': - if ($dist == 'debian') { - $logfile = '/var/log/clamav/clamav.log'; - } elseif ($dist == 'redhat') { - $logfile = (is_file('/var/log/clamav/clamd.log') ? '/var/log/clamav/clamd.log' : '/var/log/maillog'); - } elseif ($dist == 'suse') { - $logfile = '/var/log/clamd.log'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/clamav/clamd.log'; - } - break; - case 'log_fail2ban': - if ($dist == 'debian') { - $logfile = '/var/log/fail2ban.log'; - } elseif ($dist == 'redhat') { - $logfile = '/var/log/fail2ban.log'; - } elseif ($dist == 'suse') { - $logfile = '/var/log/fail2ban.log'; - } elseif ($dist == 'gentoo') { - $logfile = '/var/log/fail2ban.log'; - } - break; - case 'log_ispconfig': - if ($dist == 'debian') { - $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; - } elseif ($dist == 'redhat') { - $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; - } elseif ($dist == 'suse') { - $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; - } elseif ($dist == 'gentoo') { - $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; - } - break; - default: - $logfile = ''; - break; + case 'log_mail': + if ($dist == 'debian') { + $logfile = '/var/log/mail.log'; + } elseif ($dist == 'redhat') { + $logfile = '/var/log/maillog'; + } elseif ($dist == 'suse') { + $logfile = '/var/log/mail.info'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/maillog'; + } + break; + case 'log_mail_warn': + if ($dist == 'debian') { + $logfile = '/var/log/mail.warn'; + } elseif ($dist == 'redhat') { + $logfile = '/var/log/maillog'; + } elseif ($dist == 'suse') { + $logfile = '/var/log/mail.warn'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/maillog'; + } + break; + case 'log_mail_err': + if ($dist == 'debian') { + $logfile = '/var/log/mail.err'; + } elseif ($dist == 'redhat') { + $logfile = '/var/log/maillog'; + } elseif ($dist == 'suse') { + $logfile = '/var/log/mail.err'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/maillog'; + } + break; + case 'log_messages': + if ($dist == 'debian') { + $logfile = '/var/log/syslog'; + } elseif ($dist == 'redhat') { + $logfile = '/var/log/messages'; + } elseif ($dist == 'suse') { + $logfile = '/var/log/messages'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/messages'; + } + break; + case 'log_ispc_cron': + if ($dist == 'debian') { + $logfile = $conf['ispconfig_log_dir'] . '/cron.log'; + } elseif ($dist == 'redhat') { + $logfile = $conf['ispconfig_log_dir'] . '/cron.log'; + } elseif ($dist == 'suse') { + $logfile = $conf['ispconfig_log_dir'] . '/cron.log'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/cron'; + } + break; + case 'log_freshclam': + if ($dist == 'debian') { + $logfile = '/var/log/clamav/freshclam.log'; + } elseif ($dist == 'redhat') { + $logfile = (is_file('/var/log/clamav/freshclam.log') ? '/var/log/clamav/freshclam.log' : '/var/log/freshclam.log'); + } elseif ($dist == 'suse') { + $logfile = '/var/log/freshclam.log'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/clamav/freshclam.log'; + } + break; + case 'log_clamav': + if ($dist == 'debian') { + $logfile = '/var/log/clamav/clamav.log'; + } elseif ($dist == 'redhat') { + $logfile = (is_file('/var/log/clamav/clamd.log') ? '/var/log/clamav/clamd.log' : '/var/log/maillog'); + } elseif ($dist == 'suse') { + $logfile = '/var/log/clamd.log'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/clamav/clamd.log'; + } + break; + case 'log_fail2ban': + if ($dist == 'debian') { + $logfile = '/var/log/fail2ban.log'; + } elseif ($dist == 'redhat') { + $logfile = '/var/log/fail2ban.log'; + } elseif ($dist == 'suse') { + $logfile = '/var/log/fail2ban.log'; + } elseif ($dist == 'gentoo') { + $logfile = '/var/log/fail2ban.log'; + } + break; + case 'log_mongodb': + $logfile = '/var/log/mongodb/mongodb.log'; + break; + case 'log_ispconfig': + if ($dist == 'debian') { + $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; + } elseif ($dist == 'redhat') { + $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; + } elseif ($dist == 'suse') { + $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; + } elseif ($dist == 'gentoo') { + $logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log'; + } + break; + default: + $logfile = ''; + break; } // Getting the logfile content @@ -575,39 +610,39 @@ * Calculate the weight of the old state */ switch ($oldState) { - case 'no_state': $oldInt = 0; - break; - case 'ok': $oldInt = 1; - break; - case 'unknown': $oldInt = 2; - break; - case 'info': $oldInt = 3; - break; - case 'warning': $oldInt = 4; - break; - case 'critical': $oldInt = 5; - break; - case 'error': $oldInt = 6; - break; + case 'no_state': $oldInt = 0; + break; + case 'ok': $oldInt = 1; + break; + case 'unknown': $oldInt = 2; + break; + case 'info': $oldInt = 3; + break; + case 'warning': $oldInt = 4; + break; + case 'critical': $oldInt = 5; + break; + case 'error': $oldInt = 6; + break; } /* * Calculate the weight of the new state */ switch ($newState) { - case 'no_state': $newInt = 0; - break; - case 'ok': $newInt = 1; - break; - case 'unknown': $newInt = 2; - break; - case 'info': $newInt = 3; - break; - case 'warning': $newInt = 4; - break; - case 'critical': $newInt = 5; - break; - case 'error': $newInt = 6; - break; + case 'no_state': $newInt = 0; + break; + case 'ok': $newInt = 1; + break; + case 'unknown': $newInt = 2; + break; + case 'info': $newInt = 3; + break; + case 'warning': $newInt = 4; + break; + case 'critical': $newInt = 5; + break; + case 'error': $newInt = 6; + break; } /* @@ -631,7 +666,7 @@ // $now = time(); // $old = $now - (4 * 60); // 4 minutes - $old = 'UNIX_TIMESTAMP() - 240'; + $old = 240; //seconds /* * ATTENTION if i do NOT pay attention of the server id, i delete all data (of the type) @@ -641,16 +676,63 @@ * even though it is the NEWEST data of this server. To avoid this i HAVE to include * the server-id! */ - $sql = 'DELETE FROM monitor_data ' . - 'WHERE ' . - ' type =' . "'" . $app->dbmaster->quote($type) . "' " . - 'AND ' . - ' created < ' . $old . ' ' . - 'AND ' . - ' server_id = ' . $serverId; - $app->dbmaster->query($sql); + $sql = 'DELETE FROM `monitor_data` WHERE `type` = ? AND `created` < UNIX_TIMESTAMP() - ? AND `server_id` = ?'; + $app->dbmaster->query($sql, $type, $old, $serverId); } + public function send_notification_email($template, $placeholders, $recipients) { + global $conf; + + if(!is_array($recipients) || count($recipients) < 1) return false; + if(!is_array($placeholders)) $placeholders = array(); + + if(file_exists($conf['rootpath'].'/conf-custom/mail/' . $template . '_'.$conf['language'].'.txt')) { + $lines = file($conf['rootpath'].'/conf-custom/mail/' . $template . '_'.$conf['language'].'.txt'); + } elseif(file_exists($conf['rootpath'].'/conf-custom/mail/' . $template . '_en.txt')) { + $lines = file($conf['rootpath'].'/conf-custom/mail/' . $template . '_en.txt'); + } elseif(file_exists($conf['rootpath'].'/conf/mail/' . $template . '_'.$conf['language'].'.txt')) { + $lines = file($conf['rootpath'].'/conf/mail/' . $template . '_'.$conf['language'].'.txt'); + } else { + $lines = file($conf['rootpath'].'/conf/mail/' . $template . '_en.txt'); + } + + //* get mail headers, subject and body + $mailHeaders = ''; + $mailBody = ''; + $mailSubject = ''; + $inHeader = true; + for($l = 0; $l < count($lines); $l++) { + if($lines[$l] == '') { + $inHeader = false; + continue; + } + if($inHeader == true) { + $parts = explode(':', $lines[$l], 2); + if(strtolower($parts[0]) == 'subject') $mailSubject = trim($parts[1]); + unset($parts); + $mailHeaders .= trim($lines[$l]) . "\n"; + } else { + $mailBody .= trim($lines[$l]) . "\n"; + } + } + $mailBody = trim($mailBody); + + //* Replace placeholders + $mailHeaders = strtr($mailHeaders, $placeholders); + $mailSubject = strtr($mailSubject, $placeholders); + $mailBody = strtr($mailBody, $placeholders); + + for($r = 0; $r < count($recipients); $r++) { + mail($recipients[$r], $mailSubject, $mailBody, $mailHeaders); + } + + unset($mailSubject); + unset($mailHeaders); + unset($mailBody); + unset($lines); + + return true; + } } -- Gitblit v1.9.1