Mercurial > prosody-hg
annotate plugins/mod_admin_adhoc.lua @ 8706:e2919978673e
net.http: Fix parameter order to http request callbacks
Commit e3b9dc9dd940 changed the parameter order in 2013, but did not update the names of the parameters in the callback function. Due to this inconsistency, 12df41a5a4b1 accidentally reversed the order when fixing the variable names without fixing where they are used.
Additionally the documentation was incorrect (since 2013), and this has also now been fixed.
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Wed, 04 Apr 2018 18:27:44 +0100 |
| parents | 4354f556c5db |
| children | 41c959c5c84b |
| rev | line source |
|---|---|
|
4292
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
1 -- Copyright (C) 2009-2011 Florian Zeitz |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
2 -- |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
3 -- This file is MIT/X11 licensed. Please see the |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
4 -- COPYING file in the source package for more information. |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
5 -- |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
6 |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
7 local _G = _G; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
8 |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
9 local prosody = _G.prosody; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
10 local hosts = prosody.hosts; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
11 local t_concat = table.concat; |
|
6458
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
12 local t_sort = table.sort; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
13 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
14 local module_host = module:get_host(); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
15 |
|
5371
706206e191e8
mod_motd, mod_register, mod_private, mod_http_errors, mod_admin_adhoc: Remove unused imports
Kim Alvefur <zash@zash.se>
parents:
5329
diff
changeset
|
16 local keys = require "util.iterators".keys; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
17 local usermanager_user_exists = require "core.usermanager".user_exists; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
18 local usermanager_create_user = require "core.usermanager".create_user; |
|
5100
65207b768f60
mod_admin_adhoc: Use usermanager.delete_user to delete users
Kim Alvefur <zash@zash.se>
parents:
5076
diff
changeset
|
19 local usermanager_delete_user = require "core.usermanager".delete_user; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
20 local usermanager_get_password = require "core.usermanager".get_password; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
21 local usermanager_set_password = require "core.usermanager".set_password; |
|
5135
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
22 local hostmanager_activate = require "core.hostmanager".activate; |
|
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
23 local hostmanager_deactivate = require "core.hostmanager".deactivate; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
24 local rm_load_roster = require "core.rostermanager".load_roster; |
|
5371
706206e191e8
mod_motd, mod_register, mod_private, mod_http_errors, mod_admin_adhoc: Remove unused imports
Kim Alvefur <zash@zash.se>
parents:
5329
diff
changeset
|
25 local st, jid = require "util.stanza", require "util.jid"; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
26 local timer_add_task = require "util.timer".add_task; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
27 local dataforms_new = require "util.dataforms".new; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
28 local array = require "util.array"; |
|
6779
6236668da30a
core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents:
6627
diff
changeset
|
29 local modulemanager = require "core.modulemanager"; |
|
5013
ab693eea0869
mod_admin_adhoc, mod_admin_telnet, mod_bosh, mod_c2s, mod_component, mod_pep, mod_presence, mod_roster, mod_s2s: Import core_post_stanza from the global prosody table.
Kim Alvefur <zash@zash.se>
parents:
4993
diff
changeset
|
30 local core_post_stanza = prosody.core_post_stanza; |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
31 local adhoc_simple = require "util.adhoc".new_simple_form; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
32 local adhoc_initial = require "util.adhoc".new_initial_data_form; |
|
6795
c4ee38d78594
mod_admin_adhoc: Import missing util.set (fixes #518)
Kim Alvefur <zash@zash.se>
parents:
6779
diff
changeset
|
33 local set = require"util.set"; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
34 |
|
4780
4b8f2b91826c
mod_admin_adhoc: Small style fix
Matthew Wild <mwild1@gmail.com>
parents:
4595
diff
changeset
|
35 module:depends("adhoc"); |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
36 local adhoc_new = module:require "adhoc".new; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
37 |
|
4932
212e81ac6ebb
mod_admin_web: Use util.dataforms' own error checking
Florian Zeitz <florob@babelmonkeys.de>
parents:
4926
diff
changeset
|
38 local function generate_error_message(errors) |
|
212e81ac6ebb
mod_admin_web: Use util.dataforms' own error checking
Florian Zeitz <florob@babelmonkeys.de>
parents:
4926
diff
changeset
|
39 local errmsg = {}; |
|
212e81ac6ebb
mod_admin_web: Use util.dataforms' own error checking
Florian Zeitz <florob@babelmonkeys.de>
parents:
4926
diff
changeset
|
40 for name, err in pairs(errors) do |
|
212e81ac6ebb
mod_admin_web: Use util.dataforms' own error checking
Florian Zeitz <florob@babelmonkeys.de>
parents:
4926
diff
changeset
|
41 errmsg[#errmsg + 1] = name .. ": " .. err; |
|
212e81ac6ebb
mod_admin_web: Use util.dataforms' own error checking
Florian Zeitz <florob@babelmonkeys.de>
parents:
4926
diff
changeset
|
42 end |
|
212e81ac6ebb
mod_admin_web: Use util.dataforms' own error checking
Florian Zeitz <florob@babelmonkeys.de>
parents:
4926
diff
changeset
|
43 return { status = "completed", error = { message = t_concat(errmsg, "\n") } }; |
|
212e81ac6ebb
mod_admin_web: Use util.dataforms' own error checking
Florian Zeitz <florob@babelmonkeys.de>
parents:
4926
diff
changeset
|
44 end |
|
212e81ac6ebb
mod_admin_web: Use util.dataforms' own error checking
Florian Zeitz <florob@babelmonkeys.de>
parents:
4926
diff
changeset
|
45 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
46 -- Adding a new user |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
47 local add_user_layout = dataforms_new{ |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
48 title = "Adding a User"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
49 instructions = "Fill out this form to add a user."; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
50 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
51 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
52 { name = "accountjid", type = "jid-single", required = true, label = "The Jabber ID for the account to be added" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
53 { name = "password", type = "text-private", label = "The password for this account" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
54 { name = "password-verify", type = "text-private", label = "Retype password" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
55 }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
56 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
57 local add_user_command_handler = adhoc_simple(add_user_layout, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
58 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
59 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
60 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
61 local username, host, resource = jid.split(fields.accountjid); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
62 if module_host ~= host then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
63 return { status = "completed", error = { message = "Trying to add a user on " .. host .. " but command was sent to " .. module_host}}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
64 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
65 if (fields["password"] == fields["password-verify"]) and username and host then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
66 if usermanager_user_exists(username, host) then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
67 return { status = "completed", error = { message = "Account already exists" } }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
68 else |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
69 if usermanager_create_user(username, fields.password, host) then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
70 module:log("info", "Created new account %s@%s", username, host); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
71 return { status = "completed", info = "Account successfully created" }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
72 else |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
73 return { status = "completed", error = { message = "Failed to write data to disk" } }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
74 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
75 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
76 else |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
77 module:log("debug", "Invalid data, password mismatch or empty username while creating account for %s", fields.accountjid or "<nil>"); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
78 return { status = "completed", error = { message = "Invalid data.\nPassword mismatch, or empty username" } }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
79 end |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
80 end); |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
81 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
82 -- Changing a user's password |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
83 local change_user_password_layout = dataforms_new{ |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
84 title = "Changing a User Password"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
85 instructions = "Fill out this form to change a user's password."; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
86 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
87 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
88 { name = "accountjid", type = "jid-single", required = true, label = "The Jabber ID for this account" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
89 { name = "password", type = "text-private", required = true, label = "The password for this account" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
90 }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
91 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
92 local change_user_password_command_handler = adhoc_simple(change_user_password_layout, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
93 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
94 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
95 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
96 local username, host, resource = jid.split(fields.accountjid); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
97 if module_host ~= host then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
98 return { status = "completed", error = { message = "Trying to change the password of a user on " .. host .. " but command was sent to " .. module_host}}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
99 end |
|
8192
4354f556c5db
core.usermanager, various modules: Disconnect other resources on password change (thanks waqas) (fixes #512)
Kim Alvefur <zash@zash.se>
parents:
7045
diff
changeset
|
100 if usermanager_user_exists(username, host) and usermanager_set_password(username, fields.password, host, nil) then |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
101 return { status = "completed", info = "Password successfully changed" }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
102 else |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
103 return { status = "completed", error = { message = "User does not exist" } }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
104 end |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
105 end); |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
106 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
107 -- Reloading the config |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
108 local function config_reload_handler(self, data, state) |
|
4292
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
109 local ok, err = prosody.reload_config(); |
|
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
110 if ok then |
|
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
111 return { status = "completed", info = "Configuration reloaded (modules may need to be reloaded for this to have an effect)" }; |
|
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
112 else |
|
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
113 return { status = "completed", error = { message = "Failed to reload config: " .. tostring(err) } }; |
|
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
114 end |
|
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
115 end |
|
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
116 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
117 -- Deleting a user's account |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
118 local delete_user_layout = dataforms_new{ |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
119 title = "Deleting a User"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
120 instructions = "Fill out this form to delete a user."; |
|
4292
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
121 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
122 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; |
|
6462
fcff8fa495d4
mod_admin_adhoc: Add required to field in user deletion form too
Kim Alvefur <zash@zash.se>
parents:
6461
diff
changeset
|
123 { name = "accountjids", type = "jid-multi", required = true, label = "The Jabber ID(s) to delete" }; |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
124 }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
125 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
126 local delete_user_command_handler = adhoc_simple(delete_user_layout, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
127 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
128 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
129 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
130 local failed = {}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
131 local succeeded = {}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
132 for _, aJID in ipairs(fields.accountjids) do |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
133 local username, host, resource = jid.split(aJID); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
134 if (host == module_host) and usermanager_user_exists(username, host) and usermanager_delete_user(username, host) then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
135 module:log("debug", "User %s has been deleted", aJID); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
136 succeeded[#succeeded+1] = aJID; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
137 else |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
138 module:log("debug", "Tried to delete non-existant user %s", aJID); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
139 failed[#failed+1] = aJID; |
|
4932
212e81ac6ebb
mod_admin_web: Use util.dataforms' own error checking
Florian Zeitz <florob@babelmonkeys.de>
parents:
4926
diff
changeset
|
140 end |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
141 end |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
142 return {status = "completed", info = (#succeeded ~= 0 and |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
143 "The following accounts were successfully deleted:\n"..t_concat(succeeded, "\n").."\n" or "").. |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
144 (#failed ~= 0 and |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
145 "The following accounts could not be deleted:\n"..t_concat(failed, "\n") or "") }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
146 end); |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
147 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
148 -- Ending a user's session |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
149 local function disconnect_user(match_jid) |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
150 local node, hostname, givenResource = jid.split(match_jid); |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
151 local host = hosts[hostname]; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
152 local sessions = host.sessions[node] and host.sessions[node].sessions; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
153 for resource, session in pairs(sessions or {}) do |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
154 if not givenResource or (resource == givenResource) then |
|
4993
5243b74a4cbb
Hopefully inert commit to clean up logging across a number of modules, removing all cases of concatenation when building log messages
Matthew Wild <mwild1@gmail.com>
parents:
4956
diff
changeset
|
155 module:log("debug", "Disconnecting %s@%s/%s", node, hostname, resource); |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
156 session:close(); |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
157 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
158 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
159 return true; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
160 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
161 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
162 local end_user_session_layout = dataforms_new{ |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
163 title = "Ending a User Session"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
164 instructions = "Fill out this form to end a user's session."; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
165 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
166 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; |
|
6461
6b38bfaafe0c
mod_admin_adhoc: Mark 'accountjids' field as required in 'end user sessions' command (thanks Lloyd)
Kim Alvefur <zash@zash.se>
parents:
5721
diff
changeset
|
167 { name = "accountjids", type = "jid-multi", label = "The Jabber ID(s) for which to end sessions", required = true }; |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
168 }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
169 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
170 local end_user_session_handler = adhoc_simple(end_user_session_layout, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
171 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
172 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
173 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
174 local failed = {}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
175 local succeeded = {}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
176 for _, aJID in ipairs(fields.accountjids) do |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
177 local username, host, resource = jid.split(aJID); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
178 if (host == module_host) and usermanager_user_exists(username, host) and disconnect_user(aJID) then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
179 succeeded[#succeeded+1] = aJID; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
180 else |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
181 failed[#failed+1] = aJID; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
182 end |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
183 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
184 return {status = "completed", info = (#succeeded ~= 0 and |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
185 "The following accounts were successfully disconnected:\n"..t_concat(succeeded, "\n").."\n" or "").. |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
186 (#failed ~= 0 and |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
187 "The following accounts could not be disconnected:\n"..t_concat(failed, "\n") or "") }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
188 end); |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
189 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
190 -- Getting a user's password |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
191 local get_user_password_layout = dataforms_new{ |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
192 title = "Getting User's Password"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
193 instructions = "Fill out this form to get a user's password."; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
194 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
195 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
196 { name = "accountjid", type = "jid-single", required = true, label = "The Jabber ID for which to retrieve the password" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
197 }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
198 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
199 local get_user_password_result_layout = dataforms_new{ |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
200 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
201 { name = "accountjid", type = "jid-single", label = "JID" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
202 { name = "password", type = "text-single", label = "Password" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
203 }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
204 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
205 local get_user_password_handler = adhoc_simple(get_user_password_layout, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
206 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
207 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
208 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
209 local user, host, resource = jid.split(fields.accountjid); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
210 local accountjid = ""; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
211 local password = ""; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
212 if host ~= module_host then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
213 return { status = "completed", error = { message = "Tried to get password for a user on " .. host .. " but command was sent to " .. module_host } }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
214 elseif usermanager_user_exists(user, host) then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
215 accountjid = fields.accountjid; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
216 password = usermanager_get_password(user, host); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
217 else |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
218 return { status = "completed", error = { message = "User does not exist" } }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
219 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
220 return { status = "completed", result = { layout = get_user_password_result_layout, values = {accountjid = accountjid, password = password} } }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
221 end); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
222 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
223 -- Getting a user's roster |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
224 local get_user_roster_layout = dataforms_new{ |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
225 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
226 { name = "accountjid", type = "jid-single", required = true, label = "The Jabber ID for which to retrieve the roster" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
227 }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
228 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
229 local get_user_roster_result_layout = dataforms_new{ |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
230 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
231 { name = "accountjid", type = "jid-single", label = "This is the roster for" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
232 { name = "roster", type = "text-multi", label = "Roster XML" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
233 }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
234 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
235 local get_user_roster_handler = adhoc_simple(get_user_roster_layout, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
236 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
237 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
238 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
239 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
240 local user, host, resource = jid.split(fields.accountjid); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
241 if host ~= module_host then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
242 return { status = "completed", error = { message = "Tried to get roster for a user on " .. host .. " but command was sent to " .. module_host } }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
243 elseif not usermanager_user_exists(user, host) then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
244 return { status = "completed", error = { message = "User does not exist" } }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
245 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
246 local roster = rm_load_roster(user, host); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
247 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
248 local query = st.stanza("query", { xmlns = "jabber:iq:roster" }); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
249 for jid in pairs(roster) do |
|
6627
c6e025411baa
mod_admin_adhoc: Remove special treatment of the "pending" roster entry
Kim Alvefur <zash@zash.se>
parents:
6464
diff
changeset
|
250 if jid then |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
251 query:tag("item", { |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
252 jid = jid, |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
253 subscription = roster[jid].subscription, |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
254 ask = roster[jid].ask, |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
255 name = roster[jid].name, |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
256 }); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
257 for group in pairs(roster[jid].groups) do |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
258 query:tag("group"):text(group):up(); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
259 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
260 query:up(); |
|
4932
212e81ac6ebb
mod_admin_web: Use util.dataforms' own error checking
Florian Zeitz <florob@babelmonkeys.de>
parents:
4926
diff
changeset
|
261 end |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
262 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
263 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
264 local query_text = tostring(query):gsub("><", ">\n<"); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
265 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
266 local result = get_user_roster_result_layout:form({ accountjid = user.."@"..host, roster = query_text }, "result"); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
267 result:add_child(query); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
268 return { status = "completed", other = result }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
269 end); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
270 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
271 -- Getting user statistics |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
272 local get_user_stats_layout = dataforms_new{ |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
273 title = "Get User Statistics"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
274 instructions = "Fill out this form to gather user statistics."; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
275 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
276 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
277 { name = "accountjid", type = "jid-single", required = true, label = "The Jabber ID for statistics" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
278 }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
279 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
280 local get_user_stats_result_layout = dataforms_new{ |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
281 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
282 { name = "ipaddresses", type = "text-multi", label = "IP Addresses" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
283 { name = "rostersize", type = "text-single", label = "Roster size" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
284 { name = "onlineresources", type = "text-multi", label = "Online Resources" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
285 }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
286 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
287 local get_user_stats_handler = adhoc_simple(get_user_stats_layout, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
288 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
289 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
290 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
291 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
292 local user, host, resource = jid.split(fields.accountjid); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
293 if host ~= module_host then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
294 return { status = "completed", error = { message = "Tried to get stats for a user on " .. host .. " but command was sent to " .. module_host } }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
295 elseif not usermanager_user_exists(user, host) then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
296 return { status = "completed", error = { message = "User does not exist" } }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
297 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
298 local roster = rm_load_roster(user, host); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
299 local rostersize = 0; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
300 local IPs = ""; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
301 local resources = ""; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
302 for jid in pairs(roster) do |
|
6627
c6e025411baa
mod_admin_adhoc: Remove special treatment of the "pending" roster entry
Kim Alvefur <zash@zash.se>
parents:
6464
diff
changeset
|
303 if jid then |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
304 rostersize = rostersize + 1; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
305 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
306 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
307 for resource, session in pairs((hosts[host].sessions[user] and hosts[host].sessions[user].sessions) or {}) do |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
308 resources = resources .. "\n" .. resource; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
309 IPs = IPs .. "\n" .. session.ip; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
310 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
311 return { status = "completed", result = {layout = get_user_stats_result_layout, values = {ipaddresses = IPs, rostersize = tostring(rostersize), |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
312 onlineresources = resources}} }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
313 end); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
314 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
315 -- Getting a list of online users |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
316 local get_online_users_layout = dataforms_new{ |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
317 title = "Getting List of Online Users"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
318 instructions = "How many users should be returned at most?"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
319 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
320 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
321 { name = "max_items", type = "list-single", label = "Maximum number of users", |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
322 value = { "25", "50", "75", "100", "150", "200", "all" } }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
323 { name = "details", type = "boolean", label = "Show details" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
324 }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
325 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
326 local get_online_users_result_layout = dataforms_new{ |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
327 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
328 { name = "onlineuserjids", type = "text-multi", label = "The list of all online users" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
329 }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
330 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
331 local get_online_users_command_handler = adhoc_simple(get_online_users_layout, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
332 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
333 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
334 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
335 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
336 local max_items = nil |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
337 if fields.max_items ~= "all" then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
338 max_items = tonumber(fields.max_items); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
339 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
340 local count = 0; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
341 local users = {}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
342 for username, user in pairs(hosts[module_host].sessions or {}) do |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
343 if (max_items ~= nil) and (count >= max_items) then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
344 break; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
345 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
346 users[#users+1] = username.."@"..module_host; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
347 count = count + 1; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
348 if fields.details then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
349 for resource, session in pairs(user.sessions or {}) do |
|
6457
ddcb29a35409
mod_admin_adhoc: Show IP in detailed version of online user listing
Florian Zeitz <florob@babelmonkeys.de>
parents:
5818
diff
changeset
|
350 local status, priority, ip = "unavailable", tostring(session.priority or "-"), session.ip or "<unknown>"; |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
351 if session.presence then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
352 status = session.presence:child_with_name("show"); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
353 if status then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
354 status = status:get_text() or "[invalid!]"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
355 else |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
356 status = "available"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
357 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
358 end |
|
6457
ddcb29a35409
mod_admin_adhoc: Show IP in detailed version of online user listing
Florian Zeitz <florob@babelmonkeys.de>
parents:
5818
diff
changeset
|
359 users[#users+1] = " - "..resource..": "..status.."("..priority.."), IP: ["..ip.."]"; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
360 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
361 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
362 end |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
363 return { status = "completed", result = {layout = get_online_users_result_layout, values = {onlineuserjids=t_concat(users, "\n")}} }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
364 end); |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
365 |
|
6458
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
366 -- Getting a list of S2S connections (this host) |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
367 local list_s2s_this_result = dataforms_new { |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
368 title = "List of S2S connections on this host"; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
369 |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
370 { name = "FORM_TYPE", type = "hidden", value = "http://prosody.im/protocol/s2s#list" }; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
371 { name = "sessions", type = "text-multi", label = "Connections:" }; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
372 { name = "num_in", type = "text-single", label = "#incomming connections:" }; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
373 { name = "num_out", type = "text-single", label = "#outgoing connections:" }; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
374 }; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
375 |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
376 local function session_flags(session, line) |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
377 line = line or {}; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
378 |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
379 if session.id then |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
380 line[#line+1] = "["..session.id.."]" |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
381 else |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
382 line[#line+1] = "["..session.type..(tostring(session):match("%x*$")).."]" |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
383 end |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
384 |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
385 local flags = {}; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
386 if session.cert_identity_status == "valid" then |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
387 flags[#flags+1] = "authenticated"; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
388 end |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
389 if session.secure then |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
390 flags[#flags+1] = "encrypted"; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
391 end |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
392 if session.compressed then |
|
7044
8fcee3339463
mod_admin_adhoc: Remove extra ) that should not be there
Kim Alvefur <zash@zash.se>
parents:
6796
diff
changeset
|
393 flags[#flags+1] = "compressed"; |
|
6458
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
394 end |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
395 if session.smacks then |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
396 flags[#flags+1] = "sm"; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
397 end |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
398 if session.ip and session.ip:match(":") then |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
399 flags[#flags+1] = "IPv6"; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
400 end |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
401 line[#line+1] = "("..t_concat(flags, ", ")..")"; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
402 |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
403 return t_concat(line, " "); |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
404 end |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
405 |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
406 local function list_s2s_this_handler(self, data, state) |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
407 local count_in, count_out = 0, 0; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
408 local s2s_list = {}; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
409 |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
410 local s2s_sessions = module:shared"/*/s2s/sessions"; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
411 for _, session in pairs(s2s_sessions) do |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
412 local remotehost, localhost, direction; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
413 if session.direction == "outgoing" then |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
414 direction = "->"; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
415 count_out = count_out + 1; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
416 remotehost, localhost = session.to_host or "?", session.from_host or "?"; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
417 else |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
418 direction = "<-"; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
419 count_in = count_in + 1; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
420 remotehost, localhost = session.from_host or "?", session.to_host or "?"; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
421 end |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
422 local sess_lines = { r = remotehost, |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
423 session_flags(session, { "", direction, remotehost or "?" })}; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
424 |
|
7045
49e2456bf2ce
mod_admin_adhoc: Show only connections to/from the host the command was run on
Kim Alvefur <zash@zash.se>
parents:
7044
diff
changeset
|
425 if localhost == module_host then |
|
6458
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
426 s2s_list[#s2s_list+1] = sess_lines; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
427 end |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
428 end |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
429 |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
430 t_sort(s2s_list, function(a, b) |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
431 return a.r < b.r; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
432 end); |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
433 |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
434 for i, sess_lines in ipairs(s2s_list) do |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
435 s2s_list[i] = sess_lines[1]; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
436 end |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
437 |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
438 return { status = "completed", result = { layout = list_s2s_this_result; values = { |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
439 sessions = t_concat(s2s_list, "\n"), |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
440 num_in = tostring(count_in), |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
441 num_out = tostring(count_out) |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
442 } } }; |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
443 end |
|
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
444 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
445 -- Getting a list of loaded modules |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
446 local list_modules_result = dataforms_new { |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
447 title = "List of loaded modules"; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
448 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
449 { name = "FORM_TYPE", type = "hidden", value = "http://prosody.im/protocol/modules#list" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
450 { name = "modules", type = "text-multi", label = "The following modules are loaded:" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
451 }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
452 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
453 local function list_modules_handler(self, data, state) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
454 local modules = array.collect(keys(hosts[module_host].modules)):sort():concat("\n"); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
455 return { status = "completed", result = { layout = list_modules_result; values = { modules = modules } } }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
456 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
457 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
458 -- Loading a module |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
459 local load_module_layout = dataforms_new { |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
460 title = "Load module"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
461 instructions = "Specify the module to be loaded"; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
462 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
463 { name = "FORM_TYPE", type = "hidden", value = "http://prosody.im/protocol/modules#load" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
464 { name = "module", type = "text-single", required = true, label = "Module to be loaded:"}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
465 }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
466 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
467 local load_module_handler = adhoc_simple(load_module_layout, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
468 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
469 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
470 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
471 if modulemanager.is_loaded(module_host, fields.module) then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
472 return { status = "completed", info = "Module already loaded" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
473 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
474 local ok, err = modulemanager.load(module_host, fields.module); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
475 if ok then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
476 return { status = "completed", info = 'Module "'..fields.module..'" successfully loaded on host "'..module_host..'".' }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
477 else |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
478 return { status = "completed", error = { message = 'Failed to load module "'..fields.module..'" on host "'..module_host.. |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
479 '". Error was: "'..tostring(err or "<unspecified>")..'"' } }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
480 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
481 end); |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
482 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
483 -- Globally loading a module |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
484 local globally_load_module_layout = dataforms_new { |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
485 title = "Globally load module"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
486 instructions = "Specify the module to be loaded on all hosts"; |
|
4932
212e81ac6ebb
mod_admin_web: Use util.dataforms' own error checking
Florian Zeitz <florob@babelmonkeys.de>
parents:
4926
diff
changeset
|
487 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
488 { name = "FORM_TYPE", type = "hidden", value = "http://prosody.im/protocol/modules#global-load" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
489 { name = "module", type = "text-single", required = true, label = "Module to globally load:"}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
490 }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
491 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
492 local globally_load_module_handler = adhoc_simple(globally_load_module_layout, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
493 local ok_list, err_list = {}, {}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
494 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
495 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
496 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
497 end |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
498 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
499 local ok, err = modulemanager.load(module_host, fields.module); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
500 if ok then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
501 ok_list[#ok_list + 1] = module_host; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
502 else |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
503 err_list[#err_list + 1] = module_host .. " (Error: " .. tostring(err) .. ")"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
504 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
505 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
506 -- Is this a global module? |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
507 if modulemanager.is_loaded("*", fields.module) and not modulemanager.is_loaded(module_host, fields.module) then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
508 return { status = "completed", info = 'Global module '..fields.module..' loaded.' }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
509 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
510 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
511 -- This is either a shared or "normal" module, load it on all other hosts |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
512 for host_name, host in pairs(hosts) do |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
513 if host_name ~= module_host and host.type == "local" then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
514 local ok, err = modulemanager.load(host_name, fields.module); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
515 if ok then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
516 ok_list[#ok_list + 1] = host_name; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
517 else |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
518 err_list[#err_list + 1] = host_name .. " (Error: " .. tostring(err) .. ")"; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
519 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
520 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
521 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
522 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
523 local info = (#ok_list > 0 and ("The module "..fields.module.." was successfully loaded onto the hosts:\n"..t_concat(ok_list, "\n")) or "") |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
524 .. ((#ok_list > 0 and #err_list > 0) and "\n" or "") .. |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
525 (#err_list > 0 and ("Failed to load the module "..fields.module.." onto the hosts:\n"..t_concat(err_list, "\n")) or ""); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
526 return { status = "completed", info = info }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
527 end); |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
528 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
529 -- Reloading modules |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
530 local reload_modules_layout = dataforms_new { |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
531 title = "Reload modules"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
532 instructions = "Select the modules to be reloaded"; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
533 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
534 { name = "FORM_TYPE", type = "hidden", value = "http://prosody.im/protocol/modules#reload" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
535 { name = "modules", type = "list-multi", required = true, label = "Modules to be reloaded:"}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
536 }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
537 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
538 local reload_modules_handler = adhoc_initial(reload_modules_layout, function() |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
539 return { modules = array.collect(keys(hosts[module_host].modules)):sort() }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
540 end, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
541 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
542 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
543 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
544 local ok_list, err_list = {}, {}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
545 for _, module in ipairs(fields.modules) do |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
546 local ok, err = modulemanager.reload(module_host, module); |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
547 if ok then |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
548 ok_list[#ok_list + 1] = module; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
549 else |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
550 err_list[#err_list + 1] = module .. "(Error: " .. tostring(err) .. ")"; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
551 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
552 end |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
553 local info = (#ok_list > 0 and ("The following modules were successfully reloaded on host "..module_host..":\n"..t_concat(ok_list, "\n")) or "") |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
554 .. ((#ok_list > 0 and #err_list > 0) and "\n" or "") .. |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
555 (#err_list > 0 and ("Failed to reload the following modules on host "..module_host..":\n"..t_concat(err_list, "\n")) or ""); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
556 return { status = "completed", info = info }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
557 end); |
|
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
558 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
559 -- Globally reloading a module |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
560 local globally_reload_module_layout = dataforms_new { |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
561 title = "Globally reload module"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
562 instructions = "Specify the module to reload on all hosts"; |
|
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
563 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
564 { name = "FORM_TYPE", type = "hidden", value = "http://prosody.im/protocol/modules#global-reload" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
565 { name = "module", type = "list-single", required = true, label = "Module to globally reload:"}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
566 }; |
|
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
567 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
568 local globally_reload_module_handler = adhoc_initial(globally_reload_module_layout, function() |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
569 local loaded_modules = array(keys(modulemanager.get_modules("*"))); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
570 for _, host in pairs(hosts) do |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
571 loaded_modules:append(array(keys(host.modules))); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
572 end |
|
5818
5733a277237a
mod_admin_adhoc: As the only user of set:items(), update... it's now an iterator, and the extra keys() iterator is now unnecessary
Matthew Wild <mwild1@gmail.com>
parents:
5721
diff
changeset
|
573 loaded_modules = array(set.new(loaded_modules):items()):sort(); |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
574 return { module = loaded_modules }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
575 end, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
576 local is_global = false; |
|
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
577 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
578 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
579 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
580 end |
|
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
581 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
582 if modulemanager.is_loaded("*", fields.module) then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
583 local ok, err = modulemanager.reload("*", fields.module); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
584 if not ok then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
585 return { status = "completed", info = 'Global module '..fields.module..' failed to reload: '..err }; |
|
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
586 end |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
587 is_global = true; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
588 end |
|
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
589 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
590 local ok_list, err_list = {}, {}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
591 for host_name, host in pairs(hosts) do |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
592 if modulemanager.is_loaded(host_name, fields.module) then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
593 local ok, err = modulemanager.reload(host_name, fields.module); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
594 if ok then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
595 ok_list[#ok_list + 1] = host_name; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
596 else |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
597 err_list[#err_list + 1] = host_name .. " (Error: " .. tostring(err) .. ")"; |
|
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
598 end |
|
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
599 end |
|
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
600 end |
|
5327
b0c36b043f00
mod_admin_adhoc: Implement global module reloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5326
diff
changeset
|
601 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
602 if #ok_list == 0 and #err_list == 0 then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
603 if is_global then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
604 return { status = "completed", info = 'Successfully reloaded global module '..fields.module }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
605 else |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
606 return { status = "completed", info = 'Module '..fields.module..' not loaded on any host.' }; |
|
5327
b0c36b043f00
mod_admin_adhoc: Implement global module reloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5326
diff
changeset
|
607 end |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
608 end |
|
5327
b0c36b043f00
mod_admin_adhoc: Implement global module reloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5326
diff
changeset
|
609 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
610 local info = (#ok_list > 0 and ("The module "..fields.module.." was successfully reloaded on the hosts:\n"..t_concat(ok_list, "\n")) or "") |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
611 .. ((#ok_list > 0 and #err_list > 0) and "\n" or "") .. |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
612 (#err_list > 0 and ("Failed to reload the module "..fields.module.." on the hosts:\n"..t_concat(err_list, "\n")) or ""); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
613 return { status = "completed", info = info }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
614 end); |
|
5327
b0c36b043f00
mod_admin_adhoc: Implement global module reloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5326
diff
changeset
|
615 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
616 local function send_to_online(message, server) |
|
6796
87ec4e783ebd
mod_admin_adhoc: Declare local variable, don't set a global [luacheck]
Kim Alvefur <zash@zash.se>
parents:
6795
diff
changeset
|
617 local sessions; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
618 if server then |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
619 sessions = { [server] = hosts[server] }; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
620 else |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
621 sessions = hosts; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
622 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
623 |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
624 local c = 0; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
625 for domain, session in pairs(sessions) do |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
626 for user in pairs(session.sessions or {}) do |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
627 c = c + 1; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
628 message.attr.from = domain; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
629 message.attr.to = user.."@"..domain; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
630 core_post_stanza(session, message); |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
631 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
632 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
633 |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
634 return c; |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
635 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
636 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
637 -- Shutting down the service |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
638 local shut_down_service_layout = dataforms_new{ |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
639 title = "Shutting Down the Service"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
640 instructions = "Fill out this form to shut down the service."; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
641 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
642 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
643 { name = "delay", type = "list-single", label = "Time delay before shutting down", |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
644 value = { {label = "30 seconds", value = "30"}, |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
645 {label = "60 seconds", value = "60"}, |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
646 {label = "90 seconds", value = "90"}, |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
647 {label = "2 minutes", value = "120"}, |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
648 {label = "3 minutes", value = "180"}, |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
649 {label = "4 minutes", value = "240"}, |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
650 {label = "5 minutes", value = "300"}, |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
651 }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
652 }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
653 { name = "announcement", type = "text-multi", label = "Announcement" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
654 }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
655 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
656 local shut_down_service_handler = adhoc_simple(shut_down_service_layout, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
657 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
658 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
659 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
660 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
661 if fields.announcement and #fields.announcement > 0 then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
662 local message = st.message({type = "headline"}, fields.announcement):up() |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
663 :tag("subject"):text("Server is shutting down"); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
664 send_to_online(message); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
665 end |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
666 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
667 timer_add_task(tonumber(fields.delay or "5"), function(time) prosody.shutdown("Shutdown by adhoc command") end); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
668 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
669 return { status = "completed", info = "Server is about to shut down" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
670 end); |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
671 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
672 -- Unloading modules |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
673 local unload_modules_layout = dataforms_new { |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
674 title = "Unload modules"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
675 instructions = "Select the modules to be unloaded"; |
|
4932
212e81ac6ebb
mod_admin_web: Use util.dataforms' own error checking
Florian Zeitz <florob@babelmonkeys.de>
parents:
4926
diff
changeset
|
676 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
677 { name = "FORM_TYPE", type = "hidden", value = "http://prosody.im/protocol/modules#unload" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
678 { name = "modules", type = "list-multi", required = true, label = "Modules to be unloaded:"}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
679 }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
680 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
681 local unload_modules_handler = adhoc_initial(unload_modules_layout, function() |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
682 return { modules = array.collect(keys(hosts[module_host].modules)):sort() }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
683 end, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
684 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
685 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
686 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
687 local ok_list, err_list = {}, {}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
688 for _, module in ipairs(fields.modules) do |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
689 local ok, err = modulemanager.unload(module_host, module); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
690 if ok then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
691 ok_list[#ok_list + 1] = module; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
692 else |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
693 err_list[#err_list + 1] = module .. "(Error: " .. tostring(err) .. ")"; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
694 end |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
695 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
696 local info = (#ok_list > 0 and ("The following modules were successfully unloaded on host "..module_host..":\n"..t_concat(ok_list, "\n")) or "") |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
697 .. ((#ok_list > 0 and #err_list > 0) and "\n" or "") .. |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
698 (#err_list > 0 and ("Failed to unload the following modules on host "..module_host..":\n"..t_concat(err_list, "\n")) or ""); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
699 return { status = "completed", info = info }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
700 end); |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
701 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
702 -- Globally unloading a module |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
703 local globally_unload_module_layout = dataforms_new { |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
704 title = "Globally unload module"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
705 instructions = "Specify a module to unload on all hosts"; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
706 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
707 { name = "FORM_TYPE", type = "hidden", value = "http://prosody.im/protocol/modules#global-unload" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
708 { name = "module", type = "list-single", required = true, label = "Module to globally unload:"}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
709 }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
710 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
711 local globally_unload_module_handler = adhoc_initial(globally_unload_module_layout, function() |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
712 local loaded_modules = array(keys(modulemanager.get_modules("*"))); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
713 for _, host in pairs(hosts) do |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
714 loaded_modules:append(array(keys(host.modules))); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
715 end |
|
5818
5733a277237a
mod_admin_adhoc: As the only user of set:items(), update... it's now an iterator, and the extra keys() iterator is now unnecessary
Matthew Wild <mwild1@gmail.com>
parents:
5721
diff
changeset
|
716 loaded_modules = array(set.new(loaded_modules):items()):sort(); |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
717 return { module = loaded_modules }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
718 end, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
719 local is_global = false; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
720 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
721 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
722 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
723 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
724 if modulemanager.is_loaded("*", fields.module) then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
725 local ok, err = modulemanager.unload("*", fields.module); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
726 if not ok then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
727 return { status = "completed", info = 'Global module '..fields.module..' failed to unload: '..err }; |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
728 end |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
729 is_global = true; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
730 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
731 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
732 local ok_list, err_list = {}, {}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
733 for host_name, host in pairs(hosts) do |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
734 if modulemanager.is_loaded(host_name, fields.module) then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
735 local ok, err = modulemanager.unload(host_name, fields.module); |
|
3778
bd1845f9d5a4
mod_admin_adhoc: Support unloading multiple modules
Florian Zeitz <florob@babelmonkeys.de>
parents:
3777
diff
changeset
|
736 if ok then |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
737 ok_list[#ok_list + 1] = host_name; |
|
3778
bd1845f9d5a4
mod_admin_adhoc: Support unloading multiple modules
Florian Zeitz <florob@babelmonkeys.de>
parents:
3777
diff
changeset
|
738 else |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
739 err_list[#err_list + 1] = host_name .. " (Error: " .. tostring(err) .. ")"; |
|
3778
bd1845f9d5a4
mod_admin_adhoc: Support unloading multiple modules
Florian Zeitz <florob@babelmonkeys.de>
parents:
3777
diff
changeset
|
740 end |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
741 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
742 end |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
743 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
744 if #ok_list == 0 and #err_list == 0 then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
745 if is_global then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
746 return { status = "completed", info = 'Successfully unloaded global module '..fields.module }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
747 else |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
748 return { status = "completed", info = 'Module '..fields.module..' not loaded on any host.' }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
749 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
750 end |
|
5328
5e15e6700412
mod_admin_adhoc: Implement global module unloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5327
diff
changeset
|
751 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
752 local info = (#ok_list > 0 and ("The module "..fields.module.." was successfully unloaded on the hosts:\n"..t_concat(ok_list, "\n")) or "") |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
753 .. ((#ok_list > 0 and #err_list > 0) and "\n" or "") .. |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
754 (#err_list > 0 and ("Failed to unload the module "..fields.module.." on the hosts:\n"..t_concat(err_list, "\n")) or ""); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
755 return { status = "completed", info = info }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
756 end); |
|
5328
5e15e6700412
mod_admin_adhoc: Implement global module unloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5327
diff
changeset
|
757 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
758 -- Activating a host |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
759 local activate_host_layout = dataforms_new { |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
760 title = "Activate host"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
761 instructions = ""; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
762 |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
763 { name = "FORM_TYPE", type = "hidden", value = "http://prosody.im/protocol/hosts#activate" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
764 { name = "host", type = "text-single", required = true, label = "Host:"}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
765 }; |
|
5328
5e15e6700412
mod_admin_adhoc: Implement global module unloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5327
diff
changeset
|
766 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
767 local activate_host_handler = adhoc_simple(activate_host_layout, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
768 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
769 return generate_error_message(err); |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
770 end |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
771 local ok, err = hostmanager_activate(fields.host); |
|
5328
5e15e6700412
mod_admin_adhoc: Implement global module unloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5327
diff
changeset
|
772 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
773 if ok then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
774 return { status = "completed", info = fields.host .. " activated" }; |
|
5328
5e15e6700412
mod_admin_adhoc: Implement global module unloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5327
diff
changeset
|
775 else |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
776 return { status = "canceled", error = err } |
|
5328
5e15e6700412
mod_admin_adhoc: Implement global module unloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5327
diff
changeset
|
777 end |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
778 end); |
|
5328
5e15e6700412
mod_admin_adhoc: Implement global module unloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5327
diff
changeset
|
779 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
780 -- Deactivating a host |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
781 local deactivate_host_layout = dataforms_new { |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
782 title = "Deactivate host"; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
783 instructions = ""; |
|
5135
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
784 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
785 { name = "FORM_TYPE", type = "hidden", value = "http://prosody.im/protocol/hosts#activate" }; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
786 { name = "host", type = "text-single", required = true, label = "Host:"}; |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
787 }; |
|
5135
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
788 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
789 local deactivate_host_handler = adhoc_simple(deactivate_host_layout, function(fields, err) |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
790 if err then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
791 return generate_error_message(err); |
|
5135
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
792 end |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
793 local ok, err = hostmanager_deactivate(fields.host); |
|
5135
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
794 |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
795 if ok then |
|
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
796 return { status = "completed", info = fields.host .. " deactivated" }; |
|
5135
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
797 else |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
798 return { status = "canceled", error = err } |
|
5135
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
799 end |
|
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
800 end); |
|
5135
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
801 |
|
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
802 |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
803 local add_user_desc = adhoc_new("Add User", "http://jabber.org/protocol/admin#add-user", add_user_command_handler, "admin"); |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
804 local change_user_password_desc = adhoc_new("Change User Password", "http://jabber.org/protocol/admin#change-user-password", change_user_password_command_handler, "admin"); |
|
4292
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
805 local config_reload_desc = adhoc_new("Reload configuration", "http://prosody.im/protocol/config#reload", config_reload_handler, "global_admin"); |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
806 local delete_user_desc = adhoc_new("Delete User", "http://jabber.org/protocol/admin#delete-user", delete_user_command_handler, "admin"); |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
807 local end_user_session_desc = adhoc_new("End User Session", "http://jabber.org/protocol/admin#end-user-session", end_user_session_handler, "admin"); |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
808 local get_user_password_desc = adhoc_new("Get User Password", "http://jabber.org/protocol/admin#get-user-password", get_user_password_handler, "admin"); |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
809 local get_user_roster_desc = adhoc_new("Get User Roster","http://jabber.org/protocol/admin#get-user-roster", get_user_roster_handler, "admin"); |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
810 local get_user_stats_desc = adhoc_new("Get User Statistics","http://jabber.org/protocol/admin#user-stats", get_user_stats_handler, "admin"); |
|
5721
579c51cbc12c
mod_admin_adhoc: Fix node of the "Get List of Online Users" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
5514
diff
changeset
|
811 local get_online_users_desc = adhoc_new("Get List of Online Users", "http://jabber.org/protocol/admin#get-online-users-list", get_online_users_command_handler, "admin"); |
|
6458
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
812 local list_s2s_this_desc = adhoc_new("List S2S connections", "http://prosody.im/protocol/s2s#list", list_s2s_this_handler, "admin"); |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
813 local list_modules_desc = adhoc_new("List loaded modules", "http://prosody.im/protocol/modules#list", list_modules_handler, "admin"); |
|
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
814 local load_module_desc = adhoc_new("Load module", "http://prosody.im/protocol/modules#load", load_module_handler, "admin"); |
|
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
815 local globally_load_module_desc = adhoc_new("Globally load module", "http://prosody.im/protocol/modules#global-load", globally_load_module_handler, "global_admin"); |
|
3777
5ecbcef42ffb
mod_admin_adhoc: Support for reloading multiple modules
Florian Zeitz <florob@babelmonkeys.de>
parents:
3540
diff
changeset
|
816 local reload_modules_desc = adhoc_new("Reload modules", "http://prosody.im/protocol/modules#reload", reload_modules_handler, "admin"); |
|
5327
b0c36b043f00
mod_admin_adhoc: Implement global module reloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5326
diff
changeset
|
817 local globally_reload_module_desc = adhoc_new("Globally reload module", "http://prosody.im/protocol/modules#global-reload", globally_reload_module_handler, "global_admin"); |
|
4296
b991ffa0f2c5
mod_admin_adhoc: Only allow global admins to shut the server down
Florian Zeitz <florob@babelmonkeys.de>
parents:
4292
diff
changeset
|
818 local shut_down_service_desc = adhoc_new("Shut Down Service", "http://jabber.org/protocol/admin#shutdown", shut_down_service_handler, "global_admin"); |
|
3778
bd1845f9d5a4
mod_admin_adhoc: Support unloading multiple modules
Florian Zeitz <florob@babelmonkeys.de>
parents:
3777
diff
changeset
|
819 local unload_modules_desc = adhoc_new("Unload modules", "http://prosody.im/protocol/modules#unload", unload_modules_handler, "admin"); |
|
5328
5e15e6700412
mod_admin_adhoc: Implement global module unloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5327
diff
changeset
|
820 local globally_unload_module_desc = adhoc_new("Globally unload module", "http://prosody.im/protocol/modules#global-unload", globally_unload_module_handler, "global_admin"); |
|
5135
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
821 local activate_host_desc = adhoc_new("Activate host", "http://prosody.im/protocol/hosts#activate", activate_host_handler, "global_admin"); |
|
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
822 local deactivate_host_desc = adhoc_new("Deactivate host", "http://prosody.im/protocol/hosts#deactivate", deactivate_host_handler, "global_admin"); |
|
3487
b5c92275910b
mod_admin_adhoc: New module with merged functonality of mod_adhoc_cmd_admin and mod_adhoc_cmd_modules (of prosody-modules fame)
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
823 |
|
4926
58714123f600
mod_adhoc, mod_admin_adhoc, mod_announce: Use module:provides() to manage Ad-Hoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents:
4780
diff
changeset
|
824 module:provides("adhoc", add_user_desc); |
|
58714123f600
mod_adhoc, mod_admin_adhoc, mod_announce: Use module:provides() to manage Ad-Hoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents:
4780
diff
changeset
|
825 module:provides("adhoc", change_user_password_desc); |
|
58714123f600
mod_adhoc, mod_admin_adhoc, mod_announce: Use module:provides() to manage Ad-Hoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents:
4780
diff
changeset
|
826 module:provides("adhoc", config_reload_desc); |
|
58714123f600
mod_adhoc, mod_admin_adhoc, mod_announce: Use module:provides() to manage Ad-Hoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents:
4780
diff
changeset
|
827 module:provides("adhoc", delete_user_desc); |
|
58714123f600
mod_adhoc, mod_admin_adhoc, mod_announce: Use module:provides() to manage Ad-Hoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents:
4780
diff
changeset
|
828 module:provides("adhoc", end_user_session_desc); |
|
58714123f600
mod_adhoc, mod_admin_adhoc, mod_announce: Use module:provides() to manage Ad-Hoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents:
4780
diff
changeset
|
829 module:provides("adhoc", get_user_password_desc); |
|
58714123f600
mod_adhoc, mod_admin_adhoc, mod_announce: Use module:provides() to manage Ad-Hoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents:
4780
diff
changeset
|
830 module:provides("adhoc", get_user_roster_desc); |
|
58714123f600
mod_adhoc, mod_admin_adhoc, mod_announce: Use module:provides() to manage Ad-Hoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents:
4780
diff
changeset
|
831 module:provides("adhoc", get_user_stats_desc); |
|
58714123f600
mod_adhoc, mod_admin_adhoc, mod_announce: Use module:provides() to manage Ad-Hoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents:
4780
diff
changeset
|
832 module:provides("adhoc", get_online_users_desc); |
|
6458
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
833 module:provides("adhoc", list_s2s_this_desc); |
|
4926
58714123f600
mod_adhoc, mod_admin_adhoc, mod_announce: Use module:provides() to manage Ad-Hoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents:
4780
diff
changeset
|
834 module:provides("adhoc", list_modules_desc); |
|
58714123f600
mod_adhoc, mod_admin_adhoc, mod_announce: Use module:provides() to manage Ad-Hoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents:
4780
diff
changeset
|
835 module:provides("adhoc", load_module_desc); |
|
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
836 module:provides("adhoc", globally_load_module_desc); |
|
4926
58714123f600
mod_adhoc, mod_admin_adhoc, mod_announce: Use module:provides() to manage Ad-Hoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents:
4780
diff
changeset
|
837 module:provides("adhoc", reload_modules_desc); |
|
5327
b0c36b043f00
mod_admin_adhoc: Implement global module reloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5326
diff
changeset
|
838 module:provides("adhoc", globally_reload_module_desc); |
|
4926
58714123f600
mod_adhoc, mod_admin_adhoc, mod_announce: Use module:provides() to manage Ad-Hoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents:
4780
diff
changeset
|
839 module:provides("adhoc", shut_down_service_desc); |
|
58714123f600
mod_adhoc, mod_admin_adhoc, mod_announce: Use module:provides() to manage Ad-Hoc commands
Florian Zeitz <florob@babelmonkeys.de>
parents:
4780
diff
changeset
|
840 module:provides("adhoc", unload_modules_desc); |
|
5328
5e15e6700412
mod_admin_adhoc: Implement global module unloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5327
diff
changeset
|
841 module:provides("adhoc", globally_unload_module_desc); |
|
5135
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
842 module:provides("adhoc", activate_host_desc); |
|
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
843 module:provides("adhoc", deactivate_host_desc); |
