don't count assigned domain quota for inactive domains

now only summing up the assigned domain quota for active domains, and not subtracting disc base occupied by mailboxes of inactive domains (inactive_bytes)
This commit is contained in:
heavygale 2019-09-29 19:04:00 +02:00
parent 471ab05423
commit f01e3e59c5
3 changed files with 34 additions and 20 deletions

View File

@ -44,8 +44,9 @@ else {
$exec_fields = array('cmd' => 'system', 'task' => 'df', 'dir' => '/var/vmail');
$vmail_df = explode(',', json_decode(docker('post', 'dovecot-mailcow', 'exec', $exec_fields), true));
$domainQuota = round(domain_admin('total_quota')/1024);
$inactive_bytes = round(mailbox('get','inactive_bytes')/1024/1024/1024);
$quotaPercent1 = round(($domainQuota/substr($vmail_df[3], 0, -1))*100);
$quotaPercent2 = round((($domainQuota-substr($vmail_df[2], 0, -1))/substr($vmail_df[3], 0, -1))*100);
$quotaPercent2 = round((($domainQuota-substr($vmail_df[2], 0, -1)+$inactive_bytes)/substr($vmail_df[3], 0, -1))*100);
$quotaPercent2 = ($quotaPercent2+substr($vmail_df[4], 0, -1)>100) ? 100-substr($vmail_df[4], 0, -1) : $quotaPercent2; //handling overcommitment
?>
<div role="tabpanel" class="tab-pane active" id="tab-containers">

View File

@ -453,7 +453,7 @@ function domain_admin($_action, $_data = null) {
);
return false;
}
$stmt = $pdo->query("SELECT SUM(`quota`) AS `quota` FROM `domain`");
$stmt = $pdo->query("SELECT SUM(`quota`) AS `quota` FROM `domain` WHERE `active`=1");
$row = $stmt->fetch(PDO::FETCH_ASSOC);
return $row['quota'];
break;

View File

@ -3254,6 +3254,19 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
}
return $resourcedata;
break;
case 'inactive_bytes':
if ($_SESSION['mailcow_cc_role'] != "admin") {
return false;
}
$stmt = $pdo->query("SELECT SUM(`quota2`.`bytes`) AS `bytes`
FROM `mailbox`, `quota2`, `domain`
WHERE `mailbox`.`kind` NOT REGEXP 'location|thing|group'
AND `mailbox`.`username` = `quota2`.`username`
AND `domain`.`domain` = `mailbox`.`domain`
AND `domain`.`active` = 0");
$row = $stmt->fetch(PDO::FETCH_ASSOC);
return $row['bytes'];
break;
}
break;
case 'delete':