mod_compression: Only iterate over correctly named and namespaced child tags of compr...
[prosody.git] / prosodyctl
index aa6f2073d5708225d3a81ec388e4ee6204e7184f..c3adad4dcffb8b9a1b4fbb0a4e28a13391afdb49 100755 (executable)
@@ -687,7 +687,12 @@ function cert_commands.config(arg)
                                conf.distinguished_name[k] = nv ~= "." and nv or nil;
                        end
                end
-               local conf_file = io.open(conf_filename, "w");
+               local conf_file, err = io.open(conf_filename, "w");
+               if not conf_file then
+                       show_warning("Could not open OpenSSL config file for writing");
+                       show_warning(err);
+                       os.exit(1);
+               end
                conf_file:write(conf:serialize());
                conf_file:close();
                print("");
@@ -838,6 +843,7 @@ function commands.check(arg)
        end
        if not what or what == "dns" then
                local dns = require "net.dns";
+               local idna = require "util.encodings".idna;
                local ip = require "util.ip";
                local c2s_ports = set.new(config.get("*", "c2s_ports") or {5222});
                local s2s_ports = set.new(config.get("*", "s2s_ports") or {5269});
@@ -856,13 +862,13 @@ function commands.check(arg)
                
                local fqdn = socket.dns.tohostname(socket.dns.gethostname());
                if fqdn then
-                       local res = dns.lookup(fqdn, "A");
+                       local res = dns.lookup(idna.to_ascii(fqdn), "A");
                        if res then
                                for _, record in ipairs(res) do
                                        external_addresses:add(record.a);
                                end
                        end
-                       local res = dns.lookup(fqdn, "AAAA");
+                       local res = dns.lookup(idna.to_ascii(fqdn), "AAAA");
                        if res then
                                for _, record in ipairs(res) do
                                        external_addresses:add(record.aaaa);
@@ -870,7 +876,7 @@ function commands.check(arg)
                        end
                end
                
-               local local_addresses = socket.local_addresses and socket.local_addresses() or {};
+               local local_addresses = require"util.net".local_addresses() or {};
                
                for addr in it.values(local_addresses) do
                        if not ip.new_ip(addr).private then
@@ -895,7 +901,7 @@ function commands.check(arg)
                        print("Checking DNS for "..(is_component and "component" or "host").." "..host.."...");
                        local target_hosts = set.new();
                        if not is_component then
-                               local res = dns.lookup("_xmpp-client._tcp."..host..".", "SRV");
+                               local res = dns.lookup("_xmpp-client._tcp."..idna.to_ascii(host)..".", "SRV");
                                if res then
                                        for _, record in ipairs(res) do
                                                target_hosts:add(record.srv.target);
@@ -912,7 +918,7 @@ function commands.check(arg)
                                        end
                                end
                        end
-                       local res = dns.lookup("_xmpp-server._tcp."..host..".", "SRV");
+                       local res = dns.lookup("_xmpp-server._tcp."..idna.to_ascii(host)..".", "SRV");
                        if res then
                                for _, record in ipairs(res) do
                                        target_hosts:add(record.srv.target);
@@ -943,7 +949,7 @@ function commands.check(arg)
 
                        if modules:contains("proxy65") then
                                local proxy65_target = config.get(host, "proxy65_address") or host;
-                               local A, AAAA = dns.lookup(proxy65_target, "A"), dns.lookup(proxy65_target, "AAAA");
+                               local A, AAAA = dns.lookup(idna.to_ascii(proxy65_target), "A"), dns.lookup(idna.to_ascii(proxy65_target), "AAAA");
                                local prob = {};
                                if not A then
                                        table.insert(prob, "A");
@@ -958,7 +964,7 @@ function commands.check(arg)
                        
                        for host in target_hosts do
                                local host_ok_v4, host_ok_v6;
-                               local res = dns.lookup(host, "A");
+                               local res = dns.lookup(idna.to_ascii(host), "A");
                                if res then
                                        for _, record in ipairs(res) do
                                                if external_addresses:contains(record.a) then
@@ -974,7 +980,7 @@ function commands.check(arg)
                                                end
                                        end
                                end
-                               local res = dns.lookup(host, "AAAA");
+                               local res = dns.lookup(idna.to_ascii(host), "AAAA");
                                if res then
                                        for _, record in ipairs(res) do
                                                if external_addresses:contains(record.aaaa) then