Mercurial > prosody-modules
annotate mod_private_adhoc/mod_private_adhoc.lua @ 5448:9d542e86e19a
mod_http_oauth2: Allow requesting a subset of scopes on token refresh
This enables clients to request access tokens with fewer permissions
than the grant they were given, reducing impact of token leak. Clients
could e.g. request access tokens with some privileges and immediately
revoke them after use, or other strategies.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 11 May 2023 21:40:09 +0200 |
| parents | deb79c2357bb |
| children |
| 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 |
