Software /
code /
prosody
Annotate
plugins/mod_mam/mamprefs.lib.lua @ 8464:1a0b76b07b7a
mod_register: Include the session and its IP address in user-registering event, so that plugins can use this
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 08 Dec 2017 19:39:43 +0100 |
parent | 8353:aa6497031924 |
child | 8538:3eb4cafb3b64 |
rev | line source |
---|---|
7851
80ee0d9cd56f
mod_mam: Normalize copyright headers
Kim Alvefur <zash@zash.se>
parents:
7850
diff
changeset
|
1 -- Prosody IM |
80ee0d9cd56f
mod_mam: Normalize copyright headers
Kim Alvefur <zash@zash.se>
parents:
7850
diff
changeset
|
2 -- Copyright (C) 2008-2017 Matthew Wild |
80ee0d9cd56f
mod_mam: Normalize copyright headers
Kim Alvefur <zash@zash.se>
parents:
7850
diff
changeset
|
3 -- Copyright (C) 2008-2017 Waqas Hussain |
80ee0d9cd56f
mod_mam: Normalize copyright headers
Kim Alvefur <zash@zash.se>
parents:
7850
diff
changeset
|
4 -- Copyright (C) 2011-2017 Kim Alvefur |
80ee0d9cd56f
mod_mam: Normalize copyright headers
Kim Alvefur <zash@zash.se>
parents:
7850
diff
changeset
|
5 -- |
80ee0d9cd56f
mod_mam: Normalize copyright headers
Kim Alvefur <zash@zash.se>
parents:
7850
diff
changeset
|
6 -- This project is MIT/X11 licensed. Please see the |
80ee0d9cd56f
mod_mam: Normalize copyright headers
Kim Alvefur <zash@zash.se>
parents:
7850
diff
changeset
|
7 -- COPYING file in the source package for more information. |
80ee0d9cd56f
mod_mam: Normalize copyright headers
Kim Alvefur <zash@zash.se>
parents:
7850
diff
changeset
|
8 -- |
7836
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 -- XEP-0313: Message Archive Management for Prosody |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 -- |
7884
60d3b53a36f7
mod_mam: Ignore "indirectly mutating read-only global variable prosody" warning [luacheck]
Kim Alvefur <zash@zash.se>
parents:
7883
diff
changeset
|
11 -- luacheck: ignore 122/prosody |
7836
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 |
7979
a1e88642411d
mod_mam: Handle default_archive_policy option consistently
Kim Alvefur <zash@zash.se>
parents:
7884
diff
changeset
|
13 local global_default_policy = module:get_option_string("default_archive_policy", true); |
a1e88642411d
mod_mam: Handle default_archive_policy option consistently
Kim Alvefur <zash@zash.se>
parents:
7884
diff
changeset
|
14 if global_default_policy ~= "roster" then |
a1e88642411d
mod_mam: Handle default_archive_policy option consistently
Kim Alvefur <zash@zash.se>
parents:
7884
diff
changeset
|
15 global_default_policy = module:get_option_boolean("default_archive_policy", global_default_policy); |
a1e88642411d
mod_mam: Handle default_archive_policy option consistently
Kim Alvefur <zash@zash.se>
parents:
7884
diff
changeset
|
16 end |
7836
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 do |
7855
e429982940fc
mod_mam: Silence warning about unused table used to describe data format [luacheck]
Kim Alvefur <zash@zash.se>
parents:
7851
diff
changeset
|
19 -- luacheck: ignore 211/prefs_format |
7836
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 local prefs_format = { |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 [false] = "roster", |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 -- default ::= true | false | "roster" |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 -- true = always, false = never, nil = global default |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 ["romeo@montague.net"] = true, -- always |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 ["montague@montague.net"] = false, -- newer |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 }; |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 end |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 |
7883
9ff791c9f069
mod_mam/mamprefs: Use 'prosody.hosts' instead of '_G.hosts' in case we ever deprecate the later
Kim Alvefur <zash@zash.se>
parents:
7855
diff
changeset
|
29 local sessions = prosody.hosts[module.host].sessions; |
7850
10d91860172f
mod_mam: Change store name to "archive" but make it configurable for people who have data in "archive2"
Kim Alvefur <zash@zash.se>
parents:
7836
diff
changeset
|
30 local archive_store = module:get_option_string("archive_store", "archive"); |
10d91860172f
mod_mam: Change store name to "archive" but make it configurable for people who have data in "archive2"
Kim Alvefur <zash@zash.se>
parents:
7836
diff
changeset
|
31 local prefs = module:open_store(archive_store .. "_prefs"); |
7836
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 local function get_prefs(user) |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 local user_sessions = sessions[user]; |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 local user_prefs = user_sessions and user_sessions.archive_prefs |
8353
aa6497031924
mod_mam: Load archiving preferes for offline users (fixes #1024)
Kim Alvefur <zash@zash.se>
parents:
7979
diff
changeset
|
36 if not user_prefs then |
7836
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 user_prefs = prefs:get(user); |
8353
aa6497031924
mod_mam: Load archiving preferes for offline users (fixes #1024)
Kim Alvefur <zash@zash.se>
parents:
7979
diff
changeset
|
38 if user_sessions then |
aa6497031924
mod_mam: Load archiving preferes for offline users (fixes #1024)
Kim Alvefur <zash@zash.se>
parents:
7979
diff
changeset
|
39 user_sessions.archive_prefs = user_prefs; |
aa6497031924
mod_mam: Load archiving preferes for offline users (fixes #1024)
Kim Alvefur <zash@zash.se>
parents:
7979
diff
changeset
|
40 end |
7836
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
41 end |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
42 return user_prefs or { [false] = global_default_policy }; |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
43 end |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
44 local function set_prefs(user, user_prefs) |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
45 local user_sessions = sessions[user]; |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
46 if user_sessions then |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
47 user_sessions.archive_prefs = user_prefs; |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
48 end |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
49 return prefs:set(user, user_prefs); |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
50 end |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
51 |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
52 return { |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
53 get = get_prefs, |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
54 set = set_prefs, |
30fac9154fd4
mod_mam: Import from prosody-modules
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
55 } |