From 5a7275843ad35a383e14c4d05cceffbec5d6db2d Mon Sep 17 00:00:00 2001 From: FreddleSpl0it Date: Fri, 14 Mar 2025 09:30:33 +0100 Subject: [PATCH] Add error message when mailbox creation fails --- data/conf/phpfpm/crons/keycloak-sync.php | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/data/conf/phpfpm/crons/keycloak-sync.php b/data/conf/phpfpm/crons/keycloak-sync.php index 98010648b..cdc5a6e99 100644 --- a/data/conf/phpfpm/crons/keycloak-sync.php +++ b/data/conf/phpfpm/crons/keycloak-sync.php @@ -79,7 +79,7 @@ if ($iam_settings['authsource'] != "keycloak" || (intval($iam_settings['periodic // Set pagination variables $start = 0; -$max = 25; +$max = 100; // lock sync if already running $lock_file = '/tmp/iam-sync.lock'; @@ -167,11 +167,13 @@ while (true) { $mailcow_template = $user['attributes']['mailcow_template']; // try get mailbox user - $stmt = $pdo->prepare("SELECT `mailbox`.* FROM `mailbox` - INNER JOIN domain on mailbox.domain = domain.domain - WHERE `kind` NOT REGEXP 'location|thing|group' - AND `domain`.`active`='1' - AND `username` = :user"); + $stmt = $pdo->prepare("SELECT + mailbox.*, + domain.active AS d_active + FROM `mailbox` + INNER JOIN domain on mailbox.domain = domain.domain + WHERE `kind` NOT REGEXP 'location|thing|group' + AND `username` = :user"); $stmt->execute(array(':user' => $user['email'])); $row = $stmt->fetch(PDO::FETCH_ASSOC); @@ -192,13 +194,17 @@ while (true) { if (!$row && intval($iam_settings['import_users']) == 1){ // mailbox user does not exist, create... logMsg("info", "Creating user " . $user['email']); - mailbox('add', 'mailbox_from_template', array( + $create_res = mailbox('add', 'mailbox_from_template', array( 'domain' => explode('@', $user['email'])[1], 'local_part' => explode('@', $user['email'])[0], 'name' => $user['firstName'] . " " . $user['lastName'], 'authsource' => 'keycloak', 'template' => $mbox_template )); + if (!$create_res){ + logMsg("err", "Could not create user " . $user['email']); + continue; + } } else if ($row && intval($iam_settings['periodic_sync']) == 1) { // mailbox user does exist, sync attribtues... logMsg("info", "Syncing attributes for user " . $user['email']);