From 7cd9971f543f12a5fb60b67631190712d0d9788e Mon Sep 17 00:00:00 2001 From: latham <latham@ispconfig3> Date: Thu, 05 May 2011 14:57:13 -0400 Subject: [PATCH] First upload of the email quota reporting. All parts are disabled at the moment. Please help update the language files. --- server/lib/classes/monitor_tools.inc.php | 231 +++++++++++++++++++++++++++++++++------------------------ 1 files changed, 133 insertions(+), 98 deletions(-) diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index 6539a1a..6baa1bb 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -149,35 +149,69 @@ return array('name' => $distname, 'version' => $distver, 'id' => $distid, 'baseid' => $distbaseid); } +/* + //** Email Quota + public function monitorEmailQuota() { + global $conf; + + //* Initialize data array + $data = array(); + + //* the id of the server as int + $server_id = intval($conf['server_id']); + + //* The type of the data + $type = 'email_quota'; + + //* The state of the email_quota. + $state = 'ok'; + + //* Dovecot quota check Courier in progress lathama@gmail.com + if($dir = opendir("/var/vmail")){ + while (($quotafiles = readdir($dir)) !== false){ + if(preg_match('/.\_quota$/', $quotafiles)){ + $quotafile = (file("/var/vmail/" . $quotafiles)); + $emailaddress = preg_replace('/_quota/',"", $quotafiles); + $emailaddress = preg_replace('/_/',"@", $emailaddress); + $data[$emailaddress]['used'] = trim($quotafile['1']); + } + } + closedir($dir); + } + $res['server_id'] = $server_id; + $res['type'] = $type; + $res['data'] = $data; + $res['state'] = $state; + return $res; + } +*/ + + //** Filesystem Quota public function monitorHDQuota() { global $conf; - /* Initialize data array */ + //* Initialize data array $data = array(); - /* the id of the server as int */ + //* the id of the server as int $server_id = intval($conf['server_id']); - /** The type of the data */ + //* The type of the data $type = 'harddisk_quota'; - /** The state of the harddisk_quota. */ + //* The state of the harddisk_quota. $state = 'ok'; - /** Fetch the data for all users */ + //* Fetch the data for all users $dfData = shell_exec('repquota -au'); - // split into array + //* Split into array $df = explode("\n", $dfData); - /* - * ignore the first 5 lines, process the rest - */ + //* ignore the first 5 lines, process the rest for ($i = 5; $i <= sizeof($df); $i++) { if ($df[$i] != '') { - /* - * Make a array of the data - */ + //* Make a array of the data $s = preg_split('/[\s]+/', $df[$i]); $username = $s[0]; if (substr($username, 0, 3) == 'web') { @@ -194,20 +228,16 @@ } } - /** Fetch the data for all users */ + //** Fetch the data for all users $dfData = shell_exec('repquota -ag'); - // split into array + //* split into array $df = explode("\n", $dfData); - /* - * ignore the first 5 lines, process the rest - */ + //* ignore the first 5 lines, process the rest for ($i = 5; $i <= sizeof($df); $i++) { if ($df[$i] != '') { - /* - * Make a array of the data - */ + //* Make a array of the data $s = preg_split('/[\s]+/', $df[$i]); $groupname = $s[0]; if (substr($groupname, 0, 6) == 'client') { @@ -224,9 +254,7 @@ } } - /* - * Return the Result - */ + //* Return the Result $res['server_id'] = $server_id; $res['type'] = $type; $res['data'] = $data; @@ -597,7 +625,7 @@ /* Monitor BIND-Server */ $data['bindserver'] = -1; // unknown - not needed if ($services['dns_server'] == 1) { - if ($this->_checkTcp('localhost', 53)) { + if ($this->_checkUdp('localhost', 53)) { $data['bindserver'] = 1; } else { $data['bindserver'] = 0; @@ -1539,26 +1567,36 @@ } private function _checkTcp($host, $port) { - + /* Try to open a connection */ $fp = @fsockopen($host, $port, $errno, $errstr, 2); if ($fp) { /* - * We got a connection, but maybe apache is not able to send data over this - * connection? + * We got a connection, this means, everything is O.K. + * But maybe we are able to do more deep testing? */ - fwrite($fp, "GET / HTTP/1.0\r\n\r\n"); - stream_set_timeout($fp, 2); - $res = fread($fp, 10); - $info = stream_get_meta_data($fp); - fclose($fp); - if ($info['timed_out']) { - return false; // Apache was not able to send data over this connection - } else { - return true; // Apache was able to send data over this connection + if ($port == 80) { + /* + * Port 80 means, testing APACHE + * So we can do a deepter test and try to get data over this connection. + * (if apache hangs, we get a connection but a timeout by trying to GET the data!) + */ + fwrite($fp, "GET / HTTP/1.0\r\n\r\n"); + stream_set_timeout($fp, 5); // Timeout after 5 seconds + $res = fread($fp, 10); // try to get 10 bytes (enough to test!) + $info = stream_get_meta_data($fp); + if ($info['timed_out']) { + return false; // Apache was not able to send data over this connection + } } + + /* The connection is no longer needed */ + fclose($fp); + /* We are able to establish a connection */ + return true; } else { - return false; // Apache was not able to establish a connection + /* We are NOT able to establish a connection */ + return false; } } @@ -1585,67 +1623,64 @@ return false; } } - - /* - * Set the state to the given level (or higher, but not lesser). - * * If the actual state is critical and you call the method with ok, - * then the state is critical. - * - * * If the actual state is critical and you call the method with error, - * then the state is error. - */ - private function _setState($oldState, $newState) - { - /* - * 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; - } - /* - * 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; - } - /* - * Set to the higher level - */ - if ($newInt > $oldInt){ - return $newState; - } - else - { - return $oldState; - } - } + /** + * Set the state to the given level (or higher, but not lesser). + * * If the actual state is critical and you call the method with ok, + * then the state is critical. + * + * * If the actual state is critical and you call the method with error, + * then the state is error. + */ + private function _setState($oldState, $newState) { + /* + * 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; + } + /* + * 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; + } + + /* + * Set to the higher level + */ + if ($newInt > $oldInt) { + return $newState; + } else { + return $oldState; + } + } private function _getIntArray($line) { /** The array of float found */ @@ -1663,4 +1698,4 @@ } -?> +?> \ No newline at end of file -- Gitblit v1.9.1