net.http.server: Add prepare_header() and finish_response() to allow sending chunked...
[prosody.git] / prosodyctl
index b98736a734dcc3bdc5e3a67b3136ffe11725ac68..00aeac400752d80dce5821fe33abba154fd8ba66 100755 (executable)
@@ -414,7 +414,11 @@ function commands.start(arg)
        
        local ok, ret = prosodyctl.start();
        if ok then
-               if config.get("*", "daemonize") ~= false then
+               local daemonize = config.get("*", "daemonize");
+               if daemonize == nil then
+                       daemonize = prosody.installed;
+               end
+               if daemonize then
                        local i=1;
                        while true do
                                local ok, running = prosodyctl.isrunning();
@@ -687,7 +691,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 +847,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 +866,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);
@@ -895,7 +905,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 +922,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 +953,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 +968,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 +984,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