Mercurial > prosody-modules
annotate mod_http_admin_api/mod_http_admin_api.lua @ 6461:2cf397983c16
delete both remnants of mod_bookmark that only point to the prosody modules
| author | Menel <menel@snikket.de> |
|---|---|
| date | Fri, 13 Mar 2026 12:28:20 +0100 |
| parents | 1fc38a840baa |
| children |
| rev | line source |
|---|---|
|
4345
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
1 local usermanager = require "core.usermanager"; |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
2 |
|
5784
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
3 local array = require "util.array"; |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
4 local it = require "util.iterators"; |
|
5284
5178c13deb78
mod_http_admin_api: Fix missing import
Kim Alvefur <zash@zash.se>
parents:
5283
diff
changeset
|
5 local jid = require "util.jid"; |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 local json = require "util.json"; |
|
5784
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
7 local set = require "util.set"; |
|
4516
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
8 local st = require "util.stanza"; |
|
4576
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
9 local statsmanager = require "core.statsmanager"; |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 module:depends("http"); |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 |
|
4576
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
13 local announce = module:depends("announce"); |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 local invites = module:depends("invites"); |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 local tokens = module:depends("tokenauth"); |
|
4345
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
16 local mod_pep = module:depends("pep"); |
|
4382
0d6b69777bc1
mod_http_admin_api: port to use new mod_groups_internal module
Jonas Schäfer <jonas@wielicki.name>
parents:
4378
diff
changeset
|
17 local mod_groups = module:depends("groups_internal"); |
|
6236
4b52d579bc70
mod_http_admin_api: Switch from mod_lastlog2 to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
5895
diff
changeset
|
18 local mod_account_activity = module:depends("account_activity"); |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 |
|
4363
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
20 local push_errors = module:shared("cloud_notify/push_errors"); |
|
4352
f6da234b21b8
mod_http_admin_api: Add groups property to users
Matthew Wild <mwild1@gmail.com>
parents:
4351
diff
changeset
|
21 |
|
4371
3d01bc4547b2
mod_http_admin_api: Add /server/info endpoint for site_name and version
Matthew Wild <mwild1@gmail.com>
parents:
4369
diff
changeset
|
22 local site_name = module:get_option_string("site_name", module.host); |
|
3d01bc4547b2
mod_http_admin_api: Add /server/info endpoint for site_name and version
Matthew Wild <mwild1@gmail.com>
parents:
4369
diff
changeset
|
23 |
|
4776
13e913471b75
mod_http_admin_api: Ensure freshness of metrics when in manual mode
Kim Alvefur <zash@zash.se>
parents:
4714
diff
changeset
|
24 local manual_stats_collection = module:context("*"):get_option("statistics_interval") == "manual"; |
|
13e913471b75
mod_http_admin_api: Ensure freshness of metrics when in manual mode
Kim Alvefur <zash@zash.se>
parents:
4714
diff
changeset
|
25 |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 local json_content_type = "application/json"; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 local www_authenticate_header = ("Bearer realm=%q"):format(module.host.."/"..module.name); |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 |
|
4516
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
30 local xmlns_pubsub = "http://jabber.org/protocol/pubsub"; |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
31 local xmlns_nick = "http://jabber.org/protocol/nick"; |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
32 |
|
5779
6ab9e1763f35
mod_http_admin_api: Include information about pending deletion request, if any
Matthew Wild <mwild1@gmail.com>
parents:
5775
diff
changeset
|
33 local deleted_users = module:open_store("accounts_cleanup"); |
|
6ab9e1763f35
mod_http_admin_api: Include information about pending deletion request, if any
Matthew Wild <mwild1@gmail.com>
parents:
5775
diff
changeset
|
34 |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
35 local errors = require "util.error".init(module.name, "https://prosody.im/protocol/errors", { |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
36 ["feature-not-implemented"] = { "cancel", "feature-not-implemented", "Feature not implemented" }; |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
37 ["unknown-invite-type"] = { "cancel", "bad-request", "Unknown invitation type" }; |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
38 ["invite-creation-failed"] = { "cancel", "internal-server-error", "Failed to create invitation" }; |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
39 ["invalid-json"] = { "modify", "bad-request", "Invalid JSON submitted" }; |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
40 ["user-not-found"] = { "cancel", "item-not-found", "User not found", "user-not-found" }; |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
41 |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
42 -- From mod_groups_internal |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
43 ["group-name-required"] = { "modify", "bad-request", "Group name required", "group-name-required" }; |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
44 ["group-not-found"] = { "cancel", "item-not-found", "Group not found", "group-not-found" }; |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
45 |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
46 -- Generic |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
47 ["conflict"] = { "cancel", "conflict", "Resource already exists" }; |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
48 ["internal-server-error"] = { "wait", "internal-server-error", "Internal server error" }; |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
49 ["service-unavailable"] = { "cancel", "service-unavailable", "Unable to perform the requested action" }; |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
50 ["bad-request"] = { "cancel", "bad-request", "Invalid request" }; |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
51 }); |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
52 |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
53 local function check_credentials(request) |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 local auth_type, auth_data = string.match(request.headers.authorization or "", "^(%S+)%s(.+)$"); |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
55 if not (auth_type and auth_data) then |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
56 return false; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
57 end |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
58 |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
59 if auth_type == "Bearer" then |
|
4997
1b5869c34026
mod_http_admin_api: Updates for new role auth API in Prosody (trunk/0.13 only)
Matthew Wild <mwild1@gmail.com>
parents:
4956
diff
changeset
|
60 return tokens.get_token_session(auth_data); |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
61 end |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
62 return nil; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
63 end |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
64 |
|
4997
1b5869c34026
mod_http_admin_api: Updates for new role auth API in Prosody (trunk/0.13 only)
Matthew Wild <mwild1@gmail.com>
parents:
4956
diff
changeset
|
65 module:default_permission("prosody:admin", ":access-admin-api"); |
|
1b5869c34026
mod_http_admin_api: Updates for new role auth API in Prosody (trunk/0.13 only)
Matthew Wild <mwild1@gmail.com>
parents:
4956
diff
changeset
|
66 |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
67 function check_auth(routes) |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
68 local function check_request_auth(event) |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
69 local session = check_credentials(event.request); |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
70 if not session then |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
71 event.response.headers.authorization = www_authenticate_header; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
72 return false, 401; |
|
4997
1b5869c34026
mod_http_admin_api: Updates for new role auth API in Prosody (trunk/0.13 only)
Matthew Wild <mwild1@gmail.com>
parents:
4956
diff
changeset
|
73 end |
|
5283
cc89c97befe7
mod_http_admin_api: Tweak token session to please module:may()
Kim Alvefur <zash@zash.se>
parents:
5005
diff
changeset
|
74 -- FIXME this should probably live in mod_tokenauth or similar |
|
cc89c97befe7
mod_http_admin_api: Tweak token session to please module:may()
Kim Alvefur <zash@zash.se>
parents:
5005
diff
changeset
|
75 session.type = "c2s"; |
|
cc89c97befe7
mod_http_admin_api: Tweak token session to please module:may()
Kim Alvefur <zash@zash.se>
parents:
5005
diff
changeset
|
76 session.full_jid = jid.join(session.username, session.host, session.resource); |
|
4997
1b5869c34026
mod_http_admin_api: Updates for new role auth API in Prosody (trunk/0.13 only)
Matthew Wild <mwild1@gmail.com>
parents:
4956
diff
changeset
|
77 event.session = session; |
|
1b5869c34026
mod_http_admin_api: Updates for new role auth API in Prosody (trunk/0.13 only)
Matthew Wild <mwild1@gmail.com>
parents:
4956
diff
changeset
|
78 if not module:may(":access-admin-api", event) then |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
79 return false, 403; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
80 end |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
81 return true; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
82 end |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
83 |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
84 for route, handler in pairs(routes) do |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
85 routes[route] = function (event, ...) |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
86 local permit, code = check_request_auth(event); |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
87 if not permit then |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
88 return code; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
89 end |
|
6332
1fc38a840baa
mod_http_admin_api: Pass util.error object as response when request fails
Matthew Wild <mwild1@gmail.com>
parents:
6331
diff
changeset
|
90 local ret, err = errors.coerce(handler(event, ...)); |
|
1fc38a840baa
mod_http_admin_api: Pass util.error object as response when request fails
Matthew Wild <mwild1@gmail.com>
parents:
6331
diff
changeset
|
91 return ret or err; |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
92 end; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
93 end |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
94 return routes; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
95 end |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
96 |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
97 local function token_info_to_invite_info(token_info) |
|
4349
5ca36c36ab05
mod_http_admin_api: Expose new invite properties: groups, source and reusable
Matthew Wild <mwild1@gmail.com>
parents:
4345
diff
changeset
|
98 local additional_data = token_info.additional_data; |
|
5ca36c36ab05
mod_http_admin_api: Expose new invite properties: groups, source and reusable
Matthew Wild <mwild1@gmail.com>
parents:
4345
diff
changeset
|
99 local groups = additional_data and additional_data.groups or nil; |
|
5888
432efc39572f
mod_http_admin_api: Return roles for existing invites, if any
Matthew Wild <mwild1@gmail.com>
parents:
5887
diff
changeset
|
100 local roles = additional_data and additional_data.roles or nil; |
|
4349
5ca36c36ab05
mod_http_admin_api: Expose new invite properties: groups, source and reusable
Matthew Wild <mwild1@gmail.com>
parents:
4345
diff
changeset
|
101 local source = additional_data and additional_data.source or nil; |
|
5895
095030677ae6
mod_http_admin_api: Support storing free-form text note with invitations
Matthew Wild <mwild1@gmail.com>
parents:
5891
diff
changeset
|
102 local note = additional_data and additional_data.note or nil; |
|
4378
d4e0e4d22fc7
mod_http_admin_api: Add 'reset' property to returned invite objects
Matthew Wild <mwild1@gmail.com>
parents:
4375
diff
changeset
|
103 local reset = not not (additional_data and additional_data.allow_reset or nil); |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
104 return { |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
105 id = token_info.token; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
106 type = token_info.type; |
|
4358
d3e0fe470877
mod_http_admin_api: Ensure 'reusable' flag is always present on an invite
Matthew Wild <mwild1@gmail.com>
parents:
4357
diff
changeset
|
107 reusable = not not token_info.reusable; |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
108 inviter = token_info.inviter; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
109 jid = token_info.jid; |
|
4354
d61d7d30f38d
mod_http_admin_api: Add XMPP URI into invite objects
Matthew Wild <mwild1@gmail.com>
parents:
4353
diff
changeset
|
110 uri = token_info.uri; |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
111 landing_page = token_info.landing_page; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
112 created_at = token_info.created_at; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
113 expires = token_info.expires; |
|
4349
5ca36c36ab05
mod_http_admin_api: Expose new invite properties: groups, source and reusable
Matthew Wild <mwild1@gmail.com>
parents:
4345
diff
changeset
|
114 groups = groups; |
|
5888
432efc39572f
mod_http_admin_api: Return roles for existing invites, if any
Matthew Wild <mwild1@gmail.com>
parents:
5887
diff
changeset
|
115 roles = roles; |
|
4349
5ca36c36ab05
mod_http_admin_api: Expose new invite properties: groups, source and reusable
Matthew Wild <mwild1@gmail.com>
parents:
4345
diff
changeset
|
116 source = source; |
|
4378
d4e0e4d22fc7
mod_http_admin_api: Add 'reset' property to returned invite objects
Matthew Wild <mwild1@gmail.com>
parents:
4375
diff
changeset
|
117 reset = reset; |
|
5895
095030677ae6
mod_http_admin_api: Support storing free-form text note with invitations
Matthew Wild <mwild1@gmail.com>
parents:
5891
diff
changeset
|
118 note = note; |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
119 }; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
120 end |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
121 |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
122 function list_invites(event) |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
123 local invites_list = {}; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
124 for token, invite in invites.pending_account_invites() do --luacheck: ignore 213/token |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
125 table.insert(invites_list, token_info_to_invite_info(invite)); |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
126 end |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
127 table.sort(invites_list, function (a, b) |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
128 return a.created_at < b.created_at; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
129 end); |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
130 |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
131 event.response.headers["Content-Type"] = json_content_type; |
|
4350
270025e76bf8
mod_http_admin_api: Use json.encode_array() when returning an array
Matthew Wild <mwild1@gmail.com>
parents:
4349
diff
changeset
|
132 return json.encode_array(invites_list); |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
133 end |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
134 |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
135 function get_invite_by_id(event, invite_id) |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
136 local invite = invites.get_account_invite_info(invite_id); |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
137 if not invite then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
138 return nil, "item-not-found"; |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
139 end |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
140 |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
141 event.response.headers["Content-Type"] = json_content_type; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
142 return json.encode(token_info_to_invite_info(invite)); |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
143 end |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
144 |
|
4374
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
145 function create_invite_type(event, invite_type) |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
146 local options; |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
147 |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
148 local request = event.request; |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
149 if request.body and #request.body > 0 then |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
150 if request.headers.content_type ~= json_content_type then |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
151 module:log("warn", "Invalid content type"); |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
152 return nil, "invalid-json"; |
|
4374
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
153 end |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
154 options = json.decode(event.request.body); |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
155 if not options then |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
156 module:log("warn", "Invalid JSON"); |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
157 return nil, "invalid-json"; |
|
4374
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
158 end |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
159 else |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
160 options = {}; |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
161 end |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
162 |
|
4396
de55e1475808
mod_http_admin_api: re-add information about invite creator
Jonas Schäfer <jonas@wielicki.name>
parents:
4393
diff
changeset
|
163 local source = event.session.username .. "@" .. module.host .. "/admin_api"; |
|
de55e1475808
mod_http_admin_api: re-add information about invite creator
Jonas Schäfer <jonas@wielicki.name>
parents:
4393
diff
changeset
|
164 |
|
4374
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
165 local invite; |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
166 if invite_type == "reset" then |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
167 if not options.username then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
168 return nil, "bad-request"; |
|
4374
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
169 end |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
170 invite = invites.create_account_reset(options.username, options.ttl); |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
171 elseif invite_type == "group" then |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
172 if not options.groups then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
173 return nil, "bad-request"; |
|
4374
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
174 end |
|
4396
de55e1475808
mod_http_admin_api: re-add information about invite creator
Jonas Schäfer <jonas@wielicki.name>
parents:
4393
diff
changeset
|
175 invite = invites.create_group(options.groups, { |
|
de55e1475808
mod_http_admin_api: re-add information about invite creator
Jonas Schäfer <jonas@wielicki.name>
parents:
4393
diff
changeset
|
176 source = source; |
|
5887
2aa66e928aa0
mod_http_admin_api: Allow specifying roles for invitations
Matthew Wild <mwild1@gmail.com>
parents:
5883
diff
changeset
|
177 roles = options.roles; |
|
5895
095030677ae6
mod_http_admin_api: Support storing free-form text note with invitations
Matthew Wild <mwild1@gmail.com>
parents:
5891
diff
changeset
|
178 note = options.note; |
|
4396
de55e1475808
mod_http_admin_api: re-add information about invite creator
Jonas Schäfer <jonas@wielicki.name>
parents:
4393
diff
changeset
|
179 }, options.ttl); |
|
4374
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
180 elseif invite_type == "account" then |
|
4375
03cf0d41b272
mod_http_admin_api: Allow specifying groups in account invite
Matthew Wild <mwild1@gmail.com>
parents:
4374
diff
changeset
|
181 invite = invites.create_account(options.username, { |
|
4396
de55e1475808
mod_http_admin_api: re-add information about invite creator
Jonas Schäfer <jonas@wielicki.name>
parents:
4393
diff
changeset
|
182 source = source; |
|
4375
03cf0d41b272
mod_http_admin_api: Allow specifying groups in account invite
Matthew Wild <mwild1@gmail.com>
parents:
4374
diff
changeset
|
183 groups = options.groups; |
|
5887
2aa66e928aa0
mod_http_admin_api: Allow specifying roles for invitations
Matthew Wild <mwild1@gmail.com>
parents:
5883
diff
changeset
|
184 roles = options.roles; |
|
5895
095030677ae6
mod_http_admin_api: Support storing free-form text note with invitations
Matthew Wild <mwild1@gmail.com>
parents:
5891
diff
changeset
|
185 note = options.note; |
|
4375
03cf0d41b272
mod_http_admin_api: Allow specifying groups in account invite
Matthew Wild <mwild1@gmail.com>
parents:
4374
diff
changeset
|
186 }, options.ttl); |
|
4374
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
187 else |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
188 return nil, "unknown-invite-type"; |
|
4374
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
189 end |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
190 if not invite then |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
191 return nil, "invite-creation-failed"; |
|
4374
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
192 end |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
193 event.response.headers["Content-Type"] = json_content_type; |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
194 return json.encode(token_info_to_invite_info(invite)); |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
195 end |
|
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
196 |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
197 function delete_invite(event, invite_id) --luacheck: ignore 212/event |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
198 local ok, err = invites.delete_account_invite(invite_id); |
|
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
199 if not ok then |
|
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
200 return nil, err; |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
201 end |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
202 return 200; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
203 end |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
204 |
|
5781
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
205 local function get_user_avatar_info(username) |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
206 local pep_service = mod_pep.get_pep_service(username); |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
207 local ok, _, avatar_item = pep_service:get_last_item("urn:xmpp:avatar:metadata", true); |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
208 avatar_item = avatar_item and avatar_item:get_child("metadata", "urn:xmpp:avatar:metadata"); |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
209 if not ok or not avatar_item then return; end |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
210 |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
211 local avatar_info = {}; |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
212 |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
213 for avatar in avatar_item:childtags("info") do |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
214 table.insert(avatar_info, { |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
215 bytes = tonumber(avatar.attr.bytes); |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
216 hash = avatar.attr.id; |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
217 type = avatar.attr.type; |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
218 width = tonumber(avatar.attr.width); |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
219 height = tonumber(avatar.attr.height); |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
220 }); |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
221 end |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
222 |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
223 return avatar_info; |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
224 end |
|
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
225 |
|
4345
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
226 local function get_user_info(username) |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
227 if not usermanager.user_exists(username, module.host) then |
|
6331
6a3b38051d74
mod_http_admin_api: get_user_info: Fix missing error return
Matthew Wild <mwild1@gmail.com>
parents:
6330
diff
changeset
|
228 return nil, "user-not-found"; |
|
4345
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
229 end |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
230 local display_name; |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
231 do |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
232 local pep_service = mod_pep.get_pep_service(username); |
|
4516
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
233 local ok, _, nick_item = pep_service:get_last_item(xmlns_nick, true); |
|
4345
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
234 if ok and nick_item then |
|
4516
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
235 display_name = nick_item:get_child_text("nick", xmlns_nick); |
|
4345
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
236 end |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
237 end |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
238 |
|
5005
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
239 local primary_role, secondary_roles, legacy_roles; |
|
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
240 if usermanager.get_user_role then |
|
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
241 primary_role = usermanager.get_user_role(username, module.host); |
|
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
242 secondary_roles = array.collect(it.keys(usermanager.get_user_secondary_roles(username, module.host))); |
|
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
243 elseif usermanager.get_user_roles then -- COMPAT w/0.12 |
|
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
244 legacy_roles = array(); |
|
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
245 local roles_map = usermanager.get_user_roles(username, module.host); |
|
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
246 for role_name in pairs(roles_map) do |
|
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
247 legacy_roles:push(role_name); |
|
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
248 end |
|
4517
d6a3201a65c0
mod_http_admin_api: support for updating user roles via the API
Jonas Schäfer <jonas@wielicki.name>
parents:
4516
diff
changeset
|
249 end |
|
d6a3201a65c0
mod_http_admin_api: support for updating user roles via the API
Jonas Schäfer <jonas@wielicki.name>
parents:
4516
diff
changeset
|
250 |
|
5775
4c3216d9b118
mod_http_admin_api: Include user account status and activity in get_user_info
Matthew Wild <mwild1@gmail.com>
parents:
5687
diff
changeset
|
251 local enabled = true; -- Assume all enabled if on a version without is_enabled |
|
4c3216d9b118
mod_http_admin_api: Include user account status and activity in get_user_info
Matthew Wild <mwild1@gmail.com>
parents:
5687
diff
changeset
|
252 if usermanager.user_is_enabled then |
|
4c3216d9b118
mod_http_admin_api: Include user account status and activity in get_user_info
Matthew Wild <mwild1@gmail.com>
parents:
5687
diff
changeset
|
253 enabled = usermanager.user_is_enabled(username, module.host); |
|
4c3216d9b118
mod_http_admin_api: Include user account status and activity in get_user_info
Matthew Wild <mwild1@gmail.com>
parents:
5687
diff
changeset
|
254 end |
|
4c3216d9b118
mod_http_admin_api: Include user account status and activity in get_user_info
Matthew Wild <mwild1@gmail.com>
parents:
5687
diff
changeset
|
255 |
|
4362
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
256 return { |
|
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
257 username = username; |
|
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
258 display_name = display_name; |
|
5005
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
259 role = primary_role and primary_role.name or nil; |
|
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
260 secondary_roles = secondary_roles; |
|
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
261 roles = legacy_roles; -- COMPAT w/0.12 |
|
5775
4c3216d9b118
mod_http_admin_api: Include user account status and activity in get_user_info
Matthew Wild <mwild1@gmail.com>
parents:
5687
diff
changeset
|
262 enabled = enabled; |
|
6236
4b52d579bc70
mod_http_admin_api: Switch from mod_lastlog2 to mod_account_activity
Matthew Wild <mwild1@gmail.com>
parents:
5895
diff
changeset
|
263 last_active = mod_account_activity.get_last_active(username); |
|
5782
5621dece3ee4
mod_http_admin_api: Only include user deletion_request if account is disabled
Matthew Wild <mwild1@gmail.com>
parents:
5781
diff
changeset
|
264 deletion_request = not enabled and deleted_users:get(username) or nil; |
|
5781
cb25d341745f
mod_http_admin_api: Return avatar metadata from get_user_info()
Matthew Wild <mwild1@gmail.com>
parents:
5779
diff
changeset
|
265 avatar_info = get_user_avatar_info(username); |
|
4362
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
266 }; |
|
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
267 end |
|
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
268 |
|
4363
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
269 local function get_session_debug_info(session) |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
270 local info = { |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
271 full_jid = session.full_jid; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
272 ip = session.ip; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
273 since = math.floor(session.conntime); |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
274 status = { |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
275 connected = not not session.conn; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
276 hibernating = not not session.hibernating; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
277 }; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
278 features = { |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
279 carbons = not not session.want_carbons; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
280 encrypted = not not session.secure; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
281 acks = not not session.smacks; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
282 resumption = not not session.resumption_token; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
283 mobile_optimization = not not session.csi_counter; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
284 push_notifications = not not session.push_identifier; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
285 history = not not session.mam_requested; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
286 }; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
287 queues = {}; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
288 }; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
289 -- CSI |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
290 if session.state then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
291 info.status.active = session.state == "active"; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
292 info.queues.held_stanzas = session.csi_counter or 0; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
293 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
294 -- Smacks queue |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
295 if session.last_requested_h and session.last_acknowledged_stanza then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
296 info.queues.awaiting_acks = session.last_requested_h - session.last_acknowledged_stanza; |
|
4956
65870d42a7b1
mod_http_admin_api: Update for 0.12 changes to mod_smacks
Kim Alvefur <zash@zash.se>
parents:
4925
diff
changeset
|
297 elseif session.outgoing_stanza_queue then |
|
65870d42a7b1
mod_http_admin_api: Update for 0.12 changes to mod_smacks
Kim Alvefur <zash@zash.se>
parents:
4925
diff
changeset
|
298 -- New mod_smacks |
|
65870d42a7b1
mod_http_admin_api: Update for 0.12 changes to mod_smacks
Kim Alvefur <zash@zash.se>
parents:
4925
diff
changeset
|
299 info.queues.awaiting_acks = session.outgoing_stanza_queue:count_unacked(); |
|
4363
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
300 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
301 if session.push_identifier then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
302 info.push_info = { |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
303 id = session.push_identifier; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
304 wakeup_push_sent = session.first_hibernated_push; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
305 }; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
306 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
307 return info; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
308 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
309 |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
310 local function get_user_omemo_info(username) |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
311 local everything_valid = true; |
|
4366
83370df0ce4a
mod_http_admin_api: do not report OMEMO as ok if no devices exist
Jonas Schäfer <jonas@wielicki.name>
parents:
4365
diff
changeset
|
312 local any_device = false; |
|
4363
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
313 local omemo_status = {}; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
314 local omemo_devices; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
315 local pep_service = mod_pep.get_pep_service(username); |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
316 if pep_service and pep_service.nodes then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
317 local ok, _, device_list = pep_service:get_last_item("eu.siacs.conversations.axolotl.devicelist", true); |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
318 if ok and device_list then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
319 device_list = device_list:get_child("list", "eu.siacs.conversations.axolotl"); |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
320 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
321 if device_list then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
322 omemo_devices = {}; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
323 for device_entry in device_list:childtags("device") do |
|
4366
83370df0ce4a
mod_http_admin_api: do not report OMEMO as ok if no devices exist
Jonas Schäfer <jonas@wielicki.name>
parents:
4365
diff
changeset
|
324 any_device = true; |
|
4363
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
325 local device_info = {}; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
326 local device_id = tonumber(device_entry.attr.id or ""); |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
327 if device_id then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
328 device_info.id = device_id; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
329 local bundle_id = ("eu.siacs.conversations.axolotl.bundles:%d"):format(device_id); |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
330 local have_bundle, _, bundle = pep_service:get_last_item(bundle_id, true); |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
331 if have_bundle and bundle and bundle:get_child("bundle", "eu.siacs.conversations.axolotl") then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
332 device_info.have_bundle = true; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
333 local config_ok, bundle_config = pep_service:get_node_config(bundle_id, true); |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
334 if config_ok and bundle_config then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
335 device_info.bundle_config = bundle_config; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
336 if bundle_config.max_items == 1 |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
337 and bundle_config.access_model == "open" |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
338 and bundle_config.persist_items == true |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
339 and bundle_config.publish_model == "publishers" then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
340 device_info.valid = true; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
341 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
342 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
343 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
344 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
345 if device_info.valid == nil then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
346 device_info.valid = false; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
347 everything_valid = false; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
348 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
349 table.insert(omemo_devices, device_info); |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
350 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
351 |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
352 local config_ok, list_config = pep_service:get_node_config("eu.siacs.conversations.axolotl.devicelist", true); |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
353 if config_ok and list_config then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
354 omemo_status.config = list_config; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
355 if list_config.max_items == 1 |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
356 and list_config.access_model == "open" |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
357 and list_config.persist_items == true |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
358 and list_config.publish_model == "publishers" then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
359 omemo_status.config_valid = true; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
360 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
361 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
362 if omemo_status.config_valid == nil then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
363 omemo_status.config_valid = false; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
364 everything_valid = false; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
365 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
366 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
367 end |
|
4366
83370df0ce4a
mod_http_admin_api: do not report OMEMO as ok if no devices exist
Jonas Schäfer <jonas@wielicki.name>
parents:
4365
diff
changeset
|
368 omemo_status.valid = everything_valid and any_device; |
|
4363
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
369 return { |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
370 status = omemo_status; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
371 devices = omemo_devices; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
372 }; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
373 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
374 |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
375 local function get_user_debug_info(username) |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
376 local debug_info = { |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
377 time = os.time(); |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
378 }; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
379 -- Online sessions |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
380 do |
|
5005
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
381 local user_sessions = prosody.hosts[module.host].sessions[username]; |
|
4365
f975a4d31f35
mod_http_admin_api: make the api a bit less untested
Jonas Schäfer <jonas@wielicki.name>
parents:
4364
diff
changeset
|
382 if user_sessions then |
|
f975a4d31f35
mod_http_admin_api: make the api a bit less untested
Jonas Schäfer <jonas@wielicki.name>
parents:
4364
diff
changeset
|
383 user_sessions = user_sessions.sessions |
|
f975a4d31f35
mod_http_admin_api: make the api a bit less untested
Jonas Schäfer <jonas@wielicki.name>
parents:
4364
diff
changeset
|
384 end |
|
4363
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
385 local sessions = {}; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
386 if user_sessions then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
387 for _, session in pairs(user_sessions) do |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
388 table.insert(sessions, get_session_debug_info(session)); |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
389 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
390 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
391 debug_info.sessions = sessions; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
392 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
393 -- Push registrations |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
394 do |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
395 local store = module:open_store("cloud_notify"); |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
396 local services = store:get(username); |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
397 local push_registrations = {}; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
398 if services then |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
399 for identifier, push_info in pairs(services) do |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
400 push_registrations[identifier] = { |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
401 since = push_info.timestamp; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
402 service = push_info.jid; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
403 node = push_info.node; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
404 error_count = push_errors[identifier] or 0; |
|
4924
55e3ca6bdfd1
mod_http_admin_api: Fix client -> client_id (the actual field name)
Matthew Wild <mwild1@gmail.com>
parents:
4777
diff
changeset
|
405 client_id = push_info.client_id; |
|
4925
404a22d52376
mod_http_admin_api: Indicate whether a given push registration uses encryption
Matthew Wild <mwild1@gmail.com>
parents:
4924
diff
changeset
|
406 encryption = not not push_info.encryption; |
|
4363
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
407 }; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
408 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
409 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
410 debug_info.push_registrations = push_registrations; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
411 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
412 -- OMEMO |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
413 debug_info.omemo = get_user_omemo_info(username); |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
414 |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
415 return debug_info; |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
416 end |
|
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
417 |
|
4345
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
418 function list_users(event) |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
419 local user_list = {}; |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
420 for username in usermanager.users(module.host) do |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
421 table.insert(user_list, get_user_info(username)); |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
422 end |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
423 |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
424 event.response.headers["Content-Type"] = json_content_type; |
|
4350
270025e76bf8
mod_http_admin_api: Use json.encode_array() when returning an array
Matthew Wild <mwild1@gmail.com>
parents:
4349
diff
changeset
|
425 return json.encode_array(user_list); |
|
4345
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
426 end |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
427 |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
428 function get_user_by_name(event, username) |
|
4362
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
429 local property |
|
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
430 do |
|
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
431 local name, sub_path = username:match("^([^/]+)/(%w+)$"); |
|
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
432 if name then |
|
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
433 username = name; |
|
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
434 property = sub_path; |
|
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
435 end |
|
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
436 end |
|
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
437 |
|
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
438 if property == "groups" then |
|
4364
49cf9d188b26
mod_http_admin_api: set content-type for debug API
Jonas Schäfer <jonas@wielicki.name>
parents:
4363
diff
changeset
|
439 event.response.headers["Content-Type"] = json_content_type; |
|
4382
0d6b69777bc1
mod_http_admin_api: port to use new mod_groups_internal module
Jonas Schäfer <jonas@wielicki.name>
parents:
4378
diff
changeset
|
440 return json.encode(mod_groups.get_user_groups(username)); |
|
4363
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
441 elseif property == "debug" then |
|
4364
49cf9d188b26
mod_http_admin_api: set content-type for debug API
Jonas Schäfer <jonas@wielicki.name>
parents:
4363
diff
changeset
|
442 event.response.headers["Content-Type"] = json_content_type; |
|
4363
636d56bbad97
mod_http_admin_api: 100% untested user debug info endpoint
Matthew Wild <mwild1@gmail.com>
parents:
4362
diff
changeset
|
443 return json.encode(get_user_debug_info(username)); |
|
4362
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
444 end |
|
116c88c28532
mod_http_admin_api: restructure group-related info in API
Jonas Schäfer <jonas@wielicki.name>
parents:
4361
diff
changeset
|
445 |
|
4345
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
446 local user_info = get_user_info(username); |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
447 if not user_info then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
448 return nil, "user-not-found"; |
|
4345
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
449 end |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
450 |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
451 event.response.headers["Content-Type"] = json_content_type; |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
452 return json.encode(user_info); |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
453 end |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
454 |
|
5783
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
455 local user_attribute_writers = { |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
456 enabled = function (username, enabled) |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
457 local ok, err; |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
458 if enabled == true then |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
459 ok, err = usermanager.enable_user(username, module.host); |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
460 elseif enabled == false then |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
461 ok, err = usermanager.disable_user(username, module.host); |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
462 else |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
463 ok, err = nil, "Invalid value provided for 'enabled'"; |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
464 end |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
465 if not ok then |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
466 module:log("error", "Unable to %s user '%s': %s", enabled and "enable" or "disable", username, err); |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
467 return nil, err; |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
468 end |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
469 return true; |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
470 end; |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
471 }; |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
472 local writable_user_attributes = set.new(array.collect(it.keys(user_attribute_writers))); |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
473 |
|
5784
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
474 function patch_user(event, username) |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
475 if not username then return; end |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
476 |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
477 local current_user = get_user_info(username); |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
478 if not current_user then return nil, "user-not-found"; end |
|
5784
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
479 |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
480 local request = event.request; |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
481 if request.headers.content_type ~= json_content_type |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
482 or (not request.body or #request.body == 0) then |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
483 return nil, "invalid-json"; |
|
5784
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
484 end |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
485 local new_user = json.decode(event.request.body); |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
486 if not new_user then |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
487 return nil, "invalid-json"; |
|
5784
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
488 end |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
489 |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
490 local updated_attributes = set.new(array.collect(it.keys(new_user))); |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
491 if not (updated_attributes - writable_user_attributes):empty() then |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
492 module:log("warn", "Unable to service PATCH user request, unsupported attributes: %s", (updated_attributes - writable_user_attributes)); |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
493 return nil, "feature-not-implemented"; |
|
5784
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
494 end |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
495 |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
496 if new_user.enabled ~= nil and new_user.enabled ~= current_user.enabled then |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
497 local ok, err = user_attribute_writers.enabled(username, new_user.enabled); |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
498 if not ok then |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
499 return nil, err; |
|
5784
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
500 end |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
501 end |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
502 |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
503 return 200; |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
504 end |
|
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
505 |
|
4516
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
506 function update_user(event, username) |
|
5786
076b79eb747f
mod_http_admin_api: Abort request if no valid username
Matthew Wild <mwild1@gmail.com>
parents:
5785
diff
changeset
|
507 if not username then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
508 return nil, "bad-request"; |
|
5786
076b79eb747f
mod_http_admin_api: Abort request if no valid username
Matthew Wild <mwild1@gmail.com>
parents:
5785
diff
changeset
|
509 end |
|
4516
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
510 |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
511 local request = event.request; |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
512 if request.headers.content_type ~= json_content_type |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
513 or (not request.body or #request.body == 0) then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
514 return nil, "invalid-json"; |
|
4516
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
515 end |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
516 local new_user = json.decode(event.request.body); |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
517 if not new_user then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
518 return nil, "invalid-json"; |
|
4516
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
519 end |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
520 |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
521 if new_user.username and new_user.username ~= username then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
522 return nil, "bad-request"; -- Cannot change the username |
|
4516
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
523 end |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
524 |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
525 if new_user.display_name then |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
526 local pep_service = mod_pep.get_pep_service(username); |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
527 -- TODO: publish |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
528 local nick_item = st.stanza("item", { xmlns = xmlns_pubsub, id = "current" }) |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
529 :text_tag("nick", new_user.display_name, { xmlns = xmlns_nick }); |
|
5785
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
530 pep_service:publish(xmlns_nick, true, "current", nick_item, { |
|
4516
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
531 access_model = "open"; |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
532 _defaults_only = true; |
|
5785
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
533 }); |
|
4516
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
534 end |
|
4517
d6a3201a65c0
mod_http_admin_api: support for updating user roles via the API
Jonas Schäfer <jonas@wielicki.name>
parents:
4516
diff
changeset
|
535 |
|
5005
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
536 if new_user.role then |
|
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
537 if not usermanager.set_user_role then |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
538 return nil, "feature-not-implemented"; |
|
5005
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
539 end |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
540 local role, role_err = usermanager.set_user_role(username, module.host, new_user.role); |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
541 if not role then |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
542 module:log("error", "failed to set role %s for %s: ", new_user.role, username, role_err); |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
543 return nil, role_err; |
|
5005
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
544 end |
|
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
545 end |
|
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
546 |
|
d68348323406
mod_http_admin_api: Update for new new role API
Matthew Wild <mwild1@gmail.com>
parents:
4997
diff
changeset
|
547 if new_user.roles then -- COMPAT w/0.12 |
|
4997
1b5869c34026
mod_http_admin_api: Updates for new role auth API in Prosody (trunk/0.13 only)
Matthew Wild <mwild1@gmail.com>
parents:
4956
diff
changeset
|
548 if not usermanager.set_user_roles then |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
549 return nil, "feature-not-implemented"; |
|
4517
d6a3201a65c0
mod_http_admin_api: support for updating user roles via the API
Jonas Schäfer <jonas@wielicki.name>
parents:
4516
diff
changeset
|
550 end |
|
d6a3201a65c0
mod_http_admin_api: support for updating user roles via the API
Jonas Schäfer <jonas@wielicki.name>
parents:
4516
diff
changeset
|
551 |
|
d6a3201a65c0
mod_http_admin_api: support for updating user roles via the API
Jonas Schäfer <jonas@wielicki.name>
parents:
4516
diff
changeset
|
552 local backend_roles = {}; |
|
d6a3201a65c0
mod_http_admin_api: support for updating user roles via the API
Jonas Schäfer <jonas@wielicki.name>
parents:
4516
diff
changeset
|
553 for _, role in ipairs(new_user.roles) do |
|
d6a3201a65c0
mod_http_admin_api: support for updating user roles via the API
Jonas Schäfer <jonas@wielicki.name>
parents:
4516
diff
changeset
|
554 backend_roles[role] = true; |
|
d6a3201a65c0
mod_http_admin_api: support for updating user roles via the API
Jonas Schäfer <jonas@wielicki.name>
parents:
4516
diff
changeset
|
555 end |
|
5785
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
556 local user_jid = username.."@"..module.host; |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
557 local role, role_err = usermanager.set_user_roles(username, module.host, backend_roles); |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
558 if not role then |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
559 module:log("error", "failed to set roles %q for %s: %s", backend_roles, user_jid, role_err) |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
560 return nil, role_err; |
|
4517
d6a3201a65c0
mod_http_admin_api: support for updating user roles via the API
Jonas Schäfer <jonas@wielicki.name>
parents:
4516
diff
changeset
|
561 end |
|
d6a3201a65c0
mod_http_admin_api: support for updating user roles via the API
Jonas Schäfer <jonas@wielicki.name>
parents:
4516
diff
changeset
|
562 end |
|
d6a3201a65c0
mod_http_admin_api: support for updating user roles via the API
Jonas Schäfer <jonas@wielicki.name>
parents:
4516
diff
changeset
|
563 |
|
5783
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
564 if new_user.enabled ~= nil then |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
565 local ok, err = user_attribute_writers.enabled(username, new_user.enabled); |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
566 if not ok then |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
567 return nil, err; |
|
5783
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
568 end |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
569 end |
|
6c8cf3ecb885
mod_http_admin_api: Support for setting user account enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5782
diff
changeset
|
570 |
|
4516
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
571 return 200; |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
572 end |
|
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
573 |
|
4345
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
574 function delete_user(event, username) --luacheck: ignore 212/event |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
575 local ok, err = usermanager.delete_user(username, module.host); |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
576 if not ok then |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
577 return nil, err; |
|
4345
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
578 end |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
579 return 200; |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
580 end |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
581 |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
582 function list_groups(event) |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
583 local group_list = {}; |
|
4382
0d6b69777bc1
mod_http_admin_api: port to use new mod_groups_internal module
Jonas Schäfer <jonas@wielicki.name>
parents:
4378
diff
changeset
|
584 for group_id in mod_groups.groups() do |
|
0d6b69777bc1
mod_http_admin_api: port to use new mod_groups_internal module
Jonas Schäfer <jonas@wielicki.name>
parents:
4378
diff
changeset
|
585 local group_info = mod_groups.get_info(group_id); |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
586 table.insert(group_list, { |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
587 id = group_id; |
|
4368
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
588 name = group_info.name; |
|
4382
0d6b69777bc1
mod_http_admin_api: port to use new mod_groups_internal module
Jonas Schäfer <jonas@wielicki.name>
parents:
4378
diff
changeset
|
589 members = mod_groups.get_members(group_id); |
|
5687
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
590 chats = mod_groups.get_group_chats(group_id); |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
591 }); |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
592 end |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
593 |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
594 event.response.headers["Content-Type"] = json_content_type; |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
595 return json.encode_array(group_list); |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
596 end |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
597 |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
598 function get_group_by_id(event, group_id) |
|
4382
0d6b69777bc1
mod_http_admin_api: port to use new mod_groups_internal module
Jonas Schäfer <jonas@wielicki.name>
parents:
4378
diff
changeset
|
599 local group = mod_groups.get_info(group_id); |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
600 if not group then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
601 return nil, "group-not-found"; |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
602 end |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
603 |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
604 event.response.headers["Content-Type"] = json_content_type; |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
605 |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
606 return json.encode({ |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
607 id = group_id; |
|
4368
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
608 name = group.name; |
|
4382
0d6b69777bc1
mod_http_admin_api: port to use new mod_groups_internal module
Jonas Schäfer <jonas@wielicki.name>
parents:
4378
diff
changeset
|
609 members = mod_groups.get_members(group_id); |
|
5687
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
610 chats = mod_groups.get_group_chats(group_id); |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
611 }); |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
612 end |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
613 |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
614 function create_group(event) |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
615 local request = event.request; |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
616 if request.headers.content_type ~= json_content_type |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
617 or (not request.body or #request.body == 0) then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
618 return nil, "invalid-json"; |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
619 end |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
620 local group = json.decode(event.request.body); |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
621 if not group then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
622 return nil, "invalid-json"; |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
623 end |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
624 |
|
4390
17d44ba8fde2
mod_http_admin_api: support for creating groups with MUCs
Jonas Schäfer <jonas@wielicki.name>
parents:
4382
diff
changeset
|
625 local create_muc = group.create_muc and true or false; |
|
17d44ba8fde2
mod_http_admin_api: support for creating groups with MUCs
Jonas Schäfer <jonas@wielicki.name>
parents:
4382
diff
changeset
|
626 |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
627 local group_id, err = mod_groups.create( |
|
4390
17d44ba8fde2
mod_http_admin_api: support for creating groups with MUCs
Jonas Schäfer <jonas@wielicki.name>
parents:
4382
diff
changeset
|
628 { |
|
17d44ba8fde2
mod_http_admin_api: support for creating groups with MUCs
Jonas Schäfer <jonas@wielicki.name>
parents:
4382
diff
changeset
|
629 name = group.name; |
|
17d44ba8fde2
mod_http_admin_api: support for creating groups with MUCs
Jonas Schäfer <jonas@wielicki.name>
parents:
4382
diff
changeset
|
630 }, |
|
17d44ba8fde2
mod_http_admin_api: support for creating groups with MUCs
Jonas Schäfer <jonas@wielicki.name>
parents:
4382
diff
changeset
|
631 create_muc |
|
17d44ba8fde2
mod_http_admin_api: support for creating groups with MUCs
Jonas Schäfer <jonas@wielicki.name>
parents:
4382
diff
changeset
|
632 ); |
|
4382
0d6b69777bc1
mod_http_admin_api: port to use new mod_groups_internal module
Jonas Schäfer <jonas@wielicki.name>
parents:
4378
diff
changeset
|
633 if not group_id then |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
634 return nil, err; |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
635 end |
|
4361
7f1f3b79d991
mod_http_admin_api: Return new group object on successful creation
Matthew Wild <mwild1@gmail.com>
parents:
4360
diff
changeset
|
636 |
|
7f1f3b79d991
mod_http_admin_api: Return new group object on successful creation
Matthew Wild <mwild1@gmail.com>
parents:
4360
diff
changeset
|
637 event.response.headers["Content-Type"] = json_content_type; |
|
4390
17d44ba8fde2
mod_http_admin_api: support for creating groups with MUCs
Jonas Schäfer <jonas@wielicki.name>
parents:
4382
diff
changeset
|
638 |
|
17d44ba8fde2
mod_http_admin_api: support for creating groups with MUCs
Jonas Schäfer <jonas@wielicki.name>
parents:
4382
diff
changeset
|
639 local info = mod_groups.get_info(group_id); |
|
4361
7f1f3b79d991
mod_http_admin_api: Return new group object on successful creation
Matthew Wild <mwild1@gmail.com>
parents:
4360
diff
changeset
|
640 return json.encode({ |
|
4368
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
641 id = group_id; |
|
4390
17d44ba8fde2
mod_http_admin_api: support for creating groups with MUCs
Jonas Schäfer <jonas@wielicki.name>
parents:
4382
diff
changeset
|
642 name = info.name; |
|
4368
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
643 members = {}; |
|
5687
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
644 chats = {}; |
|
4361
7f1f3b79d991
mod_http_admin_api: Return new group object on successful creation
Matthew Wild <mwild1@gmail.com>
parents:
4360
diff
changeset
|
645 }); |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
646 end |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
647 |
|
4368
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
648 function update_group(event, group) --luacheck: ignore 212/event |
|
4382
0d6b69777bc1
mod_http_admin_api: port to use new mod_groups_internal module
Jonas Schäfer <jonas@wielicki.name>
parents:
4378
diff
changeset
|
649 -- Add member |
|
5785
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
650 do |
|
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
651 local group_id, member_name = group:match("^([^/]+)/members/([^/]+)$"); |
|
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
652 if group_id and member_name then |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
653 local ok, err = mod_groups.add_member(group_id, member_name); |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
654 if not ok then |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
655 return nil, err; |
|
5785
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
656 end |
|
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
657 return 204; |
|
4368
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
658 end |
|
4369
29b7f445aec5
mod_http_admin_api: add support for updating groups
Jonas Schäfer <jonas@wielicki.name>
parents:
4368
diff
changeset
|
659 end |
|
29b7f445aec5
mod_http_admin_api: add support for updating groups
Jonas Schäfer <jonas@wielicki.name>
parents:
4368
diff
changeset
|
660 |
|
29b7f445aec5
mod_http_admin_api: add support for updating groups
Jonas Schäfer <jonas@wielicki.name>
parents:
4368
diff
changeset
|
661 local group_id = group:match("^([^/]+)$") |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
662 if not group_id then return nil, "group-not-found"; end |
|
4369
29b7f445aec5
mod_http_admin_api: add support for updating groups
Jonas Schäfer <jonas@wielicki.name>
parents:
4368
diff
changeset
|
663 |
|
5785
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
664 local request = event.request; |
|
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
665 if request.headers.content_type ~= json_content_type or (not request.body or #request.body == 0) then |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
666 return nil, "invalid-json"; |
|
5785
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
667 end |
|
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
668 |
|
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
669 local update = json.decode(event.request.body); |
|
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
670 if not update then |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
671 return nil, "invalid-json"; |
|
5785
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
672 end |
|
4369
29b7f445aec5
mod_http_admin_api: add support for updating groups
Jonas Schäfer <jonas@wielicki.name>
parents:
4368
diff
changeset
|
673 |
|
5785
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
674 local group_info = mod_groups.get_info(group_id); |
|
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
675 if not group_info then |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
676 return nil, "group-not-found"; |
|
5785
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
677 end |
|
4369
29b7f445aec5
mod_http_admin_api: add support for updating groups
Jonas Schäfer <jonas@wielicki.name>
parents:
4368
diff
changeset
|
678 |
|
5785
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
679 if update.name then |
|
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
680 group_info["name"] = update.name; |
|
4368
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
681 end |
|
6329
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
682 local ok, err = mod_groups.set_info(group_id, group_info); |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
683 if not ok then |
|
5571c75a4fed
mod_http_admin_api: Unify error reporting around util.error
Matthew Wild <mwild1@gmail.com>
parents:
6236
diff
changeset
|
684 return nil, err; |
|
5785
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
685 end |
|
671a6ad1f026
mod_http_admin_api: Fix some luacheck warnings and code style issues
Matthew Wild <mwild1@gmail.com>
parents:
5784
diff
changeset
|
686 return 204; |
|
4368
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
687 end |
|
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
688 |
|
5687
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
689 function extend_group(event, subpath) |
|
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
690 -- Add group chat |
|
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
691 local group_id = subpath:match("^([^/]+)/chats$"); |
|
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
692 if group_id then |
|
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
693 local muc_params = json.decode(event.request.body); |
|
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
694 if not muc_params then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
695 return nil, "invalid-json"; |
|
5687
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
696 end |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
697 local muc, err = mod_groups.add_group_chat(group_id, muc_params.name); |
|
5687
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
698 if not muc then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
699 return nil, err; |
|
5687
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
700 end |
|
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
701 return json.encode(muc); |
|
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
702 end |
|
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
703 |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
704 return nil, "group-not-found"; |
|
5687
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
705 end |
|
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
706 |
|
4368
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
707 function delete_group(event, subpath) --luacheck: ignore 212/event |
|
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
708 -- Check if this is a membership deletion and handle it |
|
5687
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
709 local group_id, sub_resource_type, sub_resource_id = subpath:match("^([^/]+)/([^/]+)/([^/]+)$"); |
|
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
710 if group_id then |
|
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
711 -- Operation is on a sub-resource |
|
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
712 if sub_resource_type == "members" then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
713 local ok, err = mod_groups.remove_member(group_id, sub_resource_id); |
|
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
714 if not ok then |
|
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
715 return nil, err; |
|
5687
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
716 end |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
717 return 204; |
|
5687
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
718 elseif sub_resource_type == "chats" then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
719 local ok, err = mod_groups.remove_group_chat(group_id, sub_resource_id); |
|
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
720 if not ok then |
|
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
721 return nil, err; |
|
5687
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
722 end |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
723 return 204; |
|
4368
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
724 else |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
725 return nil, "item-not-found"; |
|
4368
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
726 end |
|
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
727 else |
|
4382
0d6b69777bc1
mod_http_admin_api: port to use new mod_groups_internal module
Jonas Schäfer <jonas@wielicki.name>
parents:
4378
diff
changeset
|
728 -- Action refers to the group |
|
4368
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
729 group_id = subpath; |
|
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
730 end |
|
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
731 |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
732 if not group_id then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
733 return nil, "bad-request"; |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
734 end |
|
4368
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
735 |
|
4382
0d6b69777bc1
mod_http_admin_api: port to use new mod_groups_internal module
Jonas Schäfer <jonas@wielicki.name>
parents:
4378
diff
changeset
|
736 if not mod_groups.exists(group_id) then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
737 return nil, "group-not-found"; |
|
4368
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
738 end |
|
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
739 |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
740 local ok, err = mod_groups.delete(group_id); |
|
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
741 if not ok then |
|
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
742 return nil, err; |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
743 end |
|
4382
0d6b69777bc1
mod_http_admin_api: port to use new mod_groups_internal module
Jonas Schäfer <jonas@wielicki.name>
parents:
4378
diff
changeset
|
744 return 204; |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
745 end |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
746 |
|
4371
3d01bc4547b2
mod_http_admin_api: Add /server/info endpoint for site_name and version
Matthew Wild <mwild1@gmail.com>
parents:
4369
diff
changeset
|
747 local function get_server_info(event) |
|
3d01bc4547b2
mod_http_admin_api: Add /server/info endpoint for site_name and version
Matthew Wild <mwild1@gmail.com>
parents:
4369
diff
changeset
|
748 event.response.headers["Content-Type"] = json_content_type; |
|
3d01bc4547b2
mod_http_admin_api: Add /server/info endpoint for site_name and version
Matthew Wild <mwild1@gmail.com>
parents:
4369
diff
changeset
|
749 return json.encode({ |
|
3d01bc4547b2
mod_http_admin_api: Add /server/info endpoint for site_name and version
Matthew Wild <mwild1@gmail.com>
parents:
4369
diff
changeset
|
750 site_name = site_name; |
|
3d01bc4547b2
mod_http_admin_api: Add /server/info endpoint for site_name and version
Matthew Wild <mwild1@gmail.com>
parents:
4369
diff
changeset
|
751 version = prosody.version; |
|
3d01bc4547b2
mod_http_admin_api: Add /server/info endpoint for site_name and version
Matthew Wild <mwild1@gmail.com>
parents:
4369
diff
changeset
|
752 }); |
|
3d01bc4547b2
mod_http_admin_api: Add /server/info endpoint for site_name and version
Matthew Wild <mwild1@gmail.com>
parents:
4369
diff
changeset
|
753 end |
|
3d01bc4547b2
mod_http_admin_api: Add /server/info endpoint for site_name and version
Matthew Wild <mwild1@gmail.com>
parents:
4369
diff
changeset
|
754 |
|
4576
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
755 local function maybe_export_plain_gauge(mf) |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
756 if mf == nil then |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
757 return nil |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
758 end |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
759 return mf.data.value |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
760 end |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
761 |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
762 local function maybe_export_plain_counter(mf) |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
763 if mf == nil then |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
764 return nil |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
765 end |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
766 return { |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
767 since = mf.data._created, |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
768 value = mf.data.value, |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
769 } |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
770 end |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
771 |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
772 local function maybe_export_summed_gauge(mf) |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
773 if mf == nil then |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
774 return nil |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
775 end |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
776 local sum = 0; |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
777 for _, metric in mf:iter_metrics() do |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
778 sum = sum + metric.value; |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
779 end |
|
5827
f76909ec1300
mod_http_admin_api: metrics: Filter out a value that is commonly nan at startup
Matthew Wild <mwild1@gmail.com>
parents:
5786
diff
changeset
|
780 return (sum == sum) and sum or nil; -- Filter out nan |
|
4576
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
781 end |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
782 |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
783 local function get_server_metrics(event) |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
784 event.response.headers["Content-Type"] = json_content_type; |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
785 local result = {}; |
|
4776
13e913471b75
mod_http_admin_api: Ensure freshness of metrics when in manual mode
Kim Alvefur <zash@zash.se>
parents:
4714
diff
changeset
|
786 if manual_stats_collection then |
|
13e913471b75
mod_http_admin_api: Ensure freshness of metrics when in manual mode
Kim Alvefur <zash@zash.se>
parents:
4714
diff
changeset
|
787 statsmanager.collect(); |
|
13e913471b75
mod_http_admin_api: Ensure freshness of metrics when in manual mode
Kim Alvefur <zash@zash.se>
parents:
4714
diff
changeset
|
788 end |
|
4576
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
789 local families = statsmanager.get_metric_registry():get_metric_families(); |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
790 result.memory = maybe_export_plain_gauge(families.process_resident_memory_bytes); |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
791 result.cpu = maybe_export_plain_counter(families.process_cpu_seconds); |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
792 result.c2s = maybe_export_summed_gauge(families["prosody_mod_c2s/connections"]) |
|
4777
883ad8b0a7c0
mod_http_admin_api: Export total storage use via mod_http_file_share
Kim Alvefur <zash@zash.se>
parents:
4776
diff
changeset
|
793 result.uploads = maybe_export_summed_gauge(families["prosody_mod_http_file_share/total_storage_bytes"]); |
|
5862
9f2816287556
mod_http_admin_api: Include active user counts in metrics response
Matthew Wild <mwild1@gmail.com>
parents:
5827
diff
changeset
|
794 result.users = { |
|
5883
6c11e1b4066d
mod_http_admin_api: User activity gauges need to be summed (labels by host)
Matthew Wild <mwild1@gmail.com>
parents:
5862
diff
changeset
|
795 active_1d = maybe_export_summed_gauge(families["prosody_mod_measure_active_users/active_users_1d"]); |
|
6c11e1b4066d
mod_http_admin_api: User activity gauges need to be summed (labels by host)
Matthew Wild <mwild1@gmail.com>
parents:
5862
diff
changeset
|
796 active_7d = maybe_export_summed_gauge(families["prosody_mod_measure_active_users/active_users_7d"]); |
|
6c11e1b4066d
mod_http_admin_api: User activity gauges need to be summed (labels by host)
Matthew Wild <mwild1@gmail.com>
parents:
5862
diff
changeset
|
797 active_30d = maybe_export_summed_gauge(families["prosody_mod_measure_active_users/active_users_30d"]); |
|
5862
9f2816287556
mod_http_admin_api: Include active user counts in metrics response
Matthew Wild <mwild1@gmail.com>
parents:
5827
diff
changeset
|
798 }; |
|
4576
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
799 return json.encode(result); |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
800 end |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
801 |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
802 local function post_server_announcement(event) |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
803 local request = event.request; |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
804 if request.headers.content_type ~= json_content_type |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
805 or (not request.body or #request.body == 0) then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
806 return nil, "invalid-json"; |
|
4576
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
807 end |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
808 local body = json.decode(event.request.body); |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
809 if not body then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
810 return nil, "invalid-json"; |
|
4576
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
811 end |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
812 |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
813 if type(body.recipients) ~= "table" and body.recipients ~= "online" and body.recipients ~= "all" then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
814 return nil, "bad-request"; |
|
4576
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
815 end |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
816 |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
817 if not body.body or #body.body == 0 then |
|
6330
4e63151010bf
mod_http_admin_api: Convert remaining HTTP errors to util.error
Matthew Wild <mwild1@gmail.com>
parents:
6329
diff
changeset
|
818 return nil, "bad-request"; |
|
4576
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
819 end |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
820 |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
821 local message = st.message():tag("body"):text(body.body):up(); |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
822 local host = module.host |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
823 message.attr.from = host |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
824 if body.recipients == "online" then |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
825 announce.send_to_online(message, host); |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
826 elseif body.recipients == "all" then |
|
5891
512f912fdfa5
mod_http_admin_api: Use new API in mod_announce to send announcements
Matthew Wild <mwild1@gmail.com>
parents:
5888
diff
changeset
|
827 if announce.send_to_all then |
|
512f912fdfa5
mod_http_admin_api: Use new API in mod_announce to send announcements
Matthew Wild <mwild1@gmail.com>
parents:
5888
diff
changeset
|
828 announce.send_to_all(message, host); |
|
512f912fdfa5
mod_http_admin_api: Use new API in mod_announce to send announcements
Matthew Wild <mwild1@gmail.com>
parents:
5888
diff
changeset
|
829 else -- COMPAT w/ 0.12 and trunk before e22609460975 |
|
512f912fdfa5
mod_http_admin_api: Use new API in mod_announce to send announcements
Matthew Wild <mwild1@gmail.com>
parents:
5888
diff
changeset
|
830 for username in usermanager.users(host) do |
|
512f912fdfa5
mod_http_admin_api: Use new API in mod_announce to send announcements
Matthew Wild <mwild1@gmail.com>
parents:
5888
diff
changeset
|
831 message.attr.to = username .. "@" .. host |
|
512f912fdfa5
mod_http_admin_api: Use new API in mod_announce to send announcements
Matthew Wild <mwild1@gmail.com>
parents:
5888
diff
changeset
|
832 module:send(st.clone(message)) |
|
512f912fdfa5
mod_http_admin_api: Use new API in mod_announce to send announcements
Matthew Wild <mwild1@gmail.com>
parents:
5888
diff
changeset
|
833 end |
|
4576
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
834 end |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
835 else |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
836 for _, addr in ipairs(body.recipients) do |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
837 message.attr.to = addr |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
838 module:send(message) |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
839 end |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
840 end |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
841 |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
842 return 201; |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
843 end |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
844 |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
845 module:provides("http", { |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
846 route = check_auth { |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
847 ["GET /invites"] = list_invites; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
848 ["GET /invites/*"] = get_invite_by_id; |
|
4374
e707810a943e
mod_http_admin_api: Improve invite API and support password resets
Matthew Wild <mwild1@gmail.com>
parents:
4371
diff
changeset
|
849 ["POST /invites/*"] = create_invite_type; |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
850 ["DELETE /invites/*"] = delete_invite; |
|
4345
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
851 |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
852 ["GET /users"] = list_users; |
|
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
853 ["GET /users/*"] = get_user_by_name; |
|
4516
5bc706c2db8f
mod_http_admin_api: allow updating the user nickname via API
Jonas Schäfer <jonas@wielicki.name>
parents:
4396
diff
changeset
|
854 ["PUT /users/*"] = update_user; |
|
5784
5c589fab6f53
mod_http_admin_api: Support PATCH for user enabled status
Matthew Wild <mwild1@gmail.com>
parents:
5783
diff
changeset
|
855 ["PATCH /users/*"] = patch_user; |
|
4345
1bb08e9ffa82
mod_http_admin_api: Add methods for managing users
Matthew Wild <mwild1@gmail.com>
parents:
4343
diff
changeset
|
856 ["DELETE /users/*"] = delete_user; |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
857 |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
858 ["GET /groups"] = list_groups; |
|
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
859 ["GET /groups/*"] = get_group_by_id; |
|
4360
76bec3f66b24
mod_http_admin_api: Switch PUT to POST where appropriate
Matthew Wild <mwild1@gmail.com>
parents:
4359
diff
changeset
|
860 ["POST /groups"] = create_group; |
|
5687
4c84cfb586c1
mod_http_admin_api: Support for adding/removing group MUCs
Matthew Wild <mwild1@gmail.com>
parents:
5284
diff
changeset
|
861 ["POST /groups/*"] = extend_group; |
|
4368
e0c8d866d58c
mod_http_admin_api: Some fixes and improvements for the groups API
Matthew Wild <mwild1@gmail.com>
parents:
4366
diff
changeset
|
862 ["PUT /groups/*"] = update_group; |
|
4353
535d80be110d
mod_http_admin_api: Add groups management endpoints
Matthew Wild <mwild1@gmail.com>
parents:
4352
diff
changeset
|
863 ["DELETE /groups/*"] = delete_group; |
|
4371
3d01bc4547b2
mod_http_admin_api: Add /server/info endpoint for site_name and version
Matthew Wild <mwild1@gmail.com>
parents:
4369
diff
changeset
|
864 |
|
3d01bc4547b2
mod_http_admin_api: Add /server/info endpoint for site_name and version
Matthew Wild <mwild1@gmail.com>
parents:
4369
diff
changeset
|
865 ["GET /server/info"] = get_server_info; |
|
4576
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
866 |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
867 ["GET /server/metrics"] = get_server_metrics; |
|
cade5dac1003
mod_http_admin_api: Add endpoints for server maintenance
Jonas Schäfer <jonas@wielicki.name>
parents:
4517
diff
changeset
|
868 ["POST /server/announcement"] = post_server_announcement; |
|
4343
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
869 }; |
|
ee313922b8d1
mod_http_admin_api: HTTP API for managing users and invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
870 }); |
