Annotate

plugins/mod_admin_adhoc.lua @ 11776:1132a1f1ca5a

util.prosodyctl.check: Check for server-to-server Direct TLS records
author Kim Alvefur <zash@zash.se>
date Thu, 09 Sep 2021 22:09:41 +0200
parent 11727:f3aee8a825cc
child 11872:ffff0d8a9c68
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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" };
1091d7c3b4d2 mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents: 5371
diff changeset
257 { name = "rostersize", type = "text-single", label = "Roster size" };
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
1091d7c3b4d2 mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents: 5371
diff changeset
285 return { status = "completed", result = {layout = get_user_stats_result_layout, values = {ipaddresses = IPs, rostersize = tostring(rostersize),
1091d7c3b4d2 mod_admin_adhoc: Use util.adhoc
Florian Zeitz <florob@babelmonkeys.de>
parents: 5371
diff changeset
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
f906b803dc42 mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 6457
diff changeset
344 { name = "FORM_TYPE", type = "hidden", value = "http://prosody.im/protocol/s2s#list" };
f906b803dc42 mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 6457
diff changeset
345 { name = "sessions", type = "text-multi", label = "Connections:" };
8728
41c959c5c84b Fix spelling throughout the codebase [codespell]
Kim Alvefur <zash@zash.se>
parents: 8192
diff changeset
346 { name = "num_in", type = "text-single", label = "#incoming connections:" };
6458
f906b803dc42 mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 6457
diff changeset
347 { name = "num_out", type = "text-single", label = "#outgoing connections:" };
f906b803dc42 mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 6457
diff changeset
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"),
f906b803dc42 mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 6457
diff changeset
426 num_in = tostring(count_in),
f906b803dc42 mod_admin_web: Add "List S2S connections" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 6457
diff changeset
427 num_out = tostring(count_out)
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);