Browse Source

[Web, Postfix] Move TLS policy to mailbox attributes

André Peters 7 years ago
parent
commit
ab720bf164
2 changed files with 12 additions and 8 deletions
  1. 2 2
      data/Dockerfiles/postfix/postfix.sh
  2. 10 6
      data/web/inc/functions.mailbox.inc.php

+ 2 - 2
data/Dockerfiles/postfix/postfix.sh

@@ -39,7 +39,7 @@ query = SELECT IF(EXISTS(
           SELECT CONCAT('%u', '@', target_domain) FROM alias_domain
             WHERE alias_domain='%d'
         )
-      ) AND json_extract(`attributes`, '$.tls_enforce_in') = '1' AND mailbox.active = '1'
+      ) AND json_extract(attributes, '$.tls_enforce_in') = '1' AND mailbox.active = '1'
   ), 'reject_plaintext_session', NULL) AS 'tls_enforce_in';
 EOF
 
@@ -58,7 +58,7 @@ query = SELECT GROUP_CONCAT(transport SEPARATOR '') AS transport_maps
               WHERE alias_domain = '%d'
           )
         )
-        AND json_extract(`attributes`, '$.tls_enforce_out') = '1'
+        AND json_extract(attributes, '$.tls_enforce_out') = '1'
         AND mailbox.active = '1'
     ), 'smtp_enforced_tls:', 'smtp:') AS 'transport'
     UNION ALL

+ 10 - 6
data/web/inc/functions.mailbox.inc.php

@@ -1154,8 +1154,8 @@ function mailbox($_action, $_type, $_data = null, $attr = null) {
             try {
               $stmt = $pdo->prepare("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.tls_enforce_out', :tls_out), `attributes` = JSON_SET(`attributes`, '$.tls_enforce_in', :tls_in) WHERE `username` = :username");
               $stmt->execute(array(
-                ':tls_out' => $tls_enforce_out,
-                ':tls_in' => $tls_enforce_in,
+                ':tls_out' => intval($tls_enforce_out),
+                ':tls_in' => intval($tls_enforce_in),
                 ':username' => $username
               ));
             }
@@ -2392,7 +2392,7 @@ function mailbox($_action, $_type, $_data = null, $attr = null) {
           return $mailboxes;
         break;
         case 'tls_policy':
-          $policydata = array();
+          $attrs = array();
           if (isset($_data) && filter_var($_data, FILTER_VALIDATE_EMAIL)) {
             if (!hasMailboxObjectAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $_data)) {
               return false;
@@ -2402,9 +2402,9 @@ function mailbox($_action, $_type, $_data = null, $attr = null) {
             $_data = $_SESSION['mailcow_cc_username'];
           }
           try {
-            $stmt = $pdo->prepare("SELECT JSON_EXTRACT(`attributes`, '$.tls_enforce_out') AS `tls_enforce_out`, JSON_EXTRACT(`attributes`, '$.tls_enforce_in') AS `tls_enforce_in` FROM `mailbox` WHERE `username` = :username");
+            $stmt = $pdo->prepare("SELECT `attributes` FROM `mailbox` WHERE `username` = :username");
             $stmt->execute(array(':username' => $_data));
-            $policydata = $stmt->fetch(PDO::FETCH_ASSOC);
+            $attrs = $stmt->fetch(PDO::FETCH_ASSOC);
           }
           catch(PDOException $e) {
             $_SESSION['return'] = array(
@@ -2413,7 +2413,11 @@ function mailbox($_action, $_type, $_data = null, $attr = null) {
             );
             return false;
           }
-          return $policydata;
+          $attrs = json_decode($attrs['attributes'], true);
+          return array(
+            'tls_enforce_in' => $attrs['tls_enforce_in'],
+            'tls_enforce_out' => $attrs['tls_enforce_out']
+          );
         break;
         case 'filters':
           $filters = array();