andre hace 2 años
padre
commit
cc24ab011c
Se han modificado 1 ficheros con 34 adiciones y 2 borrados
  1. 34 2
      kerioEmail_mx.php

+ 34 - 2
kerioEmail_mx.php

@@ -140,11 +140,43 @@ function KerioEmail_setMX($params)
         'class' => 'IN',
         'data' => array(
             'preference' => '10',
-//            'exchange' => $params['serverhostname'],
             'exchange' => MX,
         ),
     );
     array_push($zoneRecords, $mxRecord);
+    foreach($dnsZone['data']->records as $record) {
+    if($record->type != 'MX') {
+            array_push($zoneRecords, $record);
+        };
+    }
+    $result = localAPI('dnsmanager' ,
+        array(
+            'dnsaction' => 'updateZone',
+            'zone_id' => $zoneID,
+            'records' => $zoneRecords,
+        )
+    );
+    if($result['result'] != 'success') {
+        return 'Error: cloud not update zone for ID ' . $zoneID;
+    }
+    return 'success';
+}
+function KerioEmail_setSPF($params)
+{
+    $zoneIDcollection = Capsule::table('dns_manager2_zone')
+        ->select('id')
+        ->where('name', '=', $params['domain'])
+        ->get();
+    $zoneIDobj = $zoneIDcollection[0];
+    $zoneID = $zoneIDobj->{'id'};
+    if(!isset($zoneID)) {
+        return 'Error: zone ID not found for domain ' . $params['domain'];
+    }
+    $dnsZone = localAPI('dnsmanager', array( 'dnsaction' => 'getZone', 'zone_id' => $zoneID));
+    if($dnsZone['result'] != 'success') {
+        return 'Error: cloud not fetch zone for ID ' . $zoneID;
+    }
+    $zoneRecords = array();
     $spfRecord = array(
             'line' => $params['domain'].'.|TXT|0',
             'name' => '@',
@@ -154,7 +186,7 @@ function KerioEmail_setMX($params)
         );
     array_push($zoneRecords, $spfRecord);
     foreach($dnsZone['data']->records as $record) {
-    if(($record->type != 'MX') && ($record->data != SPF)) {
+        if(!str_starts_with($record->data, 'v=spf')) {
             array_push($zoneRecords, $record);
         };
     }