From e140ed652cddf2a66c39eb2ccbf97062ae8810d1 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Fri, 22 Jan 2016 21:28:35 +0000 Subject: [PATCH 1/9] [enh] new command to generate DNS configuration for a given domain name --- data/actionsmap/yunohost.yml | 11 +++++++++++ src/yunohost/domain.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/data/actionsmap/yunohost.yml b/data/actionsmap/yunohost.yml index 0374bce7b..2c9788a28 100644 --- a/data/actionsmap/yunohost.yml +++ b/data/actionsmap/yunohost.yml @@ -291,6 +291,17 @@ domain: extra: pattern: *pattern_domain + ### domain_generate_dns_config() + generate_dns_configuration: + action_help: Generate DNS configuration for a domain + api: GET /domains//dns_config + configuration: + lock: false + authenticate: all + arguments: + domain: + help: Target domain + ### domain_info() # info: # action_help: Get domain informations diff --git a/src/yunohost/domain.py b/src/yunohost/domain.py index 53b938356..d1490810f 100644 --- a/src/yunohost/domain.py +++ b/src/yunohost/domain.py @@ -218,3 +218,36 @@ def domain_remove(auth, domain, force=False): hook_callback('post_domain_remove', args=[domain]) msignals.display(m18n.n('domain_deleted'), 'success') + + +def domain_generate_dns_configuration(auth, domain): + """ + Generate DNS configuration for a domain + + Keyword argument: + domain -- Domain name + """ + + ip4 = urlopen("http://ip.yunohost.org").read().strip() + + result = "@ 1400 IN A {ip4}\n* 900 IN A {ip4}\n".format(ip4=ip4) + + ip6 = None + + try: + ip6 = urlopen("http://ip6.yunohost.org").read().strip() + except Exception: + pass + else: + result += "@ 1400 IN A {ip6}\n* 900 IN AAAA {ip6}\n".format(ip6=ip6) + + result += "\n_xmpp-client._tcp 14400 IN SRV 0 5 5222 {domain}.\n_xmpp-server._tcp 14400 IN SRV 0 5 5269 {domain}.\n".format(domain=domain) + + result += "@ 1400 IN MX 10 {domain}.tld.\n".format(domain=domain) + + if ip6 is None: + result += '@ 1400 IN TXT "v=spf1 a mx ip4:{ip4} -all"\n'.format(ip4=ip4) + else: + result += '@ 1400 IN TXT "v=spf1 a mx ip4:{ip4} ip6:{ip6} -all"\n'.format(ip4=ip4, ip6=ip6) + + return result From d5ec3c99c9706fe5cd801757e14772913815a499 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Sun, 24 Jan 2016 01:43:07 +0000 Subject: [PATCH 2/9] [mod] modify uri for dns config --- data/actionsmap/yunohost.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/actionsmap/yunohost.yml b/data/actionsmap/yunohost.yml index 2c9788a28..007bc4465 100644 --- a/data/actionsmap/yunohost.yml +++ b/data/actionsmap/yunohost.yml @@ -294,7 +294,7 @@ domain: ### domain_generate_dns_config() generate_dns_configuration: action_help: Generate DNS configuration for a domain - api: GET /domains//dns_config + api: GET /domains//dns configuration: lock: false authenticate: all From 4817be949104df48355dbd7d8387d23a26fa0b23 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Sun, 24 Jan 2016 01:43:45 +0000 Subject: [PATCH 3/9] [fix] bad IPV6 declaration --- src/yunohost/domain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/yunohost/domain.py b/src/yunohost/domain.py index d1490810f..317841e33 100644 --- a/src/yunohost/domain.py +++ b/src/yunohost/domain.py @@ -239,7 +239,7 @@ def domain_generate_dns_configuration(auth, domain): except Exception: pass else: - result += "@ 1400 IN A {ip6}\n* 900 IN AAAA {ip6}\n".format(ip6=ip6) + result += "@ 1400 IN AAAA {ip6}\n* 900 IN AAAA {ip6}\n".format(ip6=ip6) result += "\n_xmpp-client._tcp 14400 IN SRV 0 5 5222 {domain}.\n_xmpp-server._tcp 14400 IN SRV 0 5 5269 {domain}.\n".format(domain=domain) From 34ef4c7092639c3b270e7e90667d9e666087fcbd Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Sun, 24 Jan 2016 01:44:01 +0000 Subject: [PATCH 4/9] [mod] uniformise TTL declarations --- src/yunohost/domain.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/yunohost/domain.py b/src/yunohost/domain.py index 317841e33..d8b4abddb 100644 --- a/src/yunohost/domain.py +++ b/src/yunohost/domain.py @@ -230,7 +230,7 @@ def domain_generate_dns_configuration(auth, domain): ip4 = urlopen("http://ip.yunohost.org").read().strip() - result = "@ 1400 IN A {ip4}\n* 900 IN A {ip4}\n".format(ip4=ip4) + result = "@ 1400 IN A {ip4}\n* 1400 IN A {ip4}\n".format(ip4=ip4) ip6 = None @@ -239,7 +239,7 @@ def domain_generate_dns_configuration(auth, domain): except Exception: pass else: - result += "@ 1400 IN AAAA {ip6}\n* 900 IN AAAA {ip6}\n".format(ip6=ip6) + result += "@ 1400 IN AAAA {ip6}\n* 1400 IN AAAA {ip6}\n".format(ip6=ip6) result += "\n_xmpp-client._tcp 14400 IN SRV 0 5 5222 {domain}.\n_xmpp-server._tcp 14400 IN SRV 0 5 5269 {domain}.\n".format(domain=domain) From b3665ede0ffa3ce47e9465b519f922e99d82c26e Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Sun, 24 Jan 2016 01:44:19 +0000 Subject: [PATCH 5/9] [mod] add CNAME for xmpp --- src/yunohost/domain.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/yunohost/domain.py b/src/yunohost/domain.py index d8b4abddb..b3bbc5496 100644 --- a/src/yunohost/domain.py +++ b/src/yunohost/domain.py @@ -243,6 +243,8 @@ def domain_generate_dns_configuration(auth, domain): result += "\n_xmpp-client._tcp 14400 IN SRV 0 5 5222 {domain}.\n_xmpp-server._tcp 14400 IN SRV 0 5 5269 {domain}.\n".format(domain=domain) + result += "muc 1800 IN CNAME @\npubsub 1800 IN CNAME @\nvjud 1800 IN CNAME @\n\n" + result += "@ 1400 IN MX 10 {domain}.tld.\n".format(domain=domain) if ip6 is None: From d289bbe8e84c1638797f9796c50682eb1749d5b7 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Sun, 24 Jan 2016 11:44:39 +0000 Subject: [PATCH 6/9] [fix] remove .tld --- src/yunohost/domain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/yunohost/domain.py b/src/yunohost/domain.py index b3bbc5496..e35e92e31 100644 --- a/src/yunohost/domain.py +++ b/src/yunohost/domain.py @@ -245,7 +245,7 @@ def domain_generate_dns_configuration(auth, domain): result += "muc 1800 IN CNAME @\npubsub 1800 IN CNAME @\nvjud 1800 IN CNAME @\n\n" - result += "@ 1400 IN MX 10 {domain}.tld.\n".format(domain=domain) + result += "@ 1400 IN MX 10 {domain}.\n".format(domain=domain) if ip6 is None: result += '@ 1400 IN TXT "v=spf1 a mx ip4:{ip4} -all"\n'.format(ip4=ip4) From 2b743115266eaf97a3ca33d877614eb8949eecde Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Sun, 24 Jan 2016 15:56:05 +0000 Subject: [PATCH 7/9] [mod] rename function like suggested --- data/actionsmap/yunohost.yml | 4 ++-- src/yunohost/domain.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/actionsmap/yunohost.yml b/data/actionsmap/yunohost.yml index 007bc4465..b64e94308 100644 --- a/data/actionsmap/yunohost.yml +++ b/data/actionsmap/yunohost.yml @@ -291,8 +291,8 @@ domain: extra: pattern: *pattern_domain - ### domain_generate_dns_config() - generate_dns_configuration: + ### dns_conf() + dns-conf: action_help: Generate DNS configuration for a domain api: GET /domains//dns configuration: diff --git a/src/yunohost/domain.py b/src/yunohost/domain.py index e35e92e31..1385058f9 100644 --- a/src/yunohost/domain.py +++ b/src/yunohost/domain.py @@ -220,7 +220,7 @@ def domain_remove(auth, domain, force=False): msignals.display(m18n.n('domain_deleted'), 'success') -def domain_generate_dns_configuration(auth, domain): +def domain_dns_conf(auth, domain): """ Generate DNS configuration for a domain From d93a1746d7c27ef05a116df0ec2000b59f31543e Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Tue, 26 Jan 2016 15:49:45 +0000 Subject: [PATCH 8/9] [mod] dns_conf only need authentication for the api --- data/actionsmap/yunohost.yml | 3 ++- src/yunohost/domain.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/data/actionsmap/yunohost.yml b/data/actionsmap/yunohost.yml index b64e94308..c97fd9323 100644 --- a/data/actionsmap/yunohost.yml +++ b/data/actionsmap/yunohost.yml @@ -297,7 +297,8 @@ domain: api: GET /domains//dns configuration: lock: false - authenticate: all + authenticate: + - api arguments: domain: help: Target domain diff --git a/src/yunohost/domain.py b/src/yunohost/domain.py index 1385058f9..535b94d40 100644 --- a/src/yunohost/domain.py +++ b/src/yunohost/domain.py @@ -220,7 +220,7 @@ def domain_remove(auth, domain, force=False): msignals.display(m18n.n('domain_deleted'), 'success') -def domain_dns_conf(auth, domain): +def domain_dns_conf(domain): """ Generate DNS configuration for a domain From 4d1e43a7b1a87c1e9cf7913949d5fb023aa7b351 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Tue, 26 Jan 2016 15:50:05 +0000 Subject: [PATCH 9/9] [mod] typo --- data/actionsmap/yunohost.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/actionsmap/yunohost.yml b/data/actionsmap/yunohost.yml index c97fd9323..80a74251b 100644 --- a/data/actionsmap/yunohost.yml +++ b/data/actionsmap/yunohost.yml @@ -291,7 +291,7 @@ domain: extra: pattern: *pattern_domain - ### dns_conf() + ### domain_dns_conf() dns-conf: action_help: Generate DNS configuration for a domain api: GET /domains//dns