annotate mod_muc_log_http/muc_log_http/mod_muc_log_http.lua @ 229:5689ffaf97df

mod_couchdb: Now added as a proper module using the new storage provider system.
author Waqas Hussain <waqas20@gmail.com>
date Sat, 31 Jul 2010 14:42:27 +0500
parents 58c37562c67d
children 07c17b60229a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
1 -- Copyright (C) 2009 Thilo Cestonaro
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
2 --
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
3 -- This project is MIT/X11 licensed. Please see the
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
4 -- COPYING file in the source package for more information.
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
5 --
102
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
6
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
7 local prosody = prosody;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
8 local tabSort = table.sort;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
9 local tonumber = _G.tonumber;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
10 local tostring = _G.tostring;
116
f68a781efe81 mod_muc_log_http: support escaped urls
Thilo Cestonaro <thilo@cestona.ro>
parents: 115
diff changeset
11 local strchar = string.char;
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
12 local strformat = string.format;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
13 local splitJid = require "util.jid".split;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
14 local config_get = require "core.configmanager".get;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
15 local httpserver = require "net.httpserver";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
16 local datamanager = require "util.datamanager";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
17 local data_load, data_getpath = datamanager.load, datamanager.getpath;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
18 local datastore = "muc_log";
102
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
19 local urlBase = "muc_log";
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
20 local muc_hosts = {};
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
21 local config = nil;
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
22 local tostring = _G.tostring;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
23 local tonumber = _G.tonumber;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
24 local os_date, os_time = os.date, os.time;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
25 local str_format = string.format;
105
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
26 local io_open = io.open;
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
27 local themesParent = (CFG_PLUGINDIR or "./plugins/") .. "muc_log_http/themes";
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
28
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
29 local lom = require "lxp.lom";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
30
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
31 --[[ LuaFileSystem
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
32 * URL: http://www.keplerproject.org/luafilesystem/index.html
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
33 * Install: luarocks install luafilesystem
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
34 * ]]
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
35 local lfs = require "lfs";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
36
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
37
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
38 --[[
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
39 * Default templates for the html output.
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
40 ]]--
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
41 local html = {};
183
9d4fd01443eb mod_muc_log_http: ensure to have the default being "prosody"
Thilo Cestonaro <thilo@cestona.ro>
parents: 180
diff changeset
42 local theme;
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
43
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
44 local function checkDatastorePathExists(node, host, today, create)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
45 create = create or false;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
46 local path = data_getpath(node, host, datastore, "dat", true);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
47 path = path:gsub("/[^/]*$", "");
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
48
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
49 -- check existance
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
50 local attributes, err = lfs.attributes(path);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
51 if attributes == nil or attributes.mode ~= "directory" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
52 module:log("warn", "muc_log folder isn't a folder: %s", path);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
53 return false;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
54 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
55
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
56 attributes, err = lfs.attributes(path .. "/" .. today);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
57 if attributes == nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
58 if create then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
59 return lfs.mkdir(path .. "/" .. today);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
60 else
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
61 return false;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
62 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
63 elseif attributes.mode == "directory" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
64 return true;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
65 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
66 return false;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
67 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
68
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
69 function createDoc(body)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
70 if body then
117
ecf05eb2d833 mod_muc_log_http: support even more evil url stuff, don't forget %-signs
Thilo Cestonaro <thilo@cestona.ro>
parents: 116
diff changeset
71 body = body:gsub("%%", "%%%%");
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
72 return html.doc:gsub("###BODY_STUFF###", body);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
73 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
74 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
75
116
f68a781efe81 mod_muc_log_http: support escaped urls
Thilo Cestonaro <thilo@cestona.ro>
parents: 115
diff changeset
76 function urlunescape (escapedUrl)
f68a781efe81 mod_muc_log_http: support escaped urls
Thilo Cestonaro <thilo@cestona.ro>
parents: 115
diff changeset
77 escapedUrl = escapedUrl:gsub("+", " ")
f68a781efe81 mod_muc_log_http: support escaped urls
Thilo Cestonaro <thilo@cestona.ro>
parents: 115
diff changeset
78 escapedUrl = escapedUrl:gsub("%%(%x%x)", function(h) return strchar(tonumber(h,16)) end)
f68a781efe81 mod_muc_log_http: support escaped urls
Thilo Cestonaro <thilo@cestona.ro>
parents: 115
diff changeset
79 escapedUrl = escapedUrl:gsub("\r\n", "\n")
f68a781efe81 mod_muc_log_http: support escaped urls
Thilo Cestonaro <thilo@cestona.ro>
parents: 115
diff changeset
80 return escapedUrl
f68a781efe81 mod_muc_log_http: support escaped urls
Thilo Cestonaro <thilo@cestona.ro>
parents: 115
diff changeset
81 end
f68a781efe81 mod_muc_log_http: support escaped urls
Thilo Cestonaro <thilo@cestona.ro>
parents: 115
diff changeset
82
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
83 local function htmlEscape(t)
143
445efff314c4 mod_muc_log_http: handle empty status message tags; handle a nil-parameter in htmlEscape
Thilo Cestonaro <thilo@cestona.ro>
parents: 120
diff changeset
84 if t then
445efff314c4 mod_muc_log_http: handle empty status message tags; handle a nil-parameter in htmlEscape
Thilo Cestonaro <thilo@cestona.ro>
parents: 120
diff changeset
85 t = t:gsub("<", "&lt;");
445efff314c4 mod_muc_log_http: handle empty status message tags; handle a nil-parameter in htmlEscape
Thilo Cestonaro <thilo@cestona.ro>
parents: 120
diff changeset
86 t = t:gsub(">", "&gt;");
445efff314c4 mod_muc_log_http: handle empty status message tags; handle a nil-parameter in htmlEscape
Thilo Cestonaro <thilo@cestona.ro>
parents: 120
diff changeset
87 t = t:gsub("(http://[%a%d@%.:/&%?=%-_#%%~]+)", function(h)
445efff314c4 mod_muc_log_http: handle empty status message tags; handle a nil-parameter in htmlEscape
Thilo Cestonaro <thilo@cestona.ro>
parents: 120
diff changeset
88 h = urlunescape(h)
445efff314c4 mod_muc_log_http: handle empty status message tags; handle a nil-parameter in htmlEscape
Thilo Cestonaro <thilo@cestona.ro>
parents: 120
diff changeset
89 return "<a href='" .. h .. "'>" .. h .. "</a>";
445efff314c4 mod_muc_log_http: handle empty status message tags; handle a nil-parameter in htmlEscape
Thilo Cestonaro <thilo@cestona.ro>
parents: 120
diff changeset
90 end);
445efff314c4 mod_muc_log_http: handle empty status message tags; handle a nil-parameter in htmlEscape
Thilo Cestonaro <thilo@cestona.ro>
parents: 120
diff changeset
91 t = t:gsub("\n", "<br />");
445efff314c4 mod_muc_log_http: handle empty status message tags; handle a nil-parameter in htmlEscape
Thilo Cestonaro <thilo@cestona.ro>
parents: 120
diff changeset
92 t = t:gsub("%%", "%%%%");
445efff314c4 mod_muc_log_http: handle empty status message tags; handle a nil-parameter in htmlEscape
Thilo Cestonaro <thilo@cestona.ro>
parents: 120
diff changeset
93 else
445efff314c4 mod_muc_log_http: handle empty status message tags; handle a nil-parameter in htmlEscape
Thilo Cestonaro <thilo@cestona.ro>
parents: 120
diff changeset
94 t = "";
445efff314c4 mod_muc_log_http: handle empty status message tags; handle a nil-parameter in htmlEscape
Thilo Cestonaro <thilo@cestona.ro>
parents: 120
diff changeset
95 end
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
96 return t;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
97 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
98
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
99 function splitUrl(url)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
100 local tmp = url:sub(string.len("/muc_log/") + 1);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
101 local day = nil;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
102 local room = nil;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
103 local component = nil;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
104 local at = nil;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
105 local slash = nil;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
106 local slash2 = nil;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
107
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
108 slash = tmp:find("/");
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
109 if slash then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
110 component = tmp:sub(1, slash - 1);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
111 if tmp:len() > slash then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
112 room = tmp:sub(slash + 1);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
113 slash = room:find("/");
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
114 if slash then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
115 tmp = room;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
116 room = tmp:sub(1, slash - 1);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
117 if tmp:len() > slash then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
118 day = tmp:sub(slash + 1);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
119 slash = day:find("/");
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
120 if slash then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
121 day = day:sub(1, slash - 1);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
122 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
123 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
124 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
125 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
126 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
127
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
128 return room, component, day;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
129 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
130
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
131 local function generateComponentListSiteContent()
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
132 local components = "";
102
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
133 for component,muc_host in pairs(muc_hosts or {}) do
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
134 components = components .. html.components.bit:gsub("###COMPONENT###", component);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
135 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
136 if components ~= "" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
137 return html.components.body:gsub("###COMPONENTS_STUFF###", components);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
138 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
139 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
140
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
141 local function generateRoomListSiteContent(component)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
142 local rooms = "";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
143 if prosody.hosts[component] and prosody.hosts[component].muc ~= nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
144 for jid, room in pairs(prosody.hosts[component].muc.rooms) do
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
145 local node = splitJid(jid);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
146 if not room._data.hidden and node then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
147 rooms = rooms .. html.rooms.bit:gsub("###ROOM###", node):gsub("###COMPONENT###", component);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
148 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
149 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
150 if rooms ~= "" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
151 return html.rooms.body:gsub("###ROOMS_STUFF###", rooms):gsub("###COMPONENT###", component);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
152 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
153 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
154 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
155
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
156 -- Calendar stuff
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
157 local function getDaysForMonth(month, year)
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
158 local daysCount = 30;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
159 local leapyear = false;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
160
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
161 if year%4 == 0 and year%100 == 0 then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
162 if year%400 == 0 then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
163 leapyear = true;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
164 else
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
165 leapyear = false; -- turn of the century but not a leapyear
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
166 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
167 elseif year%4 == 0 then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
168 leapyear = true;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
169 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
170
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
171 if month == 2 and leapyear then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
172 daysCount = 29;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
173 elseif month == 2 and not leapyear then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
174 daysCount = 28;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
175 elseif month < 8 and month%2 == 1 or
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
176 month >= 8 and month%2 == 0
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
177 then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
178 daysCount = 31;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
179 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
180 return daysCount;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
181 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
182
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
183 local function createMonth(month, year, dayCallback)
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
184 local htmlStr = html.month.header;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
185 local days = getDaysForMonth(month, year);
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
186 local time = os_time{year=year, month=month, day=1};
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
187 local dow = tostring(os_date("%a", time))
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
188 local title = tostring(os_date("%B", time));
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
189 local weekDays = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
190 local weekDay = 0;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
191 local weeks = 1;
104
dc0fe152cadc mod_muc_log_http: show only months where log is actually available
Thilo Cestonaro <thilo@cestona.ro>
parents: 102
diff changeset
192 local logAvailableForMinimumOneDay = false;
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
193
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
194 local weekDaysHtml = "";
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
195 for _, tmp in ipairs(weekDays) do
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
196 weekDaysHtml = weekDaysHtml .. html.month.weekDay:gsub("###DAY###", tmp) .. "\n";
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
197 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
198
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
199 htmlStr = htmlStr:gsub("###TITLE###", title):gsub("###WEEKDAYS###", weekDaysHtml);
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
200
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
201 for i = 1, 31 do
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
202 weekDay = weekDay + 1;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
203 if weekDay == 1 then htmlStr = htmlStr .. "<tr>\n"; end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
204 if i == 1 then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
205 for _, tmp in ipairs(weekDays) do
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
206 if dow ~= tmp then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
207 htmlStr = htmlStr .. html.month.emptyDay .. "\n";
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
208 weekDay = weekDay + 1;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
209 else
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
210 break;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
211 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
212 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
213 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
214 if i < days + 1 then
115
5e657a305c88 mod_muc_log_http: Replace remaining <font> tags with CSS equivalents
Matthew Wild <mwild1@gmail.com>
parents: 108
diff changeset
215 local tmp = tostring("<span style='color:#DDDDDD'>"..tostring(i).."</span>");
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
216 if dayCallback ~= nil and dayCallback.callback ~= nil then
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
217 tmp = dayCallback.callback(dayCallback.path, i, month, year, dayCallback.room, dayCallback.webPath);
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
218 end
104
dc0fe152cadc mod_muc_log_http: show only months where log is actually available
Thilo Cestonaro <thilo@cestona.ro>
parents: 102
diff changeset
219 if tmp == nil then
115
5e657a305c88 mod_muc_log_http: Replace remaining <font> tags with CSS equivalents
Matthew Wild <mwild1@gmail.com>
parents: 108
diff changeset
220 tmp = tostring("<span style='color:#DDDDDD'>"..tostring(i).."</span>");
104
dc0fe152cadc mod_muc_log_http: show only months where log is actually available
Thilo Cestonaro <thilo@cestona.ro>
parents: 102
diff changeset
221 else
dc0fe152cadc mod_muc_log_http: show only months where log is actually available
Thilo Cestonaro <thilo@cestona.ro>
parents: 102
diff changeset
222 logAvailableForMinimumOneDay = true;
dc0fe152cadc mod_muc_log_http: show only months where log is actually available
Thilo Cestonaro <thilo@cestona.ro>
parents: 102
diff changeset
223 end
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
224 htmlStr = htmlStr .. html.month.day:gsub("###DAY###", tmp) .. "\n";
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
225 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
226
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
227 if i >= days then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
228 break;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
229 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
230
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
231 if weekDay == 7 then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
232 weekDay = 0;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
233 weeks = weeks + 1;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
234 htmlStr = htmlStr .. "</tr>\n";
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
235 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
236 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
237
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
238 if weekDay + 1 < 8 or weeks < 6 then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
239 weekDay = weekDay + 1;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
240 if weekDay > 7 then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
241 weekDay = 1;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
242 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
243 if weekDay == 1 then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
244 weeks = weeks + 1;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
245 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
246 for y = weeks, 6 do
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
247 if weekDay == 1 then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
248 htmlStr = htmlStr .. "<tr>\n";
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
249 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
250 for i = weekDay, 7 do
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
251 htmlStr = htmlStr .. html.month.emptyDay .. "\n";
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
252 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
253 weekDay = 1
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
254 htmlStr = htmlStr .. "</tr>\n";
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
255 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
256 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
257 htmlStr = htmlStr .. html.month.footer;
104
dc0fe152cadc mod_muc_log_http: show only months where log is actually available
Thilo Cestonaro <thilo@cestona.ro>
parents: 102
diff changeset
258 if logAvailableForMinimumOneDay then
dc0fe152cadc mod_muc_log_http: show only months where log is actually available
Thilo Cestonaro <thilo@cestona.ro>
parents: 102
diff changeset
259 return htmlStr;
dc0fe152cadc mod_muc_log_http: show only months where log is actually available
Thilo Cestonaro <thilo@cestona.ro>
parents: 102
diff changeset
260 end
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
261 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
262
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
263 local function createYear(year, dayCallback)
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
264 local year = year;
104
dc0fe152cadc mod_muc_log_http: show only months where log is actually available
Thilo Cestonaro <thilo@cestona.ro>
parents: 102
diff changeset
265 local tmp;
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
266 if tonumber(year) <= 99 then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
267 year = year + 2000;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
268 end
146
2620bc59cca3 mod_muc_log_http: bugfix: multiple roomlogs in the same overview
Thilo Cestonaro <thilo@cestona.ro>
parents: 143
diff changeset
269 local htmlStr = "";
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
270 for i=1, 12 do
104
dc0fe152cadc mod_muc_log_http: show only months where log is actually available
Thilo Cestonaro <thilo@cestona.ro>
parents: 102
diff changeset
271 tmp = createMonth(i, year, dayCallback);
dc0fe152cadc mod_muc_log_http: show only months where log is actually available
Thilo Cestonaro <thilo@cestona.ro>
parents: 102
diff changeset
272 if tmp then
dc0fe152cadc mod_muc_log_http: show only months where log is actually available
Thilo Cestonaro <thilo@cestona.ro>
parents: 102
diff changeset
273 htmlStr = htmlStr .. "<div style='float: left; padding: 5px;'>\n" .. tmp .. "</div>\n";
dc0fe152cadc mod_muc_log_http: show only months where log is actually available
Thilo Cestonaro <thilo@cestona.ro>
parents: 102
diff changeset
274 end
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
275 end
146
2620bc59cca3 mod_muc_log_http: bugfix: multiple roomlogs in the same overview
Thilo Cestonaro <thilo@cestona.ro>
parents: 143
diff changeset
276 if htmlStr ~= "" then
2620bc59cca3 mod_muc_log_http: bugfix: multiple roomlogs in the same overview
Thilo Cestonaro <thilo@cestona.ro>
parents: 143
diff changeset
277 return "<div name='yearDiv' style='padding: 40px; text-align: center;'>" .. html.year.title:gsub("###YEAR###", tostring(year)) .. htmlStr .. "</div><br style='clear:both;'/> \n";
2620bc59cca3 mod_muc_log_http: bugfix: multiple roomlogs in the same overview
Thilo Cestonaro <thilo@cestona.ro>
parents: 143
diff changeset
278 end
2620bc59cca3 mod_muc_log_http: bugfix: multiple roomlogs in the same overview
Thilo Cestonaro <thilo@cestona.ro>
parents: 143
diff changeset
279 return "";
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
280 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
281
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
282 local function perDayCallback(path, day, month, year, room, webPath)
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
283 local webPath = webPath or ""
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
284 local year = year;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
285 if year > 2000 then
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
286 year = year - 2000;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
287 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
288 local bareDay = str_format("%.02d%.02d%.02d", year, month, day);
146
2620bc59cca3 mod_muc_log_http: bugfix: multiple roomlogs in the same overview
Thilo Cestonaro <thilo@cestona.ro>
parents: 143
diff changeset
289 local attributes, err = lfs.attributes(path.."/"..bareDay.."/"..room..".dat")
2620bc59cca3 mod_muc_log_http: bugfix: multiple roomlogs in the same overview
Thilo Cestonaro <thilo@cestona.ro>
parents: 143
diff changeset
290 if attributes ~= nil and attributes.mode == "file" then
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
291 local s = html.days.bit;
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
292 s = s:gsub("###BARE_DAY###", webPath .. bareDay);
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
293 s = s:gsub("###DAY###", day);
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
294 return s;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
295 end
104
dc0fe152cadc mod_muc_log_http: show only months where log is actually available
Thilo Cestonaro <thilo@cestona.ro>
parents: 102
diff changeset
296 return;
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
297 end
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
298
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
299 local function generateDayListSiteContentByRoom(bareRoomJid)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
300 local days = "";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
301 local arrDays = {};
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
302 local tmp;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
303 local node, host, resource = splitJid(bareRoomJid);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
304 local path = data_getpath(node, host, datastore);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
305 local room = nil;
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
306 local nextRoom = "";
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
307 local previousRoom = "";
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
308 local rooms = "";
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
309 local attributes = nil;
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
310 local since = "";
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
311 local to = "";
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
312 local topic = "";
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
313
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
314 path = path:gsub("/[^/]*$", "");
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
315 attributes = lfs.attributes(path);
102
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
316 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
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
317 local found = 0;
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
318 for jid, room in pairs(prosody.hosts[host].muc.rooms) do
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
319 local node = splitJid(jid)
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
320 if not room._data.hidden and node then
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
321 if found == 0 then
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
322 previousRoom = node
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
323 elseif found == 1 then
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
324 nextRoom = node
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
325 found = -1
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
326 end
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
327 if jid == bareRoomJid then
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
328 found = 1
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
329 end
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
330
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
331 rooms = rooms .. html.days.rooms.bit:gsub("###ROOM###", node);
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
332 end
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
333 end
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
334
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
335 room = prosody.hosts[host].muc.rooms[bareRoomJid];
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
336 if room._data.hidden then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
337 room = nil
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
338 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
339 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
340 if attributes ~= nil and room ~= nil then
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
341 local first = 1;
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
342 local alreadyDoneYears = {};
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
343 local temptime = {day=0, month=0, year=0};
192
12d6316d9eab mod_muc_log_http: Fixed a traceback on rooms with no subject.
Waqas Hussain <waqas20@gmail.com>
parents: 184
diff changeset
344 topic = room._data.subject or "(no subject)"
194
58c37562c67d mod_muc_log_http: show more of the room title
Thilo Cestonaro <thilo@cestona.ro>
parents: 192
diff changeset
345 if topic:len() > 135 then
58c37562c67d mod_muc_log_http: show more of the room title
Thilo Cestonaro <thilo@cestona.ro>
parents: 192
diff changeset
346 topic = topic:sub(1, topic:find(" ", 120)) .. " ..."
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
347 end
120
7a2d33e8ad1f mod_muc_log_http: inverse year sort order
Thilo Cestonaro <thilo@cestona.ro>
parents: 119
diff changeset
348 for folder in lfs.dir(path) do
7a2d33e8ad1f mod_muc_log_http: inverse year sort order
Thilo Cestonaro <thilo@cestona.ro>
parents: 119
diff changeset
349 local year, month, day = folder:match("^(%d%d)(%d%d)(%d%d)");
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
350 if year ~= nil and alreadyDoneYears[year] == nil then
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
351 temptime.day = tonumber(day)
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
352 temptime.month = tonumber(month)
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
353 temptime.year = 2000 + tonumber(year)
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
354 if first == 1 then
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
355 to = tostring(os_date("%B %Y", os_time(temptime)))
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
356 first = 0
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
357 end
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
358
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
359 since = tostring(os_date("%B %Y", os_time(temptime)))
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
360 module:log("debug", "creating overview for: " .. tostring(since))
146
2620bc59cca3 mod_muc_log_http: bugfix: multiple roomlogs in the same overview
Thilo Cestonaro <thilo@cestona.ro>
parents: 143
diff changeset
361 days = createYear(year, {callback=perDayCallback, path=path, room=node}) .. days;
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
362 alreadyDoneYears[year] = true;
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
363 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
364 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
365 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
366
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
367 if days ~= "" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
368 tmp = html.days.body:gsub("###DAYS_STUFF###", days);
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
369 tmp = tmp:gsub("###PREVIOUS_ROOM###", previousRoom == "" and node or previousRoom);
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
370 tmp = tmp:gsub("###NEXT_ROOM###", nextRoom == "" and node or nextRoom);
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
371 tmp = tmp:gsub("###ROOMS###", rooms);
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
372 tmp = tmp:gsub("###ROOMTOPIC###", topic);
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
373 tmp = tmp:gsub("###SINCE###", since);
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
374 tmp = tmp:gsub("###TO###", to);
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
375 return tmp:gsub("###JID###", bareRoomJid);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
376 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
377 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
378
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
379 local function parseIqStanza(stanza, timeStuff, nick)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
380 local text = nil;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
381 local victim = nil;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
382 if(stanza.attr.type == "set") then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
383 for _,tag in ipairs(stanza) do
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
384 if tag.tag == "query" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
385 for _,item in ipairs(tag) do
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
386 if item.tag == "item" and item.attr.nick ~= nil and tostring(item.attr.role) == 'none' then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
387 victim = item.attr.nick;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
388 for _,reason in ipairs(item) do
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
389 if reason.tag == "reason" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
390 text = reason[1];
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
391 break;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
392 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
393 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
394 break;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
395 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
396 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
397 break;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
398 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
399 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
400 if victim ~= nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
401 if text ~= nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
402 text = html.day.reason:gsub("###REASON###", htmlEscape(text));
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
403 else
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
404 text = "";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
405 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
406 return html.day.kick:gsub("###TIME_STUFF###", timeStuff):gsub("###VICTIM###", victim):gsub("###REASON_STUFF###", text);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
407 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
408 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
409 return;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
410 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
411
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
412 local function parsePresenceStanza(stanza, timeStuff, nick)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
413 local ret = "";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
414 local showJoin = "block"
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
415
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
416 if config and not config.showJoin then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
417 showJoin = "none";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
418 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
419
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
420 if stanza.attr.type == nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
421 local showStatus = "block"
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
422 if config and not config.showStatus then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
423 showStatus = "none";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
424 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
425 local show, status = nil, "";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
426 local alreadyJoined = false;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
427 for _, tag in ipairs(stanza) do
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
428 if tag.tag == "alreadyJoined" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
429 alreadyJoined = true;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
430 elseif tag.tag == "show" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
431 show = tag[1];
143
445efff314c4 mod_muc_log_http: handle empty status message tags; handle a nil-parameter in htmlEscape
Thilo Cestonaro <thilo@cestona.ro>
parents: 120
diff changeset
432 elseif tag.tag == "status" and tag[1] ~= nil then
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
433 status = tag[1];
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
434 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
435 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
436 if alreadyJoined == true then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
437 if show == nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
438 show = "online";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
439 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
440 ret = html.day.presence.statusChange:gsub("###TIME_STUFF###", timeStuff);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
441 if status ~= "" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
442 status = html.day.presence.statusText:gsub("###STATUS###", htmlEscape(status));
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
443 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
444 ret = ret:gsub("###SHOW###", show):gsub("###NICK###", nick):gsub("###SHOWHIDE###", showStatus):gsub("###STATUS_STUFF###", status);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
445 else
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
446 ret = html.day.presence.join:gsub("###TIME_STUFF###", timeStuff):gsub("###SHOWHIDE###", showJoin):gsub("###NICK###", nick);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
447 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
448 elseif stanza.attr.type ~= nil and stanza.attr.type == "unavailable" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
449
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
450 ret = html.day.presence.leave:gsub("###TIME_STUFF###", timeStuff):gsub("###SHOWHIDE###", showJoin):gsub("###NICK###", nick);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
451 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
452 return ret;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
453 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
454
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
455 local function parseMessageStanza(stanza, timeStuff, nick)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
456 local body, title, ret = nil, nil, "";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
457
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
458 for _,tag in ipairs(stanza) do
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
459 if tag.tag == "body" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
460 body = tag[1];
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
461 if nick ~= nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
462 break;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
463 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
464 elseif tag.tag == "nick" and nick == nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
465 nick = htmlEscape(tag[1]);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
466 if body ~= nil or title ~= nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
467 break;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
468 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
469 elseif tag.tag == "subject" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
470 title = tag[1];
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
471 if nick ~= nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
472 break;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
473 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
474 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
475 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
476 if nick ~= nil and body ~= nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
477 body = htmlEscape(body);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
478 local me = body:find("^/me");
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
479 local template = "";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
480 if not me then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
481 template = html.day.message;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
482 else
105
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
483 template = html.day.messageMe;
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
484 body = body:gsub("^/me ", "");
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
485 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
486 ret = template:gsub("###TIME_STUFF###", timeStuff):gsub("###NICK###", nick):gsub("###MSG###", body);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
487 elseif nick ~= nil and title ~= nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
488 title = htmlEscape(title);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
489 ret = html.day.titleChange:gsub("###TIME_STUFF###", timeStuff):gsub("###NICK###", nick):gsub("###TITLE###", title);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
490 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
491 return ret;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
492 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
493
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
494 local function incrementDay(bare_day)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
495 local year, month, day = bare_day:match("^(%d%d)(%d%d)(%d%d)");
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
496 local leapyear = false;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
497 module:log("debug", tostring(day).."/"..tostring(month).."/"..tostring(year))
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
498
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
499 day = tonumber(day);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
500 month = tonumber(month);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
501 year = tonumber(year);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
502
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
503 if year%4 == 0 and year%100 == 0 then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
504 if year%400 == 0 then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
505 leapyear = true;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
506 else
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
507 leapyear = false; -- turn of the century but not a leapyear
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
508 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
509 elseif year%4 == 0 then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
510 leapyear = true;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
511 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
512
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
513 if (month == 2 and leapyear and day + 1 > 29) or
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
514 (month == 2 and not leapyear and day + 1 > 28) or
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
515 (month < 8 and month%2 == 1 and day + 1 > 31) or
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
516 (month < 8 and month%2 == 0 and day + 1 > 30) or
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
517 (month >= 8 and month%2 == 0 and day + 1 > 31) or
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
518 (month >= 8 and month%2 == 1 and day + 1 > 30)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
519 then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
520 if month + 1 > 12 then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
521 year = year + 1;
119
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
522 month = 1;
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
523 day = 1;
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
524 else
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
525 month = month + 1;
119
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
526 day = 1;
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
527 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
528 else
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
529 day = day + 1;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
530 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
531 return strformat("%.02d%.02d%.02d", year, month, day);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
532 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
533
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
534 local function findNextDay(bareRoomJid, bare_day)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
535 local node, host, resource = splitJid(bareRoomJid);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
536 local day = incrementDay(bare_day);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
537 local max_trys = 7;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
538
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
539 module:log("debug", day);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
540 while(not checkDatastorePathExists(node, host, day, false)) do
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
541 max_trys = max_trys - 1;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
542 if max_trys == 0 then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
543 break;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
544 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
545 day = incrementDay(day);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
546 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
547 if max_trys == 0 then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
548 return nil;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
549 else
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
550 return day;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
551 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
552 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
553
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
554 local function decrementDay(bare_day)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
555 local year, month, day = bare_day:match("^(%d%d)(%d%d)(%d%d)");
119
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
556 local leapyear = false;
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
557 module:log("debug", tostring(day).."/"..tostring(month).."/"..tostring(year))
119
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
558
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
559 day = tonumber(day);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
560 month = tonumber(month);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
561 year = tonumber(year);
119
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
562
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
563 if year%4 == 0 and year%100 == 0 then
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
564 if year%400 == 0 then
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
565 leapyear = true;
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
566 else
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
567 leapyear = false; -- turn of the century but not a leapyear
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
568 end
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
569 elseif year%4 == 0 then
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
570 leapyear = true;
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
571 end
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
572
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
573 if day - 1 == 0 then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
574 if month - 1 == 0 then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
575 year = year - 1;
119
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
576 month = 12;
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
577 day = 31;
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
578 else
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
579 month = month - 1;
119
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
580 if (month == 2 and leapyear) then day = 29
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
581 elseif (month == 2 and not leapyear) then day = 28
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
582 elseif (month < 8 and month%2 == 1) or (month >= 8 and month%2 == 0) then day = 31
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
583 else day = 30
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
584 end
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
585 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
586 else
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
587 day = day - 1;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
588 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
589 return strformat("%.02d%.02d%.02d", year, month, day);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
590 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
591
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
592 local function findPreviousDay(bareRoomJid, bare_day)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
593 local node, host, resource = splitJid(bareRoomJid);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
594 local day = decrementDay(bare_day);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
595 local max_trys = 7;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
596 module:log("debug", day);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
597 while(not checkDatastorePathExists(node, host, day, false)) do
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
598 max_trys = max_trys - 1;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
599 if max_trys == 0 then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
600 break;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
601 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
602 day = decrementDay(day);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
603 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
604 if max_trys == 0 then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
605 return nil;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
606 else
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
607 return day;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
608 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
609 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
610
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
611 local function parseDay(bareRoomJid, roomSubject, bare_day)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
612 local ret = "";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
613 local year;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
614 local month;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
615 local day;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
616 local tmp;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
617 local node, host, resource = splitJid(bareRoomJid);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
618 local year, month, day = bare_day:match("^(%d%d)(%d%d)(%d%d)");
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
619 local previousDay = findPreviousDay(bareRoomJid, bare_day);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
620 local nextDay = findNextDay(bareRoomJid, bare_day);
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
621 local temptime = {day=0, month=0, year=0};
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
622 local path = data_getpath(node, host, datastore);
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
623 path = path:gsub("/[^/]*$", "");
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
624 local calendar = ""
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
625
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
626 if tonumber(year) <= 99 then
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
627 year = year + 2000;
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
628 end
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
629
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
630 temptime.day = tonumber(day)
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
631 temptime.month = tonumber(month)
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
632 temptime.year = tonumber(year)
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
633 calendar = createMonth(temptime.month, temptime.year, {callback=perDayCallback, path=path, room=node, webPath="../"}) or ""
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
634
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
635 if bare_day ~= nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
636 local data = data_load(node, host, datastore .. "/" .. bare_day);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
637 if data ~= nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
638 for i=1, #data, 1 do
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
639 local stanza = lom.parse(data[i]);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
640 if stanza ~= nil and stanza.attr ~= nil and stanza.attr.time ~= nil then
146
2620bc59cca3 mod_muc_log_http: bugfix: multiple roomlogs in the same overview
Thilo Cestonaro <thilo@cestona.ro>
parents: 143
diff changeset
641 local timeStuff = html.day.time:gsub("###TIME###", stanza.attr.time):gsub("###UTC###", stanza.attr.utc or stanza.attr.time);
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
642 if stanza[1] ~= nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
643 local nick;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
644 local tmp;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
645
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
646 -- grep nick from "from" resource
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
647 if stanza[1].attr.from ~= nil then -- presence and messages
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
648 nick = htmlEscape(stanza[1].attr.from:match("/(.+)$"));
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
649 elseif stanza[1].attr.to ~= nil then -- iq
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
650 nick = htmlEscape(stanza[1].attr.to:match("/(.+)$"));
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
651 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
652
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
653 if stanza[1].tag == "presence" and nick ~= nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
654 tmp = parsePresenceStanza(stanza[1], timeStuff, nick);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
655 elseif stanza[1].tag == "message" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
656 tmp = parseMessageStanza(stanza[1], timeStuff, nick);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
657 elseif stanza[1].tag == "iq" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
658 tmp = parseIqStanza(stanza[1], timeStuff, nick);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
659 else
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
660 module:log("info", "unknown stanza subtag in log found. room: %s; day: %s", bareRoomJid, year .. "/" .. month .. "/" .. day);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
661 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
662 if tmp ~= nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
663 ret = ret .. tmp
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
664 tmp = nil;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
665 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
666 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
667 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
668 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
669 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
670 if ret ~= "" then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
671 if nextDay then
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
672 nextDay = html.day.dayLink:gsub("###DAY###", nextDay):gsub("###TEXT###", "&gt;")
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
673 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
674 if previousDay then
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
675 previousDay = html.day.dayLink:gsub("###DAY###", previousDay):gsub("###TEXT###", "&lt;");
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
676 end
118
7eadcf0a0190 mod_muc_log_http: gsub return not only the string in cases the pattern is not found.
Thilo Cestonaro <thilo@cestona.ro>
parents: 117
diff changeset
677 ret = ret:gsub("%%", "%%%%");
7eadcf0a0190 mod_muc_log_http: gsub return not only the string in cases the pattern is not found.
Thilo Cestonaro <thilo@cestona.ro>
parents: 117
diff changeset
678 tmp = html.day.body:gsub("###DAY_STUFF###", ret):gsub("###JID###", bareRoomJid);
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
679 tmp = tmp:gsub("###CALENDAR###", calendar);
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
680 tmp = tmp:gsub("###DATE###", tostring(os_date("%A, %B %d, %Y", os_time(temptime))));
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
681 tmp = tmp:gsub("###TITLE_STUFF###", html.day.title:gsub("###TITLE###", roomSubject));
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
682 tmp = tmp:gsub("###STATUS_CHECKED###", config.showStatus and "checked='checked'" or "");
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
683 tmp = tmp:gsub("###JOIN_CHECKED###", config.showJoin and "checked='checked'" or "");
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
684 tmp = tmp:gsub("###NEXT_LINK###", nextDay or "");
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
685 tmp = tmp:gsub("###PREVIOUS_LINK###", previousDay or "");
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
686
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
687 return tmp;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
688 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
689 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
690 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
691
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
692 function handle_request(method, body, request)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
693 local node, host, day = splitUrl(request.url.path);
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
694
184
03cb7511ae54 mod_muc_log_http: ensure a theme was loaded when handling a http request
Thilo Cestonaro <thilo@cestona.ro>
parents: 183
diff changeset
695 if muc_hosts ~= nil and html.doc ~= nil then
102
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
696 if node ~= nil and host ~= nil then
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
697 local bare = node .. "@" .. host;
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
698 if prosody.hosts[host] ~= nil and prosody.hosts[host].muc ~= nil then
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
699 if prosody.hosts[host].muc.rooms[bare] ~= nil then
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
700 local room = prosody.hosts[host].muc.rooms[bare];
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
701 if day == nil then
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
702 return createDoc(generateDayListSiteContentByRoom(bare));
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
703 else
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
704 local subject = ""
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
705 if room._data ~= nil and room._data.subject ~= nil then
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
706 subject = room._data.subject;
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
707 end
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
708 return createDoc(parseDay(bare, subject, day));
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
709 end
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
710 else
102
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
711 return createDoc(generateRoomListSiteContent(host));
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
712 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
713 else
102
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
714 return createDoc(generateComponentListSiteContent());
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
715 end
102
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
716 elseif host ~= nil then
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
717 return createDoc(generateRoomListSiteContent(host));
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
718 else
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
719 return createDoc(generateComponentListSiteContent());
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
720 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
721 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
722 return;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
723 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
724
105
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
725 -- Compatibility: Lua-5.1
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
726 function split(str, pat)
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
727 local t = {} -- NOTE: use {n = 0} in Lua-5.0
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
728 local fpat = "(.-)" .. pat
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
729 local last_end = 1
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
730 local s, e, cap = str:find(fpat, 1)
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
731 while s do
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
732 if s ~= 1 or cap ~= "" then
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
733 table.insert(t,cap)
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
734 end
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
735 last_end = e+1
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
736 s, e, cap = str:find(fpat, last_end)
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
737 end
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
738 if last_end <= #str then
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
739 cap = str:sub(last_end)
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
740 table.insert(t, cap)
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
741 end
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
742 return t
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
743 end
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
744
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
745 local function assign(arr, content)
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
746 local tmp = html;
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
747 local idx = nil;
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
748 for _,i in ipairs(arr) do
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
749 if idx ~= nil then
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
750 if tmp[idx] == nil then
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
751 tmp[idx] = {};
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
752 end
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
753 tmp = tmp[idx];
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
754 end
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
755 idx = i;
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
756 end
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
757 tmp[idx] = content;
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
758 end
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
759
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
760 local function readFile(filepath)
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
761 local f = assert(io_open(filepath, "r"));
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
762 local t = f:read("*all");
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
763 f:close()
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
764 return t;
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
765 end
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
766
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
767 local function loadTheme(path)
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
768 local iter = lfs.dir(path);
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
769 for file in iter do
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
770 if file ~= "." and file ~= ".." then
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
771 module:log("debug", "opening theme file: " .. file);
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
772 local tmp = split(file:gsub("\.html$", ""), "_");
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
773 local content = readFile(path .. "/" .. file);
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
774 assign(tmp, content);
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
775 end
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
776 end
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
777 return true;
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
778 end
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
779
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
780 function module.load()
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
781 config = config_get("*", "core", "muc_log_http") or {};
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
782 if config.showStatus == nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
783 config.showStatus = true;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
784 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
785 if config.showJoin == nil then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
786 config.showJoin = true;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
787 end
102
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
788
183
9d4fd01443eb mod_muc_log_http: ensure to have the default being "prosody"
Thilo Cestonaro <thilo@cestona.ro>
parents: 180
diff changeset
789 theme = config.theme or "prosody";
105
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
790 local themePath = themesParent .. "/" .. tostring(theme);
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
791 local attributes, err = lfs.attributes(themePath);
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
792 if attributes == nil or attributes.mode ~= "directory" then
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
793 module:log("error", "Theme folder of theme \"".. tostring(theme) .. "\" isn't existing. expected Path: " .. themePath);
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
794 return false;
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
795 end
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
796
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
797 -- module:log("debug", (require "util.serialization").serialize(html));
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
798 if(not loadTheme(themePath)) then
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
799 module:log("error", "Theme \"".. tostring(theme) .. "\" is missing something.");
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
800 return false;
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
801 end
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
802 -- module:log("debug", (require "util.serialization").serialize(html));
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
803
102
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
804 httpserver.new_from_config({ config.http_port or true }, handle_request, { base = urlBase, ssl = false, port = 5290 });
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
805
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
806 for jid, host in pairs(prosody.hosts) do
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
807 if host.muc then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
808 local enabledModules = config_get(jid, "core", "modules_enabled");
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
809 if enabledModules then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
810 for _,mod in ipairs(enabledModules) do
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
811 if(mod == "muc_log") then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
812 module:log("debug", "component: %s", tostring(jid));
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
813 muc_hosts[jid] = true;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
814 break;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
815 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
816 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
817 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
818 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
819 end
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
820 module:log("debug", "loaded mod_muc_log_http");
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
821 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
822
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
823 function module.unload()
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
824 muc_hosts = nil;
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
825 module:log("debug", "unloaded mod_muc_log_http");
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
826 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
827
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
828 module:add_event_hook("component-activated", function(component, config)
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
829 if config.core and config.core.modules_enabled then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
830 for _,mod in ipairs(config.core.modules_enabled) do
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
831 if(mod == "muc_log") then
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
832 module:log("debug", "component: %s", tostring(component));
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
833 muc_hosts[component] = true;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
834 break;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
835 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
836 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
837 end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
838 end);