Annotate

mod_muc_log/mod_muc_log.lua @ 1123:0e16e5e2f410

mod_bidi: Only allow or offer bidi on secure connections, with an option to revert to previous behaviour
author Kim Alvefur <zash@zash.se>
date Fri, 02 Aug 2013 18:22:55 +0200
parent 1105:7837a5f7c10d
child 1133:11e2598baafb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47
99ff520519fe mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
1 local prosody = prosody;
1004
290c21a5e0ee mod_muc_log, mod_muc_log_http: cleanup syntax (off with the "~= nil"), and cut down wild table indexing.
Marco Cirillo <maranda@lightwitch.org>
parents: 976
diff changeset
2 local hosts = prosody.hosts;
976
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
3 local tostring = tostring;
1032
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
4 local split_jid = require "util.jid".split;
976
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
5 local cm = require "core.configmanager";
62
0dfd65bfedb0 mod_muc_log: using datamanager to store the logging.
Thilo Cestonaro <thilo@cestona.ro>
parents: 61
diff changeset
6 local datamanager = require "util.datamanager";
0dfd65bfedb0 mod_muc_log: using datamanager to store the logging.
Thilo Cestonaro <thilo@cestona.ro>
parents: 61
diff changeset
7 local data_load, data_store, data_getpath = datamanager.load, datamanager.store, datamanager.getpath;
0dfd65bfedb0 mod_muc_log: using datamanager to store the logging.
Thilo Cestonaro <thilo@cestona.ro>
parents: 61
diff changeset
8 local datastore = "muc_log";
976
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
9 local error_reply = require "util.stanza".error_reply;
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
10 local storagemanager = storagemanager;
1104
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
11 local muc_form_config_option = "muc#roomconfig_enablelogging"
976
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
12
103
0491aa849c91 mod_muc_log: make that it logs again
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
13 local mod_host = module:get_host();
1105
7837a5f7c10d mod_muc_log: Don't change defaults across versions!
Kim Alvefur <zash@zash.se>
parents: 1104
diff changeset
14 local log_presences = module:get_option_boolean("muc_log_presences", true);
50
a96d3f37d845 mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents: 47
diff changeset
15
976
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
16 -- Helper Functions
103
0491aa849c91 mod_muc_log: make that it logs again
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
17
976
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
18 local function inject_storage_config()
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
19 local _storage = cm.getconfig()[mod_host].storage;
50
a96d3f37d845 mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents: 47
diff changeset
20
976
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
21 module:log("debug", "injecting storage config...");
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
22 if type(_storage) == "string" then cm.getconfig()[mod_host].default_storage = _storage; end
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
23 if type(_storage) == "table" then -- append
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
24 _storage.muc_log = "internal";
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
25 else
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
26 cm.getconfig()[mod_host].storage = { muc_log = "internal" };
62
0dfd65bfedb0 mod_muc_log: using datamanager to store the logging.
Thilo Cestonaro <thilo@cestona.ro>
parents: 61
diff changeset
27 end
976
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
28
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
29 storagemanager.get_driver(mod_host, "muc_log"); -- init
50
a96d3f37d845 mod_muclogging: with http_server part for viewing
Thilo Cestonaro <thilo@cestona.ro>
parents: 47
diff changeset
30 end
47
99ff520519fe mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
31
976
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
32 -- Module Definitions
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
33
1032
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
34 function log_if_needed(e)
47
99ff520519fe mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
35 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
36
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
37 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
38 (stanza.name == "iq") or
55
d9749ed44f6e mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents: 54
diff changeset
39 (stanza.name == "message" and tostring(stanza.attr.type) == "groupchat")
47
99ff520519fe mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
40 then
1032
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
41 local node, host = split_jid(stanza.attr.to);
1004
290c21a5e0ee mod_muc_log, mod_muc_log_http: cleanup syntax (off with the "~= nil"), and cut down wild table indexing.
Marco Cirillo <maranda@lightwitch.org>
parents: 976
diff changeset
42 local muc = hosts[host].muc;
290c21a5e0ee mod_muc_log, mod_muc_log_http: cleanup syntax (off with the "~= nil"), and cut down wild table indexing.
Marco Cirillo <maranda@lightwitch.org>
parents: 976
diff changeset
43 if node and host then
47
99ff520519fe mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
44 local bare = node .. "@" .. host;
1004
290c21a5e0ee mod_muc_log, mod_muc_log_http: cleanup syntax (off with the "~= nil"), and cut down wild table indexing.
Marco Cirillo <maranda@lightwitch.org>
parents: 976
diff changeset
45 if muc and muc.rooms[bare] then
290c21a5e0ee mod_muc_log, mod_muc_log_http: cleanup syntax (off with the "~= nil"), and cut down wild table indexing.
Marco Cirillo <maranda@lightwitch.org>
parents: 976
diff changeset
46 local room = muc.rooms[bare]
55
d9749ed44f6e mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents: 54
diff changeset
47 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
48 local now = os.date("%X")
1032
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
49 local muc_to = nil
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
50 local muc_from = nil;
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
51 local already_joined = false;
85
83494de806a4 mod_muc_log: Do not log other muc-component's rooms then the module was loaded for. Do neither log nor provide access to possible existing log if a room is private. (thx flo for spotting this)
Thilo Cestonaro <thilo@cestona.ro>
parents: 81
diff changeset
52
83494de806a4 mod_muc_log: Do not log other muc-component's rooms then the module was loaded for. Do neither log nor provide access to possible existing log if a room is private. (thx flo for spotting this)
Thilo Cestonaro <thilo@cestona.ro>
parents: 81
diff changeset
53 if room._data.hidden then -- do not log any data of private rooms
83494de806a4 mod_muc_log: Do not log other muc-component's rooms then the module was loaded for. Do neither log nor provide access to possible existing log if a room is private. (thx flo for spotting this)
Thilo Cestonaro <thilo@cestona.ro>
parents: 81
diff changeset
54 return;
83494de806a4 mod_muc_log: Do not log other muc-component's rooms then the module was loaded for. Do neither log nor provide access to possible existing log if a room is private. (thx flo for spotting this)
Thilo Cestonaro <thilo@cestona.ro>
parents: 81
diff changeset
55 end
1032
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
56 if not room._data.logging then -- do not log where logging is not enabled
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
57 return;
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
58 end
85
83494de806a4 mod_muc_log: Do not log other muc-component's rooms then the module was loaded for. Do neither log nor provide access to possible existing log if a room is private. (thx flo for spotting this)
Thilo Cestonaro <thilo@cestona.ro>
parents: 81
diff changeset
59
55
d9749ed44f6e mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents: 54
diff changeset
60 if stanza.name == "presence" and stanza.attr.type == nil then
1032
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
61 muc_from = stanza.attr.to;
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
62 if room._occupants and room._occupants[stanza.attr.to] then
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
63 already_joined = true;
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
64 stanza:tag("alreadyJoined"):text("true");
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
65 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
66 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
1004
290c21a5e0ee mod_muc_log, mod_muc_log_http: cleanup syntax (off with the "~= nil"), and cut down wild table indexing.
Marco Cirillo <maranda@lightwitch.org>
parents: 976
diff changeset
67 if stanza.tags[1] and stanza.tags[1].name == "query" 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
68 local tmp = stanza.tags[1];
1004
290c21a5e0ee mod_muc_log, mod_muc_log_http: cleanup syntax (off with the "~= nil"), and cut down wild table indexing.
Marco Cirillo <maranda@lightwitch.org>
parents: 976
diff changeset
69 if tmp.tags[1] ~= nil and tmp.tags[1].name == "item" and tmp.tags[1].attr.nick 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
70 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
71 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
72 if nick == stanza.attr.to .. "/" .. tmp.attr.nick then
1032
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
73 muc_to = 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
74 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
75 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
76 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
77 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
78 end
55
d9749ed44f6e mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents: 54
diff changeset
79 else
d9749ed44f6e mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents: 54
diff changeset
80 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
81 if jid == stanza.attr.from then
1032
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
82 muc_from = 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
83 break;
47
99ff520519fe mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
84 end
99ff520519fe mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
85 end
55
d9749ed44f6e mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents: 54
diff changeset
86 end
47
99ff520519fe mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
87
1032
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
88 if (muc_from or muc_to) then
62
0dfd65bfedb0 mod_muc_log: using datamanager to store the logging.
Thilo Cestonaro <thilo@cestona.ro>
parents: 61
diff changeset
89 local data = data_load(node, host, datastore .. "/" .. today);
55
d9749ed44f6e mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents: 54
diff changeset
90 local realFrom = stanza.attr.from;
d9749ed44f6e mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents: 54
diff changeset
91 local realTo = stanza.attr.to;
62
0dfd65bfedb0 mod_muc_log: using datamanager to store the logging.
Thilo Cestonaro <thilo@cestona.ro>
parents: 61
diff changeset
92
0dfd65bfedb0 mod_muc_log: using datamanager to store the logging.
Thilo Cestonaro <thilo@cestona.ro>
parents: 61
diff changeset
93 if data == nil then
0dfd65bfedb0 mod_muc_log: using datamanager to store the logging.
Thilo Cestonaro <thilo@cestona.ro>
parents: 61
diff changeset
94 data = {};
0dfd65bfedb0 mod_muc_log: using datamanager to store the logging.
Thilo Cestonaro <thilo@cestona.ro>
parents: 61
diff changeset
95 end
0dfd65bfedb0 mod_muc_log: using datamanager to store the logging.
Thilo Cestonaro <thilo@cestona.ro>
parents: 61
diff changeset
96
1032
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
97 stanza.attr.from = muc_from;
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
98 stanza.attr.to = muc_to;
62
0dfd65bfedb0 mod_muc_log: using datamanager to store the logging.
Thilo Cestonaro <thilo@cestona.ro>
parents: 61
diff changeset
99 data[#data + 1] = "<stanza time=\"".. now .. "\">" .. tostring(stanza) .. "</stanza>\n";
55
d9749ed44f6e mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents: 54
diff changeset
100 stanza.attr.from = realFrom;
d9749ed44f6e mod_muc_log: make it recognize s2s messages/presences
Thilo Cestonaro <thilo@cestona.ro>
parents: 54
diff changeset
101 stanza.attr.to = realTo;
1032
b69e5d63a4fe mod_muc_log, mod_muc_log_http: backport changes from Metronome.
Marco Cirillo <maranda@lightwitch.org>
parents: 1004
diff changeset
102 if already_joined == true 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
103 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
104 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
105 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
106 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
107 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
108 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
109 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
110 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
111 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
112 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
113 end
62
0dfd65bfedb0 mod_muc_log: using datamanager to store the logging.
Thilo Cestonaro <thilo@cestona.ro>
parents: 61
diff changeset
114 data_store(node, host, datastore .. "/" .. today, data);
47
99ff520519fe mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
115 end
99ff520519fe mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
116 end
99ff520519fe mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
117 end
99ff520519fe mod_muclogging: initial checkin
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
118 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
119 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
120
1104
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
121 module:hook("muc-config-form", function(event)
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
122 local room, form = event.room, event.form;
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
123 table.insert(form,
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
124 {
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
125 name = muc_form_config_option,
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
126 type = "boolean",
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
127 label = "Enable Logging?",
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
128 value = room._data.logging or false,
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
129 }
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
130 );
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
131 end);
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
132
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
133 module:hook("muc-config-submitted", function(event)
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
134 local room, fields, changed = event.room, event.fields, event.changed;
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
135 local new = fields[muc_form_config_option];
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
136 if new ~= room._data.logging then
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
137 room._data.logging = new;
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
138 if type(changed) == "table" then
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
139 changed[muc_form_config_option] = true;
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
140 else
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
141 event.changed = true;
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
142 end
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
143 end
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
144 end);
34c86e4d6c9d mod_muc_log: Add a room config option for logging
Kim Alvefur <zash@zash.se>
parents: 1050
diff changeset
145
1037
892272432703 mod_muc_log: Fix mistake in previous merge (thanks Maranda)
Matthew Wild <mwild1@gmail.com>
parents: 1034
diff changeset
146 module:hook("message/bare", log_if_needed, 1);
1050
a0aff903659b mod_muc_log: don't log iqs either if presences are disabled, little use and may trigger "false positives".
Marco Cirillo <maranda@lightwitch.org>
parents: 1041
diff changeset
147 if log_presences then
a0aff903659b mod_muc_log: don't log iqs either if presences are disabled, little use and may trigger "false positives".
Marco Cirillo <maranda@lightwitch.org>
parents: 1041
diff changeset
148 module:hook("iq/bare", log_if_needed, 1);
a0aff903659b mod_muc_log: don't log iqs either if presences are disabled, little use and may trigger "false positives".
Marco Cirillo <maranda@lightwitch.org>
parents: 1041
diff changeset
149 module:hook("presence/full", log_if_needed, 1);
a0aff903659b mod_muc_log: don't log iqs either if presences are disabled, little use and may trigger "false positives".
Marco Cirillo <maranda@lightwitch.org>
parents: 1041
diff changeset
150 end
103
0491aa849c91 mod_muc_log: make that it logs again
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
151
976
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
152 local function reload()
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
153 inject_storage_config();
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
154 end
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
155
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
156 function module.load()
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
157 inject_storage_config();
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
158 end
0428009c1127 mod_muc_log: some cleanup and code refactor also force the plugin storage driver being internal.
Marco Cirillo <maranda@lightwitch.org>
parents: 103
diff changeset
159
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents: 90
diff changeset
160 module:log("debug", "module mod_muc_log loaded!");