mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
dyndns: Misc semantic tweaks...
This commit is contained in:
parent
d67e231678
commit
81360723cc
5 changed files with 37 additions and 39 deletions
|
@ -375,8 +375,8 @@
|
|||
"domain_dns_registrar_supported": "YunoHost automatically detected that this domain is handled by the registrar **{registrar}**. If you want, YunoHost will automatically configure this DNS zone, if you provide it with the appropriate API credentials. You can find documentation on how to obtain your API credentials on this page: https://yunohost.org/registar_api_{registrar}. (You can also manually configure your DNS records following the documentation at https://yunohost.org/dns )",
|
||||
"domain_dns_registrar_yunohost": "This domain is a nohost.me / nohost.st / ynh.fr and its DNS configuration is therefore automatically handled by YunoHost without any further configuration. (see the 'yunohost domain dns push DOMAIN' command)",
|
||||
"domain_dyndns_already_subscribed": "You have already subscribed to a DynDNS domain",
|
||||
"domain_dyndns_instruction_unclear": "You must choose exactly one of the following options : --subscribe or --no-subscribe",
|
||||
"domain_dyndns_instruction_unclear_unsubscribe": "You must choose exactly one of the following options : --unsubscribe or --no-unsubscribe",
|
||||
"domain_dyndns_instruction_unclear": "You must choose exactly one of the following options : --subscribe or --ignore-dyndns",
|
||||
"domain_dyndns_instruction_unclear_unsubscribe": "You must choose exactly one of the following options : --unsubscribe or --ignore-dyndns",
|
||||
"domain_exists": "The domain already exists",
|
||||
"domain_hostname_failed": "Unable to set new hostname. This might cause an issue later (it might be fine).",
|
||||
"domain_registrar_is_not_configured": "The registrar is not yet configured for domain {domain}.",
|
||||
|
|
|
@ -506,8 +506,7 @@ domain:
|
|||
help: Domain name to add
|
||||
extra:
|
||||
pattern: *pattern_domain
|
||||
-n:
|
||||
full: --no-subscribe
|
||||
--ignore-dyndns:
|
||||
help: If adding a DynDNS domain, only add the domain, without subscribing to the DynDNS service
|
||||
action: store_true
|
||||
--dyndns-recovery-password:
|
||||
|
@ -536,8 +535,7 @@ domain:
|
|||
full: --force
|
||||
help: Do not ask confirmation to remove apps
|
||||
action: store_true
|
||||
-n:
|
||||
full: --no-unsubscribe
|
||||
--ignore-dyndns:
|
||||
help: If removing a DynDNS domain, only remove the domain, without unsubscribing from the DynDNS service
|
||||
action: store_true
|
||||
--dyndns-recovery-password:
|
||||
|
@ -662,7 +660,7 @@ domain:
|
|||
extra:
|
||||
pattern: *pattern_domain
|
||||
-p:
|
||||
full: --password
|
||||
full: --recovery-password
|
||||
nargs: "?"
|
||||
const: 0
|
||||
help: Password used to later delete the domain
|
||||
|
@ -681,7 +679,7 @@ domain:
|
|||
pattern: *pattern_domain
|
||||
required: True
|
||||
-p:
|
||||
full: --password
|
||||
full: --recovery-password
|
||||
nargs: "?"
|
||||
const: 0
|
||||
help: Password used to delete the domain
|
||||
|
@ -1688,8 +1686,7 @@ tools:
|
|||
pattern: *pattern_password
|
||||
required: True
|
||||
comment: good_practices_about_admin_password
|
||||
-n:
|
||||
full: --no-subscribe
|
||||
--ingnore-dyndns:
|
||||
help: If adding a DynDNS domain, only add the domain, without subscribing to the DynDNS service
|
||||
action: store_true
|
||||
--dyndns-recovery-password:
|
||||
|
|
|
@ -214,7 +214,7 @@ def _get_parent_domain_of(domain, return_self=False, topest=False):
|
|||
|
||||
|
||||
@is_unit_operation(exclude=["dyndns_recovery_password"])
|
||||
def domain_add(operation_logger, domain, dyndns_recovery_password=None, no_subscribe=False):
|
||||
def domain_add(operation_logger, domain, dyndns_recovery_password=None, ignore_dyndns=False):
|
||||
"""
|
||||
Create a custom domain
|
||||
|
||||
|
@ -222,7 +222,7 @@ def domain_add(operation_logger, domain, dyndns_recovery_password=None, no_subsc
|
|||
domain -- Domain name to add
|
||||
dyndns -- Subscribe to DynDNS
|
||||
dyndns_recovery_password -- Password used to later unsubscribe from DynDNS
|
||||
no_unsubscribe -- If we want to just add the DynDNS domain to the list, without subscribing
|
||||
ignore_dyndns -- If we want to just add the DynDNS domain to the list, without subscribing
|
||||
"""
|
||||
from yunohost.hook import hook_callback
|
||||
from yunohost.app import app_ssowatconf
|
||||
|
@ -256,7 +256,7 @@ def domain_add(operation_logger, domain, dyndns_recovery_password=None, no_subsc
|
|||
# Detect if this is a DynDNS domain ( and not a subdomain of a DynDNS domain )
|
||||
dyndns = is_yunohost_dyndns_domain(domain) and len(domain.split(".")) == 3
|
||||
if dyndns:
|
||||
if not no_subscribe and not dyndns_recovery_password:
|
||||
if not ignore_dyndns and not dyndns_recovery_password:
|
||||
if Moulinette.interface.type == "api":
|
||||
raise YunohostValidationError("domain_dyndns_missing_password")
|
||||
else:
|
||||
|
@ -267,7 +267,7 @@ def domain_add(operation_logger, domain, dyndns_recovery_password=None, no_subsc
|
|||
# Ensure sufficiently complex password
|
||||
assert_password_is_strong_enough("admin", dyndns_recovery_password)
|
||||
|
||||
if ((dyndns_recovery_password is None) == (no_subscribe is False)):
|
||||
if ((dyndns_recovery_password is None) == (ignore_dyndns is False)):
|
||||
raise YunohostValidationError("domain_dyndns_instruction_unclear")
|
||||
|
||||
from yunohost.dyndns import is_subscribing_allowed
|
||||
|
@ -277,10 +277,10 @@ def domain_add(operation_logger, domain, dyndns_recovery_password=None, no_subsc
|
|||
raise YunohostValidationError("domain_dyndns_already_subscribed")
|
||||
|
||||
operation_logger.start()
|
||||
if not dyndns and (dyndns_recovery_password is not None or no_subscribe):
|
||||
logger.warning("This domain is not a DynDNS one, no need for the --dyndns-recovery-password or --no-subscribe option")
|
||||
if not dyndns and (dyndns_recovery_password is not None or ignore_dyndns):
|
||||
logger.warning("This domain is not a DynDNS one, no need for the --dyndns-recovery-password or --ignore-dyndns option")
|
||||
|
||||
if dyndns and not no_subscribe:
|
||||
if dyndns and not ignore_dyndns:
|
||||
# Actually subscribe
|
||||
domain_dyndns_subscribe(domain=domain, password=dyndns_recovery_password)
|
||||
|
||||
|
@ -332,7 +332,7 @@ def domain_add(operation_logger, domain, dyndns_recovery_password=None, no_subsc
|
|||
|
||||
|
||||
@is_unit_operation(exclude=["dyndns_recovery_password"])
|
||||
def domain_remove(operation_logger, domain, remove_apps=False, force=False, dyndns_recovery_password=None, no_unsubscribe=False):
|
||||
def domain_remove(operation_logger, domain, remove_apps=False, force=False, dyndns_recovery_password=None, ignore_dyndns=False):
|
||||
"""
|
||||
Delete domains
|
||||
|
||||
|
@ -342,7 +342,7 @@ def domain_remove(operation_logger, domain, remove_apps=False, force=False, dynd
|
|||
force -- Force the domain removal and don't not ask confirmation to
|
||||
remove apps if remove_apps is specified
|
||||
dyndns_recovery_password -- Recovery password used at the creation of the DynDNS domain
|
||||
no_unsubscribe -- If we just remove the DynDNS domain, without unsubscribing
|
||||
ignore_dyndns -- If we just remove the DynDNS domain, without unsubscribing
|
||||
"""
|
||||
from yunohost.hook import hook_callback
|
||||
from yunohost.app import app_ssowatconf, app_info, app_remove
|
||||
|
@ -414,13 +414,13 @@ def domain_remove(operation_logger, domain, remove_apps=False, force=False, dynd
|
|||
# Detect if this is a DynDNS domain ( and not a subdomain of a DynDNS domain )
|
||||
dyndns = is_yunohost_dyndns_domain(domain) and len(domain.split(".")) == 3
|
||||
if dyndns:
|
||||
if ((dyndns_recovery_password is None) == (no_unsubscribe is False)):
|
||||
if ((dyndns_recovery_password is None) == (ignore_dyndns is False)):
|
||||
raise YunohostValidationError("domain_dyndns_instruction_unclear_unsubscribe")
|
||||
|
||||
operation_logger.start()
|
||||
|
||||
if not dyndns and ((dyndns_recovery_password is not None) or (no_unsubscribe is not False)):
|
||||
logger.warning("This domain is not a DynDNS one, no need for the --dyndns_recovery_password or --no-unsubscribe option")
|
||||
if not dyndns and ((dyndns_recovery_password is not None) or (ignore_dyndns is not False)):
|
||||
logger.warning("This domain is not a DynDNS one, no need for the --dyndns_recovery_password or --ignore-dyndns option")
|
||||
|
||||
ldap = _get_ldap_interface()
|
||||
try:
|
||||
|
@ -467,7 +467,7 @@ def domain_remove(operation_logger, domain, remove_apps=False, force=False, dynd
|
|||
hook_callback("post_domain_remove", args=[domain])
|
||||
|
||||
# If a password is provided, delete the DynDNS record
|
||||
if dyndns and not no_unsubscribe:
|
||||
if dyndns and not ignore_dyndns:
|
||||
# Actually unsubscribe
|
||||
domain_dyndns_unsubscribe(domain=domain, password=dyndns_recovery_password)
|
||||
|
||||
|
|
|
@ -79,27 +79,27 @@ def _dyndns_available(domain):
|
|||
|
||||
|
||||
@is_unit_operation()
|
||||
def dyndns_subscribe(operation_logger, domain=None, password=None):
|
||||
def dyndns_subscribe(operation_logger, domain=None, recovery_password=None):
|
||||
"""
|
||||
Subscribe to a DynDNS service
|
||||
|
||||
Keyword argument:
|
||||
domain -- Full domain to subscribe with
|
||||
password -- Password that will be used to delete the domain
|
||||
recovery_password -- Password that will be used to delete the domain
|
||||
"""
|
||||
|
||||
if password is None:
|
||||
if recovery_password is None:
|
||||
logger.warning(m18n.n('dyndns_no_recovery_password'))
|
||||
else:
|
||||
from yunohost.utils.password import assert_password_is_strong_enough
|
||||
# Ensure sufficiently complex password
|
||||
if Moulinette.interface.type == "cli" and password == 0:
|
||||
password = Moulinette.prompt(
|
||||
if Moulinette.interface.type == "cli" and recovery_password == 0:
|
||||
recovery_password = Moulinette.prompt(
|
||||
m18n.n("ask_password"),
|
||||
is_password=True,
|
||||
confirm=True
|
||||
)
|
||||
assert_password_is_strong_enough("admin", password)
|
||||
assert_password_is_strong_enough("admin", recovery_password)
|
||||
|
||||
if not is_subscribing_allowed():
|
||||
raise YunohostValidationError("domain_dyndns_already_subscribed")
|
||||
|
@ -155,7 +155,7 @@ def dyndns_subscribe(operation_logger, domain=None, password=None):
|
|||
b64encoded_key = base64.b64encode(secret.encode()).decode()
|
||||
data = {"subdomain": domain}
|
||||
if password is not None:
|
||||
data["recovery_password"] = hashlib.sha256((domain + ":" + password.strip()).encode('utf-8')).hexdigest()
|
||||
data["recovery_password"] = hashlib.sha256((domain + ":" + recovery_password.strip()).encode('utf-8')).hexdigest()
|
||||
r = requests.post(
|
||||
f"https://{DYNDNS_PROVIDER}/key/{b64encoded_key}?key_algo=hmac-sha512",
|
||||
data=data,
|
||||
|
@ -193,24 +193,24 @@ def dyndns_subscribe(operation_logger, domain=None, password=None):
|
|||
|
||||
|
||||
@is_unit_operation()
|
||||
def dyndns_unsubscribe(operation_logger, domain, password=None):
|
||||
def dyndns_unsubscribe(operation_logger, domain, recovery_password=None):
|
||||
"""
|
||||
Unsubscribe from a DynDNS service
|
||||
|
||||
Keyword argument:
|
||||
domain -- Full domain to unsubscribe with
|
||||
password -- Password that is used to delete the domain ( defined when subscribing )
|
||||
recovery_password -- Password that is used to delete the domain ( defined when subscribing )
|
||||
"""
|
||||
|
||||
from yunohost.utils.password import assert_password_is_strong_enough
|
||||
|
||||
# Ensure sufficiently complex password
|
||||
if Moulinette.interface.type == "cli" and not password:
|
||||
password = Moulinette.prompt(
|
||||
if Moulinette.interface.type == "cli" and not recovery_password:
|
||||
recovery_password = Moulinette.prompt(
|
||||
m18n.n("ask_password"),
|
||||
is_password=True
|
||||
)
|
||||
assert_password_is_strong_enough("admin", password)
|
||||
assert_password_is_strong_enough("admin", recovery_password)
|
||||
|
||||
operation_logger.start()
|
||||
|
||||
|
@ -222,7 +222,7 @@ def dyndns_unsubscribe(operation_logger, domain, password=None):
|
|||
|
||||
# Send delete request
|
||||
try:
|
||||
secret = str(domain) + ":" + str(password).strip()
|
||||
secret = str(domain) + ":" + str(recovery_password).strip()
|
||||
r = requests.delete(
|
||||
f"https://{DYNDNS_PROVIDER}/domains/{domain}",
|
||||
data={"recovery_password": hashlib.sha256(secret.encode('utf-8')).hexdigest()},
|
||||
|
|
|
@ -152,7 +152,7 @@ def tools_postinstall(
|
|||
fullname,
|
||||
password,
|
||||
dyndns_recovery_password=None,
|
||||
no_subscribe=False,
|
||||
ignore_dyndns=False,
|
||||
force_diskspace=False,
|
||||
):
|
||||
|
||||
|
@ -194,7 +194,8 @@ def tools_postinstall(
|
|||
|
||||
# If this is a nohost.me/noho.st, actually check for availability
|
||||
if is_yunohost_dyndns_domain(domain):
|
||||
if ((dyndns_recovery_password is None) == (no_subscribe is False)):
|
||||
|
||||
if (bool(dyndns_recovery_password), ignore_dyndns) in [(True, True), (False, False)]:
|
||||
raise YunohostValidationError("domain_dyndns_instruction_unclear")
|
||||
|
||||
# Check if the domain is available...
|
||||
|
@ -219,7 +220,7 @@ def tools_postinstall(
|
|||
logger.info(m18n.n("yunohost_installing"))
|
||||
|
||||
# New domain config
|
||||
domain_add(domain, dyndns_recovery_password=dyndns_recovery_password, no_subscribe=no_subscribe)
|
||||
domain_add(domain, dyndns_recovery_password=dyndns_recovery_password, ignore_dyndns=ignore_dyndns)
|
||||
domain_main_domain(domain)
|
||||
|
||||
user_create(username, domain, password, admin=True, fullname=fullname)
|
||||
|
|
Loading…
Add table
Reference in a new issue