DKIM-Auswahl eingebaut
Bernd Wurst

Bernd Wurst commited on 2023-05-16 17:06:02
Zeige 4 geänderte Dateien mit 45 Einfügungen und 14 Löschungen.

... ...
@@ -30,9 +30,20 @@ foreach ($_POST as $key => $value) {
30 30
         } elseif ($value == 'off') {
31 31
             $type = 'none';
32 32
         }
33
-        DEBUG('change request for id #'.$id.' to '.$value);
33
+        DEBUG('MAILCONFIG change request for id #'.$id.' to '.$value);
34 34
         change_domain($id, $type);
35 35
     }
36
+    if (strpos($key, "dkim-") === 0) {
37
+        $id = substr($key, 5);
38
+        $type = 'none';
39
+        if ($value == 'dkim') {
40
+            $type = 'dkim';
41
+        } elseif ($value == 'dmarc') {
42
+            $type = 'dmarc';
43
+        }
44
+        DEBUG('DKIM change request for id #'.$id.' to '.$value);
45
+        change_domain_dkim($id, $type);
46
+    }
36 47
 }
37 48
 
38 49
 if (!$debugmode) {
... ...
@@ -1,8 +1,14 @@
1 1
 ready(() => {
2 2
     document.querySelectorAll('.buttonset input[type=submit]').forEach(e => e.remove());
3
+    document.querySelectorAll('input[type=submit].hidden').forEach(e => e.remove());
3 4
     document.querySelectorAll('.buttonset').forEach(el => {
4 5
         el.addEventListener('change', (e) => {
5 6
             e.currentTarget.closest('form').submit();
6 7
         });
7 8
     });
9
+    document.querySelectorAll('.autosubmit').forEach(el => {
10
+        el.addEventListener('change', (e) => {
11
+            e.currentTarget.closest('form').submit();
12
+        });
13
+    });
8 14
 })
... ...
@@ -77,20 +77,12 @@ foreach ($domains as $id => $dom) {
77 77
         $check_dmarc = ($dom['dkim'] == 'dmarc' ? ' checked="checked"' : '');
78 78
         $check_dkim = ($dom['dkim'] == 'dkim' ? ' checked="checked"' : '');
79 79
         $check_dkimoff = ($dom['dkim'] == 'none' ? ' checked="checked"' : '');
80
-        $buttons .= ' <p><label for="dkim-select">DKIM-Einstellung: </label><select name="dkim" id="dkim-select">
80
+        $buttons .= ' <p><label for="dkim-select-'.$id.'">DKIM-Einstellung: </label><select name="dkim-'.$id.'" id="dkim-select-'.$id.'" class="autosubmit">
81 81
             <option value="dmarc" '.($dom['dkim'] == 'dmarc' ? 'selected' : '').'>DKIM + DMARC</option>
82 82
             <option value="dkim" '.($dom['dkim'] == 'dkim' ? 'selected' : '').'>Nur DKIM</option>
83 83
             <option value="none" '.($dom['dkim'] == 'none' ? 'selected' : '').'>DKIM ausgeschaltet</option>
84
-        </select></p>
85
-        <p>Werden E-Mails nur über unsere Anlagen versendet oder nutzen Sie für den Versand unter dieser Domain auch andere Anbieter?</p>
86
-        <p><span class="buttonset" id="buttonset-dkim-'.$id.'">
87
-         <input type="radio" name="dkim-'.$id.'" id="dkim-'.$id.'-dmarc" value="dmarc"'.$check_dmarc.' />
88
-         <label for="dkim-'.$id.'-dmarc">Nur schokokeks.org</label>
89
-         <input type="radio" name="dkim-'.$id.'" id="dkim-'.$id.'-dkim" value="dkim"'.$check_dkim.' />
90
-         <label for="dkim-'.$id.'-dkim">Auch andere Anbieter</label>
91
-         <input type="radio" name="dkim-'.$id.'" id="dkim-'.$id.'-off" value="off"'.$check_dkimoff.' />
92
-         <label for="dkim-'.$id.'-off">DKIM Ausgeschaltet</label>
93
-         <input type="submit" value="Speichern" />
84
+        </select>
85
+         <input class="hidden" type="submit" value="Speichern" /></p>
94 86
       </span>';
95 87
 
96 88
     }
... ...
@@ -516,7 +516,7 @@ function domain_has_vmail_accounts($domid)
516 516
 function change_domain($id, $type)
517 517
 {
518 518
     $id = (int) $id;
519
-    if (domain_has_vmail_accounts($id)) {
519
+    if (domain_has_vmail_accounts($id) && type != 'virtual') {
520 520
         system_failure("Sie müssen zuerst alle E-Mail-Konten mit dieser Domain löschen, bevor Sie die Webinterface-Verwaltung für diese Domain abschalten können.");
521 521
     }
522 522
 
... ...
@@ -526,7 +526,8 @@ function change_domain($id, $type)
526 526
 
527 527
     $old = domainsettings($id);
528 528
     if ($old['type'] == $type) {
529
-        system_failure('Domain ist bereits so konfiguriert');
529
+        return;
530
+        //system_failure('Domain ist bereits so konfiguriert');
530 531
     }
531 532
 
532 533
     if ($type == 'none') {
... ...
@@ -545,6 +546,27 @@ function change_domain($id, $type)
545 546
     }
546 547
 }
547 548
 
549
+function change_domain_dkim($id, $type)
550
+{
551
+    if (! in_array($type, ['none','dkim','dmarc'])) {
552
+        system_failure("Ungültige Aktion");
553
+    }
554
+
555
+    $old = domainsettings($id);
556
+    if ($old['dkim'] == $type) {
557
+        return;
558
+        //system_failure('Domain ist bereits so konfiguriert');
559
+    }
560
+
561
+    if ($type == 'none') {
562
+        db_query("UPDATE kundendaten.domains SET dkim='none', lastchange=NOW() WHERE id=?", [$id]);
563
+    } elseif ($type == 'dkim') {
564
+        db_query("UPDATE kundendaten.domains SET dkim='dkim', lastchange=NOW() WHERE id=?", [$id]);
565
+    } elseif ($type == 'dmarc') {
566
+        db_query("UPDATE kundendaten.domains SET dkim='dmarc', lastchange=NOW() WHERE id=?", [$id]);
567
+    }
568
+}
569
+
548 570
 
549 571
 /*
550 572
 function maildomain_type($type) {
551 573