| | |
| | | //* The state of the email_quota. |
| | | $state = 'ok'; |
| | | |
| | | $mailboxes = $app->db->queryAllRecords("SELECT email,maildir FROM mail_user WHERE server_id = $server_id"); |
| | | $mailboxes = $app->db->queryAllRecords("SELECT email,maildir FROM mail_user WHERE server_id = ?", $server_id); |
| | | if(is_array($mailboxes)) { |
| | | |
| | | //* with dovecot we can use doveadm instead of 'du -s' |
| | | $dovecot = false; |
| | | if (isset($mail_config['pop3_imap_daemon']) && $mail_config ['pop3_imap_daemon'] = 'dovecot' && is_executable('doveadm')) { |
| | | exec('doveadm quota 2>&1', $tmp_output, $tmp_retval); // with dovecot 2.2.x 'doveadm quota' is unuseable |
| | | if ($retval = 64) $dovecot = true; |
| | | } |
| | | |
| | | foreach($mailboxes as $mb) { |
| | | $email = $mb['email']; |
| | | $email_parts = explode('@', $mb['email']); |
| | | $filename = $mb['maildir'].'/.quotausage'; |
| | | if(!file_exists($filename) && $dovecot) { |
| | | exec('doveadm quota recalc -u '.$email); |
| | | } |
| | | if(file_exists($filename) && !is_link($filename)) { |
| | | $quotafile = file($filename); |
| | | $data[$email]['used'] = trim($quotafile['1']); |
| | | preg_match('/storage.*?([0-9]+)/s', implode('',$quotafile), $storage_value); |
| | | $data[$email]['used'] = $storage_value[1]; |
| | | $app->log("Mail storage $email: " . $storage_value[1], LOGLEVEL_DEBUG); |
| | | unset($quotafile); |
| | | } else { |
| | | exec('du -s '.escapeshellcmd($mb['maildir']), $out); |
| | |
| | | * 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); |
| | | 'VALUES (?, ?, UNIX_TIMESTAMP(), ?, ?)'; |
| | | $app->dbmaster->query($sql, $res['server_id'], $res['type'], serialize($res['data']), $res['state']); |
| | | |
| | | /* The new data is written, now we can delete the old one */ |
| | | $this->_tools->delOldRecords($res['type'], $res['server_id']); |