| | |
| | | */ |
| | | |
| | | class cronjob_monitor_email_quota extends cronjob { |
| | | |
| | | // job schedule |
| | | protected $_schedule = '*/15 * * * *'; |
| | | protected $_run_at_new = true; |
| | | |
| | | private $_tools = null; |
| | | |
| | | /* this function is optional if it contains no custom code */ |
| | | public function onPrepare() { |
| | | global $app; |
| | | |
| | | parent::onPrepare(); |
| | | } |
| | | |
| | | /* this function is optional if it contains no custom code */ |
| | | public function onBeforeRun() { |
| | | global $app; |
| | | |
| | | return parent::onBeforeRun(); |
| | | } |
| | | |
| | | public function onRunJob() { |
| | | global $app, $conf; |
| | | |
| | | |
| | | // job schedule |
| | | protected $_schedule = '*/15 * * * *'; |
| | | protected $_run_at_new = true; |
| | | |
| | | private $_tools = null; |
| | | |
| | | /* this function is optional if it contains no custom code */ |
| | | public function onPrepare() { |
| | | global $app; |
| | | |
| | | parent::onPrepare(); |
| | | } |
| | | |
| | | /* this function is optional if it contains no custom code */ |
| | | public function onBeforeRun() { |
| | | global $app; |
| | | |
| | | return parent::onBeforeRun(); |
| | | } |
| | | |
| | | public function onRunJob() { |
| | | global $app, $conf; |
| | | |
| | | $app->uses('getconf'); |
| | | $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); |
| | | if($mail_config['mailbox_quota_stats'] == 'n') return; |
| | | |
| | | /* used for all monitor cronjobs */ |
| | | $app->load('monitor_tools'); |
| | | $this->_tools = new monitor_tools(); |
| | | /* end global section for monitor cronjobs */ |
| | | |
| | | |
| | | /* used for all monitor cronjobs */ |
| | | $app->load('monitor_tools'); |
| | | $this->_tools = new monitor_tools(); |
| | | /* end global section for monitor cronjobs */ |
| | | |
| | | |
| | | //* Initialize data array |
| | | $data = array(); |
| | | |
| | |
| | | if(is_array($mailboxes)) { |
| | | foreach($mailboxes as $mb) { |
| | | $email = $mb['email']; |
| | | $email_parts = explode('@',$mb['email']); |
| | | $email_parts = explode('@', $mb['email']); |
| | | $filename = $mb['maildir'].'/.quotausage'; |
| | | if(file_exists($filename) && !is_link($filename)) { |
| | | $quotafile = file($filename); |
| | | $data[$email]['used'] = trim($quotafile['1']); |
| | | unset($quotafile); |
| | | } else { |
| | | exec('du -s '.escapeshellcmd($mb['maildir']),$out); |
| | | $parts = explode(' ',$out[0]); |
| | | exec('du -s '.escapeshellcmd($mb['maildir']), $out); |
| | | $parts = explode(' ', $out[0]); |
| | | $data[$email]['used'] = intval($parts[0])*1024; |
| | | unset($out); |
| | | unset($parts); |
| | |
| | | |
| | | unset($mailboxes); |
| | | |
| | | //* Dovecot quota check Courier in progress lathama@gmail.com |
| | | //* Dovecot quota check Courier in progress lathama@gmail.com |
| | | /* |
| | | if($dir = opendir("/var/vmail")){ |
| | | while (($quotafiles = readdir($dir)) !== false){ |
| | |
| | | closedir($dir); |
| | | } |
| | | */ |
| | | $res = array(); |
| | | $res = array(); |
| | | $res['server_id'] = $server_id; |
| | | $res['type'] = $type; |
| | | $res['data'] = $data; |
| | | $res['state'] = $state; |
| | | |
| | | /* |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | | 'UNIX_TIMESTAMP(), ' . |
| | | "'" . $app->dbmaster->quote(serialize($res['data'])) . "', " . |
| | | "'" . $res['state'] . "'" . |
| | | ')'; |
| | | $app->dbmaster->query($sql); |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | | 'UNIX_TIMESTAMP(), ' . |
| | | "'" . $app->dbmaster->quote(serialize($res['data'])) . "', " . |
| | | "'" . $res['state'] . "'" . |
| | | ')'; |
| | | $app->dbmaster->query($sql); |
| | | |
| | | /* The new data is written, now we can delete the old one */ |
| | | $this->_tools->delOldRecords($res['type'], $res['server_id']); |
| | | /* The new data is written, now we can delete the old one */ |
| | | $this->_tools->delOldRecords($res['type'], $res['server_id']); |
| | | |
| | | |
| | | parent::onRunJob(); |
| | | } |
| | | |
| | | /* this function is optional if it contains no custom code */ |
| | | public function onAfterRun() { |
| | | global $app; |
| | | |
| | | parent::onAfterRun(); |
| | | } |
| | | |
| | | parent::onRunJob(); |
| | | } |
| | | |
| | | /* this function is optional if it contains no custom code */ |
| | | public function onAfterRun() { |
| | | global $app; |
| | | |
| | | parent::onAfterRun(); |
| | | } |
| | | |
| | | } |
| | | |