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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }