Mercurial > prosody-modules
annotate mod_mam_muc/mod_mam_muc.lua @ 2608:362ca94192ee
mod_smacks: Add resumed session to event "smacks-hibernation-end"
Older versions of this event only have the "intermediate" session
in event.session (the one used to resume the existing session),
but not the resumed one.
This adds event.resumed which contains the resumed one alongside
to event.session.
author | tmolitor <thilo@eightysoft.de> |
---|---|
date | Sat, 11 Mar 2017 01:37:28 +0100 |
parents | b8a66805459e |
children | 17883c405df3 |
rev | line source |
---|---|
1313 | 1 -- XEP-0313: Message Archive Management for Prosody MUC |
1519
67c80abe742e
mod_mam_muc: Fix add/removal of room method overrides
Kim Alvefur <zash@zash.se>
parents:
1430
diff
changeset
|
2 -- Copyright (C) 2011-2014 Kim Alvefur |
820 | 3 -- |
4 -- This file is MIT/X11 licensed. | |
5 | |
1973
9329a11c03a6
mod_mam_muc: Add guard to prevent loading on normal hosts
Kim Alvefur <zash@zash.se>
parents:
1865
diff
changeset
|
6 if module:get_host_type() ~= "component" then |
9329a11c03a6
mod_mam_muc: Add guard to prevent loading on normal hosts
Kim Alvefur <zash@zash.se>
parents:
1865
diff
changeset
|
7 module:log("error", "mod_%s should be loaded only on a MUC component, not normal hosts", module.name); |
9329a11c03a6
mod_mam_muc: Add guard to prevent loading on normal hosts
Kim Alvefur <zash@zash.se>
parents:
1865
diff
changeset
|
8 return; |
9329a11c03a6
mod_mam_muc: Add guard to prevent loading on normal hosts
Kim Alvefur <zash@zash.se>
parents:
1865
diff
changeset
|
9 end |
9329a11c03a6
mod_mam_muc: Add guard to prevent loading on normal hosts
Kim Alvefur <zash@zash.se>
parents:
1865
diff
changeset
|
10 |
2507
b8a66805459e
mod_mam_muc: Update to XEP-0313 0.5.1
Kim Alvefur <zash@zash.se>
parents:
2502
diff
changeset
|
11 local xmlns_mam = "urn:xmpp:mam:1"; |
820 | 12 local xmlns_delay = "urn:xmpp:delay"; |
13 local xmlns_forward = "urn:xmpp:forward:0"; | |
1313 | 14 local muc_form_enable_logging = "muc#roomconfig_enablelogging" |
820 | 15 |
16 local st = require "util.stanza"; | |
2497
c6761ebe613b
mod_mam_muc: Use util.rsm (fixes #829, depends on a recent 0.10+)
Kim Alvefur <zash@zash.se>
parents:
2429
diff
changeset
|
17 local rsm = require "util.rsm"; |
820 | 18 local jid_bare = require "util.jid".bare; |
19 local jid_split = require "util.jid".split; | |
1536
4fb280768efc
mod_mam_muc: Add missing import and change the namespace to MAM v0.3
Kim Alvefur <zash@zash.se>
parents:
1535
diff
changeset
|
20 local dataform = require "util.dataforms".new; |
1551
5127f4db9d39
mod_mam_muc: Try to use new MUC API for getting room objects (fixes queries to not yet initialized rooms)
Kim Alvefur <zash@zash.se>
parents:
1548
diff
changeset
|
21 local it = require"util.iterators"; |
1534
4dd6eebc8fbd
mod_mam_muc: Minor moving about of variables
Kim Alvefur <zash@zash.se>
parents:
1533
diff
changeset
|
22 |
1551
5127f4db9d39
mod_mam_muc: Try to use new MUC API for getting room objects (fixes queries to not yet initialized rooms)
Kim Alvefur <zash@zash.se>
parents:
1548
diff
changeset
|
23 -- Support both old and new MUC code |
1534
4dd6eebc8fbd
mod_mam_muc: Minor moving about of variables
Kim Alvefur <zash@zash.se>
parents:
1533
diff
changeset
|
24 local mod_muc = module:depends"muc"; |
1543
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
25 local rooms = rawget(mod_muc, "rooms"); |
1551
5127f4db9d39
mod_mam_muc: Try to use new MUC API for getting room objects (fixes queries to not yet initialized rooms)
Kim Alvefur <zash@zash.se>
parents:
1548
diff
changeset
|
26 local each_room = rawget(mod_muc, "each_room") or function() return it.values(rooms); end; |
1543
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
27 local new_muc = not rooms; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
28 if new_muc then |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
29 rooms = module:shared"muc/rooms"; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
30 end |
1551
5127f4db9d39
mod_mam_muc: Try to use new MUC API for getting room objects (fixes queries to not yet initialized rooms)
Kim Alvefur <zash@zash.se>
parents:
1548
diff
changeset
|
31 local get_room_from_jid = rawget(mod_muc, "get_room_from_jid") or |
5127f4db9d39
mod_mam_muc: Try to use new MUC API for getting room objects (fixes queries to not yet initialized rooms)
Kim Alvefur <zash@zash.se>
parents:
1548
diff
changeset
|
32 function (jid) |
5127f4db9d39
mod_mam_muc: Try to use new MUC API for getting room objects (fixes queries to not yet initialized rooms)
Kim Alvefur <zash@zash.se>
parents:
1548
diff
changeset
|
33 return rooms[jid]; |
5127f4db9d39
mod_mam_muc: Try to use new MUC API for getting room objects (fixes queries to not yet initialized rooms)
Kim Alvefur <zash@zash.se>
parents:
1548
diff
changeset
|
34 end |
820 | 35 |
2498
e065e94f0ac6
mod_mam_muc: Remove fallback for util.stanza.is_stanza, it should be available
Kim Alvefur <zash@zash.se>
parents:
2497
diff
changeset
|
36 local is_stanza = st.is_stanza; |
820 | 37 local tostring = tostring; |
38 local time_now = os.time; | |
39 local m_min = math.min; | |
40 local timestamp, timestamp_parse = require "util.datetime".datetime, require "util.datetime".parse; | |
1278
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
41 local max_history_length = module:get_option_number("max_history_messages", 1000); |
1430
18f5f1b13353
mod_mam_muc: Use max_history_length as default for "max_archive_query_results"
daurnimator <quae@daurnimator.com>
parents:
1385
diff
changeset
|
42 local default_max_items, max_max_items = 20, module:get_option_number("max_archive_query_results", max_history_length); |
820 | 43 |
1143
8098683b6d6f
mod_mam_muc: Allow archiving to be enabled trough in the room configuration
Kim Alvefur <zash@zash.se>
parents:
1142
diff
changeset
|
44 local log_all_rooms = module:get_option_boolean("muc_log_all_rooms", false); |
8098683b6d6f
mod_mam_muc: Allow archiving to be enabled trough in the room configuration
Kim Alvefur <zash@zash.se>
parents:
1142
diff
changeset
|
45 local log_by_default = module:get_option_boolean("muc_log_by_default", true); |
1142
fabdaa0d99e3
mod_mam_muc: Stap archived messages
Kim Alvefur <zash@zash.se>
parents:
1141
diff
changeset
|
46 |
1571
eed7db9f3157
mod_mam_muc, mod_http_muc_log: Change store name from 'archive2' to 'muc_log' to distinguish it from personal MAM archives. Old data will require migration.
Kim Alvefur <zash@zash.se>
parents:
1551
diff
changeset
|
47 local archive_store = "muc_log"; |
1311
27b2a357c73c
mod_mam_muc: porting archive checks from mod_mam (to avoid tracebacks about calling null functions)
Vadim Misbakh-Soloviov <mva@mva.name>
parents:
1279
diff
changeset
|
48 local archive = module:open_store(archive_store, "archive"); |
2031
f21147d56bc4
mod_mam_muc: Yell loudly when archive store can't be opened
Kim Alvefur <zash@zash.se>
parents:
1973
diff
changeset
|
49 |
f21147d56bc4
mod_mam_muc: Yell loudly when archive store can't be opened
Kim Alvefur <zash@zash.se>
parents:
1973
diff
changeset
|
50 if archive.name == "null" or not archive.find then |
f21147d56bc4
mod_mam_muc: Yell loudly when archive store can't be opened
Kim Alvefur <zash@zash.se>
parents:
1973
diff
changeset
|
51 if not archive.find then |
f21147d56bc4
mod_mam_muc: Yell loudly when archive store can't be opened
Kim Alvefur <zash@zash.se>
parents:
1973
diff
changeset
|
52 module:log("error", "Attempt to open archive storage returned a valid driver but it does not seem to implement the storage API"); |
f21147d56bc4
mod_mam_muc: Yell loudly when archive store can't be opened
Kim Alvefur <zash@zash.se>
parents:
1973
diff
changeset
|
53 module:log("error", "mod_%s does not support archiving", archive._provided_by or archive.name and "storage_"..archive.name.."(?)" or "<unknown>"); |
f21147d56bc4
mod_mam_muc: Yell loudly when archive store can't be opened
Kim Alvefur <zash@zash.se>
parents:
1973
diff
changeset
|
54 else |
f21147d56bc4
mod_mam_muc: Yell loudly when archive store can't be opened
Kim Alvefur <zash@zash.se>
parents:
1973
diff
changeset
|
55 module:log("error", "Attempt to open archive storage returned null driver"); |
f21147d56bc4
mod_mam_muc: Yell loudly when archive store can't be opened
Kim Alvefur <zash@zash.se>
parents:
1973
diff
changeset
|
56 end |
f21147d56bc4
mod_mam_muc: Yell loudly when archive store can't be opened
Kim Alvefur <zash@zash.se>
parents:
1973
diff
changeset
|
57 module:log("info", "See https://prosody.im/doc/storage and https://prosody.im/doc/archiving for more information"); |
f21147d56bc4
mod_mam_muc: Yell loudly when archive store can't be opened
Kim Alvefur <zash@zash.se>
parents:
1973
diff
changeset
|
58 return false; |
1311
27b2a357c73c
mod_mam_muc: porting archive checks from mod_mam (to avoid tracebacks about calling null functions)
Vadim Misbakh-Soloviov <mva@mva.name>
parents:
1279
diff
changeset
|
59 end |
27b2a357c73c
mod_mam_muc: porting archive checks from mod_mam (to avoid tracebacks about calling null functions)
Vadim Misbakh-Soloviov <mva@mva.name>
parents:
1279
diff
changeset
|
60 |
1542
ccb9dc624ebd
mod_mam_muc: Split logic for determining if logging is enabled into a function
Kim Alvefur <zash@zash.se>
parents:
1541
diff
changeset
|
61 local function logging_enabled(room) |
ccb9dc624ebd
mod_mam_muc: Split logic for determining if logging is enabled into a function
Kim Alvefur <zash@zash.se>
parents:
1541
diff
changeset
|
62 if log_all_rooms then |
ccb9dc624ebd
mod_mam_muc: Split logic for determining if logging is enabled into a function
Kim Alvefur <zash@zash.se>
parents:
1541
diff
changeset
|
63 return true; |
ccb9dc624ebd
mod_mam_muc: Split logic for determining if logging is enabled into a function
Kim Alvefur <zash@zash.se>
parents:
1541
diff
changeset
|
64 end |
ccb9dc624ebd
mod_mam_muc: Split logic for determining if logging is enabled into a function
Kim Alvefur <zash@zash.se>
parents:
1541
diff
changeset
|
65 local enabled = room._data.logging; |
ccb9dc624ebd
mod_mam_muc: Split logic for determining if logging is enabled into a function
Kim Alvefur <zash@zash.se>
parents:
1541
diff
changeset
|
66 if enabled == nil then |
ccb9dc624ebd
mod_mam_muc: Split logic for determining if logging is enabled into a function
Kim Alvefur <zash@zash.se>
parents:
1541
diff
changeset
|
67 return log_by_default; |
ccb9dc624ebd
mod_mam_muc: Split logic for determining if logging is enabled into a function
Kim Alvefur <zash@zash.se>
parents:
1541
diff
changeset
|
68 end |
ccb9dc624ebd
mod_mam_muc: Split logic for determining if logging is enabled into a function
Kim Alvefur <zash@zash.se>
parents:
1541
diff
changeset
|
69 return enabled; |
ccb9dc624ebd
mod_mam_muc: Split logic for determining if logging is enabled into a function
Kim Alvefur <zash@zash.se>
parents:
1541
diff
changeset
|
70 end |
ccb9dc624ebd
mod_mam_muc: Split logic for determining if logging is enabled into a function
Kim Alvefur <zash@zash.se>
parents:
1541
diff
changeset
|
71 |
1314
cc9831033f5d
mod_mam_muc: Add and remove method overrides based on configuration instead of modifying room metatable
Kim Alvefur <zash@zash.se>
parents:
1313
diff
changeset
|
72 local send_history, save_to_history; |
cc9831033f5d
mod_mam_muc: Add and remove method overrides based on configuration instead of modifying room metatable
Kim Alvefur <zash@zash.se>
parents:
1313
diff
changeset
|
73 |
cc9831033f5d
mod_mam_muc: Add and remove method overrides based on configuration instead of modifying room metatable
Kim Alvefur <zash@zash.se>
parents:
1313
diff
changeset
|
74 -- Override history methods for all rooms. |
1543
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
75 if not new_muc then -- 0.10 or older |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
76 module:hook("muc-room-created", function (event) |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
77 local room = event.room; |
1542
ccb9dc624ebd
mod_mam_muc: Split logic for determining if logging is enabled into a function
Kim Alvefur <zash@zash.se>
parents:
1541
diff
changeset
|
78 if logging_enabled(room) then |
1533
915bdcb35e79
mod_mam_muc: Restructure initialization
Kim Alvefur <zash@zash.se>
parents:
1532
diff
changeset
|
79 room.send_history = send_history; |
915bdcb35e79
mod_mam_muc: Restructure initialization
Kim Alvefur <zash@zash.se>
parents:
1532
diff
changeset
|
80 room.save_to_history = save_to_history; |
1314
cc9831033f5d
mod_mam_muc: Add and remove method overrides based on configuration instead of modifying room metatable
Kim Alvefur <zash@zash.se>
parents:
1313
diff
changeset
|
81 end |
1543
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
82 end); |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
83 |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
84 function module.load() |
1551
5127f4db9d39
mod_mam_muc: Try to use new MUC API for getting room objects (fixes queries to not yet initialized rooms)
Kim Alvefur <zash@zash.se>
parents:
1548
diff
changeset
|
85 for room in each_room() do |
1543
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
86 if logging_enabled(room) then |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
87 room.send_history = send_history; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
88 room.save_to_history = save_to_history; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
89 end |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
90 end |
1314
cc9831033f5d
mod_mam_muc: Add and remove method overrides based on configuration instead of modifying room metatable
Kim Alvefur <zash@zash.se>
parents:
1313
diff
changeset
|
91 end |
1543
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
92 function module.unload() |
1551
5127f4db9d39
mod_mam_muc: Try to use new MUC API for getting room objects (fixes queries to not yet initialized rooms)
Kim Alvefur <zash@zash.se>
parents:
1548
diff
changeset
|
93 for room in each_room() do |
1543
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
94 if room.send_history == send_history then |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
95 room.send_history = nil; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
96 room.save_to_history = nil; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
97 end |
1314
cc9831033f5d
mod_mam_muc: Add and remove method overrides based on configuration instead of modifying room metatable
Kim Alvefur <zash@zash.se>
parents:
1313
diff
changeset
|
98 end |
cc9831033f5d
mod_mam_muc: Add and remove method overrides based on configuration instead of modifying room metatable
Kim Alvefur <zash@zash.se>
parents:
1313
diff
changeset
|
99 end |
1533
915bdcb35e79
mod_mam_muc: Restructure initialization
Kim Alvefur <zash@zash.se>
parents:
1532
diff
changeset
|
100 end |
915bdcb35e79
mod_mam_muc: Restructure initialization
Kim Alvefur <zash@zash.se>
parents:
1532
diff
changeset
|
101 |
915bdcb35e79
mod_mam_muc: Restructure initialization
Kim Alvefur <zash@zash.se>
parents:
1532
diff
changeset
|
102 if not log_all_rooms then |
1276
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
103 module:hook("muc-config-form", function(event) |
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
104 local room, form = event.room, event.form; |
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
105 table.insert(form, |
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
106 { |
1313 | 107 name = muc_form_enable_logging, |
1276
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
108 type = "boolean", |
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
109 label = "Enable Logging?", |
1542
ccb9dc624ebd
mod_mam_muc: Split logic for determining if logging is enabled into a function
Kim Alvefur <zash@zash.se>
parents:
1541
diff
changeset
|
110 value = logging_enabled(room), |
1276
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
111 } |
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
112 ); |
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
113 end); |
1143
8098683b6d6f
mod_mam_muc: Allow archiving to be enabled trough in the room configuration
Kim Alvefur <zash@zash.se>
parents:
1142
diff
changeset
|
114 |
1276
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
115 module:hook("muc-config-submitted", function(event) |
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
116 local room, fields, changed = event.room, event.fields, event.changed; |
1313 | 117 local new = fields[muc_form_enable_logging]; |
1276
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
118 if new ~= room._data.logging then |
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
119 room._data.logging = new; |
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
120 if type(changed) == "table" then |
1313 | 121 changed[muc_form_enable_logging] = true; |
1276
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
122 else |
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
123 event.changed = true; |
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
124 end |
1314
cc9831033f5d
mod_mam_muc: Add and remove method overrides based on configuration instead of modifying room metatable
Kim Alvefur <zash@zash.se>
parents:
1313
diff
changeset
|
125 if new then |
cc9831033f5d
mod_mam_muc: Add and remove method overrides based on configuration instead of modifying room metatable
Kim Alvefur <zash@zash.se>
parents:
1313
diff
changeset
|
126 room.send_history = send_history; |
cc9831033f5d
mod_mam_muc: Add and remove method overrides based on configuration instead of modifying room metatable
Kim Alvefur <zash@zash.se>
parents:
1313
diff
changeset
|
127 room.save_to_history = save_to_history; |
cc9831033f5d
mod_mam_muc: Add and remove method overrides based on configuration instead of modifying room metatable
Kim Alvefur <zash@zash.se>
parents:
1313
diff
changeset
|
128 else |
cc9831033f5d
mod_mam_muc: Add and remove method overrides based on configuration instead of modifying room metatable
Kim Alvefur <zash@zash.se>
parents:
1313
diff
changeset
|
129 room.send_history = nil; |
cc9831033f5d
mod_mam_muc: Add and remove method overrides based on configuration instead of modifying room metatable
Kim Alvefur <zash@zash.se>
parents:
1313
diff
changeset
|
130 room.save_to_history = nil; |
cc9831033f5d
mod_mam_muc: Add and remove method overrides based on configuration instead of modifying room metatable
Kim Alvefur <zash@zash.se>
parents:
1313
diff
changeset
|
131 end |
1143
8098683b6d6f
mod_mam_muc: Allow archiving to be enabled trough in the room configuration
Kim Alvefur <zash@zash.se>
parents:
1142
diff
changeset
|
132 end |
1276
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
133 end); |
01dfaf2f2782
mod_mam_muc: Hide logging option from room configuration if set to log all rooms
Kim Alvefur <zash@zash.se>
parents:
1275
diff
changeset
|
134 end |
1143
8098683b6d6f
mod_mam_muc: Allow archiving to be enabled trough in the room configuration
Kim Alvefur <zash@zash.se>
parents:
1142
diff
changeset
|
135 |
1546
fff2858c554f
mod_mam_muc: Remove parsing of 'with' field in MAM form, we currently ignore it anyways
Kim Alvefur <zash@zash.se>
parents:
1543
diff
changeset
|
136 -- Note: We ignore the 'with' field as this is internally used for stanza types |
1535
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
137 local query_form = dataform { |
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
138 { name = "FORM_TYPE"; type = "hidden"; value = xmlns_mam; }; |
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
139 { name = "with"; type = "jid-single"; }; |
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
140 { name = "start"; type = "text-single" }; |
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
141 { name = "end"; type = "text-single"; }; |
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
142 }; |
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
143 |
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
144 -- Serve form |
1627
458c80904525
mod_mam_muc: fix <iq type='get' to='room-bare-jid'> query
Stuart Carnie <stuart.carnie@gmail.com>
parents:
1616
diff
changeset
|
145 module:hook("iq-get/bare/"..xmlns_mam..":query", function(event) |
1535
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
146 local origin, stanza = event.origin, event.stanza; |
1691
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
147 origin.send(st.reply(stanza):add_child(query_form:form())); |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
148 return true; |
1535
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
149 end); |
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
150 |
820 | 151 -- Handle archive queries |
1535
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
152 module:hook("iq-set/bare/"..xmlns_mam..":query", function(event) |
820 | 153 local origin, stanza = event.origin, event.stanza; |
2426
deedb77c4f96
mod_mam_muc: Rename room and room JID variables for consistency
Kim Alvefur <zash@zash.se>
parents:
2414
diff
changeset
|
154 local room_jid = stanza.attr.to; |
deedb77c4f96
mod_mam_muc: Rename room and room JID variables for consistency
Kim Alvefur <zash@zash.se>
parents:
2414
diff
changeset
|
155 local room_node = jid_split(room_jid); |
1382
ba17268490b7
mod_mam_muc: Fix to, from on result messages (thanks daurnimator)
Kim Alvefur <zash@zash.se>
parents:
1369
diff
changeset
|
156 local orig_from = stanza.attr.from; |
820 | 157 local query = stanza.tags[1]; |
158 | |
2426
deedb77c4f96
mod_mam_muc: Rename room and room JID variables for consistency
Kim Alvefur <zash@zash.se>
parents:
2414
diff
changeset
|
159 local room = get_room_from_jid(room_jid); |
deedb77c4f96
mod_mam_muc: Rename room and room JID variables for consistency
Kim Alvefur <zash@zash.se>
parents:
2414
diff
changeset
|
160 if not room then |
1865
db8b256f51ff
mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents:
1691
diff
changeset
|
161 origin.send(st.error_reply(stanza, "cancel", "item-not-found")) |
db8b256f51ff
mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents:
1691
diff
changeset
|
162 return true; |
820 | 163 end |
1382
ba17268490b7
mod_mam_muc: Fix to, from on result messages (thanks daurnimator)
Kim Alvefur <zash@zash.se>
parents:
1369
diff
changeset
|
164 local from = jid_bare(orig_from); |
820 | 165 |
1140
402cb9b604eb
mod_mam_muc: Send proper error reply when one is not allowed to query archive
Kim Alvefur <zash@zash.se>
parents:
1139
diff
changeset
|
166 -- Banned or not a member of a members-only room? |
2426
deedb77c4f96
mod_mam_muc: Rename room and room JID variables for consistency
Kim Alvefur <zash@zash.se>
parents:
2414
diff
changeset
|
167 local from_affiliation = room:get_affiliation(from); |
1312
a48cf3ccdf9c
mod_mam_muc: Use public API of rooms for authorization check
Kim Alvefur <zash@zash.se>
parents:
1311
diff
changeset
|
168 if from_affiliation == "outcast" -- banned |
2426
deedb77c4f96
mod_mam_muc: Rename room and room JID variables for consistency
Kim Alvefur <zash@zash.se>
parents:
2414
diff
changeset
|
169 or room:get_members_only() and not from_affiliation then -- members-only, not a member |
1865
db8b256f51ff
mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents:
1691
diff
changeset
|
170 origin.send(st.error_reply(stanza, "auth", "forbidden")) |
db8b256f51ff
mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents:
1691
diff
changeset
|
171 return true; |
820 | 172 end |
173 | |
1138
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
174 local qid = query.attr.queryid; |
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
175 |
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
176 -- Search query parameters |
1546
fff2858c554f
mod_mam_muc: Remove parsing of 'with' field in MAM form, we currently ignore it anyways
Kim Alvefur <zash@zash.se>
parents:
1543
diff
changeset
|
177 local qstart, qend; |
1535
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
178 local form = query:get_child("x", "jabber:x:data"); |
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
179 if form then |
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
180 local err; |
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
181 form, err = query_form:data(form); |
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
182 if err then |
1691
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
183 origin.send(st.error_reply(stanza, "modify", "bad-request", select(2, next(err)))); |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
184 return true; |
1535
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
185 end |
1546
fff2858c554f
mod_mam_muc: Remove parsing of 'with' field in MAM form, we currently ignore it anyways
Kim Alvefur <zash@zash.se>
parents:
1543
diff
changeset
|
186 qstart, qend = form["start"], form["end"]; |
1535
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
187 end |
820 | 188 |
1138
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
189 if qstart or qend then -- Validate timestamps |
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
190 local vstart, vend = (qstart and timestamp_parse(qstart)), (qend and timestamp_parse(qend)) |
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
191 if (qstart and not vstart) or (qend and not vend) then |
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
192 origin.send(st.error_reply(stanza, "modify", "bad-request", "Invalid timestamp")) |
2500
ec046f915506
mod_mam_muc: Minor syntax change
Kim Alvefur <zash@zash.se>
parents:
2498
diff
changeset
|
193 return true; |
1138
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
194 end |
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
195 qstart, qend = vstart, vend; |
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
196 end |
820 | 197 |
1141
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
198 -- RSM stuff |
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
199 local qset = rsm.get(query); |
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
200 local qmax = m_min(qset and qset.max or default_max_items, max_max_items); |
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
201 local reverse = qset and qset.before or false; |
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
202 |
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
203 local before, after = qset and qset.before, qset and qset.after; |
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
204 if type(before) ~= "string" then before = nil; end |
820 | 205 |
1138
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
206 -- Load all the data! |
1146
9fa89dc7a86f
mod_mam_muc: Search the rooms archive correctly (copypaste error from mod_mam)
Kim Alvefur <zash@zash.se>
parents:
1145
diff
changeset
|
207 local data, err = archive:find(room_node, { |
1141
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
208 start = qstart; ["end"] = qend; -- Time range |
1691
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
209 limit = qmax + 1; |
1141
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
210 before = before; after = after; |
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
211 reverse = reverse; |
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
212 total = true; |
1547
e98c335c6554
mod_mam_muc: Limit search to groupchat messages (we use the internal 'with' field stanza types)
Kim Alvefur <zash@zash.se>
parents:
1546
diff
changeset
|
213 with = "message<groupchat"; |
1141
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
214 }); |
1138
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
215 |
1141
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
216 if not data then |
1865
db8b256f51ff
mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents:
1691
diff
changeset
|
217 origin.send(st.error_reply(stanza, "cancel", "internal-server-error")); |
db8b256f51ff
mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents:
1691
diff
changeset
|
218 return true; |
1141
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
219 end |
2501
04064f01df0e
mod_mam_muc: Make sure that the total, if it is a total, is a number
Kim Alvefur <zash@zash.se>
parents:
2500
diff
changeset
|
220 local total = tonumber(err); |
1138
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
221 |
1534
4dd6eebc8fbd
mod_mam_muc: Minor moving about of variables
Kim Alvefur <zash@zash.se>
parents:
1533
diff
changeset
|
222 local msg_reply_attr = { to = stanza.attr.from, from = stanza.attr.to }; |
4dd6eebc8fbd
mod_mam_muc: Minor moving about of variables
Kim Alvefur <zash@zash.se>
parents:
1533
diff
changeset
|
223 |
1691
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
224 local results = {}; |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
225 |
1141
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
226 -- Wrap it in stuff and deliver |
1691
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
227 local first, last; |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
228 local count = 0; |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
229 local complete = "true"; |
1141
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
230 for id, item, when in data do |
1691
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
231 count = count + 1; |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
232 if count > qmax then |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
233 complete = nil; |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
234 break; |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
235 end |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
236 local fwd_st = st.message(msg_reply_attr) |
1141
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
237 :tag("result", { xmlns = xmlns_mam, queryid = qid, id = id }) |
1138
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
238 :tag("forwarded", { xmlns = xmlns_forward }) |
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
239 :tag("delay", { xmlns = xmlns_delay, stamp = timestamp(when) }):up(); |
1141
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
240 |
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
241 if not is_stanza(item) then |
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
242 item = st.deserialize(item); |
1138
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
243 end |
1141
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
244 item.attr.xmlns = "jabber:client"; |
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
245 fwd_st:add_child(item); |
820 | 246 |
1141
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
247 if not first then first = id; end |
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
248 last = id; |
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
249 |
1691
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
250 if reverse then |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
251 results[count] = fwd_st; |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
252 else |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
253 origin.send(fwd_st); |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
254 end |
1138
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
255 end |
2500
ec046f915506
mod_mam_muc: Minor syntax change
Kim Alvefur <zash@zash.se>
parents:
2498
diff
changeset
|
256 |
1691
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
257 if reverse then |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
258 for i = #results, 1, -1 do |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
259 origin.send(results[i]); |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
260 end |
2502
f576ac1cad65
mod_mam_muc: Move swapping of reversed variables (like 5fb917b86838 for mod_mam)
Kim Alvefur <zash@zash.se>
parents:
2501
diff
changeset
|
261 first, last = last, first; |
1691
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
262 end |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
263 |
1138
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
264 -- That's all folks! |
5c97ee75cadb
mod_mam_muc: Switch to iq-get hook and drop some indentation
Kim Alvefur <zash@zash.se>
parents:
820
diff
changeset
|
265 module:log("debug", "Archive query %s completed", tostring(qid)); |
820 | 266 |
2507
b8a66805459e
mod_mam_muc: Update to XEP-0313 0.5.1
Kim Alvefur <zash@zash.se>
parents:
2502
diff
changeset
|
267 origin.send(st.reply(stanza) |
1691
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
268 :tag("fin", { xmlns = xmlns_mam, queryid = qid, complete = complete }) |
1535
efbb047c01e7
mod_mam_muc: Update to XEP-0313 v 0.3
Kim Alvefur <zash@zash.se>
parents:
1534
diff
changeset
|
269 :add_child(rsm.generate { |
1691
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
270 first = first, last = last, count = total })); |
1a8c791d365f
mod_mam_muc: d20cfc5ba827 .. cd87a2eba8f2 here too (uh, duplicated code)
Kim Alvefur <zash@zash.se>
parents:
1679
diff
changeset
|
271 return true; |
820 | 272 end); |
273 | |
1543
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
274 module:hook("muc-get-history", function (event) |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
275 local room = event.room; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
276 if not logging_enabled(room) then return end |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
277 local room_jid = room.jid; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
278 local maxstanzas = event.maxstanzas; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
279 local maxchars = event.maxchars; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
280 local since = event.since; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
281 local to = event.to; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
282 |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
283 -- Load all the data! |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
284 local query = { |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
285 limit = m_min(maxstanzas or 20, max_history_length); |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
286 start = since; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
287 reverse = true; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
288 with = "message<groupchat"; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
289 } |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
290 local data, err = archive:find(jid_split(room_jid), query); |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
291 |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
292 if not data then |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
293 module:log("error", "Could not fetch history: %s", tostring(err)); |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
294 return |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
295 end |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
296 |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
297 local history, i = {}, 1; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
298 |
1650
66d67f0bae16
mod_mam_muc: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents:
1649
diff
changeset
|
299 for _, item, when in data do |
1543
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
300 item.attr.to = to; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
301 item:tag("delay", { xmlns = "urn:xmpp:delay", from = room_jid, stamp = timestamp(when) }):up(); -- XEP-0203 |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
302 if maxchars then |
1649
ab4073468dfb
mod_mam_muc: Fix character limit again(?)
Kim Alvefur <zash@zash.se>
parents:
1636
diff
changeset
|
303 local chars = #tostring(item); |
1636
7fa0c41792c7
mod_mam_muc: Fix character limit
Kim Alvefur <zash@zash.se>
parents:
1627
diff
changeset
|
304 if maxchars - chars < 0 then |
1543
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
305 break |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
306 end |
1649
ab4073468dfb
mod_mam_muc: Fix character limit again(?)
Kim Alvefur <zash@zash.se>
parents:
1636
diff
changeset
|
307 maxchars = maxchars - chars; |
1543
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
308 end |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
309 history[i], i = item, i+1; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
310 -- module:log("debug", tostring(item)); |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
311 end |
1650
66d67f0bae16
mod_mam_muc: Cleanup [luacheck]
Kim Alvefur <zash@zash.se>
parents:
1649
diff
changeset
|
312 function event.next_stanza() |
1543
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
313 i = i - 1; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
314 return history[i]; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
315 end |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
316 return true; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
317 end, 1); |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
318 |
1519
67c80abe742e
mod_mam_muc: Fix add/removal of room method overrides
Kim Alvefur <zash@zash.se>
parents:
1430
diff
changeset
|
319 function send_history(self, to, stanza) |
1278
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
320 local maxchars, maxstanzas, seconds, since; |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
321 local history_tag = stanza:find("{http://jabber.org/protocol/muc}x/history") |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
322 if history_tag then |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
323 module:log("debug", tostring(history_tag)); |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
324 local history_attr = history_tag.attr; |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
325 maxchars = tonumber(history_attr.maxchars); |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
326 maxstanzas = tonumber(history_attr.maxstanzas); |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
327 seconds = tonumber(history_attr.seconds); |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
328 since = history_attr.since; |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
329 if since then |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
330 since = timestamp_parse(since); |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
331 end |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
332 if seconds then |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
333 since = math.max(os.time() - seconds, since or 0); |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
334 end |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
335 end |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
336 |
1543
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
337 local event = { |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
338 room = self; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
339 to = to; -- `to` is required to calculate the character count for `maxchars` |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
340 maxchars = maxchars, maxstanzas = maxstanzas, since = since; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
341 next_stanza = function() end; -- events should define this iterator |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
342 }; |
1278
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
343 |
1543
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
344 module:fire_event("muc-get-history", event); |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
345 |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
346 for msg in event.next_stanza, event do |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
347 self:_route_stanza(msg); |
1278
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
348 end |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
349 end |
40f077b18dfe
mod_mam_muc: Override sending of room history and use archives
Kim Alvefur <zash@zash.se>
parents:
1277
diff
changeset
|
350 |
820 | 351 -- Handle messages |
1519
67c80abe742e
mod_mam_muc: Fix add/removal of room method overrides
Kim Alvefur <zash@zash.se>
parents:
1430
diff
changeset
|
352 function save_to_history(self, stanza) |
2427
e5795f5f7a7b
mod_mam_muc: More room JID variable renaming for more consistency
Kim Alvefur <zash@zash.se>
parents:
2426
diff
changeset
|
353 local room_node = jid_split(self.jid); |
820 | 354 |
1279
2118a2eeb1d5
mod_mam_muc: Override method for storing history messages instead of hooking stanza events
Kim Alvefur <zash@zash.se>
parents:
1278
diff
changeset
|
355 -- Policy check |
1542
ccb9dc624ebd
mod_mam_muc: Split logic for determining if logging is enabled into a function
Kim Alvefur <zash@zash.se>
parents:
1541
diff
changeset
|
356 if not logging_enabled(self) then return end -- Don't log |
1143
8098683b6d6f
mod_mam_muc: Allow archiving to be enabled trough in the room configuration
Kim Alvefur <zash@zash.se>
parents:
1142
diff
changeset
|
357 |
820 | 358 -- And stash it |
1385
da9469e68dee
mod_mam_muc: Place stanza type in 'with' column; when sending history, only send messages with type=groupchat
daurnimator <quae@daurnimator.com>
parents:
1382
diff
changeset
|
359 local with = stanza.name |
da9469e68dee
mod_mam_muc: Place stanza type in 'with' column; when sending history, only send messages with type=groupchat
daurnimator <quae@daurnimator.com>
parents:
1382
diff
changeset
|
360 if stanza.attr.type then |
da9469e68dee
mod_mam_muc: Place stanza type in 'with' column; when sending history, only send messages with type=groupchat
daurnimator <quae@daurnimator.com>
parents:
1382
diff
changeset
|
361 with = with .. "<" .. stanza.attr.type |
da9469e68dee
mod_mam_muc: Place stanza type in 'with' column; when sending history, only send messages with type=groupchat
daurnimator <quae@daurnimator.com>
parents:
1382
diff
changeset
|
362 end |
2427
e5795f5f7a7b
mod_mam_muc: More room JID variable renaming for more consistency
Kim Alvefur <zash@zash.se>
parents:
2426
diff
changeset
|
363 archive:append(room_node, nil, stanza, time_now(), with); |
820 | 364 end |
365 | |
1543
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
366 module:hook("muc-broadcast-message", function (event) |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
367 local room, stanza = event.room, event.stanza; |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
368 if stanza:get_child("body") then |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
369 save_to_history(room, stanza); |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
370 end |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
371 end); |
57fb9ce21f9c
mod_mam_muc: Add compatibility with the new MUC code in trunk
Kim Alvefur <zash@zash.se>
parents:
1542
diff
changeset
|
372 |
1616
28411e97db94
mod_mam_muc: support to disable presence logging via muc_log_presences
Stuart Carnie <stuart.carnie@gmail.com>
parents:
1571
diff
changeset
|
373 if module:get_option_boolean("muc_log_presences", true) then |
28411e97db94
mod_mam_muc: support to disable presence logging via muc_log_presences
Stuart Carnie <stuart.carnie@gmail.com>
parents:
1571
diff
changeset
|
374 module:hook("muc-occupant-joined", function (event) |
28411e97db94
mod_mam_muc: support to disable presence logging via muc_log_presences
Stuart Carnie <stuart.carnie@gmail.com>
parents:
1571
diff
changeset
|
375 save_to_history(event.room, st.stanza("presence", { from = event.nick })); |
28411e97db94
mod_mam_muc: support to disable presence logging via muc_log_presences
Stuart Carnie <stuart.carnie@gmail.com>
parents:
1571
diff
changeset
|
376 end); |
28411e97db94
mod_mam_muc: support to disable presence logging via muc_log_presences
Stuart Carnie <stuart.carnie@gmail.com>
parents:
1571
diff
changeset
|
377 module:hook("muc-occupant-left", function (event) |
28411e97db94
mod_mam_muc: support to disable presence logging via muc_log_presences
Stuart Carnie <stuart.carnie@gmail.com>
parents:
1571
diff
changeset
|
378 save_to_history(event.room, st.stanza("presence", { type = "unavailable", from = event.nick })); |
28411e97db94
mod_mam_muc: support to disable presence logging via muc_log_presences
Stuart Carnie <stuart.carnie@gmail.com>
parents:
1571
diff
changeset
|
379 end); |
28411e97db94
mod_mam_muc: support to disable presence logging via muc_log_presences
Stuart Carnie <stuart.carnie@gmail.com>
parents:
1571
diff
changeset
|
380 end |
1548
d3c847070618
mod_mam_muc: Store joins and leaves
Kim Alvefur <zash@zash.se>
parents:
1547
diff
changeset
|
381 |
1277
999891a9ae5d
mod_mam_muc: Remove archives when a room is destroyed
Kim Alvefur <zash@zash.se>
parents:
1276
diff
changeset
|
382 module:hook("muc-room-destroyed", function(event) |
2427
e5795f5f7a7b
mod_mam_muc: More room JID variable renaming for more consistency
Kim Alvefur <zash@zash.se>
parents:
2426
diff
changeset
|
383 local room_node = jid_split(event.room.jid); |
e5795f5f7a7b
mod_mam_muc: More room JID variable renaming for more consistency
Kim Alvefur <zash@zash.se>
parents:
2426
diff
changeset
|
384 archive:delete(room_node); |
1277
999891a9ae5d
mod_mam_muc: Remove archives when a room is destroyed
Kim Alvefur <zash@zash.se>
parents:
1276
diff
changeset
|
385 end); |
999891a9ae5d
mod_mam_muc: Remove archives when a room is destroyed
Kim Alvefur <zash@zash.se>
parents:
1276
diff
changeset
|
386 |
1141
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
387 -- And role/affiliation changes? |
1091be1c3aba
mod_mam_muc: Switch to new stanza storage API
Kim Alvefur <zash@zash.se>
parents:
1140
diff
changeset
|
388 |
820 | 389 module:add_feature(xmlns_mam); |
1679
c77e9522dc66
mod_mam_muc: Advertise MAM feature on bare JID room disco#info (only effective after prosody 57bc52f67564)
Kim Alvefur <zash@zash.se>
parents:
1650
diff
changeset
|
390 |
c77e9522dc66
mod_mam_muc: Advertise MAM feature on bare JID room disco#info (only effective after prosody 57bc52f67564)
Kim Alvefur <zash@zash.se>
parents:
1650
diff
changeset
|
391 module:hook("muc-disco#info", function(event) |
c77e9522dc66
mod_mam_muc: Advertise MAM feature on bare JID room disco#info (only effective after prosody 57bc52f67564)
Kim Alvefur <zash@zash.se>
parents:
1650
diff
changeset
|
392 event.reply:tag("feature", {var=xmlns_mam}):up(); |
c77e9522dc66
mod_mam_muc: Advertise MAM feature on bare JID room disco#info (only effective after prosody 57bc52f67564)
Kim Alvefur <zash@zash.se>
parents:
1650
diff
changeset
|
393 end); |