annotate mod_storage_metronome_readonly/mod_storage_metronome_readonly.lua @ 6319:04c3273cb81f

mod_auth_cyrus: Add empty 'profile' table to SASL handler objects This is for compatibility with Prosody's built-in util.sasl objects. A SASL profile table usually includes methods supported by the backend, which can be used by SASL mechanism handlers to perform operations (such as testing the password). It also optionally contains a 'cb' field with channel binding method handlers. The Cyrus backend doesn't support channel binding, and doesn't have the same concept of auth backend methods (it handles all that internally, and Prosody has no insight or control over it). Thus, we create an empty profile which informs Prosody that the SASL handler does not support any of the auth or channel binding methods. Some features will not work, but they didn't work anyway. This just makes it explicit. This fixes a traceback in mod_sasl2_fast, which expected SASL handlers to always contain a 'profile' field.
author Matthew Wild <mwild1@gmail.com>
date Thu, 04 Sep 2025 10:14:46 +0100
parents 877416deacfa
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
1 local datamanager = require "prosody.core.storagemanager".olddm;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
2 local datetime = require "prosody.util.datetime";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
3 local st = require "prosody.util.stanza";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
4 local now = require "prosody.util.time".now;
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
5 local gen_id = require "prosody.util.id".medium;
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
6 local set = require "prosody.util.set";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
7 local envloadfile = require"prosody.util.envload".envloadfile;
6142
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
8 local dir = require "lfs".dir;
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
9
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
10 local host = module.host;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
11
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
12 local archive_item_limit = module:get_option_integer("storage_archive_item_limit", 10000, 0);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
13
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
14 -- Metronome doesn’t store the item publish time, so fallback to the migration time.
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
15 local time_now = math.floor(now());
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
16
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
17 local function encode (s)
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
18 return s and (s:gsub("%W", function (c) return string.format("%%%02x", c:byte()); end));
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
19 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
20
6137
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
21 local file = io.open("/etc/mime.types");
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
22 local mimes = {};
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
23 while true do
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
24 local line = file:read("*l");
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
25 if not line then
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
26 break;
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
27 end
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
28 if line ~= "" then
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
29 local first_char = line:sub(1, 1);
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
30 if first_char ~= "#" then
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
31 --local line:match("(%S+)%s+"));
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
32 local match = line:gmatch("%S+");
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
33 local mime = match();
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
34 for ext in match do
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
35 mimes[ext] = mime;
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
36 end
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
37 end
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
38 end
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
39 end
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
40 file:close();
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
41
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
42 local driver = {};
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
43
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
44 function driver:open(store, typ)
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
45 local mt = self[typ or "keyval"]
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
46 if not mt then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
47 return nil, "unsupported-store";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
48 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
49 return setmetatable({ store = store, type = typ }, mt);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
50 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
51
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
52 function driver:stores(username) -- luacheck: ignore 212/self
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
53 if username == true then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
54 local nodes = set.new();
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
55 for user in datamanager.users(host, "pep") do
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
56 local data = datamanager.load(user, host, "pep");
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
57
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
58 for _, node in ipairs(data["nodes"]) do
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
59 nodes:add("pep_" .. node);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
60 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
61 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
62 return function()
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
63 -- luacheck: ignore 512
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
64 for node in nodes do
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
65 nodes:remove(node);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
66 return node;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
67 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
68 end;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
69 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
70 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
71
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
72 function driver:purge(user) -- luacheck: ignore 212/self user
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
73 return nil, "unsupported-store";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
74 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
75
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
76 local keyval = { };
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
77 driver.keyval = { __index = keyval };
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
78
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
79 function keyval:get(user)
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
80 if self.store == "pep" then
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
81 local ret = datamanager.load(user, host, self.store);
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
82 local nodes = ret["nodes"];
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
83 local result = {};
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
84
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
85 local pep_base_path = datamanager.getpath(user, host, self.store):sub(1, -5);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
86
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
87 for _, node in ipairs(nodes) do
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
88 local path = ("%s/%s.dat"):format(pep_base_path, encode(node));
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
89 local get_data = envloadfile(path, {});
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
90 if not get_data then
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
91 module:log("error", "Failed to load metronome storage");
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
92 return nil, "Error reading storage";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
93 end
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
94 local success, data = pcall(get_data);
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
95 if not success then
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
96 module:log("error", "Unable to load metronome storage");
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
97 return nil, "Error reading storage";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
98 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
99 local new_node = {};
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
100 new_node["name"] = node;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
101 new_node["subscribers"] = data["subscribers"];
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
102 new_node["affiliations"] = data["affiliations"];
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
103 new_node["config"] = data["config"];
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
104 result[node] = new_node;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
105 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
106 return result;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
107 elseif self.store == "cloud_notify" then
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
108 local ret = datamanager.load(user, host, "push");
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
109 local result = {};
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
110 for jid, data in pairs(ret) do
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
111 local secret = data["secret"];
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
112 for node in pairs(data["nodes"]) do
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
113 -- TODO: Does Metronome store more info than that?
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
114 local options;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
115 if secret then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
116 options = st.preserialize(st.stanza("x", { xmlns = "jabber:x:data", type = "submit" })
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
117 :tag("field", { var = "FORM_TYPE" })
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
118 :text_tag("value", "http://jabber.org/protocol/pubsub#publish-options")
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
119 :up()
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
120 :tag("field", { var = "secret" })
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
121 :text_tag("value", secret));
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
122 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
123 result[jid.."<"..node] = {
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
124 jid = jid,
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
125 node = node,
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
126 options = options,
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
127 };
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
128 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
129 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
130 return result;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
131 elseif self.store == "roster" then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
132 return datamanager.load(user, host, self.store);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
133 elseif self.store == "vcard" then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
134 return datamanager.load(user, host, self.store);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
135 elseif self.store == "private" then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
136 return datamanager.load(user, host, self.store);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
137
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
138 -- After that, handle MUC specific stuff, not tested yet whatsoever.
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
139 elseif self.store == "persistent" then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
140 return datamanager.load(user, host, self.store);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
141 elseif self.store == "config" then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
142 return datamanager.load(user, host, self.store);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
143 elseif self.store == "vcard_muc" then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
144 local data = datamanager.load(user, host, "room_icons");
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
145 return data and data["photo"];
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
146 else
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
147 return nil, "unsupported-store";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
148 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
149 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
150
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
151 function keyval:set(user, data) -- luacheck: ignore 212/self user data
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
152 return nil, "unsupported-store";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
153 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
154
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
155 function keyval:users()
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
156 local store;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
157 if self.store == "vcard_muc" then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
158 store = "room_icons";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
159 elseif self.store == "cloud_notify" then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
160 store = "push";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
161 else
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
162 store = self.store;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
163 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
164 return datamanager.users(host, store, self.type);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
165 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
166
6144
983549664bd4 mod_storage_metronome_readonly: Fix wrongly done refactoring
Link Mauve <linkmauve@linkmauve.fr>
parents: 6143
diff changeset
167 local function parse_logs(logs, jid)
6142
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
168 local iter = ipairs(logs);
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
169 local i = 0;
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
170 local message;
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
171 return function()
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
172 i, message = iter(logs, i);
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
173 if not message then
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
174 return;
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
175 end
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
176
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
177 local with;
6143
44f77f4f653a mod_storage_metronome_readonly: Revert non-working is_muc hack, the correct with is "message<groupchat"
Link Mauve <linkmauve@linkmauve.fr>
parents: 6142
diff changeset
178 local bare_to = message["bare_to"];
44f77f4f653a mod_storage_metronome_readonly: Revert non-working is_muc hack, the correct with is "message<groupchat"
Link Mauve <linkmauve@linkmauve.fr>
parents: 6142
diff changeset
179 local bare_from = message["bare_from"];
44f77f4f653a mod_storage_metronome_readonly: Revert non-working is_muc hack, the correct with is "message<groupchat"
Link Mauve <linkmauve@linkmauve.fr>
parents: 6142
diff changeset
180 if jid == bare_to then
44f77f4f653a mod_storage_metronome_readonly: Revert non-working is_muc hack, the correct with is "message<groupchat"
Link Mauve <linkmauve@linkmauve.fr>
parents: 6142
diff changeset
181 -- received
44f77f4f653a mod_storage_metronome_readonly: Revert non-working is_muc hack, the correct with is "message<groupchat"
Link Mauve <linkmauve@linkmauve.fr>
parents: 6142
diff changeset
182 with = bare_from;
6142
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
183 else
6143
44f77f4f653a mod_storage_metronome_readonly: Revert non-working is_muc hack, the correct with is "message<groupchat"
Link Mauve <linkmauve@linkmauve.fr>
parents: 6142
diff changeset
184 -- sent
44f77f4f653a mod_storage_metronome_readonly: Revert non-working is_muc hack, the correct with is "message<groupchat"
Link Mauve <linkmauve@linkmauve.fr>
parents: 6142
diff changeset
185 with = bare_to;
6142
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
186 end
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
187
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
188 local to = message["to"];
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
189 local from = message["from"];
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
190 local id = message["id"];
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
191 local type = message["type"];
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
192
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
193 local key = message["uid"];
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
194 local when = message["timestamp"];
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
195 local item = st.message({ to = to, from = from, id = id, type = type }, message["body"]);
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
196 if message["tags"] then
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
197 for _, tag in ipairs(message["tags"]) do
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
198 setmetatable(tag, st.stanza_mt);
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
199 item:add_direct_child(tag);
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
200 end
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
201 end
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
202 if message["marker"] then
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
203 item:tag(message["marker"], { xmlns = "urn:xmpp:chat-markers:0", id = message["marker_id"] });
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
204 end
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
205 return key, item, when, with;
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
206 end;
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
207 end
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
208
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
209 local archive = {};
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
210 driver.archive = { __index = archive };
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
211
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
212 archive.caps = {
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
213 total = true;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
214 quota = archive_item_limit;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
215 full_id_range = true;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
216 ids = true;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
217 };
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
218
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
219 function archive:append(username, key, value, when, with) -- luacheck: ignore 212/self username key value when with
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
220 return nil, "unsupported-store";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
221 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
222
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
223 function archive:find(username, query) -- luacheck: ignore 212/self query
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
224 if self.store == "archive" then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
225 local jid = username.."@"..host;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
226 local data = datamanager.load(username, host, "archiving");
6144
983549664bd4 mod_storage_metronome_readonly: Fix wrongly done refactoring
Link Mauve <linkmauve@linkmauve.fr>
parents: 6143
diff changeset
227 return parse_logs(data["logs"], jid);
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
228
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
229 elseif self.store:sub(1, 4) == "pep_" then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
230 local node = self.store:sub(5);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
231
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
232 local pep_base_path = datamanager.getpath(username, host, "pep"):sub(1, -5);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
233 local path = ("%s/%s.dat"):format(pep_base_path, encode(node));
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
234 local get_data = envloadfile(path, {});
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
235 if not get_data then
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
236 module:log("debug", "Failed to load metronome storage");
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
237 return {};
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
238 end
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
239 local success, data = pcall(get_data);
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
240 if not success then
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
241 module:log("error", "Unable to load metronome storage");
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
242 return nil, "Error reading storage";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
243 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
244
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
245 local iter = pairs(data["data"]);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
246 local key = nil;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
247 local payload;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
248 return function()
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
249 key, payload = iter(data["data"], key);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
250 if not key then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
251 return;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
252 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
253 local item = st.deserialize(payload[1]);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
254 local with = data["data_author"][key];
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
255 return key, item, time_now, with;
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
256 end;
6142
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
257
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
258 elseif self.store == "offline" then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
259 -- This is mostly copy/pasted from mod_storage_internal.
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
260 local list, err = datamanager.list_open(username, host, self.store);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
261 if not list then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
262 if err then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
263 return list, err;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
264 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
265 return function()
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
266 end;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
267 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
268
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
269 local i = 0;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
270 local iter = function()
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
271 i = i + 1;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
272 return list[i];
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
273 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
274
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
275 return function()
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
276 local item = iter();
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
277 if item == nil then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
278 if list.close then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
279 list:close();
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
280 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
281 return
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
282 end
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
283 local key = gen_id();
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
284 local when = item.attr and datetime.parse(item.attr.stamp);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
285 local with = "";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
286 item.key, item.when, item.with = nil, nil, nil;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
287 item.attr.stamp = nil;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
288 -- COMPAT Stored data may still contain legacy XEP-0091 timestamp
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
289 item.attr.stamp_legacy = nil;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
290 item = st.deserialize(item);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
291 return key, item, when, with;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
292 end
6142
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
293
6137
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
294 elseif self.store == "uploads" then
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
295 local list = {};
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
296
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
297 for user in datamanager.users(host, "http_upload", "list") do
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
298 local data, err = datamanager.list_open(user, host, "http_upload");
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
299 if not data then
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
300 if err then
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
301 return data, err;
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
302 end
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
303 return function()
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
304 end;
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
305 end
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
306
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
307 for _, stuff in ipairs(data) do
6144
983549664bd4 mod_storage_metronome_readonly: Fix wrongly done refactoring
Link Mauve <linkmauve@linkmauve.fr>
parents: 6143
diff changeset
308 local key = stuff.dir;
6137
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
309 local size = tostring(stuff.size);
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
310 local time = stuff.time;
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
311 local filename = stuff.filename;
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
312 local ext = filename:match(".*%.(%S+)"):lower();
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
313 local mime = mimes[ext] or "application/octet-stream";
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
314 local stanza = st.stanza("request", { xmlns = "urn:xmpp:http:upload:0", size = size, ["content-type"] = mime, filename = filename })
6144
983549664bd4 mod_storage_metronome_readonly: Fix wrongly done refactoring
Link Mauve <linkmauve@linkmauve.fr>
parents: 6143
diff changeset
315 list[key] = {user.."@"..host, time, stanza};
6137
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
316 end
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
317 end
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
318
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
319 local iter = pairs(list);
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
320 local key = nil;
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
321 local payload;
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
322 return function()
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
323 key, payload = iter(list, key);
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
324 if not key then
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
325 return;
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
326 end
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
327 local with = payload[1];
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
328 local when = payload[2];
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
329 local stanza = payload[3];
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
330 return key, stanza, when, with;
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
331 end;
6142
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
332
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
333 elseif self.store == "muc_log" then
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
334 local base_path = datamanager.getpath("", host, "stanza_log"):sub(1, -5);
6146
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
335 local days = {};
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
336 for date in dir(base_path) do
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
337 if date ~= "." and date ~= ".." then
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
338 table.insert(days, date);
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
339 end
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
340 end
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
341 table.sort(days);
6142
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
342 local list = {};
6146
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
343 for _, date in ipairs(days) do
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
344 local path = base_path..date.."/"..encode(username)..".dat";
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
345 local get_data = envloadfile(path, {});
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
346 if get_data then
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
347 local success, data = pcall(get_data);
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
348 if not success then
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
349 module:log("error", "Unable to load metronome storage");
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
350 return nil, "Error reading storage";
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
351 end
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
352 for key, item, when in parse_logs(data) do
877416deacfa mod_storage_metronome_readonly: Sort the days first before iterating on MUC MAM entries
Link Mauve <linkmauve@linkmauve.fr>
parents: 6144
diff changeset
353 table.insert(list, {key, item, when});
6142
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
354 end
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
355 end
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
356 end
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
357
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
358 local i = 0;
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
359 local iter = function()
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
360 i = i + 1;
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
361 return list[i];
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
362 end
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
363
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
364 return function()
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
365 local item = iter();
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
366 if item == nil then
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
367 if list.close then
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
368 list:close();
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
369 end
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
370 return
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
371 end
6143
44f77f4f653a mod_storage_metronome_readonly: Revert non-working is_muc hack, the correct with is "message<groupchat"
Link Mauve <linkmauve@linkmauve.fr>
parents: 6142
diff changeset
372 return item[1], item[2], item[3], "message<groupchat"
6142
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
373 end
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
374
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
375 else
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
376 return nil, "unsupported-store";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
377 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
378 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
379
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
380 function archive:get(username, wanted_key)
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
381 local iter, err = self:find(username, { key = wanted_key })
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
382 if not iter then return iter, err; end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
383 for key, stanza, when, with in iter do
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
384 if key == wanted_key then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
385 return stanza, when, with;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
386 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
387 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
388 return nil, "item-not-found";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
389 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
390
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
391 function archive:set(username, key, new_value, new_when, new_with) -- luacheck: ignore 212/self username key new_value new_when new_with
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
392 return nil, "unsupported-store";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
393 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
394
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
395 function archive:dates(username) -- luacheck: ignore 212/self username
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
396 return nil, "unsupported-store";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
397 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
398
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
399 function archive:summary(username, query) -- luacheck: ignore 212/self username query
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
400 return nil, "unsupported-store";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
401 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
402
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
403 function archive:users()
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
404 if self.store == "archive" then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
405 return datamanager.users(host, "archiving");
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
406 elseif self.store:sub(1, 4) == "pep_" then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
407 local wanted_node = self.store:sub(5);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
408 local iter, tbl = datamanager.users(host, "pep");
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
409 return function()
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
410 while true do
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
411 local user = iter(tbl);
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
412 if not user then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
413 return;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
414 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
415 local data = datamanager.load(user, host, "pep");
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
416 for _, node in ipairs(data["nodes"]) do
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
417 if node == wanted_node then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
418 return user;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
419 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
420 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
421 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
422 end;
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
423 elseif self.store == "offline" then
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
424 return datamanager.users(host, self.store, "list");
6137
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
425 elseif self.store == "uploads" then
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
426 local done = false;
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
427 return function()
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
428 if not done then
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
429 done = true;
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
430 return "";
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
431 end
11650fe276c0 mod_storage_metronome_readonly: Add support for migrating to mod_http_file_share
Link Mauve <linkmauve@linkmauve.fr>
parents: 6119
diff changeset
432 end;
6142
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
433 elseif self.store == "muc_log" then
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
434 local iter, tbl = pairs(datamanager.load(nil, host, "persistent"));
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
435 local jid = nil;
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
436 return function()
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
437 jid = iter(tbl, jid);
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
438 if not jid then
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
439 return;
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
440 end
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
441 local user = jid:gsub("@.*", "");
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
442 return user;
ec0e9d4f2275 mod_storage_metronome_readonly: Add support for mod_muc_mam storage
Link Mauve <linkmauve@linkmauve.fr>
parents: 6141
diff changeset
443 end;
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
444 else
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
445 return nil, "unsupported-store";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
446 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
447 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
448
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
449 function archive:trim(username, to_when) -- luacheck: ignore 212/self username to_when
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
450 return nil, "unsupported-store";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
451 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
452
6141
dcd16e349a7a mod_storage_metronome_readonly: Fix luacheck warnings
Link Mauve <linkmauve@linkmauve.fr>
parents: 6138
diff changeset
453 function archive:delete(username, query) -- luacheck: ignore 212/self username query
6119
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
454 return nil, "unsupported-store";
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
455 end
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
456
6ba0489e4828 mod_storage_metronome_readonly: New module for migrating off Metronome
Link Mauve <linkmauve@linkmauve.fr>
parents:
diff changeset
457 module:provides("storage", driver);