mirror of
https://github.com/mailcow/mailcow-dockerized.git
synced 2026-02-17 22:56:23 +00:00
Compare commits
3 Commits
copilot/fi
...
copilot/fi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
81f458ebd5 | ||
|
|
32b053f9be | ||
|
|
b01371c78e |
@@ -139,13 +139,9 @@ docker_daemon_edit(){
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}User declined Docker update – skipping Docker daemon configuration.${NC}"
|
||||
echo -e "${YELLOW}IPv6 will be disabled for mailcow.${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}If you change your mind later, please insert these changes manually to $DOCKER_DAEMON_CONFIG:${NC}"
|
||||
echo -e "${YELLOW}User declined Docker update – please insert these changes manually:${NC}"
|
||||
echo "${MISSING[*]}"
|
||||
echo ""
|
||||
return 1
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -189,23 +185,9 @@ EOF
|
||||
(command -v systemctl &>/dev/null && systemctl restart docker) || service docker restart
|
||||
echo "Docker restarted."
|
||||
else
|
||||
echo -e "${YELLOW}User declined to create daemon.json – skipping Docker daemon configuration.${NC}"
|
||||
echo -e "${YELLOW}IPv6 will be disabled for mailcow.${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}If you change your mind later, please create $DOCKER_DAEMON_CONFIG with these settings:${NC}"
|
||||
if [[ -n "$DOCKER_MAJOR" && "$DOCKER_MAJOR" -lt 27 ]]; then
|
||||
echo ' "ipv6": true,'
|
||||
echo ' "fixed-cidr-v6": "fd00:dead:beef:c0::/80",'
|
||||
echo ' "ip6tables": true,'
|
||||
echo ' "experimental": true'
|
||||
elif [[ -n "$DOCKER_MAJOR" && "$DOCKER_MAJOR" -lt 28 ]]; then
|
||||
echo ' "ipv6": true,'
|
||||
echo ' "fixed-cidr-v6": "fd00:dead:beef:c0::/80"'
|
||||
else
|
||||
echo ' "ipv6": true'
|
||||
fi
|
||||
echo ""
|
||||
return 1
|
||||
echo "User declined to create daemon.json – please manually merge the docker daemon with these configs:"
|
||||
echo "${MISSING[*]}"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
@@ -241,22 +223,7 @@ configure_ipv6() {
|
||||
return
|
||||
fi
|
||||
|
||||
if ! docker_daemon_edit; then
|
||||
# User declined Docker daemon configuration
|
||||
# When called from update.sh, MAILCOW_CONF is set and we modify the existing file
|
||||
# When called from generate_config.sh, MAILCOW_CONF is not set and we export IPV6_BOOL
|
||||
if [[ -n "$MAILCOW_CONF" && -f "$MAILCOW_CONF" ]]; then
|
||||
if grep -q '^ENABLE_IPV6=' "$MAILCOW_CONF"; then
|
||||
sed -i 's/^ENABLE_IPV6=.*/ENABLE_IPV6=false/' "$MAILCOW_CONF"
|
||||
else
|
||||
echo "ENABLE_IPV6=false" >> "$MAILCOW_CONF"
|
||||
fi
|
||||
else
|
||||
export IPV6_BOOL=false
|
||||
fi
|
||||
echo "IPv6 configuration complete: ENABLE_IPV6=false"
|
||||
return 0
|
||||
fi
|
||||
docker_daemon_edit
|
||||
|
||||
if [[ -n "$MAILCOW_CONF" && -f "$MAILCOW_CONF" ]]; then
|
||||
if grep -q '^ENABLE_IPV6=' "$MAILCOW_CONF"; then
|
||||
|
||||
@@ -842,11 +842,11 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
);
|
||||
continue;
|
||||
}
|
||||
if (!hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $domain)) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||
'msg' => 'access_denied'
|
||||
if (!hasDomainAccess($_SESSION['mailcow_cc_username'], $_SESSION['mailcow_cc_role'], $domain)) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||
'msg' => 'access_denied'
|
||||
);
|
||||
continue;
|
||||
}
|
||||
@@ -2732,7 +2732,11 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
$gal = (isset($_data['gal'])) ? intval($_data['gal']) : $is_now['gal'];
|
||||
$description = (!empty($_data['description']) && isset($_SESSION['acl']['domain_desc']) && $_SESSION['acl']['domain_desc'] == "1") ? $_data['description'] : $is_now['description'];
|
||||
(int)$relayhost = (isset($_data['relayhost']) && isset($_SESSION['acl']['domain_relayhost']) && $_SESSION['acl']['domain_relayhost'] == "1") ? intval($_data['relayhost']) : intval($is_now['relayhost']);
|
||||
$tags = (is_array($_data['tags']) ? $_data['tags'] : array());
|
||||
$tags_raw = isset($_data['tags']) ? $_data['tags'] : array();
|
||||
$tags = is_array($tags_raw) ? $tags_raw : json_decode($tags_raw, true);
|
||||
if (!is_array($tags)) {
|
||||
$tags = array();
|
||||
}
|
||||
}
|
||||
else {
|
||||
$_SESSION['return'][] = array(
|
||||
@@ -2753,11 +2757,11 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
':domain' => $domain
|
||||
));
|
||||
// save tags
|
||||
foreach($tags as $index => $tag){
|
||||
if (empty($tag)) continue;
|
||||
if ($index > $GLOBALS['TAGGING_LIMIT']) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'warning',
|
||||
foreach($tags as $index => $tag){
|
||||
if (empty($tag)) continue;
|
||||
if ($index > $GLOBALS['TAGGING_LIMIT']) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'warning',
|
||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||
'msg' => array('tag_limit_exceeded', 'limit '.$GLOBALS['TAGGING_LIMIT'])
|
||||
);
|
||||
@@ -2769,6 +2773,8 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
':tag_name' => $tag,
|
||||
));
|
||||
}
|
||||
$stmt = $pdo->prepare("UPDATE `domain` SET `modified` = NOW() WHERE `domain` = :domain");
|
||||
$stmt->execute(array(':domain' => $domain));
|
||||
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'success',
|
||||
@@ -2791,7 +2797,11 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
$maxquota = (!empty($_data['maxquota'])) ? $_data['maxquota'] : ($is_now['max_quota_for_mbox'] / 1048576);
|
||||
$quota = (!empty($_data['quota'])) ? $_data['quota'] : ($is_now['max_quota_for_domain'] / 1048576);
|
||||
$description = (!empty($_data['description'])) ? $_data['description'] : $is_now['description'];
|
||||
$tags = (is_array($_data['tags']) ? $_data['tags'] : array());
|
||||
$tags_raw = isset($_data['tags']) ? $_data['tags'] : array();
|
||||
$tags = is_array($tags_raw) ? $tags_raw : json_decode($tags_raw, true);
|
||||
if (!is_array($tags)) {
|
||||
$tags = array();
|
||||
}
|
||||
if ($relay_all_recipients == '1') {
|
||||
$backupmx = '1';
|
||||
}
|
||||
@@ -2931,17 +2941,19 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
);
|
||||
break;
|
||||
}
|
||||
$stmt = $pdo->prepare("INSERT INTO `tags_domain` (`domain`, `tag_name`) VALUES (:domain, :tag_name)");
|
||||
$stmt->execute(array(
|
||||
':domain' => $domain,
|
||||
':tag_name' => $tag,
|
||||
));
|
||||
}
|
||||
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'success',
|
||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||
'msg' => array('domain_modified', htmlspecialchars($domain))
|
||||
$stmt = $pdo->prepare("INSERT INTO `tags_domain` (`domain`, `tag_name`) VALUES (:domain, :tag_name)");
|
||||
$stmt->execute(array(
|
||||
':domain' => $domain,
|
||||
':tag_name' => $tag,
|
||||
));
|
||||
}
|
||||
$stmt = $pdo->prepare("UPDATE `domain` SET `modified` = NOW() WHERE `domain` = :domain");
|
||||
$stmt->execute(array(':domain' => $domain));
|
||||
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'success',
|
||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||
'msg' => array('domain_modified', htmlspecialchars($domain))
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -6108,14 +6120,15 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
else {
|
||||
$domains = $_data['domain'];
|
||||
}
|
||||
$tags = $_data['tags'];
|
||||
$tags_raw = isset($_data['tags']) ? $_data['tags'] : array();
|
||||
$tags = is_array($tags_raw) ? $tags_raw : json_decode($tags_raw, true);
|
||||
if (!is_array($tags)) $tags = array();
|
||||
|
||||
|
||||
$wasModified = false;
|
||||
foreach ($domains as $domain) {
|
||||
if (!is_valid_domain_name($domain)) {
|
||||
$_SESSION['return'][] = array(
|
||||
$modifiedDomains = array();
|
||||
$wasModified = false;
|
||||
foreach ($domains as $domain) {
|
||||
if (!is_valid_domain_name($domain)) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||
'msg' => 'domain_invalid'
|
||||
@@ -6128,27 +6141,44 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||
'msg' => 'access_denied'
|
||||
);
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach($tags as $tag){
|
||||
// delete tag
|
||||
$wasModified = true;
|
||||
$stmt = $pdo->prepare("DELETE FROM `tags_domain` WHERE `domain` = :domain AND `tag_name` = :tag_name");
|
||||
$stmt->execute(array(
|
||||
':domain' => $domain,
|
||||
':tag_name' => $tag,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
if (!$wasModified) return false;
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'success',
|
||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||
'msg' => array('domain_modified', $domain)
|
||||
);
|
||||
break;
|
||||
$domainModified = false;
|
||||
foreach($tags as $tag){
|
||||
// delete tag
|
||||
$domainModified = true;
|
||||
$wasModified = true;
|
||||
$stmt = $pdo->prepare("DELETE FROM `tags_domain` WHERE `domain` = :domain AND `tag_name` = :tag_name");
|
||||
$stmt->execute(array(
|
||||
':domain' => $domain,
|
||||
':tag_name' => $tag,
|
||||
));
|
||||
}
|
||||
if ($domainModified) {
|
||||
$modifiedDomains[] = $domain;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$wasModified) return false;
|
||||
if (!empty($modifiedDomains)) {
|
||||
$placeholders = array();
|
||||
$params = array();
|
||||
foreach ($modifiedDomains as $idx => $modifiedDomain) {
|
||||
$placeholders[] = ":domain".$idx;
|
||||
$params[":domain".$idx] = $modifiedDomain;
|
||||
}
|
||||
$stmt = $pdo->prepare("UPDATE `domain` SET `modified` = NOW() WHERE `domain` IN (".implode(',', $placeholders).")");
|
||||
$stmt->execute($params);
|
||||
$modifiedDomains = array_map('htmlspecialchars', $modifiedDomains);
|
||||
}
|
||||
$modifiedDomains = (empty($modifiedDomains)) ? array('-') : $modifiedDomains;
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'success',
|
||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||
'msg' => array('domain_modified', implode(', ', $modifiedDomains))
|
||||
);
|
||||
break;
|
||||
case 'tags_mailbox':
|
||||
if (!is_array($_data['username'])) {
|
||||
$usernames = array();
|
||||
|
||||
Reference in New Issue
Block a user