|
|
@@ -164,6 +164,120 @@ class MyMetricProvider implements ProviderInterface
|
|
|
$usage[$domainName] = $this->wrapUserData($domainData);
|
|
|
|
|
|
}
|
|
|
+ $api->logout();
|
|
|
+ return $usage;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function tenantUsage($tenant)
|
|
|
+ {
|
|
|
+ $api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
|
|
|
+ try {
|
|
|
+ $api->login($this->moduleParams['serverhostname'], $this->moduleParams['serverusername'], $this->moduleParams['serverpassword']);
|
|
|
+ $domains = $api->getDomains(['id','name','aliasList']);
|
|
|
+ } catch (KerioApiException $error) {
|
|
|
+ logModuleCall(
|
|
|
+ 'kerioEmail',
|
|
|
+ __FUNCTION__,
|
|
|
+ $error,
|
|
|
+ 'Debug Error',
|
|
|
+ $error->getMessage()
|
|
|
+ );
|
|
|
+ return ['error' => $error->getMessage()];
|
|
|
+ }
|
|
|
+ $usage = [];
|
|
|
+
|
|
|
+ foreach ($domains as $domain)
|
|
|
+ {
|
|
|
+ $domainName = $domain['name'];
|
|
|
+ $domainID = $domain['id'];
|
|
|
+ $countOfDomainAliases = count($domain['aliasList']);
|
|
|
+ try
|
|
|
+ {
|
|
|
+ $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()];
|
|
|
+ }
|
|
|
+
|
|
|
+ $domainData = [
|
|
|
+ 'mailboxes' => $countOfMailboxes,
|
|
|
+ 'distributionLists' => $countOfDistributionList,
|
|
|
+ 'aliases' => $countOfEmailAliases,
|
|
|
+ 'domainAliases' => $countOfDomainAliases,
|
|
|
+ 'storage' => $storage,
|
|
|
+ ];
|
|
|
+
|
|
|
+ $usage[$domainName] = $this->wrapUserData($domainData);
|
|
|
+
|
|
|
+ }
|
|
|
+ $api->logout();
|
|
|
return $usage;
|
|
|
}
|
|
|
|
|
|
@@ -185,4 +299,59 @@ class MyMetricProvider implements ProviderInterface
|
|
|
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;
|
|
|
+ }
|
|
|
+
|
|
|
}
|