author | Thilo Cestonaro <thilo@cestona.ro> |
Wed, 21 Oct 2009 22:32:58 +0200 | |
changeset 61 | e609da067e9f |
parent 60 | 5cca708c9f11 |
child 62 | 0dfd65bfedb0 |
permissions | -rw-r--r-- |
47
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
1 |
-- Copyright (C) 2009 Thilo Cestonaro |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
2 |
-- |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
3 |
-- This project is MIT/X11 licensed. Please see the |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
4 |
-- COPYING file in the source package for more information. |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
5 |
-- |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
6 |
local prosody = prosody; |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
7 |
local splitJid = require "util.jid".split; |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
8 |
local bareJid = require "util.jid".bare; |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
9 |
local config_get = require "core.configmanager".get; |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
10 |
local httpserver = require "net.httpserver"; |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
11 |
local serialize = require "util.serialization".serialize; |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
12 |
local config = {}; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
13 |
|
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
14 |
|
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
15 |
--[[ LuaFileSystem |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
16 |
* URL: http://www.keplerproject.org/luafilesystem/index.html |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
17 |
* Install: luarocks install luafilesystem |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
18 |
* ]] |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
19 |
local lfs = require "lfs"; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
20 |
|
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
21 |
local lom = require "lxp.lom"; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
22 |
|
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
23 |
|
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
24 |
--[[ |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
25 |
* Default templates for the html output. |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
26 |
]]-- |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
27 |
local html = {}; |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
28 |
html.doc = [[<html> |
57
cddcea7c091a
mod_muc_log: set content-type header; escape some html stuff in messages (>, <, \n, http://....)
Thilo Cestonaro <thilo@cestona.ro>
parents:
56
diff
changeset
|
29 |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
30 |
<head> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
31 |
<title>muc_log</title> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
32 |
</head> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
33 |
<style type="text/css"> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
34 |
<!-- |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
35 |
.timestuff {color: #AAAAAA; text-decoration: none;} |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
36 |
.muc_join {color: #009900; font-style: italic;} |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
37 |
.muc_leave {color: #009900; font-style: italic;} |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
38 |
.muc_statusChange {color: #009900; font-style: italic;} |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
39 |
.muc_title {color: #BBBBBB; font-size: 32px;} |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
40 |
.muc_titleChange {color: #009900; font-style: italic;} |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
41 |
.muc_kick {color: #009900; font-style: italic;} |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
42 |
.muc_bann {color: #009900; font-style: italic;} |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
43 |
.muc_msg_nick {color: #0000AA;} |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
44 |
//--> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
45 |
</style> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
46 |
<body> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
47 |
###BODY_STUFF### |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
48 |
</body> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
49 |
</html>]]; |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
50 |
|
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
51 |
html.hosts = {}; |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
52 |
html.hosts.bit = [[<a href="/muc_log/###JID###">###JID###</a><br />]] |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
53 |
html.hosts.body = [[<h2>Rooms hosted on this server:</h2><hr /><p> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
54 |
###HOSTS_STUFF### |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
55 |
</p><hr />]]; |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
56 |
|
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
57 |
html.days = {}; |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
58 |
html.days.bit = [[<a href="/muc_log/###JID###/?year=###YEAR###&month=###MONTH###&day=###DAY###">20###YEAR###/###MONTH###/###DAY###</a><br />]]; |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
59 |
html.days.body = [[<h2>available logged days of room: ###JID###</h2><hr /><p> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
60 |
###DAYS_STUFF### |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
61 |
</p><hr />]]; |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
62 |
|
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
63 |
html.day = {}; |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
64 |
html.day.title = [[Subject: <font class="muc_title">###TITLE###</font>]]; |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
65 |
html.day.time = [[<a name="###TIME###" href="####TIME###" class="timestuff">[###TIME###]</a> ]]; -- the one ####TIME### need to stay! it will evaluate to e.g. #09:10:56 which is an anker then |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
66 |
html.day.presence = {}; |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
67 |
html.day.presence.join = [[###TIME_STUFF###<font class="muc_join"> *** ###NICK### joins the room</font><br />]]; |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
68 |
html.day.presence.leave = [[###TIME_STUFF###<font class="muc_leave"> *** ###NICK### leaves the room</font><br />]]; |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
69 |
html.day.presence.statusText = [[ and his status message is "###STATUS###"]]; |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
70 |
html.day.presence.statusChange = [[###TIME_STUFF###<font class="muc_statusChange"> *** ###NICK### shows now as "###SHOW###"###STATUS_STUFF###</font><br />]]; |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
71 |
html.day.message = [[###TIME_STUFF###<font class="muc_msg_nick"><###NICK###></font> ###MSG###<br />]]; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
72 |
html.day.titleChange = [[###TIME_STUFF###<font class="muc_titleChange"> *** ###NICK### changed the title to "###TITLE###"</font><br />]]; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
73 |
html.day.reason = [[, the reason was "###REASON###"]] |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
74 |
html.day.kick = [[###TIME_STUFF###<font class="muc_kick"> *** ###VICTIM### got kicked###REASON_STUFF###</font><br />]]; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
75 |
html.day.bann = [[###TIME_STUFF###<font class="muc_bann"> *** ###VICTIM### got banned###REASON_STUFF###</font><br />]]; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
76 |
html.day.body = [[<h2>room ###JID### logging of 20###YEAR###/###MONTH###/###DAY###</h2> |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
77 |
<p>###TITLE_STUFF###</p> |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
78 |
<hr /><p> |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
79 |
###DAY_STUFF### |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
80 |
</p><hr />]]; |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
81 |
|
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
82 |
html.help = [[ |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
83 |
MUC logging is not configured correctly.<br /> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
84 |
Here is a example config:<br /> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
85 |
Component "rooms.example.com" "muc"<br /> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
86 |
modules_enabled = {<br /> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
87 |
"muc_log";<br /> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
88 |
}<br /> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
89 |
muc_log = {<br /> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
90 |
folder = "/opt/local/var/log/prosody/rooms";<br /> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
91 |
http_port = "/opt/local/var/log/prosody/rooms";<br /> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
92 |
}<br /> |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
93 |
]]; |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
94 |
|
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
95 |
function validateLogFolder() |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
96 |
if config.folder == nil then |
52
11d1d4ff8037
mod_muclogging: renamed to mod_muc_log; s/muclogging/muc_log/
Thilo Cestonaro <thilo@cestona.ro>
parents:
51
diff
changeset
|
97 |
module:log("warn", "muc_log folder isn't configured. configure it please!"); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
98 |
return false; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
99 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
100 |
|
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
101 |
-- check existance |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
102 |
local attributes = lfs.attributes(config.folder); |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
103 |
if attributes == nil then |
52
11d1d4ff8037
mod_muclogging: renamed to mod_muc_log; s/muclogging/muc_log/
Thilo Cestonaro <thilo@cestona.ro>
parents:
51
diff
changeset
|
104 |
module:log("warn", "muc_log folder doesn't exist. create it please!"); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
105 |
return false; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
106 |
elseif attributes.mode ~= "directory" then |
52
11d1d4ff8037
mod_muclogging: renamed to mod_muc_log; s/muclogging/muc_log/
Thilo Cestonaro <thilo@cestona.ro>
parents:
51
diff
changeset
|
107 |
module:log("warn", "muc_log folder isn't a folder, it's a %s. change this please!", attributes.mode); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
108 |
return false; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
109 |
end --TODO: check for write rights! |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
110 |
|
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
111 |
return true; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
112 |
end |
47
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
113 |
|
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
114 |
function logIfNeeded(e) |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
115 |
local stanza, origin = e.stanza, e.origin; |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
116 |
if validateLogFolder() == false then |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
117 |
return; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
118 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
119 |
|
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
120 |
if (stanza.name == "presence") or |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
121 |
(stanza.name == "iq") or |
55
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
122 |
(stanza.name == "message" and tostring(stanza.attr.type) == "groupchat") |
47
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
123 |
then |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
124 |
local node, host, resource = splitJid(stanza.attr.to); |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
125 |
if node ~= nil and host ~= nil then |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
126 |
local bare = node .. "@" .. host; |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
127 |
if prosody.hosts[host] ~= nil and prosody.hosts[host].muc ~= nil and prosody.hosts[host].muc.rooms[bare] ~= nil then |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
128 |
local room = prosody.hosts[host].muc.rooms[bare] |
55
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
129 |
local today = os.date("%y%m%d"); |
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
130 |
local now = os.date("%X") |
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
131 |
local fn = config.folder .. "/" .. today .. "_" .. bare .. ".log"; |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
132 |
local mucTo = nil |
55
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
133 |
local mucFrom = nil; |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
134 |
local alreadyJoined = false; |
55
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
135 |
|
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
136 |
if stanza.name == "presence" and stanza.attr.type == nil then |
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
137 |
mucFrom = stanza.attr.to; |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
138 |
if room._occupants ~= nil and room._occupants[stanza.attr.to] ~= nil then -- if true, the user has already joined the room |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
139 |
alreadyJoined = true; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
140 |
stanza:tag("alreadyJoined"):text("true"); -- we need to log the information that the user has already joined, so add this and remove after logging |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
141 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
142 |
elseif stanza.name == "iq" and stanza.attr.type == "set" then -- kick, to is the room, from is the admin, nick who is kicked is attr of iq->query->item |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
143 |
if stanza.tags[1] ~= nil and stanza.tags[1].name == "query" then |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
144 |
local tmp = stanza.tags[1]; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
145 |
if tmp.tags[1] ~= nil and tmp.tags[1].name == "item" and tmp.tags[1].attr.nick ~= nil then |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
146 |
tmp = tmp.tags[1]; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
147 |
for jid, nick in pairs(room._jid_nick) do |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
148 |
module:log("debug", "%s == %s", nick, stanza.attr.to .. "/" .. tmp.attr.nick) |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
149 |
if nick == stanza.attr.to .. "/" .. tmp.attr.nick then |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
150 |
mucTo = nick; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
151 |
break; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
152 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
153 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
154 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
155 |
end |
55
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
156 |
else |
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
157 |
for jid, nick in pairs(room._jid_nick) do |
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
158 |
if jid == stanza.attr.from then |
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
159 |
mucFrom = nick; |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
160 |
break; |
47
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
161 |
end |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
162 |
end |
55
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
163 |
end |
47
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
164 |
|
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
165 |
if mucFrom ~= nil or mucTo ~= nil then |
55
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
166 |
module:log("debug", "try to open room log: %s", fn); |
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
167 |
local f = assert(io.open(fn, "a")); |
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
168 |
local realFrom = stanza.attr.from; |
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
169 |
local realTo = stanza.attr.to; |
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
170 |
stanza.attr.from = mucFrom; |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
171 |
stanza.attr.to = mucTo; |
55
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
172 |
f:write("<stanza time=\"".. now .. "\">" .. tostring(stanza) .. "</stanza>\n"); |
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
173 |
stanza.attr.from = realFrom; |
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
174 |
stanza.attr.to = realTo; |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
175 |
if alreadyJoined == true then |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
176 |
if stanza[#stanza].name == "alreadyJoined" then -- normaly the faked element should be the last, remove it when it is the last |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
177 |
stanza[#stanza] = nil; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
178 |
else |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
179 |
for i = 1, #stanza, 1 do |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
180 |
if stanza[i].name == "alreadyJoined" then -- remove the faked element |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
181 |
stanza[i] = nil; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
182 |
break; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
183 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
184 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
185 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
186 |
end |
55
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
187 |
f:close() |
47
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
188 |
end |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
189 |
end |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
190 |
end |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
191 |
else |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
192 |
module:log("debug", serialize(stanza)); |
47
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
193 |
end |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
194 |
return; |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
195 |
end |
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
196 |
|
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
197 |
function createDoc(body) |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
198 |
return html.doc:gsub("###BODY_STUFF###", body); |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
199 |
end |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
200 |
|
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
201 |
local function htmlEscape(t) |
57
cddcea7c091a
mod_muc_log: set content-type header; escape some html stuff in messages (>, <, \n, http://....)
Thilo Cestonaro <thilo@cestona.ro>
parents:
56
diff
changeset
|
202 |
t = t:gsub("<", "<"); |
cddcea7c091a
mod_muc_log: set content-type header; escape some html stuff in messages (>, <, \n, http://....)
Thilo Cestonaro <thilo@cestona.ro>
parents:
56
diff
changeset
|
203 |
t = t:gsub(">", ">"); |
cddcea7c091a
mod_muc_log: set content-type header; escape some html stuff in messages (>, <, \n, http://....)
Thilo Cestonaro <thilo@cestona.ro>
parents:
56
diff
changeset
|
204 |
t = t:gsub("(http://[%a%d@%.:/&%?=%-_#]+)", [[<a href="%1">%1</a>]]); |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
205 |
t = t:gsub("\n", "<br />"); |
57
cddcea7c091a
mod_muc_log: set content-type header; escape some html stuff in messages (>, <, \n, http://....)
Thilo Cestonaro <thilo@cestona.ro>
parents:
56
diff
changeset
|
206 |
-- TODO do any html escaping stuff ... |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
207 |
return t; |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
208 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
209 |
|
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
210 |
function splitQuery(query) |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
211 |
local ret = {}; |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
212 |
local name, value = nil, nil; |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
213 |
if query == nil then return ret; end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
214 |
local last = 1; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
215 |
local idx = query:find("&", last); |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
216 |
while idx ~= nil do |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
217 |
name, value = query:sub(last, idx - 1):match("^(%a+)=(%d+)$"); |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
218 |
ret[name] = value; |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
219 |
last = idx + 1; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
220 |
idx = query:find("&", last); |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
221 |
end |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
222 |
name, value = query:sub(last):match("^(%a+)=(%d+)$"); |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
223 |
ret[name] = value; |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
224 |
return ret; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
225 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
226 |
|
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
227 |
function grepRoomJid(url) |
52
11d1d4ff8037
mod_muclogging: renamed to mod_muc_log; s/muclogging/muc_log/
Thilo Cestonaro <thilo@cestona.ro>
parents:
51
diff
changeset
|
228 |
local tmp = url:sub(string.len("/muc_log/") + 1); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
229 |
local node = nil; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
230 |
local host = nil; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
231 |
local at = nil; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
232 |
local slash = nil; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
233 |
|
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
234 |
at = tmp:find("@"); |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
235 |
slash = tmp:find("/"); |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
236 |
if slash ~= nil then |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
237 |
slash = slash - 1; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
238 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
239 |
|
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
240 |
if at ~= nil then |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
241 |
node = tmp:sub(1, at - 1); |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
242 |
host = tmp:sub(at + 1, slash); |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
243 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
244 |
return node, host; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
245 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
246 |
|
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
247 |
local function generateRoomListSiteContent() |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
248 |
local rooms = ""; |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
249 |
for host, config in pairs(prosody.hosts) do |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
250 |
if prosody.hosts[host].muc ~= nil then |
55
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
251 |
for jid, room in pairs(prosody.hosts[host].muc.rooms) do |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
252 |
rooms = rooms .. html.hosts.bit:gsub("###JID###", jid); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
253 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
254 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
255 |
end |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
256 |
|
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
257 |
return html.hosts.body:gsub("###HOSTS_STUFF###", rooms); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
258 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
259 |
|
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
260 |
local function generateDayListSiteContentByRoom(bareRoomJid) |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
261 |
local days = ""; |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
262 |
local tmp; |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
263 |
|
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
264 |
for file in lfs.dir(config.folder) do |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
265 |
local year, month, day = file:match("^(%d%d)(%d%d)(%d%d)_" .. bareRoomJid .. ".log"); |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
266 |
if year ~= nil and month ~= nil and day ~= nil and |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
267 |
year ~= "" and month ~= "" and day ~= "" |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
268 |
then |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
269 |
tmp = html.days.bit; |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
270 |
tmp = tmp:gsub("###JID###", bareRoomJid); |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
271 |
tmp = tmp:gsub("###YEAR###", year):gsub("###MONTH###", month):gsub("###DAY###", day); |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
272 |
days = tmp .. days; |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
273 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
274 |
end |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
275 |
if days ~= "" then |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
276 |
tmp = html.days.body:gsub("###DAYS_STUFF###", days); |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
277 |
return tmp:gsub("###JID###", bareRoomJid); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
278 |
else |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
279 |
return generateRoomListSiteContent(); -- fallback |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
280 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
281 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
282 |
|
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
283 |
local function parseIqStanza(stanza, timeStuff, nick) |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
284 |
local text = nil; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
285 |
-- module:log("debug", serialize(stanza)); |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
286 |
for _,tag in ipairs(stanza) do |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
287 |
if tag.tag == "query" then |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
288 |
for _,item in ipairs(tag) do |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
289 |
if item.tag == "item" then |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
290 |
for _,reason in ipairs(item) do |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
291 |
if reason.tag == "reason" then |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
292 |
text = reason[1]; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
293 |
break; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
294 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
295 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
296 |
break; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
297 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
298 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
299 |
break; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
300 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
301 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
302 |
|
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
303 |
if text ~= nil then |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
304 |
text = html.day.reason:gsub("###REASON###", htmlEscape(text)); |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
305 |
else |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
306 |
text = ""; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
307 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
308 |
return html.day.kick:gsub("###TIME_STUFF###", timeStuff):gsub("###VICTIM###", nick):gsub("###REASON_STUFF###", text); |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
309 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
310 |
|
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
311 |
local function parsePresenceStanza(stanza, timeStuff, nick) |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
312 |
local ret = ""; |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
313 |
if stanza.attr.type == nil then |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
314 |
local show, status = nil, ""; |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
315 |
local alreadyJoined = false; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
316 |
for _, tag in ipairs(stanza) do |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
317 |
if tag.tag == "alreadyJoined" then |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
318 |
alreadyJoined = true; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
319 |
elseif tag.tag == "show" then |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
320 |
show = tag[1]; |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
321 |
elseif tag.tag == "status" then |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
322 |
status = tag[1]; |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
323 |
end |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
324 |
end |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
325 |
if alreadyJoined == true then |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
326 |
if show == nil then |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
327 |
show = "online"; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
328 |
end |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
329 |
ret = html.day.presence.statusChange:gsub("###TIME_STUFF###", timeStuff); |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
330 |
if status ~= "" then |
60
5cca708c9f11
mod_muc_log: escape nicknames and status messages too. (thx waqas for finding it; Hope you had fun :P )
Thilo Cestonaro <thilo@cestona.ro>
parents:
59
diff
changeset
|
331 |
status = html.day.presence.statusText:gsub("###STATUS###", htmlEscape(status)); |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
332 |
end |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
333 |
ret = ret:gsub("###SHOW###", show):gsub("###NICK###", nick):gsub("###STATUS_STUFF###", status); |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
334 |
else |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
335 |
ret = html.day.presence.join:gsub("###TIME_STUFF###", timeStuff):gsub("###NICK###", nick); |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
336 |
end |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
337 |
elseif stanza.attr.type ~= nil and stanza.attr.type == "unavailable" then |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
338 |
ret = html.day.presence.leave:gsub("###TIME_STUFF###", timeStuff):gsub("###NICK###", nick); |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
339 |
end |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
340 |
return ret; |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
341 |
end |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
342 |
|
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
343 |
local function parseMessageStanza(stanza, timeStuff, nick) |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
344 |
local body, title, ret = nil, nil, ""; |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
345 |
|
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
346 |
for _,tag in ipairs(stanza) do |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
347 |
if tag.tag == "body" then |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
348 |
body = tag[1]; |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
349 |
if nick ~= nil then |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
350 |
break; |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
351 |
end |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
352 |
elseif tag.tag == "nick" and nick == nil then |
60
5cca708c9f11
mod_muc_log: escape nicknames and status messages too. (thx waqas for finding it; Hope you had fun :P )
Thilo Cestonaro <thilo@cestona.ro>
parents:
59
diff
changeset
|
353 |
nick = htmlEscape(tag[1]); |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
354 |
if body ~= nil or title ~= nil then |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
355 |
break; |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
356 |
end |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
357 |
elseif tag.tag == "subject" then |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
358 |
title = tag[1]; |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
359 |
if nick ~= nil then |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
360 |
break; |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
361 |
end |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
362 |
end |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
363 |
end |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
364 |
if nick ~= nil and body ~= nil then |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
365 |
body = htmlEscape(body); |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
366 |
ret = html.day.message:gsub("###TIME_STUFF###", timeStuff):gsub("###NICK###", nick):gsub("###MSG###", body); |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
367 |
elseif nick ~= nil and title ~= nil then |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
368 |
title = htmlEscape(title); |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
369 |
ret = html.day.titleChange:gsub("###TIME_STUFF###", timeStuff):gsub("###NICK###", nick):gsub("###TITLE###", title); |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
370 |
end |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
371 |
return ret; |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
372 |
end |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
373 |
|
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
374 |
local function parseDay(bareRoomJid, roomSubject, query) |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
375 |
local ret = ""; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
376 |
local year; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
377 |
local month; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
378 |
local day; |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
379 |
local tmp; |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
380 |
|
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
381 |
if query.year ~= nil and query.month ~= nil and query.day ~= nil then |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
382 |
local file = config.folder .. "/" .. query.year .. query.month .. query.day .. "_" .. bareRoomJid .. ".log"; |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
383 |
local f, err = io.open(file, "r"); |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
384 |
if f ~= nil then |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
385 |
local content = f:read("*a"); |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
386 |
local parsed = lom.parse("<xml>" .. content .. "</xml>"); |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
387 |
f:close(); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
388 |
if parsed ~= nil then |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
389 |
for _,stanza in ipairs(parsed) do |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
390 |
if stanza.attr ~= nil and stanza.attr.time ~= nil then |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
391 |
local timeStuff = html.day.time:gsub("###TIME###", stanza.attr.time); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
392 |
if stanza[1] ~= nil then |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
393 |
local nick; |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
394 |
|
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
395 |
-- grep nick from "from" resource |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
396 |
if stanza[1].attr.from ~= nil then -- presence and messages |
60
5cca708c9f11
mod_muc_log: escape nicknames and status messages too. (thx waqas for finding it; Hope you had fun :P )
Thilo Cestonaro <thilo@cestona.ro>
parents:
59
diff
changeset
|
397 |
nick = htmlEscape(stanza[1].attr.from:match("/(.+)$")); |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
398 |
elseif stanza[1].attr.to ~= nil then -- iq |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
399 |
nick = htmlEscape(stanza[1].attr.to:match("/(.+)$")); |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
400 |
end |
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
401 |
|
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
402 |
if stanza[1].tag == "presence" and nick ~= nil then |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
403 |
ret = ret .. parsePresenceStanza(stanza[1], timeStuff, nick); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
404 |
elseif stanza[1].tag == "message" then |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
405 |
ret = ret .. parseMessageStanza(stanza[1], timeStuff, nick); |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
406 |
elseif stanza[1].tag == "iq" then |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
407 |
ret = ret .. parseIqStanza(stanza[1], timeStuff, nick); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
408 |
else |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
409 |
module:log("info", "unknown stanza subtag in log found. room: %s; day: %s", bareRoomJid, query.year .. "/" .. query.month .. "/" .. query.day); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
410 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
411 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
412 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
413 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
414 |
else |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
415 |
module:log("warn", "could not parse room log. room: %s; day: %s", bareRoomJid, query.year .. "/" .. query.month .. "/" .. query.day); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
416 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
417 |
else |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
418 |
return generateDayListSiteContentByRoom(bareRoomJid); -- fallback |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
419 |
end |
59
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
420 |
tmp = html.day.body:gsub("###DAY_STUFF###", ret):gsub("###JID###", bareRoomJid); |
50e3d5b87119
mod_muc_log: better presence and message parsing; react on subject changes
Thilo Cestonaro <thilo@cestona.ro>
parents:
57
diff
changeset
|
421 |
tmp = tmp:gsub("###YEAR###", query.year):gsub("###MONTH###", query.month):gsub("###DAY###", query.day); |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
422 |
tmp = tmp:gsub("###TITLE_STUFF###", html.day.title:gsub("###TITLE###", roomSubject)); |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
423 |
return tmp; |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
424 |
else |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
425 |
return generateDayListSiteContentByRoom(bareRoomJid); -- fallback |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
426 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
427 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
428 |
|
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
429 |
function handle_request(method, body, request) |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
430 |
local query = splitQuery(request.url.query); |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
431 |
local node, host = grepRoomJid(request.url.path); |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
432 |
|
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
433 |
if validateLogFolder() == false then |
56
e9de45beaf5e
mod_muc_log: templify the html stuff
Thilo Cestonaro <thilo@cestona.ro>
parents:
55
diff
changeset
|
434 |
return createDoc(html.help); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
435 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
436 |
if node ~= nil and host ~= nil then |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
437 |
local bare = node .. "@" .. host; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
438 |
if prosody.hosts[host] ~= nil and prosody.hosts[host].muc ~= nil and prosody.hosts[host].muc.rooms[bare] ~= nil then |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
439 |
local room = prosody.hosts[host].muc.rooms[bare]; |
55
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
440 |
if request.url.query == nil then |
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
441 |
return createDoc(generateDayListSiteContentByRoom(bare)); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
442 |
else |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
443 |
local subject = "" |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
444 |
if room._data ~= nil and room._data.subject ~= nil then |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
445 |
subject = room._data.subject; |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
446 |
end |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
447 |
return createDoc(parseDay(bare, subject, query)); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
448 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
449 |
else |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
450 |
return createDoc(generateRoomListSiteContent()); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
451 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
452 |
else |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
453 |
return createDoc(generateRoomListSiteContent()); |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
454 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
455 |
return; |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
456 |
end |
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
457 |
|
55
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
458 |
config = config_get(module:get_host(), "core", "muc_log"); |
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
459 |
|
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
460 |
httpserver.new_from_config({ config.http_port or true }, handle_request, { base = "muc_log" }); |
50
a96d3f37d845
mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents:
47
diff
changeset
|
461 |
|
55
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
462 |
module:hook("message/bare", logIfNeeded, 500); |
47
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
463 |
module:hook("pre-message/bare", logIfNeeded, 500); |
61
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
464 |
module:hook("iq/bare", logIfNeeded, 500); |
e609da067e9f
mod_muc_log: display room's current title; show kicked messages with and without reason
Thilo Cestonaro <thilo@cestona.ro>
parents:
60
diff
changeset
|
465 |
module:hook("pre-iq/bare", logIfNeeded, 500); |
55
d9749ed44f6e
mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents:
54
diff
changeset
|
466 |
module:hook("presence/full", logIfNeeded, 500); |
47
99ff520519fe
mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff
changeset
|
467 |
module:hook("pre-presence/full", logIfNeeded, 500); |