Software /
code /
prosody
Comparison
core/hostmanager.lua @ 3717:135128fdf565
hostmanager: Improved error handling.
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Thu, 09 Dec 2010 21:40:54 +0500 |
parent | 3716:ebb2c6209e24 |
child | 3984:6be419e2f509 |
comparison
equal
deleted
inserted
replaced
3716:ebb2c6209e24 | 3717:135128fdf565 |
---|---|
22 require "core.s2smanager"; | 22 require "core.s2smanager"; |
23 end | 23 end |
24 local incoming_s2s = _G.prosody.incoming_s2s; | 24 local incoming_s2s = _G.prosody.incoming_s2s; |
25 | 25 |
26 local pairs, setmetatable = pairs, setmetatable; | 26 local pairs, setmetatable = pairs, setmetatable; |
27 local tostring, type = tostring, type; | |
27 | 28 |
28 module "hostmanager" | 29 module "hostmanager" |
29 | 30 |
30 local hosts_loaded_once; | 31 local hosts_loaded_once; |
31 | 32 |
51 end | 52 end |
52 | 53 |
53 prosody_events.add_handler("server-starting", load_enabled_hosts); | 54 prosody_events.add_handler("server-starting", load_enabled_hosts); |
54 | 55 |
55 function activate(host, host_config) | 56 function activate(host, host_config) |
56 if hosts[host] then return nil, "host-already-exists"; end | 57 if hosts[host] then return nil, "The host "..host.." is already activated"; end |
57 host_config = host_config or configmanager.getconfig()[host]; | 58 host_config = host_config or configmanager.getconfig()[host]; |
59 if not host_config then return nil, "Couldn't find the host "..tostring(host).." defined in the current config"; end | |
58 local host_session = { | 60 local host_session = { |
59 host = host; | 61 host = host; |
60 s2sout = {}; | 62 s2sout = {}; |
61 events = events_new(); | 63 events = events_new(); |
62 dialback_secret = configmanager.get(host, "core", "dialback_secret") or uuid_gen(); | 64 dialback_secret = configmanager.get(host, "core", "dialback_secret") or uuid_gen(); |
86 return true; | 88 return true; |
87 end | 89 end |
88 | 90 |
89 function deactivate(host, reason) | 91 function deactivate(host, reason) |
90 local host_session = hosts[host]; | 92 local host_session = hosts[host]; |
93 if not host_session then return nil, "The host "..tostring(host).." is not activated"; end | |
91 log("info", "Deactivating host: %s", host); | 94 log("info", "Deactivating host: %s", host); |
92 prosody_events.fire_event("host-deactivating", host, host_session); | 95 prosody_events.fire_event("host-deactivating", host, host_session); |
93 | 96 |
94 reason = reason or { condition = "host-gone", text = "This server has stopped serving "..host }; | 97 if type(reason) ~= "table" then |
98 reason = { condition = "host-gone", text = tostring(reason or "This server has stopped serving "..host) }; | |
99 end | |
95 | 100 |
96 -- Disconnect local users, s2s connections | 101 -- Disconnect local users, s2s connections |
97 if host_session.sessions then | 102 if host_session.sessions then |
98 for username, user in pairs(host_session.sessions) do | 103 for username, user in pairs(host_session.sessions) do |
99 for resource, session in pairs(user.sessions) do | 104 for resource, session in pairs(user.sessions) do |