#1 extended settings

Нээсэн
thurdata 192-ийг thurdata/settings-extended-оос thurdata/settings руу нэгтгэхийг хүсэлт
25 өөрчлөгдсөн 514 нэмэгдсэн , 272 устгасан
  1. 2 0
      app/Http/Actions/CreateAccount.php
  2. 1 1
      app/UI/Admin/Templates/custom/modals/modalExtendedTabsEdit.tpl
  3. 29 17
      app/UI/Client/DistributionList/Providers/EditListDataProvider.php
  4. 0 1
      app/UI/Client/Setting/Buttons/EditSettingButton.php
  5. 7 66
      app/UI/Client/Setting/Forms/EditSettingForm.php
  6. 8 47
      app/UI/Client/Setting/Forms/InfoForm.php
  7. 2 3
      app/UI/Client/Setting/Modals/EditSettingModal.php
  8. 2 2
      app/UI/Client/Setting/Modals/InfoModal.php
  9. 15 1
      app/UI/Client/Setting/Pages/Settings.php
  10. 66 24
      app/UI/Client/Setting/Providers/EditSettingDataProvider.php
  11. 23 15
      app/UI/Client/Setting/Providers/InfoSettingDataProvider.php
  12. 18 11
      app/UI/Client/Setting/Sections/AdditionalSection.php
  13. 19 4
      app/UI/Client/Setting/Sections/EditAdditionalSection.php
  14. 73 9
      app/UI/Client/Setting/Sections/EditGeneralSection.php
  15. 69 7
      app/UI/Client/Setting/Sections/GeneralSection.php
  16. 27 26
      app/UI/Client/Templates/assets/js/setting/index.js
  17. 9 17
      core/Helper/DnsHelper.php
  18. 14 0
      core/UI/Widget/Forms/Fields/Info.php
  19. 48 1
      langs/english.php
  20. 44 16
      langs/german.php
  21. 1 1
      templates/admin/ui/core/default/widget/modals/baseEditModal.tpl
  22. 1 1
      templates/admin/ui/core/default/widget/modals/modalTabsEdit.tpl
  23. 1 1
      templates/client/default/controlers/main.tpl
  24. 34 0
      templates/client/default/ui/core/default/widget/forms/fields/info.tpl
  25. 1 1
      templates/client/default/ui/core/default/widget/modals/baseEditModal.tpl

+ 2 - 0
app/Http/Actions/CreateAccount.php

@@ -145,6 +145,8 @@ class CreateAccount extends AddonController
             $attr['domainQuota']['diskSizeLimit']['isActive'] = FALSE;
         }
         $attr['domainQuota']['email'] = $params['clientsdetails']['email'];
+        // enable DKIM signature by default
+        $attr['isDkimEnabled'] = true;
         try {
             $result = $api->modifyDomain($domainID, $attr);
         } catch (KerioApiException $error) {

+ 1 - 1
app/UI/Admin/Templates/custom/modals/modalExtendedTabsEdit.tpl

@@ -77,4 +77,4 @@
             {/literal}{/if}
         </div>
     </div>
-</div>
+</div>

+ 29 - 17
app/UI/Client/DistributionList/Providers/EditListDataProvider.php

@@ -107,21 +107,24 @@ class EditListDataProvider extends AddListDataProvider
         }
 
         $api->logout();
-
+        $allMembers = array();
+        $intMembers = array();
+        $extMembers = array();
+        $users = array();
         foreach($members as $member) {
             if($member['kind'] === 'Moderator') {
                 $this->data['moderator'] = $member['emailAddress'];
             } elseif ($member['hasId'] == TRUE) {
-                $intMembers[] = $member['emailAddress'];
-                $allMembers[] = $member['emailAddress'];
+                array_push($intMembers,$member['emailAddress']);
+                array_push($allMembers, $member['emailAddress']);
             } else {
-                $extMembers[] = $member['emailAddress'];
-                $allMembers[] = $member['emailAddress'];
+                array_push($extMembers, $member['emailAddress']);
+                array_push($allMembers, $member['emailAddress']);
             }
         }
         $this->data['oldModerator'] = $this->data['moderator'];
         foreach($accounts as $account) {
-            $users[] = $account['loginName'] . '@' . $domain;
+            array_push($users, $account['loginName'] . '@' . $domain);
         }
 
         $lang = di('lang');
@@ -159,7 +162,6 @@ class EditListDataProvider extends AddListDataProvider
             'ThisList' => $lang->absoluteT('ThisList'),
             'SenderThisList' => $lang->absoluteT('SenderThisList')
         ];
-
         foreach($intMembers as $intMember) {
             $this->data['memberList'][] = $intMember;
         }
@@ -197,10 +199,16 @@ class EditListDataProvider extends AddListDataProvider
         $paramsSet['posting']['memberPosting'] = $this->formData['memberPosting'];
         $paramsSet['posting']['nonMemberPosting'] = $this->formData['nonMemberPosting'];
         $paramsSet['posting']['sendErrorsToModerator'] = $this->formData['sendErrorsToModerator'] === 'on' ? true : false;
+        // get old and new members
+        $oldMembers = $this->formData['memberListActually'] ?? [];
+        $intMembers = $this->formData['memberList'] ?? [];
         // find new internal members to add
-        foreach($this->formData['memberList'] as $intMember) {
-            if(!in_array($intMember, $this->formData['memberListActually'])) {
-                $addIntMembers[] = $intMember;
+        $addIntMembers = array();
+        if(!empty($intMembers)){
+            foreach($intMembers as $intMember) {
+                if(!in_array($intMember, $oldMembers)) {
+                    array_push($addIntMembers, $intMember);
+                }
             }
         }
         // prepare
@@ -214,11 +222,13 @@ class EditListDataProvider extends AddListDataProvider
             }
         }
         // find new external members to add
+        $addExtMembers = array();
+        $customMembers = array();
         if(!empty($this->formData['customMember'])){
             $customMembers = explode(',',$this->formData['customMember']);
             foreach($customMembers as $extMember) {
-                if(!in_array($extMember, $this->formData['memberListActually'])) {
-                    $addExtMembers[] = $extMember;
+                if(!in_array($extMember, $oldMembers)) {
+                    array_push($addExtMembers, $extMember);
                 }
             }
         }
@@ -233,9 +243,11 @@ class EditListDataProvider extends AddListDataProvider
             }
         }
         // find members to remove
-        foreach($this->formData['memberListActually'] as $oldMember) {
-            if((!in_array($oldMember,$this->formData['memberList'])) && (!in_array($oldMember,$customMembers))){
-                $delMembers[] = $oldMember;
+        if(!empty($oldMembers)) {
+            foreach($oldMembers as $oldMember) {
+                if((!in_array($oldMember,$intMembers)) && (!in_array($oldMember,$customMembers))){
+                    $delMembers[] = $oldMember;
+                }
             }
         }
         // prepare
@@ -263,7 +275,7 @@ class EditListDataProvider extends AddListDataProvider
                 );
             }
         }
-
+        // process
         $api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
         try {
             $api->login($this->getWhmcsParamByKey('serverhostname'), $this->getWhmcsParamByKey('serverusername'), $this->getWhmcsParamByKey('serverpassword'));
@@ -290,7 +302,7 @@ class EditListDataProvider extends AddListDataProvider
             );
             return ['error' => $error->getMessage()];
         }
-        // delete mebers
+        // delete members
         if($paramsDel){
             try {
                 $api->delMlUserList($paramsDel, $this->formData['id']);

+ 0 - 1
app/UI/Client/Setting/Buttons/EditSettingButton.php

@@ -24,7 +24,6 @@ class EditSettingButton extends ButtonDataTableModalAction implements ClientArea
     {
         $this->initIds('editSettingButton');
         $this->initLoadModalAction(new EditSettingModal());
-        $this->setDisableByColumnValue("selfdns ", 0);
     }
 
 }

+ 7 - 66
app/UI/Client/Setting/Forms/EditSettingForm.php

@@ -13,6 +13,10 @@ use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\BaseForm;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\FormConstants;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Buttons\ButtonCustomAction;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Buttons\ButtonModal;
+use ThurData\Servers\KerioEmail\App\UI\Admin\Custom\Forms\SortedFieldForm;
+use ThurData\Servers\KerioEmail\App\UI\Client\Setting\Sections\EditGeneralSection;
+use ThurData\Servers\KerioEmail\App\UI\Client\Setting\Sections\EditAdditionalSection;
+use ThurData\Servers\KerioEmail\Core\Helper\DnsHelper;
 
 use function ThurData\Servers\KerioEmail\Core\Helper\di;
 
@@ -24,7 +28,7 @@ use function ThurData\Servers\KerioEmail\Core\Helper\di;
  * Time: 09:29
  * Class EditSettingForm
  */
-class EditSettingForm extends BaseForm implements ClientArea
+class EditSettingForm extends SortedFieldForm implements ClientArea
 {
     use FormExtendedTrait;
     
@@ -43,70 +47,7 @@ class EditSettingForm extends BaseForm implements ClientArea
 
     public function initFields()
     {
-        di('lang')->absoluteT('dnseditmessage') ? $message = di('lang')->absoluteT('dnseditmessage') :
-        $message  = 'Settings for <b id="editalertmaildomain" class="lu-alert--lg"></b><br><br>
-            <i class="fas fa-info fa-fw"></i> Incorrect DNS entries lead to difficulties sending and receiving emails. 
-            To ensure that your mail server is functioning properly, it\'s best to follow our recommendations.';
-        $this->addInternalAlert($message, 'warning', 100);
-
-        $field = new Hidden();
-        $field->setId('id');
-        $field->setName('id');
-        $this->addField($field);
-        $field = new Hidden();
-        $field->setId('editmaildomain');
-        $field->setName('editmaildomain');
-        $this->addField($field);
-        $field = new Hidden();
-        $field->setId('zoneid');
-        $field->setName('zoneid');
-        $this->addField($field);
-        $field = new Hidden();
-        $field->setId('dnsok');
-        $field->setName('dnsok');
-        $this->addField($field);
-        $field = new Hidden();
-        $field->setId('editmxthurdata');
-        $field->setName('editmxthurdata');
-        $this->addField($field);
-        $field = new Hidden();
-        $field->setId('editspfthurdata');
-        $field->setName('editspfthurdata');
-        $this->addField($field);
-        $field = new Hidden();
-        $field->setId('editdmarcthurdata');
-        $field->setName('editdmarcthurdata');
-        $this->addField($field);
-        $field = new Hidden();
-        $field->setId('editdkimthurdata');
-        $field->setName('editdkimthurdata');
-        $this->addField($field);
-        $field = new Hidden();
-        $field->setId('dkimname');
-        $field->setName('dkimname');
-        $this->addField($field);
-
-        $field = new Text('editmxactive');
-        $field->setId('editmxactive');
-        $field->setName('editmxactive');
-        $this->addField($field);
-        $field = new Text('editspf');
-        $field->setId('editspf');
-        $field->setName('editspf');
-        $this->addField($field);
-        $field = new Text('editdmarc');
-        $field->setId('editdmarc');
-        $field->setName('editdmarc');
-        $this->addField($field);
-        $field = new Text('editdkim');
-        $field->setId('editdkim');
-        $field->setName('editdkim');
-        $this->addField($field);
-
-        $defaults = new Switcher('setDefaults');
-        $this->addField($defaults);
-//  todo: additional section containing Kerio Domain settings like AD integration
-//        $this->addSection(new EditGeneralSection());
-//        $this->addSection(new EditAdditionalSection());
+        $this->addSection(new EditGeneralSection());
+        $this->addSection(new EditAdditionalSection());
     }
 }

+ 8 - 47
app/UI/Client/Setting/Forms/InfoForm.php

@@ -5,15 +5,13 @@ use ThurData\Servers\KerioEmail\App\Traits\FormExtendedTrait;
 use ThurData\Servers\KerioEmail\Core\UI\Traits\FormDataProvider;
 use ThurData\Servers\KerioEmail\App\UI\Client\Setting\Providers\InfoSettingDataProvider;
 use ThurData\Servers\KerioEmail\Core\UI\Interfaces\ClientArea;
-use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Hidden;
-use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\BaseForm;
-use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Sections\InputGroup;
-use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\InputGroupElements;
-
+use ThurData\Servers\KerioEmail\App\UI\Admin\Custom\Forms\SortedFieldForm;
+use ThurData\Servers\KerioEmail\App\UI\Client\Setting\Sections\AdditionalSection;
+use ThurData\Servers\KerioEmail\App\UI\Client\Setting\Sections\GeneralSection;
+use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\FormConstants;
 use function ThurData\Servers\KerioEmail\Core\Helper\di;
 
-
-class InfoForm extends BaseForm implements ClientArea
+class InfoForm extends SortedFieldForm implements ClientArea
 {
     use FormExtendedTrait;
     use FormDataProvider;
@@ -21,7 +19,7 @@ class InfoForm extends BaseForm implements ClientArea
     public function initContent()
     {
         $this->initIds('infoForm');
-        $this->setFormType('info');
+        $this->setFormType(FormConstants::READ);
         $this->setProvider(new InfoSettingDataProvider());
         $this->initFields();
         $this->loadDataToForm();
@@ -34,45 +32,8 @@ class InfoForm extends BaseForm implements ClientArea
 
     private function initFields()
     {
-        di('lang')->absoluteT('dnsinfomessage') ? $message = di('lang')->absoluteT('dnsinfomessage') :
-        $message = 'DNS Informations for <b id="infoalertmaildomain" class="lu-alert--lg"></b>
-            <div id="addalertheader" class="lu-alert--lg"></div>
-            <div id="addmxmessage"></div>
-            <div id="addspfmessage"></div>
-            <div id="adddmarcmessage"></div>
-            <div id="adddkimmessage"></div><br><br>
-            <div id="addalertfooter"></div>
-            <div class="lu-form-group">
-                <label class="lu-form-label">DNS Record Type</label>
-                <div class="lu-input-group" style="background:#eeeeee">
-                    <input type="text" value="ThurData Recommended" readonly="readonly" class="lu-form-control" style="">
-                    <div class="lu-input-group__addon">&hArr;</div>
-                    <input type="text" value="Current Value" readonly="readonly" class="lu-form-control" style="">
-                </div>
-            </div>';
-        $this->addInternalAlert($message, null, 100);
-        $row = new InputGroup('MX');
-        $row->addInputComponent((new InputGroupElements\Text('mxthurdata'))->addHtmlAttribute('readonly','true'));
-        $row->addInputAddon('', false, '&hArr;');
-        $row->addInputComponent((new InputGroupElements\Text('mxactive'))->addHtmlAttribute('readonly','true'));
-        $this->addSection($row);
-        $row = new InputGroup('SPF');
-        $row->addInputComponent((new InputGroupElements\Text('spfthurdata'))->addHtmlAttribute('readonly','true'));
-        $row->addInputAddon('', false, '&hArr;');
-        $row->addInputComponent((new InputGroupElements\Text('spf'))->addHtmlAttribute('readonly','true'));
-        $this->addSection($row);
-        $row = new InputGroup('DMARC');
-        $row->addInputComponent((new InputGroupElements\Text('dmarcthurdata'))->addHtmlAttribute('readonly','true'));
-        $row->addInputAddon('', false, '&hArr;');
-        $row->addInputComponent((new InputGroupElements\Text('dmarc'))->addHtmlAttribute('readonly','true'));
-        $this->addSection($row);
-        $row = new InputGroup('DKIM');
-        $row->addInputComponent((new InputGroupElements\Text('dkimthurdata'))->addHtmlAttribute('readonly','true'));
-        $row->addInputAddon('', false, '&hArr;');
-        $row->addInputComponent((new InputGroupElements\Text('dkim'))->addHtmlAttribute('readonly','true'));
-        $this->addSection($row);
-        $this->generateDoubleSection([new Hidden('infomaildomain'), new Hidden('id')]);
-        $this->generateDoubleSection([new Hidden('selfdns'), new Hidden('dnsok')]);
+        $this->addSection(new GeneralSection());
+        $this->addSection(new AdditionalSection());
 
     }
 }

+ 2 - 3
app/UI/Client/Setting/Modals/EditSettingModal.php

@@ -4,7 +4,7 @@ namespace ThurData\Servers\KerioEmail\App\UI\Client\Setting\Modals;
 
 use ThurData\Servers\KerioEmail\App\UI\Client\Setting\Forms\EditSettingForm;
 use ThurData\Servers\KerioEmail\Core\UI\Interfaces\ClientArea;
-use ThurData\Servers\KerioEmail\Core\UI\Widget\Modals\BaseEditModal;
+use ThurData\Servers\KerioEmail\App\UI\Admin\Custom\Modals\ModalExtendedTabsEdit;
 
 /**
  *
@@ -14,7 +14,7 @@ use ThurData\Servers\KerioEmail\Core\UI\Widget\Modals\BaseEditModal;
  * Time: 09:30
  * Class EditSettingModal
  */
-class EditSettingModal extends BaseEditModal implements ClientArea
+class EditSettingModal extends ModalExtendedTabsEdit implements ClientArea
 {
     protected $id    = 'editSettingModal';
     protected $name  = 'editSettingModal';
@@ -23,6 +23,5 @@ class EditSettingModal extends BaseEditModal implements ClientArea
     public function initContent()
     {
         $this->addForm(new EditSettingForm());
-//        $this->addForm(new InfoForm());
     }
 }

+ 2 - 2
app/UI/Client/Setting/Modals/InfoModal.php

@@ -6,9 +6,9 @@ use ThurData\Servers\KerioEmail\App\UI\Client\Setting\Forms\InfoForm;
 use ThurData\Servers\KerioEmail\Core\UI\Interfaces\ClientArea;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Buttons\ModalActionButtons\BaseCancelButton;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Buttons\ModalActionButtons\BaseRedirectButton;
-use ThurData\Servers\KerioEmail\Core\UI\Widget\Modals\BaseEditModal;
+use ThurData\Servers\KerioEmail\App\UI\Admin\Custom\Modals\ModalExtendedTabsEdit;
 
-class InfoModal extends BaseEditModal implements ClientArea
+class InfoModal extends ModalExtendedTabsEdit implements ClientArea
 {
 
     protected $id    = 'infoModal';

+ 15 - 1
app/UI/Client/Setting/Pages/Settings.php

@@ -262,7 +262,21 @@ class Settings extends DataTable implements ClientArea
                     }
                 }
             }
-            in_array($this->domainKey, $dnsRecords['dkim']) ? $dkim = 'set' : $dkim = 'unset';
+            $dkim = 'unset';
+            if(empty($dnsRecords['dkim'])) {
+                $dkimmulti = false;
+            } else {
+                count($dnsRecords['dkim']) > 1 ? $dkimmulti = true : $dkimmulti = false;
+                foreach($dnsRecords['dkim'] as $dkimRecord) {
+                    if($dkimRecord[0] == $this->dkimName){
+                        if($dkimRecord[1] == $this->domainKey) {
+                            $dkim = 'set';
+                        } else {
+                            $dkim = 'wrong';
+                        }
+                    }
+                }
+            }
             $tmp = [
                 'id' => $domain,
                 'domain' => $domain,

+ 66 - 24
app/UI/Client/Setting/Providers/EditSettingDataProvider.php

@@ -31,6 +31,7 @@ class EditSettingDataProvider extends BaseDataProvider
         try {
             $api->login($this->getWhmcsParamByKey('serverhostname'), $this->getWhmcsParamByKey('serverusername'), $this->getWhmcsParamByKey('serverpassword'));
             $dkimSet = $api->getDkimDnsRecord($maildomain);
+            $securitys = $api->getDomains(['id','name','isDkimEnabled','twoFAEnabled']);
         } catch (KerioApiException $error) {
             logModuleCall(
                 'kerioEmail',
@@ -42,6 +43,14 @@ class EditSettingDataProvider extends BaseDataProvider
             return ['error' => $error->getMessage()];
         }
         $api->logout();
+        // find own domain
+        foreach($securitys as $security) {
+            if($security['name'] === $maildomain){ 
+                $domainID = $security['id'];
+                $security['twoFAEnabled'] == true ? $tfaenabled = 'on' : $tfaenabled = 'off' ;
+                $security['isDkimEnabled'] == true ? $dkimsigenabled = 'on' : $dkimsigenabled = 'off';
+            }
+        }
         // format dkim response
         $dkimArray = explode(PHP_EOL,$dkimSet['detail']);
         $dkimValue = explode(":",$dkimArray[1]);
@@ -86,12 +95,16 @@ class EditSettingDataProvider extends BaseDataProvider
             count($dnsRecords['dmarc']) > 1 ? $dmarcmulti = true : $dmarcmulti = false;
             $dmarc = implode(' ',$dnsRecords['dmarc']);
         }
+        $dkim = 'unset';
         if(empty($dnsRecords['dkim'])) {
-            $dkim = 'unset';
             $dkimmulti = false;
         } else {
             count($dnsRecords['dkim']) > 1 ? $dkimmulti = true : $dkimmulti = false;
-            $dkim = implode(' ',$dnsRecords['dkim']);
+            foreach($dnsRecords['dkim'] as $dkimRecord) {
+                if($dkimRecord[0] == $this->dkimName) {
+                    $dkim = $dkimRecord[1];
+                }
+            }
         }
         if(in_array($this->mxthurdata, $dnsRecords['mx'])){
             if($this->spfConfig == $spf && $this->dmarcConfig == $dmarc && in_array($this->domainKey, $dnsRecords['dkim'])){
@@ -118,7 +131,10 @@ class EditSettingDataProvider extends BaseDataProvider
             'mxmulti' => $mxmulti,
             'dkimmulti' => $dkimmulti,
             'dmarcmulti' => $dmarcmulti,
-            'spfmulti' => $spfmulti
+            'spfmulti' => $spfmulti,
+            'tfaenabled' => $tfaenabled,
+            'dkimsigenabled' => $dkimsigenabled,
+            'domainid' => $domainID
         ];
     }
 
@@ -134,7 +150,10 @@ class EditSettingDataProvider extends BaseDataProvider
             'editspf',
             'editdmarc',
             'editdkim',
-            'dkimname'
+            'dkimname',
+            'tfaenabled',
+            'dkimsigenabled',
+            'domainid'
         ];
 
         foreach ($this->formData as $field => &$value)
@@ -142,27 +161,50 @@ class EditSettingDataProvider extends BaseDataProvider
             $value = in_array($field, $fieldToProtection) ? htmlentities($value) : $value;
         }
 
-        $dnsParams = array(
-            'maildomain' => $this->formData['editmaildomain'],
-            'mx' => $this->formData['editmxactive'],
-            'spf' => $this->formData['editspf'],
-            'dmarc' => $this->formData['editdmarc'],
-            'dkim' => $this->formData['editdkim'],
-            'dkimname' => $this->formData['dkimname']
-        );
-
-        $dns = new DnsHelper();
-
-        $result = $dns->updateDNS($this->formData['zoneid'],$dnsParams);
-        if($result != 'success') {
-            logModuleCall(
-                'kerioEmail',
-                __FUNCTION__,
-                $result,
-                'Debug result updateDNS zoneID: ' . $this->formData['zoneid'],
-                $dnsParams
+        $maildomain = $this->actionElementId;
+        $domain = $this->getWhmcsParamByKey('domain');
+        if ($maildomain == $domain) {
+            $this->formData['dkimsigenabled'] == 'on' ? $attr['isDkimEnabled'] = true : $attr['isDkimEnabled'] = false;
+            $this->formData['tfaenabled'] == 'on' ? $attr['twoFAEnabled'] = true : $attr['twoFAEnabled'] = false;
+            $api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
+            try {
+                $api->login($this->getWhmcsParamByKey('serverhostname'), $this->getWhmcsParamByKey('serverusername'), $this->getWhmcsParamByKey('serverpassword'));
+                $result = $api->modifyDomain($this->formData['domainid'], $attr);
+            } catch (KerioApiException $error) {
+                logModuleCall(
+                    'kerioEmail',
+                    __FUNCTION__,
+                    $error,
+                    'Debug Error',
+                    $error->getMessage()
+                );
+                return (new HtmlDataJsonResponse())->setMessageAndTranslate('updateHasBeenFailed')->setStatusError();
+            }
+            $api->logout();
+        }
+        if ($this->formData['zoneid'] > 0 ){
+            $dnsParams = array(
+                'maildomain' => $this->formData['editmaildomain'],
+                'mx' => $this->formData['editmxactive'],
+                'spf' => $this->formData['editspf'],
+                'dmarc' => $this->formData['editdmarc'],
+                'dkim' => $this->formData['editdkim'],
+                'dkimname' => $this->formData['dkimname']
             );
-            return (new HtmlDataJsonResponse())->setMessageAndTranslate('updateHasBeenFailed')->setStatusError();
+
+            $dns = new DnsHelper();
+
+            $result = $dns->updateDNS($this->formData['zoneid'],$dnsParams);
+            if($result != 'success') {
+                logModuleCall(
+                    'kerioEmail',
+                    __FUNCTION__,
+                    $result,
+                    'Debug result updateDNS zoneID: ' . $this->formData['zoneid'],
+                    $dnsParams
+                );
+                return (new HtmlDataJsonResponse())->setMessageAndTranslate('updateHasBeenFailed')->setStatusError();
+            }
         }
         return (new HtmlDataJsonResponse())->setMessageAndTranslate('settingHasBeenUpdated')->setStatusSuccess();
     }

+ 23 - 15
app/UI/Client/Setting/Providers/InfoSettingDataProvider.php

@@ -22,11 +22,13 @@ class InfoSettingDataProvider extends BaseDataProvider
 
     public function read()
     {
+        $domain = $this->getWhmcsParamByKey('domain');
         $maildomain = $this->actionElementId;
         $api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
         try {
             $api->login($this->getWhmcsParamByKey('serverhostname'), $this->getWhmcsParamByKey('serverusername'), $this->getWhmcsParamByKey('serverpassword'));
             $dkimSet = $api->getDkimDnsRecord($maildomain);
+            $securitys = $api->getDomains(['id','name','isDkimEnabled','twoFAEnabled']);
         } catch (KerioApiException $error) {
             logModuleCall(
                 'kerioEmail',
@@ -38,6 +40,14 @@ class InfoSettingDataProvider extends BaseDataProvider
             return ['error' => $error->getMessage()];
         }
         $api->logout();
+        // find own domain
+        foreach($securitys as $security) {
+            if($security['name'] === $domain){ 
+                $domainID = $security['id'];
+                $security['twoFAEnabled'] == true ? $tfaenabled = 'on' : $tfaenabled = 'off' ;
+                $security['isDkimEnabled'] == true ? $dkimsigenabled = 'on' : $dkimsigenabled = 'off';
+            }
+        }
         // format dkim response
         $dkimArray = explode(PHP_EOL,$dkimSet['detail']);
         $dkimValue = explode(":",$dkimArray[1]);
@@ -61,15 +71,6 @@ class InfoSettingDataProvider extends BaseDataProvider
         $dnsRecords = $dns->getRecords($maildomain);
         $dnsRecords['selfdns'] ? $selfDns = 1 : $selfDns = 0;
         $this->mxthurdata = $this->getWhmcsParamByKey('serverhostname');
-
-        logModuleCall(
-            'kerioEmail',
-            __FUNCTION__,
-            $dnsRecords,
-            'DEbug',
-            $this->mxthurdata
-        );
-
         if(empty($dnsRecords['mx'])){
             $mx = 'unset';
             $mxmulti = false;
@@ -91,18 +92,22 @@ class InfoSettingDataProvider extends BaseDataProvider
             count($dnsRecords['dmarc']) > 1 ? $dmarcmulti = true : $dmarcmulti = false;
             $dmarc = implode(' ',$dnsRecords['dmarc']);
         }
+        $dkim = 'unset';
         if(empty($dnsRecords['dkim'])) {
-            $dkim = 'unset';
             $dkimmulti = false;
         } else {
             count($dnsRecords['dkim']) > 1 ? $dkimmulti = true : $dkimmulti = false;
-            $dkim = implode(' ',$dnsRecords['dkim']);
+            foreach($dnsRecords['dkim'] as $dkimRecord) {
+                if($dkimRecord[0] == $this->dkimName) {
+                    $dkim = $dkimRecord[1];
+                }
+            }
         }
         if(in_array($this->mxthurdata, $dnsRecords['mx'])){
-            if($this->spfConfig == $spf && $this->dmarcConfig == $dmarc && in_array($this->domainKey, $dnsRecords['dkim'])){
+            if($this->spfConfig == $spf && $this->dmarcConfig == $dmarc && $this->domainKey == $dkim){
                 $dnsok = 'success';
             } else {
-                $dnsok = 'warning';
+            	$dnsok = 'warning';
             }
         } else {
             $dnsok = 'danger';
@@ -118,12 +123,15 @@ class InfoSettingDataProvider extends BaseDataProvider
             'spfthurdata' => $this->spfConfig,
             'dmarcthurdata' => $this->dmarcConfig,
             'dkimthurdata' => $this->domainKey,
+            'dkimname' => $this->dkimName,
             'selfdns' => $selfDns,
             'dnsok' => $dnsok,
             'mxmulti' => $mxmulti,
             'dkimmulti' => $dkimmulti,
             'dmarcmulti' => $dmarcmulti,
-            'spfmulti' => $spfmulti
+            'spfmulti' => $spfmulti,
+            'tfaenabled' => $tfaenabled,
+            'dkimsigenabled' => $dkimsigenabled
         ];
     }
 
@@ -141,4 +149,4 @@ class InfoSettingDataProvider extends BaseDataProvider
     {
 
     }
-}
+}

+ 18 - 11
app/UI/Client/Setting/Sections/AdditionalSection.php

@@ -4,7 +4,9 @@ namespace ThurData\Servers\KerioEmail\App\UI\Client\Setting\Sections;
 
 use ThurData\Servers\KerioEmail\App\Traits\FormExtendedTrait;
 use ThurData\Servers\KerioEmail\App\UI\Admin\Custom\Sections\FreeFieldsSection;
+use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Switcher;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Text;
+use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Info;
 
 /**
  *
@@ -23,17 +25,22 @@ class AdditionalSection extends FreeFieldsSection
 
     public function initContent()
     {
-        $this->generateDoubleSection([new Text('contact'), new Text('site')]);
-
-        $this->generateDoubleSection([new Text('contact_mail'), new Text('contact_phone')]);
-
-        $this->generateDoubleSection([new Text('street'), new Text('building')]);
-
-        $this->generateDoubleSection([new Text('floor'), new Text('room')]);
-
-        $this->generateDoubleSection([new Text('post_code'), new Text('town')]);
-
-        $this->generateDoubleSection([new Text('state'), new Text('county')]);
+        $domain = $this->getWhmcsParamByKey('domain');
+        $maildomain = $this->getRequestValue('actionElementId');
+        if($domain != $maildomain) {
+            $infoalias = new Info('infoaliasdomain');
+            $infoalias->setId('infoaliasdomain');
+            $infoalias->setName('infoaliasdomain');
+            $infoalias->setTitle($maildomain);
+            $infoalias->setDescription('infoaliasmessage');
+            $this->addField($infoalias);
+        }
+        $dkimsigenabled = new Switcher('dkimsigenabled');
+        $dkimsigenabled->addHtmlAttribute('disabled', true);
+        $this->generateDoubleSection([$dkimsigenabled]);
+        $tfaenabled = new Switcher('tfaenabled');
+        $tfaenabled->addHtmlAttribute('disabled', true);
+        $this->generateDoubleSection([$tfaenabled]);
 
     }
 }

+ 19 - 4
app/UI/Client/Setting/Sections/EditAdditionalSection.php

@@ -4,6 +4,9 @@ namespace ThurData\Servers\KerioEmail\App\UI\Client\Setting\Sections;
 
 use ThurData\Servers\KerioEmail\App\Traits\FormExtendedTrait;
 use ThurData\Servers\KerioEmail\App\UI\Admin\Custom\Sections\FreeFieldsSection;
+use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Hidden;
+use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Info;
+use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Switcher;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Text;
 
 /**
@@ -23,10 +26,22 @@ class EditAdditionalSection extends FreeFieldsSection
 
     public function initContent()
     {
-        $field = new Text('2FA');
-        $this->addField($field);
-        $field = new Text('AD');
-        $this->addField($field);
+        $domain = $this->getWhmcsParamByKey('domain');
+        $maildomain = $this->getRequestValue('actionElementId');
+        if($domain == $maildomain) {
+            $dkimsigenabled = new Switcher('dkimsigenabled');
+            $this->addField($dkimsigenabled);
+            $tfaenabled = new Switcher('tfaenabled');
+            $this->addField($tfaenabled);
+            $this->addField(new Hidden('domainid'));
+        } else {
+            $infoalias = new Info('infoaliasdomain');
+            $infoalias->setId('infoaliasdomain');
+            $infoalias->setName('infoaliasdomain');
+            $infoalias->setTitle($maildomain);
+            $infoalias->setDescription('infoaliasmessage');
+            $this->addField($infoalias);
+        }
     }
 
 }

+ 73 - 9
app/UI/Client/Setting/Sections/EditGeneralSection.php

@@ -7,9 +7,11 @@ use ThurData\Servers\KerioEmail\App\UI\Admin\Custom\Sections\FreeFieldsSection;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Hidden;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Select;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Text;
+use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Info;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Switcher;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Sections\InputGroup;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\InputGroupElements;
+use ThurData\Servers\KerioEmail\Core\Helper\DnsHelper;
 
 /**
  *
@@ -28,17 +30,79 @@ class EditGeneralSection extends FreeFieldsSection
 
     public function initContent()
     {
-        /**
-         * add fields
-         */
-        $field = new Hidden('domain');
-        $this->addField($field);
+        $maildomain = $this->getRequestValue('actionElementId');
+        $dns = new DnsHelper();
+        $selfdns = $dns->selfDns($maildomain);
+        if($selfdns){
+            $id = new Hidden();
+            $id->setId('id');
+            $id->setName('id');
+            $editmaildomain = new Hidden();
+            $editmaildomain->setId('editmaildomain');
+            $editmaildomain->setName('editmaildomain');
+            $this->generateDoubleSection([$id, $editmaildomain]);
+            $zoneid = new Hidden();
+            $zoneid->setId('zoneid');
+            $zoneid->setName('zoneid');
+            $dnsok = new Hidden();
+            $dnsok->setId('dnsok');
+            $dnsok->setName('dnsok');
+            $this->generateDoubleSection([$zoneid, $dnsok]);
+            $editmxthurdata = new Hidden();
+            $editmxthurdata->setId('editmxthurdata');
+            $editmxthurdata->setName('editmxthurdata');
+            $editspfthurdata = new Hidden();
+            $editspfthurdata->setId('editspfthurdata');
+            $editspfthurdata->setName('editspfthurdata');
+            $this->generateDoubleSection([$editmxthurdata, $editspfthurdata]);
+            $editdmarcthurdata = new Hidden();
+            $editdmarcthurdata->setId('editdmarcthurdata');
+            $editdmarcthurdata->setName('editdmarcthurdata');
+            $editdkimthurdata = new Hidden();
+            $editdkimthurdata->setId('editdkimthurdata');
+            $editdkimthurdata->setName('editdkimthurdata');
+            $this->generateDoubleSection([$editdmarcthurdata, $editdkimthurdata]);
+            $editdkimnamethurdata = new Hidden();
+            $editdkimnamethurdata->setId('editdkimnamethurdata');
+            $editdkimnamethurdata->setName('editdkimnamethurdata');
+            $dkimname = new Hidden();
+            $dkimname->setId('dkimname');
+            $dkimname->setName('dkimname');
+            $this->generateDoubleSection([$editdkimnamethurdata, $dkimname]);
 
-        $field = new Text('test');
-        $this->addField($field);
+            $infoedit = new Info('infoedit');
+            $infoedit->setId('infoedit');
+            $infoedit->setName('infoedit');
+            $infoedit->setTitle($maildomain);
+            $infoedit->setDescription('infoeditmessage');
+            $this->addField($infoedit);
 
-        $field = new Text('notes');
-        $this->addField($field);
+            $field = new Text('editmxactive');
+            $field->setId('editmxactive');
+            $field->setName('editmxactive');
+            $this->addField($field);
+            $field = new Text('editspf');
+            $field->setId('editspf');
+            $field->setName('editspf');
+            $this->addField($field);
+            $field = new Text('editdmarc');
+            $field->setId('editdmarc');
+            $field->setName('editdmarc');
+            $this->addField($field);
+            $field = new Text('editdkim');
+            $field->setId('editdkim');
+            $field->setName('editdkim');
+            $this->addField($field);
 
+            $defaults = new Switcher('setDefaults');
+            $this->addField($defaults);
+        } else {
+            $infodns = new Info('infoexternaldns');
+            $infodns->setId('infoexternaldns');
+            $infodns->setName('infoexternaldns');
+            $infodns->setTitle($maildomain);
+            $infodns->setDescription('externaldnsmessage');
+            $this->addField($infodns);
+        }
     }
 }

+ 69 - 7
app/UI/Client/Setting/Sections/GeneralSection.php

@@ -5,8 +5,14 @@ use ThurData\Servers\KerioEmail\App\Traits\FormExtendedTrait;
 use ThurData\Servers\KerioEmail\App\UI\Admin\Custom\Sections\FreeFieldsSection;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Select;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Text;
+use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\BaseField;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Sections\InputGroup;
 use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\InputGroupElements;
+use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Hidden;
+use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Textarea;
+use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Info;
+use ThurData\Servers\KerioEmail\Core\Helper\DnsHelper;
+use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Sections\RawSection;
 
 /**
  *
@@ -25,16 +31,72 @@ class GeneralSection extends FreeFieldsSection
 
     public function initContent()
     {
-        $email = new InputGroup('usernameGroup');
+        $maildomain = $this->getRequestValue('actionElementId');
+        $dns = new DnsHelper();
+        $info = new RawSection();
+        if($dns->selfDns($maildomain)) {
+            $infodns = new Info('infodns');
+            $infodns->setId('infodns');
+            $infodns->setName('infodns');
+            $infodns->setTitle($maildomain);
+            $infodns->setDescription('infodnsmessage');
+            $info->addField($infodns);
+        } else {
+            $infoextdns = new Info('infoextdns');
+            $infoextdns->setId('infoextdns');
+            $infoextdns->setName('infoextdns');
+            $infoextdns->setTitle($maildomain);
+            $infoextdns->setDescription('infoextdnsmessage');
+            $info->addField($infoextdns);
+        }
+        $this->addSection($info);
 
-        $email->addTextField('name', false, true);
-        $email->addInputAddon('emailSign', false, '@');
-        $email->addInputComponent((new InputGroupElements\Text('domain'))->addHtmlAttribute('readonly','true'));
-        $this->addSection($email);
+        $mxthurdata = new Text('mxthurdata');
+        $mxthurdata->addHtmlAttribute('readonly','true');
+        $mxthurdata->setDescription('description');
+        
+        $mxactive = new Text('mxactive');
+        $mxactive->addHtmlAttribute('readonly','true');
+        $mxactive->setDescription('description');
 
-        $this->generateDoubleSection([new Text('description'), new Select('type')]);
+        $this->generateDoubleSection([$mxthurdata, $mxactive]);
 
-        $this->generateDoubleSection([new Select('manager'), new Select('status')]);
+        $spfthurdata = new Text('spfthurdata');
+        $spfthurdata->addHtmlAttribute('readonly','true');
+        $spfthurdata->setDescription('description');
 
+        $spf = new Text('spf');
+        $spf->addHtmlAttribute('readonly','true');
+        $spf->setDescription('description');
+
+        $this->generateDoubleSection([$spfthurdata, $spf]);
+
+        $dmarcthurdata = new Text('dmarcthurdata');
+        $dmarcthurdata->addHtmlAttribute('readonly','true');
+        $dmarcthurdata->setDescription('description');
+
+        $dmarc = new Text('dmarc');
+        $dmarc->addHtmlAttribute('readonly','true');
+        $dmarc->setDescription('description');
+
+        $this->generateDoubleSection([$dmarcthurdata, $dmarc]);
+
+        $dkimname = new Text('dkimname');
+        $dkimname->addHtmlAttribute('readonly','true')->addHtmlAttribute('border', 0);
+        $dkimname->setDescription('description');
+
+        $this->generateDoubleSection([$dkimname]);
+
+        $dkimthurdata = new Text('dkimthurdata');
+        $dkimthurdata->addHtmlAttribute('readonly','true');
+        $dkimthurdata->setDescription('description');
+
+        $dkim = new Text('dkim');
+        $dkim->addHtmlAttribute('readonly','true');
+
+        $this->generateDoubleSection([$dkimthurdata, $dkim]);
+
+        $this->generateDoubleSection([new Hidden('infomaildomain'), new Hidden('id')]);
+        $this->generateDoubleSection([new Hidden('selfdns'), new Hidden('dnsok')]);
     }
 }

+ 27 - 26
app/UI/Client/Templates/assets/js/setting/index.js

@@ -16,67 +16,67 @@ mgEventHandler.on('ModalLoaded', null,function(){
             if(mxthurdata.val() == mxactive.val()){
                 mxactive.addClass('lu-alert--success lu-alert--outline');
                 $('.modal-alert-top').addClass('lu-alert--success');
-                $("#addmxmessage").text('Der MX Record ist korrekt gesetzt &#9989;');
-                $("#addalertheader").text('Ihre DNS Einstellungen sind korrekt &#9989;');
-                $("#addalertfooter").text('Alle DNS Einträge entsprechen den Vorgaben');
+                $("#infomessage").text('Der MX Record ist korrekt gesetzt &#9989;');
+                $("#infoheader").text('Ihre DNS Einstellungen sind korrekt &#9989;');
+                $("#infofooter").text('Alle DNS Einträge entsprechen den Vorgaben');
             }else{
                 mxactive.addClass('lu-alert--warning lu-alert--outline');
                 $('.modal-alert-top').addClass('lu-alert--warning');
-                $("#addmxmessage").text('Es sind mehrere MX Server definiert !');
-                $("#addalertheader").text('Sie können die MX Prioritäten im DNS Manger ändern.');
-                $("#addalertfooter").text('Sonstige DNS Einträge entsprechen den Vorgaben');
+                $("#infomessage").text('Es sind mehrere MX Server definiert !');
+                $("#infoheader").text('Sie können die MX Prioritäten im DNS Manger ändern.');
+                $("#infofooter").text('Sonstige DNS Einträge entsprechen den Vorgaben');
             }
         }else{
             mxactive.addClass('lu-alert--danger lu-alert--outline');
             $('.modal-alert-top').addClass('lu-alert--danger');
-            $("#addmxmessage").text('Der MX Record ist falsch oder fehlt, Mailempfang nicht möglich &#10069;');
-            $("#addalertheader").text('Ihre DNS Einstellungen sind fehlerhaft &#10069;');
-            $("#addalertfooter").text('Bitte vergleichen und korrigieren Sie falsche oder fehlende Einträge!');
+            $("#infomessage").text('Der MX Record ist falsch oder fehlt, Mailempfang nicht möglich &#10069;');
+            $("#infoheader").text('Ihre DNS Einstellungen sind fehlerhaft &#10069;');
+            $("#infofooter").text('Bitte vergleichen und korrigieren Sie falsche oder fehlende Einträge!');
         }
         var spf = $('input[name="spf"]');
         var spfthurdata = $('input[name="spfthurdata"]');
         if(spfthurdata.val() == spf.val()){
             spf.addClass('lu-alert--success lu-alert--outline');
-            $("#addspfmessage").text('Der SPF Eintrag ist korrekt gesetzt &#9989;');
+            $("#infomessage").append('<br>Der SPF Eintrag ist korrekt gesetzt &#9989;');
         }else{
             spf.addClass('lu-alert--warning lu-alert--outline');
             $('.modal-alert-top').addClass('lu-alert--warning');
-            $("#addspfmessage").text('Der SPF Eintrag ist falsch oder fehlt, Probleme beim Mailsversand möglich &#10069;');
-            $("#addalertheader").text('Ihre DNS Einstellungen sind fehlerhaft &#10069;');
-            $("#addalertfooter").text('Bitte vergleichen und korrigieren Sie falsche oder fehlende Einträge!');
+            $("#infomessage").append('<br>Der SPF Eintrag ist falsch oder fehlt, Probleme beim Mailsversand möglich &#10069;');
+            $("#infoheader").text('Ihre DNS Einstellungen sind fehlerhaft &#10069;');
+            $("#infofooter").text('Bitte vergleichen und korrigieren Sie falsche oder fehlende Einträge!');
        }
         var dmarc = $('input[name="dmarc"]');
         var dmarcthurdata = $('input[name="dmarcthurdata"]');
         if(dmarcthurdata.val() == dmarc.val()){
             dmarc.addClass('lu-alert--success lu-alert--outline');
-            $("#adddmarcmessage").text('Der DMACR Eintrag ist korrekt gesetzt &#9989;');
+            $("#infomessage").append('<br>Der DMACR Eintrag ist korrekt gesetzt &#9989;');
         }else{
             dmarc.addClass('lu-alert--warning lu-alert--outline');
             $('.modal-alert-top').addClass('lu-alert--warning');
-            $("#adddmarcmessage").text('Der DMARC Eintrag ist falsch oder fehlt, Probleme beim Mailsversand möglich &#10069;');
-            $("#addalertheader").text('Ihre DNS Einstellungen sind fehlerhaft &#10069;');
-            $("#addalertfooter").text('Bitte vergleichen und korrigieren Sie falsche oder fehlende Einträge!');
+            $("#infomessage").append('<br>Der DMARC Eintrag ist falsch oder fehlt, Probleme beim Mailsversand möglich &#10069;');
+            $("#infoheader").text('Ihre DNS Einstellungen sind fehlerhaft &#10069;');
+            $("#infofooter").text('Bitte vergleichen und korrigieren Sie falsche oder fehlende Einträge!');
         }
         var dkim = $('input[name="dkim"]');
         var dkimthurdata = $('input[name="dkimthurdata"]');
         if(dkim.val().includes(dkimthurdata.val())){
             if(dkimthurdata.val() == dkim.val()){
                 dkim.addClass('lu-alert--success lu-alert--outline');
-                $("#adddkimmessage").text('Der DKIM Eintrag ist korrekt gesetzt &#9989;');
+                $("#infomessage").append('<br>Der DKIM Eintrag ist korrekt gesetzt &#9989;');
             }else{
                 dkim.addClass('lu-alert--warning lu-alert--outline');
                 $('.modal-alert-top').addClass('lu-alert--warning');
-                $("#adddkimmessage").text('Es sind mehrere Domain Keys für den gleichen Selektor definiert !');
+                $("#infomessage").append('<br>Es sind mehrere Domain Keys für den gleichen Selektor definiert !');
             }
         }else{
             dkim.addClass('lu-alert--warning lu-alert--outline');
             $('.modal-alert-top').addClass('lu-alert--warning');
-            $("#adddkimmessage").text('Der DKIM Eintrag ist falsch oder fehlt, Probleme beim Mailsversand möglich &#10069;');
-            $("#addalertheader").text('Ihre DNS Einstellungen sind fehlerhaft &#10069;');
-            $("#addalertfooter").text('Bitte vergleichen und korrigieren Sie falsche oder fehlende Einträge!');
+            $("#infomessage").append('<br>Der DKIM Eintrag ist falsch oder fehlt, Probleme beim Mailsversand möglich &#10069;');
+            $("#infoheader").text('Ihre DNS Einstellungen sind fehlerhaft &#10069;');
+            $("#infofooter").text('Bitte vergleichen und korrigieren Sie falsche oder fehlende Einträge!');
         }
-        $('input[name$="thurdata"]').attr('title', 'Click to Copy!');
-        $('input[name$="thurdata"]').click(function() {
+        $('input[name$="thurdata"],input[name="dkimname"]').attr('title', 'Click to Copy!');
+        $('input[name$="thurdata"],input[name="dkimname"]').click(function() {
             var textToCopy = $(this).val();
             var tempTextarea = $("<textarea>");
             $("body").append(tempTextarea);
@@ -89,10 +89,10 @@ mgEventHandler.on('ModalLoaded', null,function(){
         });
         if($('input[name="dnsok"]').val() != 'success'){
             if($('input[name="selfdns"]').val() > 0){
-                $("#addalertfooter").append(' Nutzen Sie dafür die Edit Funktion!');
+                $("#infofooter").append('<br>Nutzen Sie dafür die Edit Funktion!');
                 $("#transferDomain").addClass('hidden');
             }else{
-                $("#addalertfooter").append(' Tragen Sie die vorgegebenen Werte bei Ihrem Domain Registrar ein oder transferieren Sie Ihre Domain zu ThurData');
+                $("#infofooter").append('<br>Tragen Sie die vorgegebenen Werte bei Ihrem Domain Registrar ein oder transferieren Sie Ihre Domain zu ThurData');
                 $("#transferDomain").click(function(){
                     document.location.href = 'cart.php?a=add&domain=transfer&sld=' + maildomain.val();
                 });
@@ -141,6 +141,7 @@ mgEventHandler.on('ModalLoaded', null,function(){
                 editdkim.val(origdkim).prop("readonly", false).css("background-color","");
             }
         });
+        $("#infofooter").text('Achtung, falsche DNS Einträge beeiträchtigen Mailempfang und Versand!');
     }
 // end editSettingModal
 });

+ 9 - 17
core/Helper/DnsHelper.php

@@ -38,7 +38,7 @@ class DnsHelper
         return $this->getResolverRecords($domain);
     }
     
-    private function selfDns($domain){
+    public function selfDns($domain){
         $zoneIDcollection = Capsule::table('dns_manager2_zone')
             ->select('id')
             ->where('name', '=', $domain)
@@ -71,15 +71,15 @@ class DnsHelper
             array_push($vars['mx'], $mxRecord->exchange);
         }
         foreach($domainTXT as $txtRecord) {
-            foreach($txtRecord->text as $txtData) {
-                if(strstr($txtData,'v=spf')) {
-                    array_push($vars['spf'],$txtData);
+            foreach($txtRecord as $txtData) {
+                if(strstr($txtData->text,'v=spf')) {
+                    array_push($vars['spf'],$txtData->text);
                 }
-                if(strstr($txtData,'v=DMARC')) {
-                    array_push($vars['dmarc'],$txtData);
+                if(strstr($txtData->text,'v=DMARC')) {
+                    array_push($vars['dmarc'],$txtData->text);
                 }
-                if(strstr($txtData,'v=DKIM')) {
-                    array_push($vars['dkim'],$txtData);
+                if(strstr($txtData->text,'v=DKIM')) {
+                    array_push($vars['dkim'],[$txtData->name,$txtData->text]);
                 }
             }
         }
@@ -108,7 +108,7 @@ class DnsHelper
                     array_push($vars['dmarc'], trim($localRecord->rdata->txtdata, '"'));
                 }
                 if(strstr($localRecord->rdata->txtdata,'v=DKIM')) {
-                    array_push($vars['dkim'], trim($localRecord->rdata->txtdata, '"'));
+                    array_push($vars['dkim'], [$localRecord->name,trim($localRecord->rdata->txtdata, '"')]);
                 }
             }
         }
@@ -181,14 +181,6 @@ class DnsHelper
             array_push($zoneRecords, $record);
         }
 
-        logModuleCall(
-            'kerioEmail',
-            __FUNCTION__,
-            $this->params,
-            'DEbug',
-            $zoneRecords
-        );
-
         $result = localAPI('dnsmanager' ,
             array(
                 'dnsaction' => 'updateZone',

+ 14 - 0
core/UI/Widget/Forms/Fields/Info.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields;
+
+/**
+ * BaseField controler
+ *
+ * @autor ThurData <info@thurdata.ch>
+ */
+class Info extends BaseField
+{
+    protected $id   = 'info';
+    protected $name = 'info';
+}

+ 48 - 1
langs/english.php

@@ -370,6 +370,12 @@ $_LANG['kerio']['ressource']['type']['equipment'] = 'Equipment';
 
 // Settings page
 
+$_LANG['dnsinfomessage'] = 'DNS Informations for <b id="infoalertmaildomain" class="lu-alert--lg"></b>
+            <div id="addalertheader" class="lu-alert--lg"></div>';
+$_LANG['dnseditmessage']  = 'Settings for <b id="editalertmaildomain" class="lu-alert--lg"></b><br><br>
+            <i class="fas fa-info fa-fw"></i> Incorrect DNS entries lead to difficulties sending and receiving emails.
+             To ensure that your mail server is functioning properly, please follow our recommendations.';
+
 $_LANG['addonCA']['setting']['mainContainer']['settings']['table']['mxactive'] = 'MX';
 $_LANG['kerio']['setting']['mx']['status']['set'] = '✔';
 $_LANG['kerio']['setting']['mx']['status']['unset'] = '❗';
@@ -404,7 +410,48 @@ $_LANG['addonCA']['setting']['editSettingModal']['modal']['editSettingModal'] =
 $_LANG['addonCA']['setting']['editSettingModal']['baseCancelButton']['title'] = 'Cancel';
 $_LANG['addonCA']['setting']['editSettingModal']['baseAcceptButton']['title'] = 'Save';
 $_LANG['addonCA']['setting']['mainContainer']['settings']['editSettingButton']['button']['editSettingButton'] = 'Edit';
-$_LANG['addonCA']['setting']['editSettingModal']['editSettingForm']['setDefaults']['setDefaults'] = 'set ThurData Values';
+
+$_LANG['addonCA']['setting']['editSettingModal']['editGeneralSection'] = 'DNS Settings';
+$_LANG['addonCA']['setting']['editSettingModal']['editAdditionalSection'] = 'Server Setting';
+$_LANG['addonCA']['setting']['infoModal']['generalSection'] = 'DNS Informations';
+$_LANG['addonCA']['setting']['infoModal']['additionalSection'] = 'Server Informations';
+
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['mxthurdata']['mxthurdata'] = 'MX record recommended';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['mxthurdata']['description'] = 'Required for receiving mail';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['mxactive']['mxactive'] = 'current MX record';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['mxactive']['description'] = 'emty = receiving mails disabled';
+
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['spfthurdata']['spfthurdata'] = 'SPF record recommended';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['spfthurdata']['description'] = 'recommended for sending mails';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['spf']['spf'] = 'current SPF record';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['spf']['description'] = 'emty = no SPF';
+
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dmarcthurdata']['dmarcthurdata'] = 'DMARC record recommended';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dmarcthurdata']['description'] = 'recommended for sending mails';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dmarc']['dmarc'] = 'current DMARC record';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dmarc']['description'] = 'emty = no DMARC';
+
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dkimthurdata']['dkimthurdata'] = 'Domain key (DKIM) recommended';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dkimthurdata']['description'] = 'recommended for sending mails';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dkim']['dkim'] = 'current Domain Key';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dkimname']['dkimname'] = 'Domain selector';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dkimname']['description'] = 'Selector for DKIM record';
+
+$_LANG['addonCA']['setting']['infoForm']['additionalSection']['dkimsigenabled']['dkimsigenabled'] = 'DKIM Signature for emails';
+$_LANG['addonCA']['setting']['infoForm']['additionalSection']['tfaenabled']['tfaenabled'] = 'Zwei-Faktor-Authentisierung (2FA)';
+
+$_LANG['addonCA']['setting']['editSettingForm']['editGeneralSection']['setDefaults']['setDefaults'] = 'set THurData recommendations';
+$_LANG['addonCA']['setting']['editSettingForm']['editAdditionalSection']['dkimsigenabled']['dkimsigenabled'] = 'DKIM Signature for emails';
+$_LANG['addonCA']['setting']['editSettingForm']['editAdditionalSection']['tfaenabled']['tfaenabled'] = 'Two-Factor-Authentisation (2FA)';
+
+// Infoboxes
+$_LANG['addonCA']['setting']['editSettingForm']['editGeneralSection']['infoedit']['infoeditmessage'] = 'DNS settings for ';
+$_LANG['addonCA']['setting']['editSettingForm']['editGeneralSection']['infoexternaldns']['externaldnsmessage'] = 'Configure DNS at the hoster of Your Zone!';
+$_LANG['addonCA']['setting']['editSettingForm']['editAdditionalSection']['infoaliasdomain']['infoaliasmessage'] = 'These settings are made in the main domain and also apply to ';
+
+$_LANG['addonCA']['setting']['infoForm']['additionalSection']['infoaliasdomain']['infoaliasmessage'] = 'These settings are made in the main domain and also apply to ';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['infodns']['infodnsmessage'] = 'DNS information for ';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['infoextdns']['infoextdnsmessage'] = 'DNS information for ';
 
 $_LANG['settingHasBeenUpdated'] = 'Settings saved';
 

+ 44 - 16
langs/german.php

@@ -298,7 +298,7 @@ $_LANG['addonCA']['ressource']['mainContainer']['ressources']['table']['ressourc
 $_LANG['addonCA']['ressource']['mainContainer']['ressources']['table']['description'] = 'Beschreibung';
 $_LANG['addonCA']['ressource']['mainContainer']['ressources']['table']['type'] = 'Typ';
 $_LANG['addonCA']['ressource']['mainContainer']['ressources']['table']['status'] = 'Status';
-$_LANG['addonCA']['ressource']['mainContainer']['ressources']['editRessourceButton']['button']['editRessourceButton'] = 'Blubb';
+$_LANG['addonCA']['ressource']['mainContainer']['ressources']['editRessourceButton']['button']['editRessourceButton'] = 'Bearbeiten';
 $_LANG['addonCA']['ressource']['mainContainer']['ressources']['deleteRessourceButton']['button']['deleteRessourceButton'] = 'Löschen';
 $_LANG['addonCA']['ressource']['mainContainer']['ressources']['actions']['More Actions'] = 'Mehr Aktionen';
 $_LANG['addonCA']['ressource']['ressources']['actions']['More Actions'] = 'Mehr Aktionen';
@@ -373,20 +373,7 @@ $_LANG['kerio']['ressource']['type']['equipment'] = 'Inventar';
 
 // Settings page
 $_LANG['dnsinfomessage'] = 'DNS Information für <b id="infoalertmaildomain" class="lu-alert--lg"></b>
-            <div id="addalertheader" class="lu-alert--lg"></div>
-            <div id="addmxmessage"></div>
-            <div id="addspfmessage"></div>
-            <div id="adddmarcmessage"></div>
-            <div id="adddkimmessage"></div><br><br>
-            <div id="addalertfooter"></div>
-            <div class="lu-form-group">
-                <label class="lu-form-label">DNS Record Type</label>
-                <div class="lu-input-group" style="background:#eeeeee">
-                    <input type="text" value="ThurData Vorgabe" readonly="readonly" class="lu-form-control" style="">
-                    <div class="lu-input-group__addon">&hArr;</div>
-                    <input type="text" value="Aktueller Wert" readonly="readonly" class="lu-form-control" style="">
-                </div>
-            </div>';
+            <div id="addalertheader" class="lu-alert--lg"></div>';
 $_LANG['dnseditmessage']  = 'Einstellungen für <b id="editalertmaildomain" class="lu-alert--lg"></b><br><br>
             <i class="fas fa-info fa-fw"></i> Falsche DNS Einträge führen zu Schwierigkeiten beim Empfange und Versenden von E-Mails. Um sicherzustellen,
             das Ihr Mailserver richtig funktioniert, übernehmen Sie am besten unsere Empfehlungen.';
@@ -425,7 +412,48 @@ $_LANG['addonCA']['setting']['editSettingModal']['modal']['editSettingModal'] =
 $_LANG['addonCA']['setting']['editSettingModal']['baseCancelButton']['title'] = 'Abbruch';
 $_LANG['addonCA']['setting']['editSettingModal']['baseAcceptButton']['title'] = 'Speichern';
 $_LANG['addonCA']['setting']['mainContainer']['settings']['editSettingButton']['button']['editSettingButton'] = 'Bearbeiten';
-$_LANG['addonCA']['setting']['editSettingModal']['editSettingForm']['setDefaults']['setDefaults'] = 'ThurData Empfehlungen übernehmen';
+
+$_LANG['addonCA']['setting']['editSettingModal']['editGeneralSection'] = 'DNS Einstellungen';
+$_LANG['addonCA']['setting']['editSettingModal']['editAdditionalSection'] = 'Server Einstellungen';
+$_LANG['addonCA']['setting']['infoModal']['generalSection'] = 'DNS Information';
+$_LANG['addonCA']['setting']['infoModal']['additionalSection'] = 'Server Information';
+
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['mxthurdata']['mxthurdata'] = 'MX Eintrag Thurdata Vorgabe';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['mxthurdata']['description'] = 'Notwendig für Mailempfang';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['mxactive']['mxactive'] = 'aktueller MX Eintrag';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['mxactive']['description'] = 'leer = Mailempfang deaktivert';
+
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['spfthurdata']['spfthurdata'] = 'SPF Eintrag Thurdata Vorgabe';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['spfthurdata']['description'] = 'Empfohlen für Mailversand';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['spf']['spf'] = 'aktueller SPF Eintrag';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['spf']['description'] = 'leer = kein SPF';
+
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dmarcthurdata']['dmarcthurdata'] = 'DMARC Eintrag Thurdata Vorgabe';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dmarcthurdata']['description'] = 'Empfohlen für Mailversand';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dmarc']['dmarc'] = 'aktueller DMARC Eintrag';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dmarc']['description'] = 'leer = kein DMARC';
+
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dkimthurdata']['dkimthurdata'] = 'Domain Key (DKIM) Vorgabe';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dkimthurdata']['description'] = 'Empfohlen für Mailversand';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dkim']['dkim'] = 'aktueller Domain Key';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dkimname']['dkimname'] = 'Domain Selektor';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['dkimname']['description'] = 'Selektor für DKIM Eintrag';
+
+$_LANG['addonCA']['setting']['infoForm']['additionalSection']['dkimsigenabled']['dkimsigenabled'] = 'DKIM Signatur für E-Mails';
+$_LANG['addonCA']['setting']['infoForm']['additionalSection']['tfaenabled']['tfaenabled'] = 'Zwei-Faktor-Authentisierung (2FA)';
+
+$_LANG['addonCA']['setting']['editSettingForm']['editGeneralSection']['setDefaults']['setDefaults'] = 'ThurData Empfehlungen übernehmen';
+$_LANG['addonCA']['setting']['editSettingForm']['editAdditionalSection']['dkimsigenabled']['dkimsigenabled'] = 'DKIM Signatur für E-Mails';
+$_LANG['addonCA']['setting']['editSettingForm']['editAdditionalSection']['tfaenabled']['tfaenabled'] = 'Zwei-Faktor-Authentisierung (2FA)';
+
+// Infoboxes
+$_LANG['addonCA']['setting']['editSettingForm']['editGeneralSection']['infoedit']['infoeditmessage'] = 'DNS Einstellungen für ';
+$_LANG['addonCA']['setting']['editSettingForm']['editGeneralSection']['infoexternaldns']['externaldnsmessage'] = 'Sie müssen die DNS Einstellungen beim Hoster Ihrer Domain bzw. DNS Zone bearbeiten.';
+$_LANG['addonCA']['setting']['editSettingForm']['editAdditionalSection']['infoaliasdomain']['infoaliasmessage'] = 'Diese Einstellungen werden in der Hauptdomain vorgenommen und gelten auch für ';
+
+$_LANG['addonCA']['setting']['infoForm']['additionalSection']['infoaliasdomain']['infoaliasmessage'] = 'Diese Einstellungen werden in der Hauptdomain vorgenommen und gelten auch für ';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['infodns']['infodnsmessage'] = 'DNS Informationen für ';
+$_LANG['addonCA']['setting']['infoForm']['generalSection']['infoextdns']['infoextdnsmessage'] = 'DNS Informationen für ';
 
 $_LANG['settingHasBeenUpdated'] = 'Einstellunge erfolgreich gespeichert';
 

+ 1 - 1
templates/admin/ui/core/default/widget/modals/baseEditModal.tpl

@@ -60,4 +60,4 @@
             {/literal}{/if}
         </div>
     </div>
-</div>            
+</div>            

+ 1 - 1
templates/admin/ui/core/default/widget/modals/modalTabsEdit.tpl

@@ -98,4 +98,4 @@
             {/literal}{/if}
         </div>
     </div>
-</div>
+</div>

+ 1 - 1
templates/client/default/controlers/main.tpl

@@ -374,7 +374,7 @@
                                             </tr>
                                             <tr>
                                               <td align='left'>Server Port</td>
-                                              <td align="left">25</td>
+                                              <td align="left">587</td>
                                             </tr>
                                             <tr>
                                               <td align='left'>Sicherheit</td>

+ 34 - 0
templates/client/default/ui/core/default/widget/forms/fields/info.tpl

@@ -0,0 +1,34 @@
+{**********************************************************************
+* KerioEmail product developed. (2017-10-30)
+* *
+*
+*  CREATED BY THURDATA       ->       http://thurdata.com
+*  CONTACT                        ->       contact@thurdata.com
+*
+*
+* This software is furnished under a license and may be used and copied
+* only  in  accordance  with  the  terms  of such  license and with the
+* inclusion of the above copyright notice.  This software  or any other
+* copies thereof may not be provided or otherwise made available to any
+* other person.  No title to and  ownership of the  software is  hereby
+* transferred.
+*
+*
+**********************************************************************}
+
+{**
+* @autor ThurData <info@thurdata.ch>
+*}
+<div class="lu-form-group">
+    <div class="lu-alert lu-alert--info lu-alert--faded modal-alert-top">
+        <div class="lu-alert__body" name="{$rawObject->getName()}">
+            {if $rawObject->getDescription()}
+                {$MGLANG->T($rawObject->getDescription())}
+            {/if}
+            <b> {$rawObject->getTitle()}</b>
+            <div id="infoheader"></div>
+            <div id="infomessage"></div>
+            <div id="infofooter"></div>
+        </div>
+    </div>
+</div>

+ 1 - 1
templates/client/default/ui/core/default/widget/modals/baseEditModal.tpl

@@ -60,4 +60,4 @@
             {/literal}{/if}
         </div>
     </div>
-</div>            
+</div>