Merge 0.10->trunk
[prosody.git] / plugins / mod_http.lua
index 76ee151b0313c8a82ddb8557ec388f64b94c5526..2178e2e84ad16a9732813af00f64b3af5e00e032 100644 (file)
@@ -47,6 +47,9 @@ end
 
 local function redir_handler(event)
        event.response.headers.location = event.request.path.."/";
+ if event.request.url.query then
+ event.response.headers.location = event.response.headers.location .. "?" .. event.request.url.query
+ end
        return 301;
 end
 
@@ -74,6 +77,8 @@ function moduleapi.http_url(module, app_name, default_path)
                        return url_build(url);
                end
        end
+       module:log("warn", "No http ports enabled, can't generate an external URL");
+       return "http://disabled.invalid/";
 end
 
 function module.add_host(module)
@@ -84,7 +89,6 @@ function module.add_host(module)
                local app_name = event.item.name;
                local default_app_path = event.item.default_path or "/"..app_name;
                local app_path = get_base_path(module, app_name, default_app_path);
-               module:log("debug", "Serving '%s' at %s", app_name, module:http_url(app_name, app_path));
                if not app_name then
                        -- TODO: Link to docs
                        module:log("error", "HTTP app has no 'name', add one or use module:provides('http', app)");
@@ -116,9 +120,15 @@ function module.add_host(module)
                                        module:log("warn", "App %s added handler twice for '%s', ignoring", app_name, event_name);
                                end
                        else
-                               module:log("error", "Invalid route in %s, %q. See http://prosody.im/doc/developers/http#routes", app_name, key);
+                               module:log("error", "Invalid route in %s, %q. See https://prosody.im/doc/developers/http#routes", app_name, key);
                        end
                end
+               local services = portmanager.get_active_services();
+               if services:get("https") or services:get("http") then
+                       module:log("debug", "Serving '%s' at %s", app_name, module:http_url(app_name, app_path));
+               else
+                       module:log("warn", "Not listening on any ports, '%s' will be unreachable", app_name);
+               end
        end
 
        local function http_app_removed(event)