comparison mod_muc_log_http/muc_log_http/mod_muc_log_http.lua @ 390:8090d246c268

mod_muc_log_http: Removed some more code. Module now no longer attempts to track muc_log hosts on its own.
author Waqas Hussain <waqas20@gmail.com>
date Mon, 25 Jul 2011 02:21:40 +0500
parents 60248c463ec3
children 99e7ef4fc7d2
comparison
equal deleted inserted replaced
389:60248c463ec3 390:8090d246c268
19 local urldecode = require "net.http".urldecode; 19 local urldecode = require "net.http".urldecode;
20 local datamanager = require "util.datamanager"; 20 local datamanager = require "util.datamanager";
21 local data_load, data_getpath = datamanager.load, datamanager.getpath; 21 local data_load, data_getpath = datamanager.load, datamanager.getpath;
22 local datastore = "muc_log"; 22 local datastore = "muc_log";
23 local urlBase = "muc_log"; 23 local urlBase = "muc_log";
24 local muc_hosts = {};
25 local config = nil; 24 local config = nil;
26 local tostring = _G.tostring; 25 local tostring = _G.tostring;
27 local tonumber = _G.tonumber; 26 local tonumber = _G.tonumber;
28 local os_date, os_time = os.date, os.time; 27 local os_date, os_time = os.date, os.time;
29 local str_format = string.format; 28 local str_format = string.format;
99 return t; 98 return t;
100 end 99 end
101 100
102 local function generateComponentListSiteContent() 101 local function generateComponentListSiteContent()
103 local components = ""; 102 local components = "";
104 for component,muc_host in pairs(muc_hosts or {}) do 103 for component,host in pairs(hosts) do
105 components = components .. html.components.bit:gsub("###COMPONENT###", component); 104 if host.modules.muc and host.modules.muc_log then
105 components = components .. html.components.bit:gsub("###COMPONENT###", component);
106 end
106 end 107 end
107 return html.components.body:gsub("###COMPONENTS_STUFF###", components); 108 return html.components.body:gsub("###COMPONENTS_STUFF###", components);
108 end 109 end
109 110
110 local function generateRoomListSiteContent(component) 111 local function generateRoomListSiteContent(component)
263 local to = ""; 264 local to = "";
264 local topic = ""; 265 local topic = "";
265 266
266 path = path:gsub("/[^/]*$", ""); 267 path = path:gsub("/[^/]*$", "");
267 attributes = lfs.attributes(path); 268 attributes = lfs.attributes(path);
268 if muc_hosts ~= nil and muc_hosts[host] and prosody.hosts[host] ~= nil and prosody.hosts[host].muc ~= nil and prosody.hosts[host].muc.rooms[bareRoomJid] ~= nil then 269 do
269 local found = 0; 270 local found = 0;
270 for jid, room in pairs(prosody.hosts[host].muc.rooms) do 271 for jid, room in pairs(prosody.hosts[host].muc.rooms) do
271 local node = splitJid(jid) 272 local node = splitJid(jid)
272 if not room._data.hidden and node then 273 if not room._data.hidden and node then
273 if found == 0 then 274 if found == 0 then
646 if node == "" then node = nil; end 647 if node == "" then node = nil; end
647 if day == "" then day = nil; end 648 if day == "" then day = nil; end
648 649
649 node = urldecode(node); 650 node = urldecode(node);
650 651
651 assert(muc_hosts and html.doc, "MUC hosts or theme not loaded"); 652 assert(html.doc, "MUC hosts or theme not loaded");
652 653
653 if host and not(hosts[host] and hosts[host].modules.muc) then return { status = "404 Not found", body = "No such MUC component" }; end 654 if host and not(hosts[host] and hosts[host].modules.muc and hosts[host].modules.muc_log) then return { status = "404 Not found", body = "No such MUC component" }; end
654 if host and node and not(hosts[host].modules.muc.rooms[node.."@"..host]) then return { status = "404 Not found", body = "No such MUC room" }; end 655 if host and node and not(hosts[host].modules.muc.rooms[node.."@"..host]) then return { status = "404 Not found", body = "No such MUC room" }; end
655 656
656 if not host then -- main component list 657 if not host then -- main component list
657 return createDoc(generateComponentListSiteContent()); 658 return createDoc(generateComponentListSiteContent());
658 elseif not node then -- room list for component 659 elseif not node then -- room list for component
742 return false; 743 return false;
743 end 744 end
744 -- module:log("debug", (require "util.serialization").serialize(html)); 745 -- module:log("debug", (require "util.serialization").serialize(html));
745 746
746 httpserver.new_from_config({ config.http_port or true }, handle_request, { base = urlBase, ssl = false, port = 5290 }); 747 httpserver.new_from_config({ config.http_port or true }, handle_request, { base = urlBase, ssl = false, port = 5290 });
747 748 end
748 for jid, host in pairs(prosody.hosts) do
749 if host.muc then
750 local enabledModules = config_get(jid, "core", "modules_enabled");
751 if enabledModules then
752 for _,mod in ipairs(enabledModules) do
753 if(mod == "muc_log") then
754 module:log("debug", "component: %s", tostring(jid));
755 muc_hosts[jid] = true;
756 break;
757 end
758 end
759 end
760 end
761 end
762 module:log("debug", "loaded mod_muc_log_http");
763 end
764
765 function module.unload()
766 muc_hosts = nil;
767 module:log("debug", "unloaded mod_muc_log_http");
768 end
769
770 module:hook("component-activated", function(component, config)
771 if config.core and config.core.modules_enabled then
772 for _,mod in ipairs(config.core.modules_enabled) do
773 if(mod == "muc_log") then
774 module:log("debug", "component: %s", tostring(component));
775 muc_hosts[component] = true;
776 break;
777 end
778 end
779 end
780 end);