From c26a9f6940a5b68d4ea4386c68ae5d3d039bf700 Mon Sep 17 00:00:00 2001 From: Joel Kuder Date: Sun, 6 Feb 2022 19:16:34 +0000 Subject: [PATCH 1/4] Option calculate Website Disk usage without Quota --- .../cron.d/100-monitor_hd_quota.inc.php | 153 ++++++++++++------ 1 file changed, 108 insertions(+), 45 deletions(-) diff --git a/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php b/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php index 33c7e59589..15068af1b8 100644 --- a/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php +++ b/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php @@ -70,55 +70,118 @@ class cronjob_monitor_hd_quota extends cronjob { //* The state of the harddisk_quota. $state = 'ok'; - //* Fetch the data for all users - $dfData = shell_exec('repquota -au 2>/dev/null'); - - //* Split into array - $df = explode("\n", $dfData); - - //* ignore the first 5 lines, process the rest - for ($i = 5; $i <= sizeof($df); $i++) { - if ($df[$i] != '') { - //* Make a array of the data - $s = preg_split('/[\s]+/', $df[$i]); - $username = $s[0]; - if (substr($username, 0, 3) == 'web') { - if (isset($data['user'][$username])) { - $data['user'][$username]['used'] += $s[2]; - $data['user'][$username]['soft'] += $s[3]; - $data['user'][$username]['hard'] += $s[4]; - $data['user'][$username]['files'] += $s[5]; - } else { - $data['user'][$username]['used'] = $s[2]; - $data['user'][$username]['soft'] = $s[3]; - $data['user'][$username]['hard'] = $s[4]; - $data['user'][$username]['files'] = $s[5]; + if(!$app->system->is_installed('setquota')) { + //* No Quota on this System ... + + //** Fetch the data for all users + $dfData = shell_exec('du -s /var/www/clients/client*/we*'); + + //* split into array + $df = explode("\n", $dfData); + + //* Get Limits for Calculation + $records = $app->db->queryAllRecords('SELECT hd_quota, system_user, system_group FROM `web_domain` WHERE `server_id` = ?', $conf['server_id']); + foreach ($records as $record) { + $options['group'][$record['system_group']] = $record['hd_quota']*1024; + $options['user'][$record['system_user']] = $record['hd_quota']*1024; + } + + //* ignore the first 5 lines, process the rest + for ($i = 0; $i <= sizeof($df); $i++) { + if ($df[$i] != '') { + //* Make a array of the data + $s1 = preg_split('/[\s]+/', $df[$i]); + $s2 = preg_split('/\//', $s1[1]); + $groupname = $s2[4]; + if (substr($groupname, 0, 6) == 'client') { + if (isset($data['group'][$groupname])) { + $data['group'][$groupname]['used'] += $s1[0]; + $data['group'][$groupname]['soft'] = $options['group'][$groupname]; + $data['group'][$groupname]['hard'] = $options['group'][$groupname]; + } else { + $data['group'][$groupname]['used'] = $s1[0]; + $data['group'][$groupname]['soft'] = $options['group'][$groupname]; + $data['group'][$groupname]['hard'] = $options['group'][$groupname]; + } + } + } + } + + //* ignore the first 5 lines, process the rest + for ($i = 0; $i <= sizeof($df); $i++) { + if ($df[$i] != '') { + //* Make a array of the data + $s1 = preg_split('/[\s]+/', $df[$i]); + $s2 = preg_split('/\//', $s1[1]); + $username = $s2[5]; + if (substr($username, 0, 3) == 'web') { + if (isset($data['user'][$username])) { + $data['user'][$username]['used'] += $s1[0]; + $data['user'][$username]['soft'] = $options['user'][$username]; + $data['user'][$username]['hard'] = $options['user'][$username]; + $data['user'][$username]['files'] = 0; + } else { + $data['user'][$username]['used'] = $s1[0]; + $data['user'][$username]['soft'] = $options['user'][$username]; + $data['user'][$username]['hard'] = $options['user'][$username]; + $data['user'][$username]['files'] = 0; + } + } + } + } + + }else{ + + //* Fetch the data for all users + $dfData = shell_exec('repquota -au 2>/dev/null'); + + //* Split into array + $df = explode("\n", $dfData); + + //* ignore the first 5 lines, process the rest + for ($i = 5; $i <= sizeof($df); $i++) { + if ($df[$i] != '') { + //* Make a array of the data + $s = preg_split('/[\s]+/', $df[$i]); + $username = $s[0]; + if (substr($username, 0, 3) == 'web') { + if (isset($data['user'][$username])) { + $data['user'][$username]['used'] += $s[2]; + $data['user'][$username]['soft'] += $s[3]; + $data['user'][$username]['hard'] += $s[4]; + $data['user'][$username]['files'] += $s[5]; + } else { + $data['user'][$username]['used'] = $s[2]; + $data['user'][$username]['soft'] = $s[3]; + $data['user'][$username]['hard'] = $s[4]; + $data['user'][$username]['files'] = $s[5]; + } } } } - } - //** Fetch the data for all users - $dfData = shell_exec('repquota -ag 2>/dev/null'); - - //* split into array - $df = explode("\n", $dfData); - - //* ignore the first 5 lines, process the rest - for ($i = 5; $i <= sizeof($df); $i++) { - if ($df[$i] != '') { - //* Make a array of the data - $s = preg_split('/[\s]+/', $df[$i]); - $groupname = $s[0]; - if (substr($groupname, 0, 6) == 'client') { - if (isset($data['group'][$groupname])) { - $data['group'][$groupname]['used'] += $s[2]; - $data['group'][$groupname]['soft'] += $s[3]; - $data['group'][$groupname]['hard'] += $s[4]; - } else { - $data['group'][$groupname]['used'] = $s[2]; - $data['group'][$groupname]['soft'] = $s[3]; - $data['group'][$groupname]['hard'] = $s[4]; + //** Fetch the data for all users + $dfData = shell_exec('repquota -ag 2>/dev/null'); + + //* split into array + $df = explode("\n", $dfData); + + //* ignore the first 5 lines, process the rest + for ($i = 5; $i <= sizeof($df); $i++) { + if ($df[$i] != '') { + //* Make a array of the data + $s = preg_split('/[\s]+/', $df[$i]); + $groupname = $s[0]; + if (substr($groupname, 0, 6) == 'client') { + if (isset($data['group'][$groupname])) { + $data['group'][$groupname]['used'] += $s[2]; + $data['group'][$groupname]['soft'] += $s[3]; + $data['group'][$groupname]['hard'] += $s[4]; + } else { + $data['group'][$groupname]['used'] = $s[2]; + $data['group'][$groupname]['soft'] = $s[3]; + $data['group'][$groupname]['hard'] = $s[4]; + } } } } -- GitLab From 694e06598f630ce652ec2fd9347b6673b0b98535 Mon Sep 17 00:00:00 2001 From: Joel Kuder Date: Sun, 26 Mar 2023 13:34:15 +0000 Subject: [PATCH 2/4] Update 100-monitor_hd_quota.inc.php --- server/lib/classes/cron.d/100-monitor_hd_quota.inc.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php b/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php index 311378c138..b45f252b32 100644 --- a/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php +++ b/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php @@ -70,7 +70,6 @@ class cronjob_monitor_hd_quota extends cronjob { //* The state of the harddisk_quota. $state = 'ok'; -<<<<<<< server/lib/classes/cron.d/100-monitor_hd_quota.inc.php if(!$app->system->is_installed('setquota')) { //* No Quota on this System ... @@ -89,7 +88,7 @@ class cronjob_monitor_hd_quota extends cronjob { //* ignore the first 5 lines, process the rest for ($i = 0; $i <= sizeof($df); $i++) { - if ($df[$i] != '') { + if (isset($df[$i]) && $df[$i] != '') { //* Make a array of the data $s1 = preg_split('/[\s]+/', $df[$i]); $s2 = preg_split('/\//', $s1[1]); @@ -157,7 +156,6 @@ class cronjob_monitor_hd_quota extends cronjob { $data['user'][$username]['hard'] = $s[4]; $data['user'][$username]['files'] = $s[5]; } -======= //* Fetch the data for all users $dfData = shell_exec('repquota -au 2>/dev/null'); @@ -181,12 +179,10 @@ class cronjob_monitor_hd_quota extends cronjob { $data['user'][$username]['soft'] = $s[3]; $data['user'][$username]['hard'] = $s[4]; $data['user'][$username]['files'] = $s[5]; ->>>>>>> server/lib/classes/cron.d/100-monitor_hd_quota.inc.php } } } -<<<<<<< server/lib/classes/cron.d/100-monitor_hd_quota.inc.php //** Fetch the data for all users $dfData = shell_exec('repquota -ag 2>/dev/null'); @@ -195,7 +191,7 @@ class cronjob_monitor_hd_quota extends cronjob { //* ignore the first 5 lines, process the rest for ($i = 5; $i <= sizeof($df); $i++) { - if ($df[$i] != '') { + if (isset($df[$i]) && $df[$i] != '') { //* Make a array of the data $s = preg_split('/[\s]+/', $df[$i]); $groupname = $s[0]; @@ -209,7 +205,6 @@ class cronjob_monitor_hd_quota extends cronjob { $data['group'][$groupname]['soft'] = $s[3]; $data['group'][$groupname]['hard'] = $s[4]; } -======= //** Fetch the data for all users $dfData = shell_exec('repquota -ag 2>/dev/null'); @@ -231,7 +226,6 @@ class cronjob_monitor_hd_quota extends cronjob { $data['group'][$groupname]['used'] = $s[2]; $data['group'][$groupname]['soft'] = $s[3]; $data['group'][$groupname]['hard'] = $s[4]; ->>>>>>> server/lib/classes/cron.d/100-monitor_hd_quota.inc.php } } } -- GitLab From 76f4863a92ce8456fd749b802eafc4ee5a7d01dc Mon Sep 17 00:00:00 2001 From: Joel Kuder Date: Fri, 14 Apr 2023 09:36:35 +0000 Subject: [PATCH 3/4] Update 100-monitor_hd_quota.inc.php --- .../cron.d/100-monitor_hd_quota.inc.php | 62 +++---------------- 1 file changed, 7 insertions(+), 55 deletions(-) diff --git a/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php b/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php index b45f252b32..df2f2ce958 100644 --- a/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php +++ b/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php @@ -33,7 +33,6 @@ class cronjob_monitor_hd_quota extends cronjob { // job schedule protected $_schedule = '*/5 * * * *'; protected $_run_at_new = true; - private $_tools = null; /* this function is optional if it contains no custom code */ @@ -70,7 +69,7 @@ class cronjob_monitor_hd_quota extends cronjob { //* The state of the harddisk_quota. $state = 'ok'; - if(!$app->system->is_installed('setquota')) { + if(!$app->system->is_installed('setquota')) { //* No Quota on this System ... //** Fetch the data for all users @@ -88,7 +87,7 @@ class cronjob_monitor_hd_quota extends cronjob { //* ignore the first 5 lines, process the rest for ($i = 0; $i <= sizeof($df); $i++) { - if (isset($df[$i]) && $df[$i] != '') { + if ($df[$i] != '') { //* Make a array of the data $s1 = preg_split('/[\s]+/', $df[$i]); $s2 = preg_split('/\//', $s1[1]); @@ -109,7 +108,7 @@ class cronjob_monitor_hd_quota extends cronjob { //* ignore the first 5 lines, process the rest for ($i = 0; $i <= sizeof($df); $i++) { - if (isset($df[$i]) && $df[$i] != '') { + if ($df[$i] != '') { //* Make a array of the data $s1 = preg_split('/[\s]+/', $df[$i]); $s2 = preg_split('/\//', $s1[1]); @@ -129,9 +128,7 @@ class cronjob_monitor_hd_quota extends cronjob { } } } - - }else{ - + }else{ //* Fetch the data for all users $dfData = shell_exec('repquota -au 2>/dev/null'); @@ -140,7 +137,7 @@ class cronjob_monitor_hd_quota extends cronjob { //* ignore the first 5 lines, process the rest for ($i = 5; $i <= sizeof($df); $i++) { - if (isset($df[$i]) && $df[$i] != '') { + if ($df[$i] != '') { //* Make a array of the data $s = preg_split('/[\s]+/', $df[$i]); $username = $s[0]; @@ -156,29 +153,6 @@ class cronjob_monitor_hd_quota extends cronjob { $data['user'][$username]['hard'] = $s[4]; $data['user'][$username]['files'] = $s[5]; } - //* Fetch the data for all users - $dfData = shell_exec('repquota -au 2>/dev/null'); - - //* Split into array - $df = explode("\n", $dfData); - - //* ignore the first 5 lines, process the rest - for ($i = 5; $i <= sizeof($df); $i++) { - if (isset($df[$i]) && $df[$i] != '') { - //* Make a array of the data - $s = preg_split('/[\s]+/', $df[$i]); - $username = $s[0]; - if (substr($username, 0, 3) == 'web') { - if (isset($data['user'][$username])) { - $data['user'][$username]['used'] += $s[2]; - $data['user'][$username]['soft'] += $s[3]; - $data['user'][$username]['hard'] += $s[4]; - $data['user'][$username]['files'] += $s[5]; - } else { - $data['user'][$username]['used'] = $s[2]; - $data['user'][$username]['soft'] = $s[3]; - $data['user'][$username]['hard'] = $s[4]; - $data['user'][$username]['files'] = $s[5]; } } } @@ -191,7 +165,7 @@ class cronjob_monitor_hd_quota extends cronjob { //* ignore the first 5 lines, process the rest for ($i = 5; $i <= sizeof($df); $i++) { - if (isset($df[$i]) && $df[$i] != '') { + if ($df[$i] != '') { //* Make a array of the data $s = preg_split('/[\s]+/', $df[$i]); $groupname = $s[0]; @@ -205,32 +179,10 @@ class cronjob_monitor_hd_quota extends cronjob { $data['group'][$groupname]['soft'] = $s[3]; $data['group'][$groupname]['hard'] = $s[4]; } - //** Fetch the data for all users - $dfData = shell_exec('repquota -ag 2>/dev/null'); - - //* split into array - $df = explode("\n", $dfData); - - //* ignore the first 5 lines, process the rest - for ($i = 5; $i <= sizeof($df); $i++) { - if (isset($df[$i]) && $df[$i] != '') { - //* Make a array of the data - $s = preg_split('/[\s]+/', $df[$i]); - $groupname = $s[0]; - if (substr($groupname, 0, 6) == 'client') { - if (isset($data['group'][$groupname])) { - $data['group'][$groupname]['used'] += $s[2]; - $data['group'][$groupname]['soft'] += $s[3]; - $data['group'][$groupname]['hard'] += $s[4]; - } else { - $data['group'][$groupname]['used'] = $s[2]; - $data['group'][$groupname]['soft'] = $s[3]; - $data['group'][$groupname]['hard'] = $s[4]; } } } - } - + } $res = array(); $res['server_id'] = $server_id; $res['type'] = $type; -- GitLab From 8d44fa9ce886caf921c8648a025416fd98d7f5f9 Mon Sep 17 00:00:00 2001 From: Joel Kuder Date: Fri, 14 Apr 2023 09:41:01 +0000 Subject: [PATCH 4/4] Update server/lib/classes/cron.d/100-monitor_hd_quota.inc.php --- server/lib/classes/cron.d/100-monitor_hd_quota.inc.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php b/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php index df2f2ce958..9a5fcf38d2 100644 --- a/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php +++ b/server/lib/classes/cron.d/100-monitor_hd_quota.inc.php @@ -87,7 +87,7 @@ class cronjob_monitor_hd_quota extends cronjob { //* ignore the first 5 lines, process the rest for ($i = 0; $i <= sizeof($df); $i++) { - if ($df[$i] != '') { + if (isset($df[$i]) && $df[$i] != '') { //* Make a array of the data $s1 = preg_split('/[\s]+/', $df[$i]); $s2 = preg_split('/\//', $s1[1]); @@ -108,7 +108,7 @@ class cronjob_monitor_hd_quota extends cronjob { //* ignore the first 5 lines, process the rest for ($i = 0; $i <= sizeof($df); $i++) { - if ($df[$i] != '') { + if (isset($df[$i]) && $df[$i] != '') { //* Make a array of the data $s1 = preg_split('/[\s]+/', $df[$i]); $s2 = preg_split('/\//', $s1[1]); @@ -137,7 +137,7 @@ class cronjob_monitor_hd_quota extends cronjob { //* ignore the first 5 lines, process the rest for ($i = 5; $i <= sizeof($df); $i++) { - if ($df[$i] != '') { + if (isset($df[$i]) && $df[$i] != '') { //* Make a array of the data $s = preg_split('/[\s]+/', $df[$i]); $username = $s[0]; @@ -165,7 +165,7 @@ class cronjob_monitor_hd_quota extends cronjob { //* ignore the first 5 lines, process the rest for ($i = 5; $i <= sizeof($df); $i++) { - if ($df[$i] != '') { + if (isset($df[$i]) && $df[$i] != '') { //* Make a array of the data $s = preg_split('/[\s]+/', $df[$i]); $groupname = $s[0]; -- GitLab