annotate mod_http_muc_log/mod_http_muc_log.lua @ 3596:6e529f53b3c3

mod_http_muc_log: Allow specifying the default view
author Kim Alvefur <zash@zash.se>
date Mon, 13 May 2019 00:52:35 +0200
parents 00a848ede42d
children da7ec4ed6ddf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
1 local mt = require"util.multitable";
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 local datetime = require"util.datetime";
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 local jid_split = require"util.jid".split;
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 local nodeprep = require"util.encodings".stringprep.nodeprep;
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 local it = require"util.iterators";
1581
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
6 local url = require"socket.url";
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
7 local os_time, os_date = os.time, os.date;
3485
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
8 local httplib = require "util.http";
1750
3b839db88412 mod_http_muc_log: Template engine thing moved into util.interpolation
Kim Alvefur <zash@zash.se>
parents: 1671
diff changeset
9 local render = require"util.interpolation".new("%b{}", require"util.stanza".xml_escape);
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10
1571
eed7db9f3157 mod_mam_muc, mod_http_muc_log: Change store name from 'archive2' to 'muc_log' to distinguish it from personal MAM archives. Old data will require migration.
Kim Alvefur <zash@zash.se>
parents: 1564
diff changeset
11 local archive = module:open_store("muc_log", "archive");
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 -- Support both old and new MUC code
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 local mod_muc = module:depends"muc";
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 local rooms = rawget(mod_muc, "rooms");
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 local each_room = rawget(mod_muc, "each_room") or function() return it.values(rooms); end;
1554
8059b7cdaf17 mod_http_muc_log: Make MUC local code identical to mod_mam_muc
Kim Alvefur <zash@zash.se>
parents: 1553
diff changeset
17 local new_muc = not rooms;
8059b7cdaf17 mod_http_muc_log: Make MUC local code identical to mod_mam_muc
Kim Alvefur <zash@zash.se>
parents: 1553
diff changeset
18 if new_muc then
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 rooms = module:shared"muc/rooms";
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 end
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 local get_room_from_jid = rawget(mod_muc, "get_room_from_jid") or
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 function (jid)
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 return rooms[jid];
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 end
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 local function get_room(name)
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 local jid = name .. '@' .. module.host;
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 return get_room_from_jid(jid);
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 end
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30
3582
444e2306c99a mod_http_muc_log: Add option to show OOB images
Kim Alvefur <zash@zash.se>
parents: 3578
diff changeset
31 local use_oob = module:get_option_boolean(module.name .. "_show_images", false);
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 module:depends"http";
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33
1654
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
34 local template;
1582
8e282eb0c70c mod_http_muc_log: Split out template into a configurable file.
Kim Alvefur <zash@zash.se>
parents: 1581
diff changeset
35 do
3063
a9fa98e28697 mod_http_muc_log: Use separate variable for filename and file handle
Kim Alvefur <zash@zash.se>
parents: 3062
diff changeset
36 local template_filename = module:get_option_string(module.name .. "_template", module.name .. ".html");
3066
cefc375d0929 mod_http_muc_log: Handle errors while loading template file in a more graceful manner
Kim Alvefur <zash@zash.se>
parents: 3064
diff changeset
37 local template_file, err = module:load_resource(template_filename);
cefc375d0929 mod_http_muc_log: Handle errors while loading template file in a more graceful manner
Kim Alvefur <zash@zash.se>
parents: 3064
diff changeset
38 if template_file then
cefc375d0929 mod_http_muc_log: Handle errors while loading template file in a more graceful manner
Kim Alvefur <zash@zash.se>
parents: 3064
diff changeset
39 template, err = template_file:read("*a");
cefc375d0929 mod_http_muc_log: Handle errors while loading template file in a more graceful manner
Kim Alvefur <zash@zash.se>
parents: 3064
diff changeset
40 template_file:close();
cefc375d0929 mod_http_muc_log: Handle errors while loading template file in a more graceful manner
Kim Alvefur <zash@zash.se>
parents: 3064
diff changeset
41 end
cefc375d0929 mod_http_muc_log: Handle errors while loading template file in a more graceful manner
Kim Alvefur <zash@zash.se>
parents: 3064
diff changeset
42 if not template then
cefc375d0929 mod_http_muc_log: Handle errors while loading template file in a more graceful manner
Kim Alvefur <zash@zash.se>
parents: 3064
diff changeset
43 module:log("error", "Error loading template: %s", err);
3486
887ce59cf396 mod_http_muc_log: Split long line [luacheck]
Kim Alvefur <zash@zash.se>
parents: 3485
diff changeset
44 template = render("<h1>mod_{module} could not read the template</h1>\
887ce59cf396 mod_http_muc_log: Split long line [luacheck]
Kim Alvefur <zash@zash.se>
parents: 3485
diff changeset
45 <p>Tried to open <b>{filename}</b></p>\
887ce59cf396 mod_http_muc_log: Split long line [luacheck]
Kim Alvefur <zash@zash.se>
parents: 3485
diff changeset
46 <pre>{error}</pre>",
3066
cefc375d0929 mod_http_muc_log: Handle errors while loading template file in a more graceful manner
Kim Alvefur <zash@zash.se>
parents: 3064
diff changeset
47 { module = module.name, filename = template_filename, error = err });
cefc375d0929 mod_http_muc_log: Handle errors while loading template file in a more graceful manner
Kim Alvefur <zash@zash.se>
parents: 3064
diff changeset
48 end
1582
8e282eb0c70c mod_http_muc_log: Split out template into a configurable file.
Kim Alvefur <zash@zash.se>
parents: 1581
diff changeset
49 end
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
50
1654
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
51 -- local base_url = module:http_url() .. '/'; -- TODO: Generate links in a smart way
1581
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
52 local get_link do
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
53 local link, path = { path = '/' }, { "", "", is_directory = true };
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
54 function get_link(room, date)
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
55 path[1], path[2] = room, date;
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
56 path.is_directory = not date;
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
57 link.path = url.build_path(path);
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
58 return url.build(link);
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
59 end
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
60 end
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
61
3593
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
62 local function get_absolute_link(room, date)
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
63 local link = url.parse(module:http_url());
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
64 local path = url.parse_path(link.path);
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
65 if room then
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
66 table.insert(path, room);
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
67 if date then
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
68 table.insert(path, date)
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
69 path.is_directory = false;
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
70 else
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
71 path.is_directory = true;
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
72 end
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
73 end
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
74 link.path = url.build_path(path)
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
75 return url.build(link)
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
76 end
0b670831ace3 mod_http_muc_log: Correctly build absolute URLs
Kim Alvefur <zash@zash.se>
parents: 3592
diff changeset
77
3059
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
78 -- Whether room can be joined by anyone
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
79 local function open_room(room) -- : boolean
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
80 if type(room) == "string" then
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
81 room = get_room(room);
3061
25eecbb195d9 mod_http_muc_log: Add comment about argument to policy function
Kim Alvefur <zash@zash.se>
parents: 3060
diff changeset
82 -- assumed to be a room object otherwise
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
83 end
3057
f69a2e97d912 mod_http_muc_log: Improve readability of policy function
Kim Alvefur <zash@zash.se>
parents: 2846
diff changeset
84 if not room then
f69a2e97d912 mod_http_muc_log: Improve readability of policy function
Kim Alvefur <zash@zash.se>
parents: 2846
diff changeset
85 return nil;
f69a2e97d912 mod_http_muc_log: Improve readability of policy function
Kim Alvefur <zash@zash.se>
parents: 2846
diff changeset
86 end
f69a2e97d912 mod_http_muc_log: Improve readability of policy function
Kim Alvefur <zash@zash.se>
parents: 2846
diff changeset
87
3059
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
88 if (room.get_members_only or room.is_members_only)(room) then
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
89 return false;
3057
f69a2e97d912 mod_http_muc_log: Improve readability of policy function
Kim Alvefur <zash@zash.se>
parents: 2846
diff changeset
90 end
f69a2e97d912 mod_http_muc_log: Improve readability of policy function
Kim Alvefur <zash@zash.se>
parents: 2846
diff changeset
91
3059
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
92 if room:get_password() then
3057
f69a2e97d912 mod_http_muc_log: Improve readability of policy function
Kim Alvefur <zash@zash.se>
parents: 2846
diff changeset
93 return false;
f69a2e97d912 mod_http_muc_log: Improve readability of policy function
Kim Alvefur <zash@zash.se>
parents: 2846
diff changeset
94 end
f69a2e97d912 mod_http_muc_log: Improve readability of policy function
Kim Alvefur <zash@zash.se>
parents: 2846
diff changeset
95
f69a2e97d912 mod_http_muc_log: Improve readability of policy function
Kim Alvefur <zash@zash.se>
parents: 2846
diff changeset
96 return true;
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
97 end
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
98
3596
6e529f53b3c3 mod_http_muc_log: Allow specifying the default view
Kim Alvefur <zash@zash.se>
parents: 3595
diff changeset
99 -- Can be set to "latest"
6e529f53b3c3 mod_http_muc_log: Allow specifying the default view
Kim Alvefur <zash@zash.se>
parents: 3595
diff changeset
100 local default_view = module:get_option_string(module.name .. "_default_view", nil);
6e529f53b3c3 mod_http_muc_log: Allow specifying the default view
Kim Alvefur <zash@zash.se>
parents: 3595
diff changeset
101
3064
ce61f1826f1f mod_http_muc_log: Include URL in disco#info for public rooms
Kim Alvefur <zash@zash.se>
parents: 3063
diff changeset
102 module:hook("muc-disco#info", function (event)
ce61f1826f1f mod_http_muc_log: Include URL in disco#info for public rooms
Kim Alvefur <zash@zash.se>
parents: 3063
diff changeset
103 local room = event.room;
ce61f1826f1f mod_http_muc_log: Include URL in disco#info for public rooms
Kim Alvefur <zash@zash.se>
parents: 3063
diff changeset
104 if open_room(room) then
ce61f1826f1f mod_http_muc_log: Include URL in disco#info for public rooms
Kim Alvefur <zash@zash.se>
parents: 3063
diff changeset
105 table.insert(event.form, { name = "muc#roominfo_logs", type="text-single" });
3596
6e529f53b3c3 mod_http_muc_log: Allow specifying the default view
Kim Alvefur <zash@zash.se>
parents: 3595
diff changeset
106 event.formdata["muc#roominfo_logs"] = get_absolute_link(jid_split(event.room.jid), default_view);
3064
ce61f1826f1f mod_http_muc_log: Include URL in disco#info for public rooms
Kim Alvefur <zash@zash.se>
parents: 3063
diff changeset
107 end
ce61f1826f1f mod_http_muc_log: Include URL in disco#info for public rooms
Kim Alvefur <zash@zash.se>
parents: 3063
diff changeset
108 end);
ce61f1826f1f mod_http_muc_log: Include URL in disco#info for public rooms
Kim Alvefur <zash@zash.se>
parents: 3063
diff changeset
109
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
110 local function sort_Y(a,b) return a.year > b.year end
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
111 local function sort_m(a,b) return a.n > b.n end
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
112
2590
63dd3e525f13 mod_http_muc_log: Add some comments
Kim Alvefur <zash@zash.se>
parents: 2236
diff changeset
113 -- Time zone hack?
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
114 local t_diff = os_time(os_date("*t")) - os_time(os_date("!*t"));
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
115 local function time(t)
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
116 return os_time(t) + t_diff;
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
117 end
2836
52a7c0f6aea1 mod_http_muc_log: Add a function for rounding timestamps down to midnight
Kim Alvefur <zash@zash.se>
parents: 2826
diff changeset
118 local function date_floor(t)
52a7c0f6aea1 mod_http_muc_log: Add a function for rounding timestamps down to midnight
Kim Alvefur <zash@zash.se>
parents: 2826
diff changeset
119 return t - t % 86400;
52a7c0f6aea1 mod_http_muc_log: Add a function for rounding timestamps down to midnight
Kim Alvefur <zash@zash.se>
parents: 2826
diff changeset
120 end
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
121
2590
63dd3e525f13 mod_http_muc_log: Add some comments
Kim Alvefur <zash@zash.se>
parents: 2236
diff changeset
122 -- Fetch one item
1654
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
123 local function find_once(room, query, retval)
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
124 if query then query.limit = 1; else query = { limit = 1 }; end
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
125 local iter, err = archive:find(room, query);
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
126 if not iter then return iter, err; end
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
127 if retval then
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
128 return select(retval, iter());
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
129 end
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
130 return iter();
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
131 end
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
132
2826
ed26608920d4 mod_http_muc_log: Switch to an inaccurate but O(1) method of producing the calendar view
Kim Alvefur <zash@zash.se>
parents: 2763
diff changeset
133 local lazy = module:get_option_boolean(module.name .. "_lazy_calendar", true);
ed26608920d4 mod_http_muc_log: Switch to an inaccurate but O(1) method of producing the calendar view
Kim Alvefur <zash@zash.se>
parents: 2763
diff changeset
134
3485
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
135 local function hide_presence(request)
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
136 if request.url.query then
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
137 local data = httplib.formdecode(request.url.query);
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
138 if data then
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
139 return data.p == "h"
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
140 end
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
141 end
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
142 return false;
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
143 end
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
144
2590
63dd3e525f13 mod_http_muc_log: Add some comments
Kim Alvefur <zash@zash.se>
parents: 2236
diff changeset
145 -- Produce the calendar view
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
146 local function years_page(event, path)
3485
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
147 local request, response = event.request, event.response;
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
148
1552
81b3599c02fb mod_http_muc_log: Have URL of date list page end with a slash
Kim Alvefur <zash@zash.se>
parents: 1550
diff changeset
149 local room = nodeprep(path:match("^(.*)/$"));
3059
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
150 local is_open = open_room(room);
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
151 if is_open == nil then
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
152 return -- implicit 404
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
153 elseif is_open == false then
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
154 return 403;
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
155 end
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
156
2590
63dd3e525f13 mod_http_muc_log: Add some comments
Kim Alvefur <zash@zash.se>
parents: 2236
diff changeset
157 -- Collect each date that has messages
63dd3e525f13 mod_http_muc_log: Add some comments
Kim Alvefur <zash@zash.se>
parents: 2236
diff changeset
158 -- convert it to a year / month / day tree
1832
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
159 local date_list = archive.dates and archive:dates(room);
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
160 local dates = mt.new();
1832
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
161 if date_list then
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
162 for _, date in ipairs(date_list) do
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
163 local when = datetime.parse(date.."T00:00:00Z");
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
164 local t = os_date("!*t", when);
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
165 dates:set(t.year, t.month, t.day, when);
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
166 end
2826
ed26608920d4 mod_http_muc_log: Switch to an inaccurate but O(1) method of producing the calendar view
Kim Alvefur <zash@zash.se>
parents: 2763
diff changeset
167 elseif lazy then
ed26608920d4 mod_http_muc_log: Switch to an inaccurate but O(1) method of producing the calendar view
Kim Alvefur <zash@zash.se>
parents: 2763
diff changeset
168 -- Lazy with many false positives
ed26608920d4 mod_http_muc_log: Switch to an inaccurate but O(1) method of producing the calendar view
Kim Alvefur <zash@zash.se>
parents: 2763
diff changeset
169 local first_day = find_once(room, nil, 3);
ed26608920d4 mod_http_muc_log: Switch to an inaccurate but O(1) method of producing the calendar view
Kim Alvefur <zash@zash.se>
parents: 2763
diff changeset
170 local last_day = find_once(room, { reverse = true }, 3);
2839
7738d7158dd0 mod_http_muc_log: Return a 404 page if there are no messages to derive a time span from
Kim Alvefur <zash@zash.se>
parents: 2838
diff changeset
171 if first_day and last_day then
7738d7158dd0 mod_http_muc_log: Return a 404 page if there are no messages to derive a time span from
Kim Alvefur <zash@zash.se>
parents: 2838
diff changeset
172 first_day = date_floor(first_day);
7738d7158dd0 mod_http_muc_log: Return a 404 page if there are no messages to derive a time span from
Kim Alvefur <zash@zash.se>
parents: 2838
diff changeset
173 last_day = date_floor(last_day);
7738d7158dd0 mod_http_muc_log: Return a 404 page if there are no messages to derive a time span from
Kim Alvefur <zash@zash.se>
parents: 2838
diff changeset
174 for when = first_day, last_day, 86400 do
7738d7158dd0 mod_http_muc_log: Return a 404 page if there are no messages to derive a time span from
Kim Alvefur <zash@zash.se>
parents: 2838
diff changeset
175 local t = os_date("!*t", when);
7738d7158dd0 mod_http_muc_log: Return a 404 page if there are no messages to derive a time span from
Kim Alvefur <zash@zash.se>
parents: 2838
diff changeset
176 dates:set(t.year, t.month, t.day, when);
7738d7158dd0 mod_http_muc_log: Return a 404 page if there are no messages to derive a time span from
Kim Alvefur <zash@zash.se>
parents: 2838
diff changeset
177 end
7738d7158dd0 mod_http_muc_log: Return a 404 page if there are no messages to derive a time span from
Kim Alvefur <zash@zash.se>
parents: 2838
diff changeset
178 else
7738d7158dd0 mod_http_muc_log: Return a 404 page if there are no messages to derive a time span from
Kim Alvefur <zash@zash.se>
parents: 2838
diff changeset
179 return; -- 404
2826
ed26608920d4 mod_http_muc_log: Switch to an inaccurate but O(1) method of producing the calendar view
Kim Alvefur <zash@zash.se>
parents: 2763
diff changeset
180 end
1832
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
181 else
2590
63dd3e525f13 mod_http_muc_log: Add some comments
Kim Alvefur <zash@zash.se>
parents: 2236
diff changeset
182 -- Collect date the hard way
1832
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
183 module:log("debug", "Find all dates with messages");
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
184 local next_day;
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
185 repeat
2235
c5ee48e27d01 mod_http_muc_log: Link to next day with content, regardless of type (simplifes)
Kim Alvefur <zash@zash.se>
parents: 1832
diff changeset
186 local when = find_once(room, { start = next_day; }, 3);
1832
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
187 if not when then break; end
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
188 local t = os_date("!*t", when);
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
189 dates:set(t.year, t.month, t.day, when );
2836
52a7c0f6aea1 mod_http_muc_log: Add a function for rounding timestamps down to midnight
Kim Alvefur <zash@zash.se>
parents: 2826
diff changeset
190 next_day = date_floor(when) + 86400;
1832
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
191 until not next_day;
48125f2c358b mod_http_muc_log: If archive driver provides the dates method, use it
Kim Alvefur <zash@zash.se>
parents: 1750
diff changeset
192 end
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
193
1654
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
194 local years = {};
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
195
2590
63dd3e525f13 mod_http_muc_log: Add some comments
Kim Alvefur <zash@zash.se>
parents: 2236
diff changeset
196 -- Wrangle Y/m/d tree into year / month / week / day tree for calendar view
1654
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
197 for current_year, months_t in pairs(dates.data) do
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
198 local t = { year = current_year, month = 1, day = 1 };
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
199 local months = { };
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
200 local year = { year = current_year, months = months };
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
201 years[#years+1] = year;
1654
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
202 for current_month, days_t in pairs(months_t) do
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
203 t.day = 1;
1654
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
204 t.month = current_month;
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
205 local tmp = os_date("!*t", time(t));
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
206 local days = {};
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
207 local week = { days = days }
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
208 local weeks = { week };
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
209 local month = { year = year.year, month = os_date("!%B", time(t)), n = current_month, weeks = weeks };
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
210 months[#months+1] = month;
1654
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
211 local current_day = 1;
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
212 for _=1, (tmp.wday+5)%7 do
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
213 days[current_day], current_day = {}, current_day+1;
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
214 end
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
215 for i = 1, 31 do
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
216 t.day = i;
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
217 tmp = os_date("!*t", time(t));
1654
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
218 if tmp.month ~= current_month then break end
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
219 if i > 1 and tmp.wday == 2 then
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
220 days = {};
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
221 weeks[#weeks+1] = { days = days };
1654
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
222 current_day = 1;
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
223 end
2685
cd5781ca782d mod_http_muc_log: Remove caching
Kim Alvefur <zash@zash.se>
parents: 2593
diff changeset
224 days[current_day] = {
cd5781ca782d mod_http_muc_log: Remove caching
Kim Alvefur <zash@zash.se>
parents: 2593
diff changeset
225 wday = tmp.wday, day = i, href = days_t[i] and datetime.date(days_t[i])
cd5781ca782d mod_http_muc_log: Remove caching
Kim Alvefur <zash@zash.se>
parents: 2593
diff changeset
226 };
cd5781ca782d mod_http_muc_log: Remove caching
Kim Alvefur <zash@zash.se>
parents: 2593
diff changeset
227 current_day = current_day+1;
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
228 end
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
229 end
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
230 table.sort(year, sort_m);
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
231 end
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
232 table.sort(years, sort_Y);
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
233
2590
63dd3e525f13 mod_http_muc_log: Add some comments
Kim Alvefur <zash@zash.se>
parents: 2236
diff changeset
234 -- Phew, all wrangled, all that's left is rendering it with the template
63dd3e525f13 mod_http_muc_log: Add some comments
Kim Alvefur <zash@zash.se>
parents: 2236
diff changeset
235
1579
9e784ddac236 mod_http_muc_log: Include charset in Content-Type header
Kim Alvefur <zash@zash.se>
parents: 1578
diff changeset
236 response.headers.content_type = "text/html; charset=utf-8";
1581
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
237 return render(template, {
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
238 title = get_room(room):get_name();
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
239 jid = get_room(room).jid;
3485
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
240 hide_presence = hide_presence(request);
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
241 years = years;
1581
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
242 links = {
2840
683a2f25223d mod_http_muc_log: Reword "back" links
Kim Alvefur <zash@zash.se>
parents: 2839
diff changeset
243 { href = "../", rel = "up", text = "Room list" },
3594
b66111f75e4b mod_http_muc_log: Add navigation link to latest page
Kim Alvefur <zash@zash.se>
parents: 3593
diff changeset
244 { href = "latest", text = "Latest" },
1581
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
245 };
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
246 });
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
247 end
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
248
2590
63dd3e525f13 mod_http_muc_log: Add some comments
Kim Alvefur <zash@zash.se>
parents: 2236
diff changeset
249 -- Produce the chat log view
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
250 local function logs_page(event, path)
3485
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
251 local request, response = event.request, event.response;
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
252
3591
3f8383c5a045 mod_http_muc_log: Fix Y10k bug
Kim Alvefur <zash@zash.se>
parents: 3583
diff changeset
253 local room, date = path:match("^([^/]+)/([^/]*)/?$");
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
254 room = nodeprep(room);
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
255 if not room then
3591
3f8383c5a045 mod_http_muc_log: Fix Y10k bug
Kim Alvefur <zash@zash.se>
parents: 3583
diff changeset
256 return 400;
3f8383c5a045 mod_http_muc_log: Fix Y10k bug
Kim Alvefur <zash@zash.se>
parents: 3583
diff changeset
257 elseif date == "" then
1606
2c8b985ebde5 mod_http_muc_log: Switch to a calendar view for selecting dates
Kim Alvefur <zash@zash.se>
parents: 1605
diff changeset
258 return years_page(event, path);
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
259 end
3059
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
260 local is_open = open_room(room);
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
261 if is_open == nil then
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
262 return -- implicit 404
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
263 elseif is_open == false then
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
264 return 403;
14d8f2a9d5f4 mod_http_muc_log: Base read-access on whether anyone would be able to join (like MUC)
Kim Alvefur <zash@zash.se>
parents: 3058
diff changeset
265 end
3592
61a9c087730a mod_http_muc_log: Provide a redirect to 'latest' day with logs (fixes #1360)
Kim Alvefur <zash@zash.se>
parents: 3591
diff changeset
266 if date == "latest" then
61a9c087730a mod_http_muc_log: Provide a redirect to 'latest' day with logs (fixes #1360)
Kim Alvefur <zash@zash.se>
parents: 3591
diff changeset
267 local last_day = find_once(room, { reverse = true }, 3);
3595
00a848ede42d mod_http_muc_log: Preserve ?query part in redirect
Kim Alvefur <zash@zash.se>
parents: 3594
diff changeset
268 response.headers.location = url.build({ path = datetime.date(last_day), query = request.url.query });
3592
61a9c087730a mod_http_muc_log: Provide a redirect to 'latest' day with logs (fixes #1360)
Kim Alvefur <zash@zash.se>
parents: 3591
diff changeset
269 return 303;
61a9c087730a mod_http_muc_log: Provide a redirect to 'latest' day with logs (fixes #1360)
Kim Alvefur <zash@zash.se>
parents: 3591
diff changeset
270 end
2841
462dece0a3c2 mod_http_muc_log: Parse date out of path once
Kim Alvefur <zash@zash.se>
parents: 2840
diff changeset
271 local day_start = datetime.parse(date.."T00:00:00Z");
3591
3f8383c5a045 mod_http_muc_log: Fix Y10k bug
Kim Alvefur <zash@zash.se>
parents: 3583
diff changeset
272 if not day_start then
3f8383c5a045 mod_http_muc_log: Fix Y10k bug
Kim Alvefur <zash@zash.se>
parents: 3583
diff changeset
273 module:log("debug", "Invalid date format: %q", date);
3f8383c5a045 mod_http_muc_log: Fix Y10k bug
Kim Alvefur <zash@zash.se>
parents: 3583
diff changeset
274 return 400;
3f8383c5a045 mod_http_muc_log: Fix Y10k bug
Kim Alvefur <zash@zash.se>
parents: 3583
diff changeset
275 end
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
276
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
277 local logs, i = {}, 1;
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
278 local iter, err = archive:find(room, {
2841
462dece0a3c2 mod_http_muc_log: Parse date out of path once
Kim Alvefur <zash@zash.se>
parents: 2840
diff changeset
279 ["start"] = day_start;
462dece0a3c2 mod_http_muc_log: Parse date out of path once
Kim Alvefur <zash@zash.se>
parents: 2840
diff changeset
280 ["end"] = day_start + 86399;
3485
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
281 ["with"] = hide_presence(request) and "message<groupchat" or nil;
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
282 });
1654
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
283 if not iter then
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
284 module:log("warn", "Could not search archive: %s", err or "no error");
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
285 return 500;
1a6d6221c5f6 mod_http_muc_log: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents: 1625
diff changeset
286 end
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
287
1577
0a6974f2cb55 mod_http_muc_log: Use archive IDs to find next and previous dates that contain messages
Kim Alvefur <zash@zash.se>
parents: 1576
diff changeset
288 local first, last;
1555
2e51f70cd7ea mod_http_muc_log: Make pretty
Kim Alvefur <zash@zash.se>
parents: 1554
diff changeset
289 for key, item, when in iter do
2591
3e1a85c5194c mod_http_muc_log: Move scope of variables into loop
Kim Alvefur <zash@zash.se>
parents: 2590
diff changeset
290 local body = item:get_child_text("body");
3e1a85c5194c mod_http_muc_log: Move scope of variables into loop
Kim Alvefur <zash@zash.se>
parents: 2590
diff changeset
291 local subject = item:get_child_text("subject");
3e1a85c5194c mod_http_muc_log: Move scope of variables into loop
Kim Alvefur <zash@zash.se>
parents: 2590
diff changeset
292 local verb = nil;
1555
2e51f70cd7ea mod_http_muc_log: Make pretty
Kim Alvefur <zash@zash.se>
parents: 1554
diff changeset
293 if subject then
1578
a68ec7a2dc02 mod_http_muc_log: Show only messages with presentable content
Kim Alvefur <zash@zash.se>
parents: 1577
diff changeset
294 verb, body = "set the topic to", subject;
1555
2e51f70cd7ea mod_http_muc_log: Make pretty
Kim Alvefur <zash@zash.se>
parents: 1554
diff changeset
295 elseif body and body:sub(1,4) == "/me " then
2e51f70cd7ea mod_http_muc_log: Make pretty
Kim Alvefur <zash@zash.se>
parents: 1554
diff changeset
296 verb, body = body:sub(5), nil;
2e51f70cd7ea mod_http_muc_log: Make pretty
Kim Alvefur <zash@zash.se>
parents: 1554
diff changeset
297 elseif item.name == "presence" then
3060
982668000163 mod_http_muc_log: Add a note about changing how presence is treated
Kim Alvefur <zash@zash.se>
parents: 3059
diff changeset
298 -- TODO Distinguish between join and presence update
1555
2e51f70cd7ea mod_http_muc_log: Make pretty
Kim Alvefur <zash@zash.se>
parents: 1554
diff changeset
299 verb = item.attr.type == "unavailable" and "has left" or "has joined";
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
300 end
3582
444e2306c99a mod_http_muc_log: Add option to show OOB images
Kim Alvefur <zash@zash.se>
parents: 3578
diff changeset
301 local oob = use_oob and item:get_child("x", "jabber:x:oob");
444e2306c99a mod_http_muc_log: Add option to show OOB images
Kim Alvefur <zash@zash.se>
parents: 3578
diff changeset
302 if body or verb or oob then
444e2306c99a mod_http_muc_log: Add option to show OOB images
Kim Alvefur <zash@zash.se>
parents: 3578
diff changeset
303 local line = {
1578
a68ec7a2dc02 mod_http_muc_log: Show only messages with presentable content
Kim Alvefur <zash@zash.se>
parents: 1577
diff changeset
304 key = key;
a68ec7a2dc02 mod_http_muc_log: Show only messages with presentable content
Kim Alvefur <zash@zash.se>
parents: 1577
diff changeset
305 datetime = datetime.datetime(when);
a68ec7a2dc02 mod_http_muc_log: Show only messages with presentable content
Kim Alvefur <zash@zash.se>
parents: 1577
diff changeset
306 time = datetime.time(when);
a68ec7a2dc02 mod_http_muc_log: Show only messages with presentable content
Kim Alvefur <zash@zash.se>
parents: 1577
diff changeset
307 verb = verb;
a68ec7a2dc02 mod_http_muc_log: Show only messages with presentable content
Kim Alvefur <zash@zash.se>
parents: 1577
diff changeset
308 body = body;
a68ec7a2dc02 mod_http_muc_log: Show only messages with presentable content
Kim Alvefur <zash@zash.se>
parents: 1577
diff changeset
309 nick = select(3, jid_split(item.attr.from));
a68ec7a2dc02 mod_http_muc_log: Show only messages with presentable content
Kim Alvefur <zash@zash.se>
parents: 1577
diff changeset
310 st_name = item.name;
a68ec7a2dc02 mod_http_muc_log: Show only messages with presentable content
Kim Alvefur <zash@zash.se>
parents: 1577
diff changeset
311 st_type = item.attr.type;
3582
444e2306c99a mod_http_muc_log: Add option to show OOB images
Kim Alvefur <zash@zash.se>
parents: 3578
diff changeset
312 };
444e2306c99a mod_http_muc_log: Add option to show OOB images
Kim Alvefur <zash@zash.se>
parents: 3578
diff changeset
313 if oob then
444e2306c99a mod_http_muc_log: Add option to show OOB images
Kim Alvefur <zash@zash.se>
parents: 3578
diff changeset
314 line.oob = {
444e2306c99a mod_http_muc_log: Add option to show OOB images
Kim Alvefur <zash@zash.se>
parents: 3578
diff changeset
315 url = oob:get_child_text("url");
444e2306c99a mod_http_muc_log: Add option to show OOB images
Kim Alvefur <zash@zash.se>
parents: 3578
diff changeset
316 desc = oob:get_child_text("desc");
444e2306c99a mod_http_muc_log: Add option to show OOB images
Kim Alvefur <zash@zash.se>
parents: 3578
diff changeset
317 }
444e2306c99a mod_http_muc_log: Add option to show OOB images
Kim Alvefur <zash@zash.se>
parents: 3578
diff changeset
318 end
444e2306c99a mod_http_muc_log: Add option to show OOB images
Kim Alvefur <zash@zash.se>
parents: 3578
diff changeset
319 logs[i], i = line, i + 1;
1578
a68ec7a2dc02 mod_http_muc_log: Show only messages with presentable content
Kim Alvefur <zash@zash.se>
parents: 1577
diff changeset
320 end
1577
0a6974f2cb55 mod_http_muc_log: Use archive IDs to find next and previous dates that contain messages
Kim Alvefur <zash@zash.se>
parents: 1576
diff changeset
321 first = first or key;
0a6974f2cb55 mod_http_muc_log: Use archive IDs to find next and previous dates that contain messages
Kim Alvefur <zash@zash.se>
parents: 1576
diff changeset
322 last = key;
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
323 end
2846
7eb23a4e7fde mod_http_muc_log: Generate empty pages in lazy mode, so that one can navigate past quiet days
Kim Alvefur <zash@zash.se>
parents: 2845
diff changeset
324 if i == 1 and not lazy then return end -- No items
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
325
2236
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
326 local next_when, prev_when = "", "";
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
327 local date_list = archive.dates and archive:dates(room);
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
328 if date_list then
2592
fb1987d4ac62 mod_http_muc_log: Rename loop variable to avoid name clash
Kim Alvefur <zash@zash.se>
parents: 2591
diff changeset
329 for j = 1, #date_list do
fb1987d4ac62 mod_http_muc_log: Rename loop variable to avoid name clash
Kim Alvefur <zash@zash.se>
parents: 2591
diff changeset
330 if date_list[j] == date then
fb1987d4ac62 mod_http_muc_log: Rename loop variable to avoid name clash
Kim Alvefur <zash@zash.se>
parents: 2591
diff changeset
331 next_when = date_list[j+1] or "";
fb1987d4ac62 mod_http_muc_log: Rename loop variable to avoid name clash
Kim Alvefur <zash@zash.se>
parents: 2591
diff changeset
332 prev_when = date_list[j-1] or "";
2236
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
333 break;
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
334 end
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
335 end
2844
9fac07bba402 mod_http_muc_log: Lazy nex/prev link generation
Kim Alvefur <zash@zash.se>
parents: 2843
diff changeset
336 elseif lazy then
9fac07bba402 mod_http_muc_log: Lazy nex/prev link generation
Kim Alvefur <zash@zash.se>
parents: 2843
diff changeset
337 next_when = datetime.date(day_start + 86400);
9fac07bba402 mod_http_muc_log: Lazy nex/prev link generation
Kim Alvefur <zash@zash.se>
parents: 2843
diff changeset
338 prev_when = datetime.date(day_start - 86400);
2845
0de6ed2ae9bd mod_http_muc_log: Check that there are timestamps to work with
Kim Alvefur <zash@zash.se>
parents: 2844
diff changeset
339 elseif first and last then
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
340
2236
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
341 module:log("debug", "Find next date with messages");
2593
b61b0ff1c0f9 mod_http_muc_log: Fix prev/next date finding
Kim Alvefur <zash@zash.se>
parents: 2592
diff changeset
342 next_when = find_once(room, { after = last }, 3);
2236
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
343 if next_when then
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
344 next_when = datetime.date(next_when);
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
345 module:log("debug", "Next message: %s", next_when);
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
346 end
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
347
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
348 module:log("debug", "Find prev date with messages");
2593
b61b0ff1c0f9 mod_http_muc_log: Fix prev/next date finding
Kim Alvefur <zash@zash.se>
parents: 2592
diff changeset
349 prev_when = find_once(room, { before = first, reverse = true }, 3);
2236
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
350 if prev_when then
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
351 prev_when = datetime.date(prev_when);
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
352 module:log("debug", "Previous message: %s", prev_when);
86bc6e1d9d4d mod_http_muc_log: Find next and previous date with date index if this is supported by the storage driver
Kim Alvefur <zash@zash.se>
parents: 2235
diff changeset
353 end
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
354 end
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
355
1579
9e784ddac236 mod_http_muc_log: Include charset in Content-Type header
Kim Alvefur <zash@zash.se>
parents: 1578
diff changeset
356 response.headers.content_type = "text/html; charset=utf-8";
1581
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
357 return render(template, {
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
358 title = ("%s - %s"):format(get_room(room):get_name(), date);
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
359 jid = get_room(room).jid;
3485
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
360 hide_presence = hide_presence(request);
1581
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
361 lines = logs;
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
362 links = {
2840
683a2f25223d mod_http_muc_log: Reword "back" links
Kim Alvefur <zash@zash.se>
parents: 2839
diff changeset
363 { href = "./", rel = "up", text = "Calendar" },
1581
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
364 { href = prev_when, rel = "prev", text = prev_when},
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
365 { href = next_when, rel = "next", text = next_when},
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
366 };
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
367 });
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
368 end
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
369
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
370 local function list_rooms(event)
3485
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
371 local request, response = event.request, event.response;
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
372 local room_list, i = {}, 1;
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
373 for room in each_room() do
3062
37a78e365b46 mod_http_muc_log: Fix inverted logic
Kim Alvefur <zash@zash.se>
parents: 3061
diff changeset
374 if not (room.get_hidden or room.is_hidden)(room) then
1581
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
375 room_list[i], i = {
3578
ea63dc0cc824 mod_http_muc_log: Sort room listing by jid for stable order
Kim Alvefur <zash@zash.se>
parents: 3560
diff changeset
376 jid = room.jid;
3596
6e529f53b3c3 mod_http_muc_log: Allow specifying the default view
Kim Alvefur <zash@zash.se>
parents: 3595
diff changeset
377 href = get_link(jid_split(room.jid), default_view);
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
378 name = room:get_name();
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
379 description = room:get_description();
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
380 }, i + 1;
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
381 end
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
382 end
1576
91b91052e0e8 mod_http_muc_log: Send a HTML mime type with responses
Kim Alvefur <zash@zash.se>
parents: 1575
diff changeset
383
3578
ea63dc0cc824 mod_http_muc_log: Sort room listing by jid for stable order
Kim Alvefur <zash@zash.se>
parents: 3560
diff changeset
384 table.sort(room_list, function (a, b)
3583
a36412d4fafd mod_http_muc_log: Trim trailing whitespace [luacheck]
Kim Alvefur <zash@zash.se>
parents: 3582
diff changeset
385 return a.jid < b.jid;
3578
ea63dc0cc824 mod_http_muc_log: Sort room listing by jid for stable order
Kim Alvefur <zash@zash.se>
parents: 3560
diff changeset
386 end);
ea63dc0cc824 mod_http_muc_log: Sort room listing by jid for stable order
Kim Alvefur <zash@zash.se>
parents: 3560
diff changeset
387
1581
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
388 response.headers.content_type = "text/html; charset=utf-8";
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
389 return render(template, {
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
390 title = module:get_option_string("name", "Prosody Chatrooms");
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
391 jid = module.host;
3485
181561d0aae5 mod_http_muc_log: Add functionality for hiding joins and parts
Kim Alvefur <zash@zash.se>
parents: 3283
diff changeset
392 hide_presence = hide_presence(request);
1581
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
393 rooms = room_list;
9f6cd252d233 mod_http_muc_log: Revamp template system
Kim Alvefur <zash@zash.se>
parents: 1580
diff changeset
394 });
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
395 end
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
396
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
397 module:provides("http", {
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
398 route = {
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
399 ["GET /"] = list_rooms;
2685
cd5781ca782d mod_http_muc_log: Remove caching
Kim Alvefur <zash@zash.se>
parents: 2593
diff changeset
400 ["GET /*"] = logs_page;
1549
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
401 };
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
402 });
f9f8bf82ece7 mod_http_muc_log: MUC log module using new archive API
Kim Alvefur <zash@zash.se>
parents:
diff changeset
403