Merge pull request #7345 from smpaz7467/fix/time-limited-alias-api

[Web] fix add/time_limited_alias silently discarding requests and validity
This commit is contained in:
FreddleSpl0it
2026-07-28 13:49:37 +02:00
committed by GitHub
2 changed files with 23 additions and 8 deletions
+12
View File
@@ -185,6 +185,9 @@ paths:
example: example:
username: info@domain.tld username: info@domain.tld
domain: domain.tld domain: domain.tld
description: my time limited alias
validity: 8760
permanent: false
properties: properties:
username: username:
description: 'the mailbox an alias should be created for' description: 'the mailbox an alias should be created for'
@@ -192,6 +195,15 @@ paths:
domain: domain:
description: "the domain" description: "the domain"
type: string type: string
description:
description: "a description for the alias, defaults to an empty string"
type: string
validity:
description: "how many hours the alias stays valid, 1 to 87600, defaults to 8760 (one year)"
type: integer
permanent:
description: "keep the alias after it expired, defaults to false"
type: boolean
type: object type: object
summary: Create time limited alias summary: Create time limited alias
/api/v1/add/app-passwd: /api/v1/add/app-passwd:
+11 -8
View File
@@ -41,13 +41,15 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
else { else {
$username = $_SESSION['mailcow_cc_username']; $username = $_SESSION['mailcow_cc_username'];
} }
if (isset($_data["validity"]) && !filter_var($_data["validity"], FILTER_VALIDATE_INT, array('options' => array('min_range' => 1, 'max_range' => 87600)))) { if (isset($_data["validity"])) {
$_SESSION['return'][] = array( if (!filter_var($_data["validity"], FILTER_VALIDATE_INT, array('options' => array('min_range' => 1, 'max_range' => 87600)))) {
'type' => 'danger', $_SESSION['return'][] = array(
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), 'type' => 'danger',
'msg' => 'validity_missing' 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
); 'msg' => 'validity_missing'
return false; );
return false;
}
} }
else { else {
// Default to 1 yr // Default to 1 yr
@@ -60,7 +62,8 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
$permanent = 0; $permanent = 0;
} }
$domain = $_data['domain']; $domain = $_data['domain'];
$description = $_data['description']; // spamalias.description is NOT NULL, an absent description must not become a null insert
$description = $_data['description'] ?? '';
$valid_domains[] = mailbox('get', 'mailbox_details', $username)['domain']; $valid_domains[] = mailbox('get', 'mailbox_details', $username)['domain'];
$valid_alias_domains = user_get_alias_details($username)['alias_domains']; $valid_alias_domains = user_get_alias_details($username)['alias_domains'];
if (!empty($valid_alias_domains)) { if (!empty($valid_alias_domains)) {