[Web, Dovecot, Postfix] Fix JSON attribute for login
parent
fc53a69a44
commit
39f289fc3c
|
@ -82,7 +82,7 @@ cat <<EOF > /usr/local/etc/dovecot/sql/dovecot-dict-sql-passdb.conf
|
||||||
driver = mysql
|
driver = mysql
|
||||||
connect = "host=mysql dbname=${DBNAME} user=${DBUSER} password=${DBPASS}"
|
connect = "host=mysql dbname=${DBNAME} user=${DBUSER} password=${DBPASS}"
|
||||||
default_pass_scheme = SSHA256
|
default_pass_scheme = SSHA256
|
||||||
password_query = SELECT password FROM mailbox WHERE username = '%u' AND domain IN (SELECT domain FROM domain WHERE domain='%d' AND active='1') AND JSON_EXTRACT(attributes, "$.force_pw_update") != 1
|
password_query = SELECT password FROM mailbox WHERE username = '%u' AND domain IN (SELECT domain FROM domain WHERE domain='%d' AND active='1') AND JSON_EXTRACT(attributes, "$.force_pw_update") NOT LIKE '%1%'
|
||||||
user_query = SELECT CONCAT('maildir:/var/vmail/',maildir) AS mail, 5000 AS uid, 5000 AS gid, concat('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND active = '1'
|
user_query = SELECT CONCAT('maildir:/var/vmail/',maildir) AS mail, 5000 AS uid, 5000 AS gid, concat('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND active = '1'
|
||||||
iterate_query = SELECT username FROM mailbox WHERE active='1';
|
iterate_query = SELECT username FROM mailbox WHERE active='1';
|
||||||
EOF
|
EOF
|
||||||
|
|
|
@ -39,7 +39,7 @@ query = SELECT IF(EXISTS(
|
||||||
SELECT CONCAT('%u', '@', target_domain) FROM alias_domain
|
SELECT CONCAT('%u', '@', target_domain) FROM alias_domain
|
||||||
WHERE alias_domain='%d'
|
WHERE alias_domain='%d'
|
||||||
)
|
)
|
||||||
) AND json_extract(attributes, '$.tls_enforce_in') = '1' AND mailbox.active = '1'
|
) AND json_extract(attributes, '$.tls_enforce_in') LIKE '%1%' AND mailbox.active = '1'
|
||||||
), 'reject_plaintext_session', NULL) AS 'tls_enforce_in';
|
), 'reject_plaintext_session', NULL) AS 'tls_enforce_in';
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ query = SELECT GROUP_CONCAT(transport SEPARATOR '') AS transport_maps
|
||||||
WHERE alias_domain = '%d'
|
WHERE alias_domain = '%d'
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
AND json_extract(attributes, '$.tls_enforce_out') = '1'
|
AND json_extract(attributes, '$.tls_enforce_out') LIKE '%1%'
|
||||||
AND mailbox.active = '1'
|
AND mailbox.active = '1'
|
||||||
), 'smtp_enforced_tls:', 'smtp:') AS 'transport'
|
), 'smtp_enforced_tls:', 'smtp:') AS 'transport'
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
|
|
@ -3,7 +3,7 @@ function init_db_schema() {
|
||||||
try {
|
try {
|
||||||
global $pdo;
|
global $pdo;
|
||||||
|
|
||||||
$db_version = "17022018_0839";
|
$db_version = "19022018_0839";
|
||||||
|
|
||||||
$stmt = $pdo->query("SHOW TABLES LIKE 'versions'");
|
$stmt = $pdo->query("SHOW TABLES LIKE 'versions'");
|
||||||
$num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC));
|
$num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC));
|
||||||
|
@ -835,8 +835,9 @@ DELIMITER ;';
|
||||||
// Insert new DB schema version
|
// Insert new DB schema version
|
||||||
$stmt = $pdo->query("REPLACE INTO `versions` (`application`, `version`) VALUES ('db_schema', '" . $db_version . "');");
|
$stmt = $pdo->query("REPLACE INTO `versions` (`application`, `version`) VALUES ('db_schema', '" . $db_version . "');");
|
||||||
|
|
||||||
// Migrate tls_enforce_* options
|
// Migrate tls_enforce_* options and add force_pw_update attribute
|
||||||
$stmt = $pdo->query("UPDATE `mailbox` SET `attributes` = '{}' WHERE `attributes` IS NULL;");
|
$stmt = $pdo->query("UPDATE `mailbox` SET `attributes` = '{}' WHERE `attributes` IS NULL;");
|
||||||
|
$stmt = $pdo->query("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.force_pw_update', 0) WHERE JSON_EXTRACT(`attributes`, '$.force_pw_update') IS NULL;");
|
||||||
foreach($tls_options as $tls_user => $tls_options) {
|
foreach($tls_options as $tls_user => $tls_options) {
|
||||||
$stmt = $pdo->prepare("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.tls_enforce_in', :tls_enforce_in),
|
$stmt = $pdo->prepare("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.tls_enforce_in', :tls_enforce_in),
|
||||||
`attributes` = JSON_SET(`attributes`, '$.tls_enforce_out', :tls_enforce_out)
|
`attributes` = JSON_SET(`attributes`, '$.tls_enforce_out', :tls_enforce_out)
|
||||||
|
|
Loading…
Reference in New Issue