annotate mod_private_adhoc/mod_private_adhoc.lua @ 4974:807007913f67

mod_log_json: Prefer native Lua table.pack over Prosody util.table one Prosody is removing support for Lua 5.1, which was the reason for util.table.pack to exist in the first place, since Lua 5.2+ provides table.pack. In prosody rev 5eaf77114fdb everything was switched over to use table.pack, opening the door for removing util.table.pack at some point. This change here is to prepare for that future eventuality.
author Kim Alvefur <zash@zash.se>
date Mon, 11 Jul 2022 20:08:41 +0200
parents deb79c2357bb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1461
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
1 -- Prosody IM
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
2 -- Copyright (C) 2008-2010 Matthew Wild
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
3 -- Copyright (C) 2008-2010 Waqas Hussain
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
4 --
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
5 -- This project is MIT/X11 licensed. Please see the
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
6 -- COPYING file in the source package for more information.
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
7 --
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
8
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
9 -- Module by Thomas Raschbacher 2014
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
10 -- lordvan@lordvan.com
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
11
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
12 module:depends"adhoc";
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
13 local dataforms_new = require "util.dataforms".new;
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
14 local st = require "util.stanza";
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
15 local jid_split = require "util.jid".split;
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
16
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
17 local private_storage = module:open_store("private");
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
18
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
19 local private_adhoc_result_layout = dataforms_new{
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
20 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
21 { name = "privatexmldata", type = "text-multi", label = "Private XML data" };
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
22 };
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
23
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
24
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
25 function private_adhoc_command_handler (self, data, state)
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
26 local username, hostname = jid_split(data.from);
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
27 local data, err = private_storage:get(username);
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
28 local dataString = "";
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
29 if not data then
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
30 dataString = "No data found.";
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
31 if err then dataString = dataString..err end;
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
32 else
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
33 for key,value in pairs(data) do
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
34 dataString = dataString..tostring(st.deserialize(value)):gsub("><",">\n<")
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
35 dataString = dataString.."\n\n";
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
36 end
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
37 end
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
38 return { status = "completed", result= { layout = private_adhoc_result_layout, values = {privatexmldata=dataString.."\n"}} };
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
39 end
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
40
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
41 local adhoc_new = module:require "adhoc".new;
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
42 local descriptor = adhoc_new("Query private data", "private_adhoc", private_adhoc_command_handler, "local_user");
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
43 module:add_item ("adhoc", descriptor);
deb79c2357bb mod_private_adhoc: initial commit of new module
Thomas Raschbacher <lordvan@lordvan.com>
parents:
diff changeset
44