andre 5 bulan lalu
induk
melakukan
e3ad36a72f

+ 20 - 42
app/UI/Client/Setting/Providers/EditSettingDataProvider.php

@@ -115,23 +115,16 @@ class EditSettingDataProvider extends BaseDataProvider
      */
     public function update()
     {
-        logModuleCall(
-            'kerioEmail',
-            __FUNCTION__,
-            $this->formData,
-            'Debug Formdata',
-            $this->params
-        );
         return (new HtmlDataJsonResponse())->setMessageAndTranslate('settingHasBeenUpdated')->setStatusSuccess();
 
         $fieldToProtection = [
             'editmaildomain',
-            'mxthurdata',
-            'spfthurdata',
-            'dmarcthurdata',
-            'dkimthurdata',
-            'dkimname',
-            'zoneid'
+            'zoneid',
+            'editmxactive',
+            'editspf',
+            'editdmarc',
+            'editdkim',
+            'dkimname'
         ];
 
         foreach ($this->formData as $field => &$value)
@@ -140,42 +133,27 @@ class EditSettingDataProvider extends BaseDataProvider
         }
 
         $dnsParams = array(
-            'mxthurdata' => $this->formData['mxthurdata'],
-            'type' => $this->formData['type'],
-            'isEnabled' => $this->formData['status'] === 'active' ? true : false,
-            'manager' => array(
-                'id' => $this->formData['manager'],
-                'type' => 'UserPrincipal'
-            )
+            'maildomain' => $this->formData['editmaildomain'],
+            'mx' => $this->formData['editmxactive'],
+            'spf' => $this->formData['editspf'],
+            'dmarc' => $this->formData['editdmarc'],
+            'dkim' => $this->formData['editdkim'],
+            'dkimname' => $this->formData['dkimname']
         );
 
-        $api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
-        try {
-            $api->login($this->getWhmcsParamByKey('serverhostname'), $this->getWhmcsParamByKey('serverusername'), $this->getWhmcsParamByKey('serverpassword'));
-            $domainID = $api->getDomainId($this->getWhmcsParamByKey('domain'));
-        } catch (KerioApiException $error) {
-            logModuleCall(
-                'kerioEmail',
-                __FUNCTION__,
-                $error,
-                'Debug Error',
-                $error->getMessage()
-            );
-            return ['error' => $error->getMessage()];
-        }
-        try {
-            $result = $api->updateResouce($attr,$this->formData['id']);
-        } catch (KerioApiException $error) {
+        $dns = new DnsHelper();
+
+        $result = $dns->updateDNS($this->formData['zoneid'],$dnsParams);
+        if($result != 'success') {
             logModuleCall(
                 'kerioEmail',
                 __FUNCTION__,
-                $error,
-                'Debug Error',
-                $error->getMessage()
+                $result,
+                'Debug result updateDNS zoneID: ' . $this->formData['zoneid'],
+                $dnsParams
             );
-            return ['error' => $error->getMessage()];
+            return (new HtmlDataJsonResponse())->setMessageAndTranslate('updateHasBeenFailed')->setStatusError();
         }
-        $api->logout();
         return (new HtmlDataJsonResponse())->setMessageAndTranslate('settingHasBeenUpdated')->setStatusSuccess();
     }
 

+ 12 - 21
core/Helper/DnsHelper.php

@@ -115,55 +115,46 @@ class DnsHelper
         return $vars;
     }
 
-    function KerioEmailsetDNS($maildomain,$dnsparams)
+    public function updateDNS($zoneID,$dnsParams)
     {
-        $zoneIDcollection = Capsule::table('dns_manager2_zone')
-            ->select('id')
-            ->where('name', '=', $maildomain)
-            ->get();
-        $zoneIDobj = $zoneIDcollection[0];
-        $zoneID = $zoneIDobj->{'id'};
-        if(!isset($zoneID)) {
-            return 'Error: zone ID not found for domain ' . $maildomain;
-        }
         $dnsZone = localAPI('dnsmanager', array( 'dnsaction' => 'getZone', 'zone_id' => $zoneID));
         if($dnsZone['result'] != 'success') {
             return 'Error: cloud not fetch zone for ID ' . $zoneID;
         }
         $zoneRecords = array();
         $mxRecord = array(
-            'line' => $maildomain.'.|MX|0',
+            'line' => $dnsParams['maildomain'].'.|MX|0',
             'name' => '@',
             'type' => 'MX',
             'class' => 'IN',
             'data' => array(
                 'preference' => '10',
-                'exchange' => $dnsparams['mxthurdata'],
+                'exchange' => $dnsParams['mxt'],
             ),
         );
         array_push($zoneRecords, $mxRecord);
         $spfRecord = array(
-            'line' => $maildomain.'.|TXT|0',
+            'line' => $dnsParams['maildomain'].'.|TXT|0',
             'name' => '@',
             'type' => 'TXT',
             'class' => 'IN',
-            'data' => $dnsparams['spfthurdata']
+            'data' => $dnsParams['spf']
         );
         array_push($zoneRecords, $spfRecord);
         $dmarcRecord = array(
-            'line' => $maildomain.'.|TXT|0',
+            'line' => $dnsParams['maildomain'].'.|TXT|0',
             'name' => '@',
             'type' => 'TXT',
             'class' => 'IN',
-            'data' => $dnsparams['dmarcthurdata']
+            'data' => $dnsParams['dmarc']
         );
         array_push($zoneRecords, $dmarcRecord);
         $dkimRecord = array(
-            'line' => $maildomain.'.|TXT|0',
-            'name' => $dnsparams['dkimname'],
+            'line' => $dnsParams['dkimname'].'.|TXT|0',
+            'name' => $dnsParams['dkimname'],
             'type' => 'TXT',
             'class' => 'IN',
-            'data' => $dnsparams['dkimthurdata']
+            'data' => $dnsParams['dkim']
         );
         array_push($zoneRecords, $dkimRecord);
         foreach($dnsZone['data']->records as $record) {
@@ -174,7 +165,7 @@ class DnsHelper
                 // skip spf
                 if(preg_match('/^v=spf(.*)$/i', trim($record->rdata->txtdata,'"'))) continue; 
                 // skip own dkim
-                if(($dnsparams['dkimname'] == $record->name) && ($dnsparams['dkimthurdata'] == trim($record->rdata->txtdata,'"'))) continue; 
+                if(($dnsParams['dkimname'] == $record->name) && ($dnsParams['dkim'] == trim($record->rdata->txtdata,'"'))) continue; 
             };
             array_push($zoneRecords, $record);
         }
@@ -183,7 +174,7 @@ class DnsHelper
         logModuleCall(
             'kerioEmail',
             __FUNCTION__,
-            $this->params,
+            $zoneID,
             'DEbug',
             $zoneRecords
         );