mod_dnsupdate/mod_dnsupdate.lua
changeset 4900 54fa2116bbf3
parent 4886 28f6322fad50
child 5692 429be658c0bb
equal deleted inserted replaced
4899:2542fd80cd15 4900:54fa2116bbf3
    40 		out:write("\t-p --primary\tprimary DNS name server\n");
    40 		out:write("\t-p --primary\tprimary DNS name server\n");
    41 		out:write("\t-t --target\ttarget hostname for SRV\n");
    41 		out:write("\t-t --target\ttarget hostname for SRV\n");
    42 		out:write("\t-l --ttl\tTTL to use\n");
    42 		out:write("\t-l --ttl\tTTL to use\n");
    43 		out:write("\t--each\tremove and replace individual SRV records\n");
    43 		out:write("\t--each\tremove and replace individual SRV records\n");
    44 		out:write("\t--reset\tremove and replace all SRV records\n");
    44 		out:write("\t--reset\tremove and replace all SRV records\n");
       
    45 		out:write("\t--remove\tremove all SRV records\n");
    45 		return opts and opts.help and 0 or 1;
    46 		return opts and opts.help and 0 or 1;
    46 	end
    47 	end
    47 
    48 
    48 	local vhost = nameprep(arg[1]); -- TODO loop over arg[]?
    49 	local vhost = nameprep(arg[1]); -- TODO loop over arg[]?
    49 	if not vhost then
    50 	if not vhost then
   101 	print("ttl " .. tostring(opts.ttl or 60 * 60));
   102 	print("ttl " .. tostring(opts.ttl or 60 * 60));
   102 
   103 
   103 	for _, service in ipairs(services) do
   104 	for _, service in ipairs(services) do
   104 		local ports = set.new(configured_ports[service]);
   105 		local ports = set.new(configured_ports[service]);
   105 		local records = (async.wait_for(existing_srv[service]));
   106 		local records = (async.wait_for(existing_srv[service]));
   106 		if opts.reset then
   107 		if opts.remove or opts.reset then
   107 			print(("del _%s._tcp.%s IN SRV"):format(service, ihost));
   108 			print(("del _%s._tcp.%s IN SRV"):format(service, ihost));
   108 		else
   109 		else
   109 			for _, rr in ipairs(records) do
   110 			for _, rr in ipairs(records) do
   110 				if ports:contains(rr.srv.port) and target == nameprep(rr.srv.target):gsub("%.$", "") then
   111 				if ports:contains(rr.srv.port) and target == nameprep(rr.srv.target):gsub("%.$", "") then
   111 					ports:remove(rr.srv.port)
   112 					ports:remove(rr.srv.port)
   115 				else
   116 				else
   116 					print(("del _%s._tcp.%s IN SRV %s"):format(service, ihost, rr));
   117 					print(("del _%s._tcp.%s IN SRV %s"):format(service, ihost, rr));
   117 				end
   118 				end
   118 			end
   119 			end
   119 		end
   120 		end
   120 		for port in ports do print(("add _%s._tcp.%s IN SRV 1 1 %d %s"):format(service, ihost, port, target)); end
   121 		if not opts.remove then
       
   122 			for port in ports do print(("add _%s._tcp.%s IN SRV 1 1 %d %s"):format(service, ihost, port, target)); end
       
   123 		end
   121 	end
   124 	end
   122 
   125 
   123 	print("show");
   126 	print("show");
   124 	print("send");
   127 	print("send");
   125 	print("answer");
   128 	print("answer");