|
@@ -2,15 +2,9 @@
|
|
|
|
|
|
|
|
namespace ThurData\Servers\KerioEmail\App\Libs\Metrics;
|
|
namespace ThurData\Servers\KerioEmail\App\Libs\Metrics;
|
|
|
|
|
|
|
|
-use ThurData\Servers\HetznerVps\App\Libs\HetznerVps\Api;
|
|
|
|
|
-use ThurData\Servers\HetznerVps\App\Libs\HetznerVps\Api\Constants;
|
|
|
|
|
-use ThurData\Servers\KerioEmail\App\Helpers\KerioManager;
|
|
|
|
|
-use ThurData\Servers\KerioEmail\App\Enums\Size;
|
|
|
|
|
-use mysql_xdevapi\DocResult;
|
|
|
|
|
use WHMCS\UsageBilling\Contracts\Metrics\MetricInterface;
|
|
use WHMCS\UsageBilling\Contracts\Metrics\MetricInterface;
|
|
|
use WHMCS\UsageBilling\Contracts\Metrics\ProviderInterface;
|
|
use WHMCS\UsageBilling\Contracts\Metrics\ProviderInterface;
|
|
|
use WHMCS\UsageBilling\Metrics\Metric;
|
|
use WHMCS\UsageBilling\Metrics\Metric;
|
|
|
-use WHMCS\UsageBilling\Metrics\Units\WholeNumber;
|
|
|
|
|
use WHMCS\UsageBilling\Metrics\Usage;
|
|
use WHMCS\UsageBilling\Metrics\Usage;
|
|
|
use WHMCS\UsageBilling\Metrics\Units\GigaBytes;
|
|
use WHMCS\UsageBilling\Metrics\Units\GigaBytes;
|
|
|
use ThurData\Servers\KerioEmail\Api\KerioWhmcs;
|
|
use ThurData\Servers\KerioEmail\Api\KerioWhmcs;
|
|
@@ -60,7 +54,7 @@ class MyMetricProvider implements ProviderInterface
|
|
|
$api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
|
|
$api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
|
|
|
try {
|
|
try {
|
|
|
$api->login($this->moduleParams['serverhostname'], $this->moduleParams['serverusername'], $this->moduleParams['serverpassword']);
|
|
$api->login($this->moduleParams['serverhostname'], $this->moduleParams['serverusername'], $this->moduleParams['serverpassword']);
|
|
|
- $domains = $api->getDomains(['id','name']);
|
|
|
|
|
|
|
+ $domains = $api->getDomains(['id','name','aliasList']);
|
|
|
} catch (KerioApiException $error) {
|
|
} catch (KerioApiException $error) {
|
|
|
logModuleCall(
|
|
logModuleCall(
|
|
|
'kerioEmail',
|
|
'kerioEmail',
|
|
@@ -71,44 +65,94 @@ class MyMetricProvider implements ProviderInterface
|
|
|
);
|
|
);
|
|
|
return ['error' => $error->getMessage()];
|
|
return ['error' => $error->getMessage()];
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- logModuleCall(
|
|
|
|
|
- 'kerioEmail',
|
|
|
|
|
- __FUNCTION__,
|
|
|
|
|
- $this->moduleParams,
|
|
|
|
|
- 'Debug Usage',
|
|
|
|
|
- $domains
|
|
|
|
|
- );
|
|
|
|
|
-
|
|
|
|
|
$usage = [];
|
|
$usage = [];
|
|
|
|
|
+
|
|
|
foreach ($domains as $domain)
|
|
foreach ($domains as $domain)
|
|
|
{
|
|
{
|
|
|
- $domainName = $domain->getName();
|
|
|
|
|
-
|
|
|
|
|
- $mailboxes = $this->getAccounts($domainName);
|
|
|
|
|
- $countOfMailboxes = count($mailboxes);
|
|
|
|
|
-
|
|
|
|
|
- $countOfDistributionList = count($this->getDistributionList($domainName));
|
|
|
|
|
-
|
|
|
|
|
- $countOfEmailAliases = 0;
|
|
|
|
|
-
|
|
|
|
|
- foreach ($mailboxes as $account)
|
|
|
|
|
|
|
+ $domainName = $domain['name'];
|
|
|
|
|
+ $domainID = $domain['id'];
|
|
|
|
|
+ $countOfDomainAliases = count($domain['aliasList']);
|
|
|
|
|
+ try
|
|
|
{
|
|
{
|
|
|
- $countOfEmailAliases += count($account->getAliases());
|
|
|
|
|
|
|
+ $fields = array(
|
|
|
|
|
+ 'loginName',
|
|
|
|
|
+ 'fullName',
|
|
|
|
|
+ 'consumedSize'
|
|
|
|
|
+ );
|
|
|
|
|
+ $mailboxes = $api->getUsers($fields,$domainID);
|
|
|
|
|
+ $countOfMailboxes = count($mailboxes);
|
|
|
|
|
+ $totalUsage = 0;
|
|
|
|
|
+ if ($countOfMailboxes > 0) {
|
|
|
|
|
+ foreach ($mailboxes as $mailboxe) {
|
|
|
|
|
+ switch($mailboxe['consumedSize']['units']) {
|
|
|
|
|
+ case 'Bytes' :
|
|
|
|
|
+ $usage = $mailboxe['consumedSize']['value']/1024/1024;
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'KiloBytes' :
|
|
|
|
|
+ $usage = $mailboxe['consumedSize']['value']/1024;
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'MegaBytes' :
|
|
|
|
|
+ $usage = $mailboxe['consumedSize']['value'];
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'GigaBytes' :
|
|
|
|
|
+ $usage = $mailboxe['consumedSize']['value']*1024;
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ $totalUsage += $usage;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ $storage = $totalUsage == 0 ? 0 : round($totalUsage);
|
|
|
|
|
+ } catch (KerioApiException $error) {
|
|
|
|
|
+ logModuleCall(
|
|
|
|
|
+ 'kerioEmail',
|
|
|
|
|
+ __FUNCTION__,
|
|
|
|
|
+ $error,
|
|
|
|
|
+ 'Debug Error',
|
|
|
|
|
+ $error->getMessage()
|
|
|
|
|
+ );
|
|
|
|
|
+ return ['error' => $error->getMessage()];
|
|
|
|
|
+ }
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ $fields = array(
|
|
|
|
|
+ "id",
|
|
|
|
|
+ "name");
|
|
|
|
|
+ $mailingLists = $api->getMailingLists($fields,$domainID);
|
|
|
|
|
+ $countOfDistributionList = count($mailingLists);
|
|
|
|
|
+ } catch (KerioApiException $error) {
|
|
|
|
|
+ logModuleCall(
|
|
|
|
|
+ 'kerioEmail',
|
|
|
|
|
+ __FUNCTION__,
|
|
|
|
|
+ $error,
|
|
|
|
|
+ 'Debug Error',
|
|
|
|
|
+ $error->getMessage()
|
|
|
|
|
+ );
|
|
|
|
|
+ return ['error' => $error->getMessage()];
|
|
|
|
|
+ }
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ $fields = array(
|
|
|
|
|
+ "id",
|
|
|
|
|
+ "name");
|
|
|
|
|
+ $aliases = $api->getAliases($fields,$this->maildomainID);
|
|
|
|
|
+ $countOfEmailAliases = count($aliases);
|
|
|
|
|
+ } catch (KerioApiException $error) {
|
|
|
|
|
+ logModuleCall(
|
|
|
|
|
+ 'kerioEmail',
|
|
|
|
|
+ __FUNCTION__,
|
|
|
|
|
+ $error,
|
|
|
|
|
+ 'Debug Error',
|
|
|
|
|
+ $error->getMessage()
|
|
|
|
|
+ );
|
|
|
|
|
+ return ['error' => $error->getMessage()];
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- $domainAliases = $this->getDomainAliases($domainName);
|
|
|
|
|
- $countOfDomainAliases = count($domainAliases);
|
|
|
|
|
-
|
|
|
|
|
- $storage = $this->getDomainUsage($domainName);
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
$domainData = [
|
|
$domainData = [
|
|
|
'mailboxes' => $countOfMailboxes,
|
|
'mailboxes' => $countOfMailboxes,
|
|
|
'distributionLists' => $countOfDistributionList,
|
|
'distributionLists' => $countOfDistributionList,
|
|
|
'aliases' => $countOfEmailAliases,
|
|
'aliases' => $countOfEmailAliases,
|
|
|
'domainAliases' => $countOfDomainAliases,
|
|
'domainAliases' => $countOfDomainAliases,
|
|
|
- 'storage' => round($storage / Size::B_TO_GB, 2),
|
|
|
|
|
|
|
+ 'storage' => $storage,
|
|
|
];
|
|
];
|
|
|
|
|
|
|
|
$usage[$domainName] = $this->wrapUserData($domainData);
|
|
$usage[$domainName] = $this->wrapUserData($domainData);
|
|
@@ -117,36 +161,6 @@ class MyMetricProvider implements ProviderInterface
|
|
|
return $usage;
|
|
return $usage;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public function tenantUsage($tenant)
|
|
|
|
|
- {
|
|
|
|
|
- $mailboxes = $this->getAccounts($tenant);
|
|
|
|
|
- $countOfMailboxes = count($mailboxes);
|
|
|
|
|
-
|
|
|
|
|
- $countOfEmailAliases = 0;
|
|
|
|
|
-
|
|
|
|
|
- foreach ($mailboxes as $account)
|
|
|
|
|
- {
|
|
|
|
|
- $countOfEmailAliases += count($account->getAliases());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $countOfDistributionList = count($this->getDistributionList($tenant));
|
|
|
|
|
-
|
|
|
|
|
- $domainAliases = $this->getDomainAliases($tenant);
|
|
|
|
|
- $countOfDomainAliases = count($domainAliases);
|
|
|
|
|
-
|
|
|
|
|
- $storage = $this->getDomainUsage($tenant);
|
|
|
|
|
-
|
|
|
|
|
- $userData = [
|
|
|
|
|
- 'mailboxes' => $countOfMailboxes,
|
|
|
|
|
- 'distributionLists' => $countOfDistributionList,
|
|
|
|
|
- 'aliases' => $countOfEmailAliases,
|
|
|
|
|
- 'domainAliases' => $countOfDomainAliases,
|
|
|
|
|
- 'storage' => round($storage / Size::B_TO_GB, 2),
|
|
|
|
|
- ];
|
|
|
|
|
-
|
|
|
|
|
- return $this->wrapUserData($userData);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
private function wrapUserData($data)
|
|
private function wrapUserData($data)
|
|
|
{
|
|
{
|
|
|
$wrapped = [];
|
|
$wrapped = [];
|
|
@@ -165,59 +179,4 @@ class MyMetricProvider implements ProviderInterface
|
|
|
return $wrapped;
|
|
return $wrapped;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private function getAccounts($tenant)
|
|
|
|
|
- {
|
|
|
|
|
- $accounts =(new KerioManager())
|
|
|
|
|
- ->getApiByServer($this->moduleParams['serverid'])
|
|
|
|
|
- ->soap
|
|
|
|
|
- ->repository()
|
|
|
|
|
- ->accounts()
|
|
|
|
|
- ->getByDomainName($tenant);
|
|
|
|
|
-
|
|
|
|
|
- return $accounts;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- private function getDomainAliases($tenant)
|
|
|
|
|
- {
|
|
|
|
|
- $domainAliases =(new KerioManager())
|
|
|
|
|
- ->getApiByServer($this->moduleParams['serverid'])
|
|
|
|
|
- ->soap
|
|
|
|
|
- ->repository()
|
|
|
|
|
- ->domains
|
|
|
|
|
- ->getAliases($tenant);
|
|
|
|
|
-
|
|
|
|
|
- return $domainAliases;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- private function getDomainUsage($tenant)
|
|
|
|
|
- {
|
|
|
|
|
- $accounts =(new KerioManager())
|
|
|
|
|
- ->getApiByServer($this->moduleParams['serverid'])
|
|
|
|
|
- ->soap
|
|
|
|
|
- ->repository()
|
|
|
|
|
- ->accounts
|
|
|
|
|
- ->getUsages($tenant);
|
|
|
|
|
-
|
|
|
|
|
- $totalUsage = 0;
|
|
|
|
|
- foreach ($accounts as $account)
|
|
|
|
|
- {
|
|
|
|
|
- $usage = $account->getUsed();
|
|
|
|
|
- $totalUsage += $usage;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- return $totalUsage;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- private function getDistributionList($tenant)
|
|
|
|
|
- {
|
|
|
|
|
- $distributionList =(new KerioManager())
|
|
|
|
|
- ->getApiByServer($this->moduleParams['serverid'])
|
|
|
|
|
- ->soap
|
|
|
|
|
- ->repository()
|
|
|
|
|
- ->lists
|
|
|
|
|
- ->getAllDistributionListsByDomain($tenant);
|
|
|
|
|
-
|
|
|
|
|
- return $distributionList;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
}
|
|
}
|