mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Split registrar settings to /etc/yunohost/registrars/{dns_zone}.yml
This commit is contained in:
parent
c87a7b66e6
commit
b082f0314c
1 changed files with 41 additions and 17 deletions
|
@ -54,6 +54,7 @@ from yunohost.hook import hook_callback
|
||||||
logger = getActionLogger("yunohost.domain")
|
logger = getActionLogger("yunohost.domain")
|
||||||
|
|
||||||
DOMAIN_SETTINGS_DIR = "/etc/yunohost/domains"
|
DOMAIN_SETTINGS_DIR = "/etc/yunohost/domains"
|
||||||
|
REGISTRAR_SETTINGS_DIR = "/etc/yunohost/registrars"
|
||||||
REGISTRAR_LIST_PATH = "/usr/share/yunohost/other/providers_list.yml"
|
REGISTRAR_LIST_PATH = "/usr/share/yunohost/other/providers_list.yml"
|
||||||
|
|
||||||
|
|
||||||
|
@ -771,6 +772,22 @@ def _load_domain_settings():
|
||||||
return new_domains
|
return new_domains
|
||||||
|
|
||||||
|
|
||||||
|
def _load_registrar_setting(dns_zone):
|
||||||
|
"""
|
||||||
|
Retrieve entries in registrars/[dns_zone].yml
|
||||||
|
"""
|
||||||
|
|
||||||
|
on_disk_settings = {}
|
||||||
|
filepath = f"{REGISTRAR_SETTINGS_DIR}/{dns_zone}.yml"
|
||||||
|
if os.path.exists(filepath) and os.path.isfile(filepath):
|
||||||
|
on_disk_settings = yaml.load(open(filepath, "r+"))
|
||||||
|
# If the file is empty or "corrupted"
|
||||||
|
if not type(on_disk_settings) is dict:
|
||||||
|
on_disk_settings = {}
|
||||||
|
|
||||||
|
return on_disk_settings
|
||||||
|
|
||||||
|
|
||||||
def domain_setting(domain, key, value=None, delete=False):
|
def domain_setting(domain, key, value=None, delete=False):
|
||||||
"""
|
"""
|
||||||
Set or get an app setting value
|
Set or get an app setting value
|
||||||
|
@ -869,27 +886,32 @@ def _set_domain_settings(domain, domain_settings):
|
||||||
yaml.dump(domain_settings, file, default_flow_style=False)
|
yaml.dump(domain_settings, file, default_flow_style=False)
|
||||||
|
|
||||||
|
|
||||||
def domain_registrar_info(domain):
|
def _load_zone_of_domain(domain):
|
||||||
|
|
||||||
domains = _load_domain_settings()
|
domains = _load_domain_settings()
|
||||||
if not domain in domains.keys():
|
if not domain in domains.keys():
|
||||||
|
# TODO add locales
|
||||||
raise YunohostError("domain_name_unknown", domain=domain)
|
raise YunohostError("domain_name_unknown", domain=domain)
|
||||||
|
|
||||||
provider = domains[domain]["provider"]
|
return domains[domain]["dns_zone"]
|
||||||
|
|
||||||
if provider:
|
|
||||||
logger.info("Registrar name : " + provider['name'])
|
def domain_registrar_info(domain):
|
||||||
for option in provider['options']:
|
|
||||||
logger.info("Option " + option + " : "+provider['options'][option])
|
dns_zone = _load_zone_of_domain(domain)
|
||||||
else:
|
registrar_info = _load_registrar_setting(dns_zone)
|
||||||
logger.info("Registrar settings are not set for " + domain)
|
if not registrar_info:
|
||||||
|
# TODO add locales
|
||||||
|
raise YunohostError("no_registrar_set_for_this_dns_zone", dns_zone=dns_zone)
|
||||||
|
|
||||||
|
logger.info("Registrar name: " + registrar_info['name'])
|
||||||
|
for option_key, option_value in registrar_info['options'].items():
|
||||||
|
logger.info("Option " + option_key + ": " + option_value)
|
||||||
|
|
||||||
|
|
||||||
def domain_registrar_set(domain, registrar, args):
|
def domain_registrar_set(domain, registrar, args):
|
||||||
|
|
||||||
domains = _load_domain_settings()
|
dns_zone = _load_zone_of_domain(domain)
|
||||||
if not domain in domains.keys():
|
registrar_info = _load_registrar_setting(dns_zone)
|
||||||
raise YunohostError("domain_name_unknown", domain=domain)
|
|
||||||
|
|
||||||
registrars = yaml.load(open(REGISTRAR_LIST_PATH, "r+"))
|
registrars = yaml.load(open(REGISTRAR_LIST_PATH, "r+"))
|
||||||
if not registrar in registrars.keys():
|
if not registrar in registrars.keys():
|
||||||
|
@ -916,11 +938,13 @@ def domain_registrar_set(domain, registrar, args):
|
||||||
for arg_name, arg_value_and_type in parsed_answer_dict.items():
|
for arg_name, arg_value_and_type in parsed_answer_dict.items():
|
||||||
domain_provider["options"][arg_name] = arg_value_and_type[0]
|
domain_provider["options"][arg_name] = arg_value_and_type[0]
|
||||||
|
|
||||||
domain_settings = domains[domain]
|
# First create the REGISTRAR_SETTINGS_DIR if it doesn't exist
|
||||||
domain_settings["provider"] = domain_provider
|
if not os.path.exists(REGISTRAR_SETTINGS_DIR):
|
||||||
|
os.mkdir(REGISTRAR_SETTINGS_DIR)
|
||||||
# Save the settings to the .yaml file
|
# Save the settings to the .yaml file
|
||||||
_set_domain_settings(domain, domain_settings)
|
filepath = f"{REGISTRAR_SETTINGS_DIR}/{dns_zone}.yml"
|
||||||
|
with open(filepath, "w") as file:
|
||||||
|
yaml.dump(domain_provider, file, default_flow_style=False)
|
||||||
|
|
||||||
|
|
||||||
def domain_push_config(domain):
|
def domain_push_config(domain):
|
||||||
|
|
Loading…
Add table
Reference in a new issue