Software /
code /
prosody-modules
Annotate
mod_private_adhoc/mod_private_adhoc.lua @ 4047:36b6e3e3f9e2
mod_conversejs: Disable automatic BOSH/WS endpoint discovery
Converse.js 7.0 will enable this by default, but when using this module
the BOSH and WebSocket endpoints are provided in the generated HTML, so
automatic discovery is not needed and unlikely to work without an
additional module.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 18 Jun 2020 15:24:34 +0200 |
parent | 1461:deb79c2357bb |
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 |