mod_s2s: Remove redundant setting of session.direction
[prosody.git] / prosodyctl
index a1849033cc8915909e7638b69ea44cfd91111028..d9ae9b736ce0cbb1f8724845a536fb7112188e3f 100755 (executable)
@@ -799,8 +799,26 @@ function commands.check(arg)
        local ok = true;
        local function disabled_hosts(host, conf) return host ~= "*" and conf.enabled ~= false; end
        local function enabled_hosts() return it.filter(disabled_hosts, pairs(config.getconfig())); end
+       if not what or what == "disabled" then
+               local disabled_hosts = set.new();
+               for host, host_options in it.filter("*", pairs(config.getconfig())) do
+                       if host_options.enabled == false then
+                               disabled_hosts:add(host);
+                       end
+               end
+               if not disabled_hosts:empty() then
+                       local msg = "Checks will be skipped for these disabled hosts: %s";
+                       if what then msg = "These hosts are disabled: %s"; end
+                       show_warning(msg, tostring(disabled_hosts));
+                       if what then return 0; end
+                       print""
+               end
+       end
        if not what or what == "config" then
                print("Checking config...");
+               local deprecated = set.new({
+                       "bosh_ports", "disallow_s2s", "no_daemonize", "anonymous_login",
+               });
                local known_global_options = set.new({
                        "pidfile", "log", "plugin_paths", "prosody_user", "prosody_group", "daemonize",
                        "umask", "prosodyctl_timeout", "use_ipv6", "use_libevent", "network_settings"
@@ -813,8 +831,26 @@ function commands.check(arg)
                        print("    No global options defined. Perhaps you have put a host definition at the top")
                        print("    of the config file? They should be at the bottom, see http://prosody.im/doc/configure#overview");
                end
+               if it.count(enabled_hosts()) == 0 then
+                       ok = false;
+                       print("");
+                       if it.count(it.filter("*", pairs(config))) == 0 then
+                               print("    No hosts are defined, please add at least one VirtualHost section")
+                       elseif config["*"]["enabled"] == false then
+                               print("    No hosts are enabled. Remove enabled = false from the global section or put enabled = true under at least one VirtualHost section")
+                       else
+                               print("    All hosts are disabled. Remove enabled = false from at least one VirtualHost section")
+                       end
+               end
                -- Check for global options under hosts
                local global_options = set.new(it.to_array(it.keys(config["*"])));
+               local deprecated_global_options = set.intersection(global_options, deprecated);
+               if not deprecated_global_options:empty() then
+                       print("");
+                       print("    You have some deprecated options in the global section:");
+                       print("    "..tostring(deprecated_global_options))
+                       ok = false;
+               end
                for host, options in enabled_hosts() do
                        local host_options = set.new(it.to_array(it.keys(options)));
                        local misplaced_options = set.intersection(host_options, known_global_options);
@@ -1090,8 +1126,8 @@ function commands.check(arg)
                                                        print("    Not vaild for client connections to "..host..".")
                                                        cert_ok = false
                                                end
-                                               if (not (config.get(name, "anonymous_login")
-                                                       or config.get(name, "authentication") == "anonymous"))
+                                               if (not (config.get(host, "anonymous_login")
+                                                       or config.get(host, "authentication") == "anonymous"))
                                                        and not x509_verify_identity(host, "_xmpp-client", cert) then
                                                        print("    Not vaild for server-to-server connections to "..host..".")
                                                        cert_ok = false