Software /
code /
prosody
Annotate
plugins/mod_admin_adhoc.lua @ 12591:494577d883ff
util.table: Fix inaccurate comment
Probably a duplicate of the comment next to Lmove, recorded by mistake
Lpack can probably be removed at some point in the near future once we
are confident it is not used anywhere.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 11 Jul 2022 20:02:10 +0200 |
parent | 11872:ffff0d8a9c68 |
child | 12910:5c90862e39aa |
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 -- |
9401
6329c07452b7
mod_admin_adhoc: Ignore shadowed 'err' variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9400
diff
changeset
|
6 -- luacheck: ignore 212/self 212/data 212/state 412/err 422/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
|
7 |
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 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
|
9 |
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 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
|
11 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
|
12 local t_concat = table.concat; |
6458
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
13 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
|
14 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
15 local module_host = module:get_host(); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
16 |
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
|
17 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
|
18 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
|
19 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
|
20 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
|
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 |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
57 local add_user_command_handler = adhoc_simple(add_user_layout, function(fields, err, data) |
5514
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 |
10543
46b456ed12bd
mod_admin_adhoc: Remove unused JID resource variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
10398
diff
changeset
|
61 local username, host = jid.split(fields.accountjid); |
5514
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 |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
70 module:log("info", "Created new account %s@%s by %s", username, host, jid.bare(data.from)); |
5514
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 |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
92 local change_user_password_command_handler = adhoc_simple(change_user_password_layout, function(fields, err, data) |
5514
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 |
10543
46b456ed12bd
mod_admin_adhoc: Remove unused JID resource variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
10398
diff
changeset
|
96 local username, host = jid.split(fields.accountjid); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
97 if module_host ~= host then |
8769
e809074cdc09
mod_admin_adhoc: Split a long line (improves readability) [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8728
diff
changeset
|
98 return { |
e809074cdc09
mod_admin_adhoc: Split a long line (improves readability) [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8728
diff
changeset
|
99 status = "completed", |
e809074cdc09
mod_admin_adhoc: Split a long line (improves readability) [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8728
diff
changeset
|
100 error = { |
e809074cdc09
mod_admin_adhoc: Split a long line (improves readability) [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8728
diff
changeset
|
101 message = "Trying to change the password of a user on " .. host .. " but command was sent to " .. module_host |
e809074cdc09
mod_admin_adhoc: Split a long line (improves readability) [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8728
diff
changeset
|
102 } |
e809074cdc09
mod_admin_adhoc: Split a long line (improves readability) [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8728
diff
changeset
|
103 }; |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
104 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
|
105 if usermanager_user_exists(username, host) and usermanager_set_password(username, fields.password, host, nil) then |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
106 module:log("info", "Password of account %s@%s changed by %s", username, host, jid.bare(data.from)); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
107 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
|
108 else |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
109 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
|
110 end |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
111 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
|
112 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
113 -- Reloading the config |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
114 local function config_reload_handler(self, data, state) |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
115 module:log("info", "%s reloads the config", jid.bare(data.from)); |
4292
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
116 local ok, err = prosody.reload_config(); |
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
117 if ok then |
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
118 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
|
119 else |
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
120 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
|
121 end |
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
122 end |
894ffea639e9
mod_admin_adhoc: Add "Reload configuration" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
3778
diff
changeset
|
123 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
124 -- Deleting a user's account |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
125 local delete_user_layout = dataforms_new{ |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
126 title = "Deleting a User"; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
127 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
|
128 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
129 { 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
|
130 { 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
|
131 }; |
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
|
132 |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
133 local delete_user_command_handler = adhoc_simple(delete_user_layout, function(fields, err, data) |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
134 if err then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
135 return generate_error_message(err); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
136 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
137 local failed = {}; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
138 local succeeded = {}; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
139 for _, aJID in ipairs(fields.accountjids) do |
10543
46b456ed12bd
mod_admin_adhoc: Remove unused JID resource variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
10398
diff
changeset
|
140 local username, host = jid.split(aJID); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
141 if (host == module_host) and usermanager_user_exists(username, host) and usermanager_delete_user(username, host) then |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
142 module:log("info", "User %s has been deleted by %s", aJID, jid.bare(data.from)); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
143 succeeded[#succeeded+1] = aJID; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
144 else |
11727
f3aee8a825cc
Fix various spelling errors (thanks codespell)
Kim Alvefur <zash@zash.se>
parents:
11633
diff
changeset
|
145 module:log("debug", "Tried to delete non-existent user %s", aJID); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
146 failed[#failed+1] = aJID; |
4932
212e81ac6ebb
mod_admin_web: Use util.dataforms' own error checking
Florian Zeitz <florob@babelmonkeys.de>
parents:
4926
diff
changeset
|
147 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
|
148 end |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
149 return {status = "completed", info = (#succeeded ~= 0 and |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
150 "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
|
151 (#failed ~= 0 and |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
152 "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
|
153 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
|
154 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
155 -- Ending a user's session |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
156 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
|
157 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
|
158 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
|
159 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
|
160 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
|
161 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
|
162 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
|
163 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
|
164 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
|
165 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
|
166 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
|
167 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
|
168 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
169 local end_user_session_layout = dataforms_new{ |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
170 title = "Ending a User Session"; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
171 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
|
172 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
173 { 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
|
174 { 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
|
175 }; |
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
|
176 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
177 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
|
178 if err then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
179 return generate_error_message(err); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
180 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
181 local failed = {}; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
182 local succeeded = {}; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
183 for _, aJID in ipairs(fields.accountjids) do |
10543
46b456ed12bd
mod_admin_adhoc: Remove unused JID resource variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
10398
diff
changeset
|
184 local username, host = jid.split(aJID); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
185 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
|
186 succeeded[#succeeded+1] = aJID; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
187 else |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
188 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
|
189 end |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
190 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
191 return {status = "completed", info = (#succeeded ~= 0 and |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
192 "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
|
193 (#failed ~= 0 and |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
194 "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
|
195 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
|
196 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
197 -- Getting a user's roster |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
198 local get_user_roster_layout = dataforms_new{ |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
199 { 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
|
200 { 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
|
201 }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
202 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
203 local get_user_roster_result_layout = dataforms_new{ |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
204 { 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
|
205 { 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
|
206 { name = "roster", type = "text-multi", label = "Roster XML" }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
207 }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
208 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
209 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
|
210 if err then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
211 return generate_error_message(err); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
212 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
213 |
10543
46b456ed12bd
mod_admin_adhoc: Remove unused JID resource variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
10398
diff
changeset
|
214 local user, host = jid.split(fields.accountjid); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
215 if host ~= module_host then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
216 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
|
217 elseif not usermanager_user_exists(user, host) then |
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 local roster = rm_load_roster(user, host); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
221 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
222 local query = st.stanza("query", { xmlns = "jabber:iq:roster" }); |
8771
82bdeb8009ce
mod_admin_adhoc: Rename variable to avoid name clash [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8770
diff
changeset
|
223 for contact_jid in pairs(roster) do |
82bdeb8009ce
mod_admin_adhoc: Rename variable to avoid name clash [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8770
diff
changeset
|
224 if contact_jid then |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
225 query:tag("item", { |
8771
82bdeb8009ce
mod_admin_adhoc: Rename variable to avoid name clash [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8770
diff
changeset
|
226 jid = contact_jid, |
82bdeb8009ce
mod_admin_adhoc: Rename variable to avoid name clash [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8770
diff
changeset
|
227 subscription = roster[contact_jid].subscription, |
82bdeb8009ce
mod_admin_adhoc: Rename variable to avoid name clash [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8770
diff
changeset
|
228 ask = roster[contact_jid].ask, |
82bdeb8009ce
mod_admin_adhoc: Rename variable to avoid name clash [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8770
diff
changeset
|
229 name = roster[contact_jid].name, |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
230 }); |
8771
82bdeb8009ce
mod_admin_adhoc: Rename variable to avoid name clash [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8770
diff
changeset
|
231 for group in pairs(roster[contact_jid].groups) do |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
232 query:tag("group"):text(group):up(); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
233 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
234 query:up(); |
4932
212e81ac6ebb
mod_admin_web: Use util.dataforms' own error checking
Florian Zeitz <florob@babelmonkeys.de>
parents:
4926
diff
changeset
|
235 end |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
236 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
237 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
238 local query_text = tostring(query):gsub("><", ">\n<"); |
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 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
|
241 result:add_child(query); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
242 return { status = "completed", other = result }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
243 end); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
244 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
245 -- Getting user statistics |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
246 local get_user_stats_layout = dataforms_new{ |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
247 title = "Get User Statistics"; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
248 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
|
249 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
250 { 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
|
251 { 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
|
252 }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
253 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
254 local get_user_stats_result_layout = dataforms_new{ |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
255 { 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
|
256 { name = "ipaddresses", type = "text-multi", label = "IP Addresses" }; |
11872
ffff0d8a9c68
mod_admin_adhoc: Move number coercion into util.dataforms
Kim Alvefur <zash@zash.se>
parents:
11727
diff
changeset
|
257 { name = "rostersize", type = "text-single", label = "Roster size", datatype = "xs:integer" }; |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
258 { name = "onlineresources", type = "text-multi", label = "Online Resources" }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
259 }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
260 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
261 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
|
262 if err then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
263 return generate_error_message(err); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
264 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
265 |
9399
ec60e74fd9bb
mod_admin_adhoc: Remove unused loop variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9086
diff
changeset
|
266 local user, host = jid.split(fields.accountjid); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
267 if host ~= module_host then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
268 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
|
269 elseif not usermanager_user_exists(user, host) then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
270 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
|
271 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
272 local roster = rm_load_roster(user, host); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
273 local rostersize = 0; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
274 local IPs = ""; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
275 local resources = ""; |
8772
375f2e663cea
mod_admin_adhoc: Rename loop variable to avoid name clash [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8771
diff
changeset
|
276 for contact_jid in pairs(roster) do |
375f2e663cea
mod_admin_adhoc: Rename loop variable to avoid name clash [luacheck]
Kim Alvefur <zash@zash.se>
parents:
8771
diff
changeset
|
277 if contact_jid then |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
278 rostersize = rostersize + 1; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
279 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
280 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
281 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
|
282 resources = resources .. "\n" .. resource; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
283 IPs = IPs .. "\n" .. session.ip; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
284 end |
11872
ffff0d8a9c68
mod_admin_adhoc: Move number coercion into util.dataforms
Kim Alvefur <zash@zash.se>
parents:
11727
diff
changeset
|
285 return { status = "completed", result = {layout = get_user_stats_result_layout, values = {ipaddresses = IPs, rostersize = rostersize, |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
286 onlineresources = resources}} }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
287 end); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
288 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
289 -- Getting a list of online users |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
290 local get_online_users_layout = dataforms_new{ |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
291 title = "Getting List of Online Users"; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
292 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
|
293 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
294 { 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
|
295 { name = "max_items", type = "list-single", label = "Maximum number of users", |
9085
9bd38bbf8623
mod_admin_adhoc: Keep options for list-single in 'options' field where they belong
Kim Alvefur <zash@zash.se>
parents:
8773
diff
changeset
|
296 options = { "25", "50", "75", "100", "150", "200", "all" } }; |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
297 { name = "details", type = "boolean", label = "Show details" }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
298 }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
299 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
300 local get_online_users_result_layout = dataforms_new{ |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
301 { 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
|
302 { 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
|
303 }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
304 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
305 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
|
306 if err then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
307 return generate_error_message(err); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
308 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
309 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
310 local max_items = nil |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
311 if fields.max_items ~= "all" then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
312 max_items = tonumber(fields.max_items); |
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 local count = 0; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
315 local users = {}; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
316 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
|
317 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
|
318 break; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
319 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
320 users[#users+1] = username.."@"..module_host; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
321 count = count + 1; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
322 if fields.details then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
323 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
|
324 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
|
325 if session.presence then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
326 status = session.presence:child_with_name("show"); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
327 if status then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
328 status = status:get_text() or "[invalid!]"; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
329 else |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
330 status = "available"; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
331 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
332 end |
6457
ddcb29a35409
mod_admin_adhoc: Show IP in detailed version of online user listing
Florian Zeitz <florob@babelmonkeys.de>
parents:
5818
diff
changeset
|
333 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
|
334 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
|
335 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
|
336 end |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
337 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
|
338 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
|
339 |
6458
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
340 -- 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
|
341 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
|
342 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
|
343 |
11872
ffff0d8a9c68
mod_admin_adhoc: Move number coercion into util.dataforms
Kim Alvefur <zash@zash.se>
parents:
11727
diff
changeset
|
344 { name = "FORM_TYPE"; type = "hidden"; value = "http://prosody.im/protocol/s2s#list" }; |
ffff0d8a9c68
mod_admin_adhoc: Move number coercion into util.dataforms
Kim Alvefur <zash@zash.se>
parents:
11727
diff
changeset
|
345 { name = "sessions"; type = "text-multi"; label = "Connections:" }; |
ffff0d8a9c68
mod_admin_adhoc: Move number coercion into util.dataforms
Kim Alvefur <zash@zash.se>
parents:
11727
diff
changeset
|
346 { name = "num_in"; type = "text-single"; label = "#incoming connections:"; datatype = "xs:integer" }; |
ffff0d8a9c68
mod_admin_adhoc: Move number coercion into util.dataforms
Kim Alvefur <zash@zash.se>
parents:
11727
diff
changeset
|
347 { name = "num_out"; type = "text-single"; label = "#outgoing connections:"; datatype = "xs:integer" }; |
6458
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
348 }; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
349 |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
350 local function session_flags(session, line) |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
351 line = line or {}; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
352 |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
353 if session.id then |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
354 line[#line+1] = "["..session.id.."]" |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
355 else |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
356 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
|
357 end |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
358 |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
359 local flags = {}; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
360 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
|
361 flags[#flags+1] = "authenticated"; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
362 end |
10398
fa50789d6ec7
mod_admin_adhoc: Add some flags to s2s listing command
Kim Alvefur <zash@zash.se>
parents:
9402
diff
changeset
|
363 if session.dialback_key then |
fa50789d6ec7
mod_admin_adhoc: Add some flags to s2s listing command
Kim Alvefur <zash@zash.se>
parents:
9402
diff
changeset
|
364 flags[#flags+1] = "dialback"; |
fa50789d6ec7
mod_admin_adhoc: Add some flags to s2s listing command
Kim Alvefur <zash@zash.se>
parents:
9402
diff
changeset
|
365 end |
fa50789d6ec7
mod_admin_adhoc: Add some flags to s2s listing command
Kim Alvefur <zash@zash.se>
parents:
9402
diff
changeset
|
366 if session.external_auth then |
fa50789d6ec7
mod_admin_adhoc: Add some flags to s2s listing command
Kim Alvefur <zash@zash.se>
parents:
9402
diff
changeset
|
367 flags[#flags+1] = "SASL"; |
fa50789d6ec7
mod_admin_adhoc: Add some flags to s2s listing command
Kim Alvefur <zash@zash.se>
parents:
9402
diff
changeset
|
368 end |
6458
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
369 if session.secure then |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
370 flags[#flags+1] = "encrypted"; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
371 end |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
372 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
|
373 flags[#flags+1] = "compressed"; |
6458
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
374 end |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
375 if session.smacks then |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
376 flags[#flags+1] = "sm"; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
377 end |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
378 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
|
379 flags[#flags+1] = "IPv6"; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
380 end |
10398
fa50789d6ec7
mod_admin_adhoc: Add some flags to s2s listing command
Kim Alvefur <zash@zash.se>
parents:
9402
diff
changeset
|
381 if session.incoming and session.outgoing then |
fa50789d6ec7
mod_admin_adhoc: Add some flags to s2s listing command
Kim Alvefur <zash@zash.se>
parents:
9402
diff
changeset
|
382 flags[#flags+1] = "bidi"; |
fa50789d6ec7
mod_admin_adhoc: Add some flags to s2s listing command
Kim Alvefur <zash@zash.se>
parents:
9402
diff
changeset
|
383 elseif session.is_bidi or session.bidi_session then |
fa50789d6ec7
mod_admin_adhoc: Add some flags to s2s listing command
Kim Alvefur <zash@zash.se>
parents:
9402
diff
changeset
|
384 flags[#flags+1] = "bidi"; |
fa50789d6ec7
mod_admin_adhoc: Add some flags to s2s listing command
Kim Alvefur <zash@zash.se>
parents:
9402
diff
changeset
|
385 end |
fa50789d6ec7
mod_admin_adhoc: Add some flags to s2s listing command
Kim Alvefur <zash@zash.se>
parents:
9402
diff
changeset
|
386 |
6458
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
387 line[#line+1] = "("..t_concat(flags, ", ")..")"; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
388 |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
389 return t_concat(line, " "); |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
390 end |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
391 |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
392 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
|
393 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
|
394 local s2s_list = {}; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
395 |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
396 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
|
397 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
|
398 local remotehost, localhost, direction; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
399 if session.direction == "outgoing" then |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
400 direction = "->"; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
401 count_out = count_out + 1; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
402 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
|
403 else |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
404 direction = "<-"; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
405 count_in = count_in + 1; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
406 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
|
407 end |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
408 local sess_lines = { r = remotehost, |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
409 session_flags(session, { "", direction, remotehost or "?" })}; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
410 |
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
|
411 if localhost == module_host then |
6458
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
412 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
|
413 end |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
414 end |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
415 |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
416 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
|
417 return a.r < b.r; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
418 end); |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
419 |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
420 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
|
421 s2s_list[i] = sess_lines[1]; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
422 end |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
423 |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
424 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
|
425 sessions = t_concat(s2s_list, "\n"), |
11872
ffff0d8a9c68
mod_admin_adhoc: Move number coercion into util.dataforms
Kim Alvefur <zash@zash.se>
parents:
11727
diff
changeset
|
426 num_in = count_in, |
ffff0d8a9c68
mod_admin_adhoc: Move number coercion into util.dataforms
Kim Alvefur <zash@zash.se>
parents:
11727
diff
changeset
|
427 num_out = count_out |
6458
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
428 } } }; |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
429 end |
f906b803dc42
mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents:
6457
diff
changeset
|
430 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
431 -- Getting a list of loaded modules |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
432 local list_modules_result = dataforms_new { |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
433 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
|
434 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
435 { 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
|
436 { 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
|
437 }; |
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
|
438 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
439 local function list_modules_handler(self, data, state) |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
440 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
|
441 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
|
442 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
|
443 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
444 -- Loading a module |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
445 local load_module_layout = dataforms_new { |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
446 title = "Load module"; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
447 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
|
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#load" }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
450 { 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
|
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 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
|
454 if err then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
455 return generate_error_message(err); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
456 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
457 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
|
458 return { status = "completed", info = "Module already loaded" }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
459 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
460 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
|
461 if ok then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
462 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
|
463 else |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
464 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
|
465 '". Error was: "'..tostring(err or "<unspecified>")..'"' } }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
466 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
467 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
|
468 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
469 -- Globally loading a module |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
470 local globally_load_module_layout = dataforms_new { |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
471 title = "Globally load module"; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
472 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
|
473 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
474 { 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
|
475 { 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
|
476 }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
477 |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
478 local globally_load_module_handler = adhoc_simple(globally_load_module_layout, function(fields, err, data) |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
479 local ok_list, err_list = {}, {}; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
480 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
481 if err then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
482 return generate_error_message(err); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
483 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
|
484 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
485 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
|
486 if ok then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
487 ok_list[#ok_list + 1] = module_host; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
488 else |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
489 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
|
490 end |
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 -- Is this a global module? |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
493 if modulemanager.is_loaded("*", fields.module) and not modulemanager.is_loaded(module_host, fields.module) then |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
494 module:log("info", "mod_%s loaded by %s", fields.module, jid.bare(data.from)); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
495 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
|
496 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
497 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
498 -- 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
|
499 for host_name, host in pairs(hosts) do |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
500 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
|
501 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
|
502 if ok then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
503 ok_list[#ok_list + 1] = host_name; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
504 else |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
505 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
|
506 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
|
507 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
|
508 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
|
509 |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
510 module:log("info", "mod_%s loaded by %s", fields.module, jid.bare(data.from)); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
511 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
|
512 .. ((#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
|
513 (#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
|
514 return { status = "completed", info = info }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
515 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
|
516 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
517 -- Reloading modules |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
518 local reload_modules_layout = dataforms_new { |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
519 title = "Reload modules"; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
520 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
|
521 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
522 { 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
|
523 { 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
|
524 }; |
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
|
525 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
526 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
|
527 return { modules = array.collect(keys(hosts[module_host].modules)):sort() }; |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
528 end, function(fields, err, data) |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
529 if err then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
530 return generate_error_message(err); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
531 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
532 local ok_list, err_list = {}, {}; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
533 for _, module in ipairs(fields.modules) do |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
534 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
|
535 if ok then |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
536 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
|
537 else |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
538 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
|
539 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
|
540 end |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
541 module:log("info", "mod_%s reloaded by %s", fields.module, jid.bare(data.from)); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
542 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
|
543 .. ((#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
|
544 (#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
|
545 return { status = "completed", info = info }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
546 end); |
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
547 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
548 -- Globally reloading a module |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
549 local globally_reload_module_layout = dataforms_new { |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
550 title = "Globally reload module"; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
551 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
|
552 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
553 { 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
|
554 { 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
|
555 }; |
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
556 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
557 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
|
558 local loaded_modules = array(keys(modulemanager.get_modules("*"))); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
559 for _, host in pairs(hosts) do |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
560 loaded_modules:append(array(keys(host.modules))); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
561 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
|
562 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
|
563 return { module = loaded_modules }; |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
564 end, function(fields, err, data) |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
565 local is_global = false; |
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
566 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
567 if err then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
568 return generate_error_message(err); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
569 end |
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
570 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
571 if modulemanager.is_loaded("*", fields.module) then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
572 local ok, err = modulemanager.reload("*", fields.module); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
573 if not ok then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
574 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
|
575 end |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
576 is_global = true; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
577 end |
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
578 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
579 local ok_list, err_list = {}, {}; |
9399
ec60e74fd9bb
mod_admin_adhoc: Remove unused loop variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9086
diff
changeset
|
580 for host_name in pairs(hosts) do |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
581 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
|
582 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
|
583 if ok then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
584 ok_list[#ok_list + 1] = host_name; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
585 else |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
586 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
|
587 end |
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
588 end |
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
589 end |
5327
b0c36b043f00
mod_admin_adhoc: Implement global module reloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5326
diff
changeset
|
590 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
591 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
|
592 if is_global then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
593 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
|
594 else |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
595 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
|
596 end |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
597 end |
5327
b0c36b043f00
mod_admin_adhoc: Implement global module reloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5326
diff
changeset
|
598 |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
599 module:log("info", "mod_%s reloaded by %s", fields.module, jid.bare(data.from)); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
600 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
|
601 .. ((#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
|
602 (#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
|
603 return { status = "completed", info = info }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
604 end); |
5327
b0c36b043f00
mod_admin_adhoc: Implement global module reloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5326
diff
changeset
|
605 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
606 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
|
607 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
|
608 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
|
609 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
|
610 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
|
611 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
|
612 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
|
613 |
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
|
614 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
|
615 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
|
616 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
|
617 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
|
618 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
|
619 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
|
620 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
|
621 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
|
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 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
|
625 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
|
626 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
627 -- Shutting down the service |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
628 local shut_down_service_layout = dataforms_new{ |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
629 title = "Shutting Down the Service"; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
630 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
|
631 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
632 { 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
|
633 { name = "delay", type = "list-single", label = "Time delay before shutting down", |
9085
9bd38bbf8623
mod_admin_adhoc: Keep options for list-single in 'options' field where they belong
Kim Alvefur <zash@zash.se>
parents:
8773
diff
changeset
|
634 value = "5", |
9bd38bbf8623
mod_admin_adhoc: Keep options for list-single in 'options' field where they belong
Kim Alvefur <zash@zash.se>
parents:
8773
diff
changeset
|
635 options = { |
9086
74b4be5afb74
mod_admin_adhoc: Normalize indentation
Kim Alvefur <zash@zash.se>
parents:
9085
diff
changeset
|
636 {label = "5 seconds", value = "5"}, |
74b4be5afb74
mod_admin_adhoc: Normalize indentation
Kim Alvefur <zash@zash.se>
parents:
9085
diff
changeset
|
637 {label = "30 seconds", value = "30"}, |
74b4be5afb74
mod_admin_adhoc: Normalize indentation
Kim Alvefur <zash@zash.se>
parents:
9085
diff
changeset
|
638 {label = "60 seconds", value = "60"}, |
74b4be5afb74
mod_admin_adhoc: Normalize indentation
Kim Alvefur <zash@zash.se>
parents:
9085
diff
changeset
|
639 {label = "90 seconds", value = "90"}, |
74b4be5afb74
mod_admin_adhoc: Normalize indentation
Kim Alvefur <zash@zash.se>
parents:
9085
diff
changeset
|
640 {label = "2 minutes", value = "120"}, |
74b4be5afb74
mod_admin_adhoc: Normalize indentation
Kim Alvefur <zash@zash.se>
parents:
9085
diff
changeset
|
641 {label = "3 minutes", value = "180"}, |
74b4be5afb74
mod_admin_adhoc: Normalize indentation
Kim Alvefur <zash@zash.se>
parents:
9085
diff
changeset
|
642 {label = "4 minutes", value = "240"}, |
74b4be5afb74
mod_admin_adhoc: Normalize indentation
Kim Alvefur <zash@zash.se>
parents:
9085
diff
changeset
|
643 {label = "5 minutes", value = "300"}, |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
644 }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
645 }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
646 { name = "announcement", type = "text-multi", label = "Announcement" }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
647 }; |
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
|
648 |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
649 local shut_down_service_handler = adhoc_simple(shut_down_service_layout, function(fields, err, data) |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
650 if err then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
651 return generate_error_message(err); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
652 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
653 |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
654 module:log("info", "Server being shut down by %s", jid.bare(data.from)); |
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
655 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
656 if fields.announcement and #fields.announcement > 0 then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
657 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
|
658 :tag("subject"):text("Server is shutting down"); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
659 send_to_online(message); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
660 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
|
661 |
9400
9ef746c2a644
mod_admin_adhoc: Remove unused argument [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9399
diff
changeset
|
662 timer_add_task(tonumber(fields.delay or "5"), function() prosody.shutdown("Shutdown by adhoc command") end); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
663 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
664 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
|
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 -- Unloading modules |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
668 local unload_modules_layout = dataforms_new { |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
669 title = "Unload modules"; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
670 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
|
671 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
672 { 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
|
673 { 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
|
674 }; |
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
|
675 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
676 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
|
677 return { modules = array.collect(keys(hosts[module_host].modules)):sort() }; |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
678 end, function(fields, err, data) |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
679 if err then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
680 return generate_error_message(err); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
681 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
682 local ok_list, err_list = {}, {}; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
683 for _, module in ipairs(fields.modules) do |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
684 local ok, err = modulemanager.unload(module_host, module); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
685 if ok then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
686 ok_list[#ok_list + 1] = module; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
687 else |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
688 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
|
689 end |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
690 end |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
691 module:log("info", "mod_%s unloaded by %s", fields.module, jid.bare(data.from)); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
692 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
|
693 .. ((#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
|
694 (#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
|
695 return { status = "completed", info = info }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
696 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
|
697 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
698 -- Globally unloading a module |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
699 local globally_unload_module_layout = dataforms_new { |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
700 title = "Globally unload module"; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
701 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
|
702 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
703 { 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
|
704 { 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
|
705 }; |
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 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
|
708 local loaded_modules = array(keys(modulemanager.get_modules("*"))); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
709 for _, host in pairs(hosts) do |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
710 loaded_modules:append(array(keys(host.modules))); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
711 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
|
712 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
|
713 return { module = loaded_modules }; |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
714 end, function(fields, err, data) |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
715 local is_global = false; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
716 if err then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
717 return generate_error_message(err); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
718 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
719 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
720 if modulemanager.is_loaded("*", fields.module) then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
721 local ok, err = modulemanager.unload("*", fields.module); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
722 if not ok then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
723 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
|
724 end |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
725 is_global = true; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
726 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
727 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
728 local ok_list, err_list = {}, {}; |
9399
ec60e74fd9bb
mod_admin_adhoc: Remove unused loop variables [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9086
diff
changeset
|
729 for host_name in pairs(hosts) do |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
730 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
|
731 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
|
732 if ok then |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
733 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
|
734 else |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
735 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
|
736 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
|
737 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
|
738 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
|
739 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
740 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
|
741 if is_global then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
742 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
|
743 else |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
744 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
|
745 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
746 end |
5328
5e15e6700412
mod_admin_adhoc: Implement global module unloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5327
diff
changeset
|
747 |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
748 module:log("info", "mod_%s globally unloaded by %s", fields.module, jid.bare(data.from)); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
749 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
|
750 .. ((#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
|
751 (#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
|
752 return { status = "completed", info = info }; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
753 end); |
5328
5e15e6700412
mod_admin_adhoc: Implement global module unloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5327
diff
changeset
|
754 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
755 -- Activating a host |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
756 local activate_host_layout = dataforms_new { |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
757 title = "Activate host"; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
758 instructions = ""; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
759 |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
760 { 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
|
761 { 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
|
762 }; |
5328
5e15e6700412
mod_admin_adhoc: Implement global module unloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5327
diff
changeset
|
763 |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
764 local activate_host_handler = adhoc_simple(activate_host_layout, function(fields, err, data) |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
765 if err then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
766 return generate_error_message(err); |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
767 end |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
768 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
|
769 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
770 if ok then |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
771 module:log("info", "Host '%s' activated by %s", fields.host, jid.bare(data.from)); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
772 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
|
773 else |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
774 return { status = "canceled", error = err } |
5328
5e15e6700412
mod_admin_adhoc: Implement global module unloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5327
diff
changeset
|
775 end |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
776 end); |
5328
5e15e6700412
mod_admin_adhoc: Implement global module unloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5327
diff
changeset
|
777 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
778 -- Deactivating a host |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
779 local deactivate_host_layout = dataforms_new { |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
780 title = "Deactivate host"; |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
781 instructions = ""; |
5135
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
782 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
783 { 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
|
784 { 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
|
785 }; |
5135
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
786 |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
787 local deactivate_host_handler = adhoc_simple(deactivate_host_layout, function(fields, err, data) |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
788 if err then |
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
789 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
|
790 end |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
791 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
|
792 |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
793 if ok then |
11633
77e38ea34d82
mod_admin_adhoc: Log who performs administrative actions
Kim Alvefur <zash@zash.se>
parents:
11632
diff
changeset
|
794 module:log("info", "Host '%s' deactivated by %s", fields.host, jid.bare(data.from)); |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
795 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
|
796 else |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
797 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
|
798 end |
5514
1091d7c3b4d2
mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents:
5371
diff
changeset
|
799 end); |
5135
52eafe0e9772
mod_admin_adhoc: Add commands for activating and deactivating hosts
Kim Alvefur <zash@zash.se>
parents:
5100
diff
changeset
|
800 |
9402
b530b5daae91
mod_admin_adhoc: Ignore the very long lines at the end [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9401
diff
changeset
|
801 -- luacheck: max_line_length 180 |
5135
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_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
|
809 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
|
810 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
|
811 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
|
812 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
|
813 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
|
814 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
|
815 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
|
816 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
|
817 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
|
818 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
|
819 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
|
820 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
|
821 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
|
822 |
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
|
823 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
|
824 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
|
825 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
|
826 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
|
827 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
|
828 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
|
829 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
|
830 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
|
831 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
|
832 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
|
833 module:provides("adhoc", load_module_desc); |
5325
97bf651e32a4
mod_admin_adhoc: Implement global module loading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5324
diff
changeset
|
834 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
|
835 module:provides("adhoc", reload_modules_desc); |
5327
b0c36b043f00
mod_admin_adhoc: Implement global module reloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5326
diff
changeset
|
836 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
|
837 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
|
838 module:provides("adhoc", unload_modules_desc); |
5328
5e15e6700412
mod_admin_adhoc: Implement global module unloading
Florian Zeitz <florob@babelmonkeys.de>
parents:
5327
diff
changeset
|
839 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
|
840 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
|
841 module:provides("adhoc", deactivate_host_desc); |