Merge from waqas
[prosody.git] / prosody
diff --git a/prosody b/prosody
index 2cff8ca4a421807512099391b2583e84030f1cb4..197446e639e83a275855531bed9a73fdbd141a6c 100755 (executable)
--- a/prosody
+++ b/prosody
@@ -1,21 +1,10 @@
 #!/usr/bin/env lua
--- Prosody IM v0.2
--- Copyright (C) 2008 Matthew Wild
--- Copyright (C) 2008 Waqas Hussain
+-- Prosody IM v0.3
+-- Copyright (C) 2008-2009 Matthew Wild
+-- Copyright (C) 2008-2009 Waqas Hussain
 -- 
--- This program is free software; you can redistribute it and/or
--- modify it under the terms of the GNU General Public License
--- as published by the Free Software Foundation; either version 2
--- of the License, or (at your option) any later version.
--- 
--- This program is distributed in the hope that it will be useful,
--- but WITHOUT ANY WARRANTY; without even the implied warranty of
--- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--- GNU General Public License for more details.
--- 
--- You should have received a copy of the GNU General Public License
--- along with this program; if not, write to the Free Software
--- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+-- This project is MIT/X11 licensed. Please see the
+-- COPYING file in the source package for more information.
 --
 
 -- Config here --
@@ -51,27 +40,33 @@ log = require "util.logger".init("general");
 do
        -- TODO: Check for other formats when we add support for them
        -- Use lfs? Make a new conf/ dir?
-       local ok, err = config.load((CFG_CONFIGDIR or ".").."/prosody.cfg.lua");
+       local ok, level, err = config.load((CFG_CONFIGDIR or ".").."/prosody.cfg.lua");
        if not ok then
-               log("error", "Couldn't load config file: %s", err);
-               log("info", "Falling back to old config file format...")
-               ok, err = pcall(dofile, "lxmppd.cfg");
-               if not ok then
-                       log("error", "Old config format loading failed too: %s", err);
-               else
-                       for _, host in ipairs(_G.config.hosts) do
-                               config.set(host, "core", "defined", true);
-                       end
-                       
-                       config.set("*", "core", "modules_enabled", _G.config.modules);
-                       config.set("*", "core", "ssl", _G.config.ssl_ctx);
+               print("");
+               print("**************************");
+               if level == "parser" then
+                       print("A problem occured while reading the config file "..(CFG_CONFIGDIR or ".").."/prosody.cfg.lua");
+                       local err_line, err_message = tostring(err):match("%[string .-%]:(%d*): (.*)");
+                       print("Error"..(err_line and (" on line "..err_line) or "")..": "..(err_message or tostring(err)));
+                       print("");
+               elseif level == "file" then
+                       print("Prosody was unable to find the configuration file.");
+                       print("We looked for: "..(CFG_CONFIGDIR or ".").."/prosody.cfg.lua");
+                       print("A sample config file is included in the Prosody download called prosody.cfg.lua.dist");
+                       print("Copy or rename it to prosody.cfg.lua and edit as necessary.");
                end
+               print("More help on configuring Prosody can be found at http://prosody.im/doc/configure");
+               print("Good luck!");
+               print("**************************");
+               print("");
+               os.exit(1);
        end
 end
 
+require "util.dependencies"
+
 local server = require "net.server"
 
-require "util.dependencies"
 
 -- Maps connections to sessions --
 sessions = {};
@@ -82,7 +77,6 @@ hosts = {};
 require "util.import"
 require "core.xmlhandlers"
 require "core.rostermanager"
-require "core.offlinemessage"
 require "core.eventmanager"
 require "core.hostmanager"
 require "core.modulemanager"
@@ -134,19 +128,19 @@ local function do_ports(option, listener, default, conntype)
                        if type(port) ~= "number" then
                                log("error", "Non-numeric "..option..": "..tostring(port));
                        else
-                               cl.start(listener, { ssl = global_ssl_ctx, port = port, type = conntype });
+                               cl.start(listener, { ssl = conntype ~= "tcp" and global_ssl_ctx, port = port, type = conntype });
                        end
                end
        end
 end
 
-do_ports("c2s_ports", "xmppclient", {5222}, "tls");
+do_ports("c2s_ports", "xmppclient", {5222}, (global_ssl_ctx and "tls") or "tcp");
 do_ports("s2s_ports", "xmppserver", {5269}, "tcp");
 do_ports("legacy_ssl_ports", "xmppclient", {}, "ssl");
 
 if config.get("*", "core", "console_enabled") then
        if cl.get("console") then
-               cl.start("console")
+               cl.start("console", { interface = config.get("*", "core", "console_interface") or "127.0.0.1" })
        else
                log("error", "Console is enabled, but the console module appears not to be loaded");
        end