Separate mail setting in mail_in and mail_out + fix domain settings types

This commit is contained in:
MercierCorentin 2021-07-21 23:14:23 +02:00
parent d358452a03
commit 4755c1c6d5

View file

@ -531,11 +531,14 @@ def _build_dns_conf(domain):
######### #########
# Email # # Email #
######### #########
if domain["mail"]: if domain["mail_in"]:
mail += [ mail += [
[name, ttl, "MX", "10 %s." % domain_name], [name, ttl, "MX", "10 %s." % domain_name]
[name, ttl, "TXT", '"v=spf1 a mx -all"'], ]
if domain["mail_out"]:
mail += [
[name, ttl, "TXT", '"v=spf1 a mx -all"']
] ]
# DKIM/DMARC record # DKIM/DMARC record
@ -772,7 +775,8 @@ def _load_domain_settings(domains=[]):
dns_zone = get_dns_zone_from_domain(domain) dns_zone = get_dns_zone_from_domain(domain)
default_settings = { default_settings = {
"xmpp": is_maindomain, "xmpp": is_maindomain,
"mail": True, "mail_in": True,
"mail_out": True,
"dns_zone": dns_zone, "dns_zone": dns_zone,
"ttl": 3600, "ttl": 3600,
} }
@ -805,13 +809,15 @@ def domain_setting(domain, key, value=None, delete=False):
Set or get an app setting value Set or get an app setting value
Keyword argument: Keyword argument:
value -- Value to set domain -- Domain Name
app -- App ID
key -- Key to get/set key -- Key to get/set
value -- Value to set
delete -- Delete the key delete -- Delete the key
""" """
boolean_keys = ["mail_in", "mail_out", "xmpp"]
domains = _load_domain_settings([ domain ]) domains = _load_domain_settings([ domain ])
if not domain in domains.keys(): if not domain in domains.keys():
@ -834,17 +840,22 @@ def domain_setting(domain, key, value=None, delete=False):
# SET # SET
else: else:
if key in boolean_keys:
value = True if value.lower() in ['true', '1', 't', 'y', 'yes', "iloveynh"] else False
if "ttl" == key: if "ttl" == key:
try: try:
ttl = int(value) value = int(value)
except ValueError: except ValueError:
# TODO add locales # TODO add locales
raise YunohostError("invalid_number", value_type=type(ttl)) raise YunohostError("invalid_number", value_type=type(value))
if ttl < 0: if value < 0:
raise YunohostError("pattern_positive_number", value_type=type(ttl)) raise YunohostError("pattern_positive_number", value_type=type(value))
# Set new value
domain_settings[key] = value domain_settings[key] = value
# Save settings
_set_domain_settings(domain, domain_settings) _set_domain_settings(domain, domain_settings)