annotate mod_dnsupdate/mod_dnsupdate.lua @ 6513:5fb466693e85

mod_storage_xmlarchive: Ensure list index files are removed using os.remove() on the list files leaves the new index files behind since util.datamanager does not know they are removed. Thanks Link Mauve
author Kim Alvefur <zash@zash.se>
date Tue, 07 Apr 2026 21:10:54 +0200
parents 0703ef9f8db8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4762
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 module:set_global();
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 local config = require "core.configmanager";
6221
52e239aa96af mod_dnsupdate: Use modulemanager to check which of c2s and s2s are enabled
Kim Alvefur <zash@zash.se>
parents: 6220
diff changeset
4 local modulemanager = require "core.modulemanager";
4762
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 local argparse = require "util.argparse";
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 local dns = require"net.adns".resolver();
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 local async = require "util.async";
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 local set = require "util.set";
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 local nameprep = require"util.encodings".stringprep.nameprep;
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 local idna_to_ascii = require"util.encodings".idna.to_ascii;
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11
6221
52e239aa96af mod_dnsupdate: Use modulemanager to check which of c2s and s2s are enabled
Kim Alvefur <zash@zash.se>
parents: 6220
diff changeset
12 local services = { "xmpp-client"; "xmpps-client"; "xmpp-server"; "xmpps-server" }
4762
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 local function validate_dnsname_option(options, option_name, default)
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 local host = options[option_name];
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 if host == nil then return default end
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 local normalized = nameprep(host);
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 if not normalized then
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 module:log("error", "--%s %q fails normalization");
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 return;
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 end
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 local alabel = idna_to_ascii(normalized);
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 if not alabel then
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 module:log("error", "--%s %q fails IDNA");
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 return;
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 end
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 return alabel;
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 end
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 function module.command(arg)
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 local opts = argparse.parse(arg, {
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 short_params = { d = "domain"; p = "primary"; t = "target"; l = "ttl"; h = "help"; ["?"] = "help" };
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 value_params = { domain = true; primary = true; target = true; ttl = true };
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 });
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35
6413
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
36 if not arg[1] or not opts or opts.help or not opts.domain then
4762
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 local out = opts.help and io.stdout or io.stderr;
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 out:write("prosodyctl mod_dnsupdate [options] virtualhost\n");
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
39 out:write("\t-d --domain\tbase domain name *required*\n");
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
40 out:write("\t-p --primary\tprimary DNS name server\n");
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
41 out:write("\t-t --target\ttarget hostname for SRV\n");
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
42 out:write("\t-l --ttl\tTTL to use\n");
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
43 out:write("\t--each\tremove and replace individual SRV records\n");
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
44 out:write("\t--reset\tremove and replace all SRV records\n");
4896
54fa2116bbf3 mod_dnsupdate: Add a --remove option to delete all SRV records
Kim Alvefur <zash@zash.se>
parents: 4882
diff changeset
45 out:write("\t--remove\tremove all SRV records\n");
4762
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46 return opts and opts.help and 0 or 1;
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
47 end
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
48
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
49 local domain = validate_dnsname_option(opts, "domain");
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
50 if not domain then
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
51 module:log("error", "--domain is required");
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
52 return 1;
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
53 end
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
54 local primary = validate_dnsname_option(opts, "primary")
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
55 or async.wait_for(dns:lookup_promise(domain, "SOA"):next(function(ret) return ret[1].soa.mname; end));
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
56 if not primary then
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
57 module:log("error", "Could not discover primary name server, specify it with --primary");
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
58 return 1;
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
59 end
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
60
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
61 print("zone", domain);
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
62 print("server", primary);
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
63 print("ttl " .. tostring(opts.ttl or 60 * 60));
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
64
6413
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
65 for _, vhost in ipairs(arg) do
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
66 if not vhost then
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
67 module:log("error", "Host %q fails normalization", arg[1]);
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
68 return 1;
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
69 end
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
70 local ihost = idna_to_ascii(vhost);
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
71 if not ihost then
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
72 module:log("error", "Host %q fails IDNA", vhost);
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
73 return 1;
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
74 end
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
75 if not config.get(vhost, "component_module") and not config.get(vhost, "defined") then
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
76 module:log("error", "Host %q is not defined in the config", vhost);
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
77 return 1;
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
78 end
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
79
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
80 local target = validate_dnsname_option(opts, "target", module:context(vhost):get_option_string("xmpp_host", ihost));
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
81 -- TODO validate that target has A/AAAA
6220
b6e390a97c85 mod_dnsupdate: Improve handling of existing DNS records
Kim Alvefur <zash@zash.se>
parents: 5688
diff changeset
82
6413
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
83 local configured_ports = {
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
84 ["xmpp-client"] = module:get_option_array("c2s_ports", { 5222 });
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
85 ["xmpp-server"] = module:get_option_array("s2s_ports", { 5269 });
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
86 ["xmpps-client"] = module:get_option_array("c2s_direct_tls_ports", {});
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
87 ["xmpps-server"] = module:get_option_array("s2s_direct_tls_ports", {});
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
88 };
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
89
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
90 local modules_enabled = modulemanager.get_modules_for_host(vhost);
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
91 if not modules_enabled:contains("c2s") then
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
92 configured_ports["xmpp-client"] = {};
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
93 configured_ports["xmpps-client"] = {};
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
94 end
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
95 if not modules_enabled:contains("s2s") then
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
96 configured_ports["xmpp-server"] = {};
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
97 configured_ports["xmpps-server"] = {};
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
98 end
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
99
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
100 if modules_enabled:contains("net_multiplex") then
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
101 for opt, ports in pairs(configured_ports) do
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
102 ports:append(module:get_option_array(opt:sub(1, 5) == "xmpps" and "ssl_ports" or "ports", {}));
4762
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
103 end
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
104 end
6220
b6e390a97c85 mod_dnsupdate: Improve handling of existing DNS records
Kim Alvefur <zash@zash.se>
parents: 5688
diff changeset
105
6413
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
106 local existing_srv = {};
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
107 for _, service in ipairs(services) do
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
108 existing_srv[service] = dns:lookup_promise(("_%s._tcp.%s"):format(service, ihost), "SRV");
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
109 end
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
110
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
111 for _, service in ipairs(services) do
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
112 local config_ports = set.new(configured_ports[service]);
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
113 local dns_ports = set.new();
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
114
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
115 if (opts.reset or opts.remove) and not opts.each then
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
116 print(("del _%s._tcp.%s IN SRV"):format(service, ihost));
6220
b6e390a97c85 mod_dnsupdate: Improve handling of existing DNS records
Kim Alvefur <zash@zash.se>
parents: 5688
diff changeset
117 else
6413
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
118 local records = (async.wait_for(existing_srv[service]));
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
119 for _, rr in ipairs(records) do
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
120 if target == nameprep(rr.srv.target):gsub("%.$", "") then
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
121 dns_ports:add(rr.srv.port)
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
122 elseif opts.each then
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
123 print(("del _%s._tcp.%s IN SRV %s"):format(service, ihost, rr));
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
124 end
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
125 end
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
126 end
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
127
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
128 if not opts.remove then
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
129 if config_ports:empty() then
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
130 print(("add _%s._tcp.%s IN SRV 0 0 0 ."):format(service, ihost));
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
131 else
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
132 for port in (config_ports - dns_ports) do
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
133 print(("add _%s._tcp.%s IN SRV 1 1 %d %s"):format(service, ihost, port, target));
0703ef9f8db8 mod_dnsupdate: Support multiple hosts/components
Kim Alvefur <zash@zash.se>
parents: 6223
diff changeset
134 end
6220
b6e390a97c85 mod_dnsupdate: Improve handling of existing DNS records
Kim Alvefur <zash@zash.se>
parents: 5688
diff changeset
135 end
b6e390a97c85 mod_dnsupdate: Improve handling of existing DNS records
Kim Alvefur <zash@zash.se>
parents: 5688
diff changeset
136 end
4896
54fa2116bbf3 mod_dnsupdate: Add a --remove option to delete all SRV records
Kim Alvefur <zash@zash.se>
parents: 4882
diff changeset
137 end
4762
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
138 end
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
139
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
140 print("show");
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
141 print("send");
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
142 print("answer");
ba312cd7907f mod_dnsupdate: Use with nsupdate to update DNS records from config
Kim Alvefur <zash@zash.se>
parents:
diff changeset
143 end