mod_adhoc_cmd_admin/mod_adhoc_cmd_admin.lua
author Matthew Wild <mwild1@gmail.com>
Wed, 21 Jul 2010 21:04:02 +0100
changeset 218 4a91047f9b5e
parent 171 d15c7d86db11
child 227 648c24de9040
permissions -rw-r--r--
mod_auth_ldap: Update for new usermanager.test_password syntax
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
169
b3a68e71b8a1 mod_adhoc, mod_adhoc_cmd_admin: Handle errors according to XEP
Florian Zeitz < florob@babelmonkeys.de>
parents: 155
diff changeset
     1
-- Copyright (C) 2009-2010 Florian Zeitz
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
     2
-- 
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
     3
-- This file is MIT/X11 licensed. Please see the
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
     4
-- COPYING file in the source package for more information.
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
     5
--
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
     6
40
4c4daa1f8ae7 mod_adhoc_cmd_admin: Add Get List of Online Users command
Florian Zeitz <florob@babelmonkeys.de>
parents: 36
diff changeset
     7
local _G = _G;
4c4daa1f8ae7 mod_adhoc_cmd_admin: Add Get List of Online Users command
Florian Zeitz <florob@babelmonkeys.de>
parents: 36
diff changeset
     8
4c4daa1f8ae7 mod_adhoc_cmd_admin: Add Get List of Online Users command
Florian Zeitz <florob@babelmonkeys.de>
parents: 36
diff changeset
     9
local prosody = _G.prosody;
4c4daa1f8ae7 mod_adhoc_cmd_admin: Add Get List of Online Users command
Florian Zeitz <florob@babelmonkeys.de>
parents: 36
diff changeset
    10
local hosts = prosody.hosts;
4c4daa1f8ae7 mod_adhoc_cmd_admin: Add Get List of Online Users command
Florian Zeitz <florob@babelmonkeys.de>
parents: 36
diff changeset
    11
84
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
    12
local t_concat = table.concat;
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
    13
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    14
local usermanager_user_exists = require "core.usermanager".user_exists;
145
890140ade4e5 mod_adhoc_cmd_admin: Use new set_password function if available
Florian Zeitz <florob@babelmonkeys.de>
parents: 144
diff changeset
    15
local usermanager_create_user = require "core.usermanager".create_user;
91
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
    16
local usermanager_get_password = require "core.usermanager".get_password;
145
890140ade4e5 mod_adhoc_cmd_admin: Use new set_password function if available
Florian Zeitz <florob@babelmonkeys.de>
parents: 144
diff changeset
    17
local usermanager_set_password = require "core.usermanager".set_password or
171
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
    18
	function (username, password, host) return usermanager_create_user(username, password, host) end;
36
58d326d86a9a mod_adhoc: add adhoc.lib.lua to ease implementing new commands (as a consequence mod_adhoc is a directory now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 35
diff changeset
    19
local is_admin = require "core.usermanager".is_admin;
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    20
144
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
    21
local rm_load_roster = require "core.rostermanager".load_roster;
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
    22
36
58d326d86a9a mod_adhoc: add adhoc.lib.lua to ease implementing new commands (as a consequence mod_adhoc is a directory now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 35
diff changeset
    23
local st, jid, uuid = require "util.stanza", require "util.jid", require "util.uuid";
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
    24
local timer_add_task = require "util.timer".add_task;
36
58d326d86a9a mod_adhoc: add adhoc.lib.lua to ease implementing new commands (as a consequence mod_adhoc is a directory now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 35
diff changeset
    25
local dataforms_new = require "util.dataforms".new;
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
    26
module:log("debug", module:get_name());
36
58d326d86a9a mod_adhoc: add adhoc.lib.lua to ease implementing new commands (as a consequence mod_adhoc is a directory now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 35
diff changeset
    27
local adhoc_new = module:require "adhoc".new;
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    28
35
3c49411d4aa3 mod_adhoc_cmd_admin: Fixed style, some typos, and got down to <100LOC. Perhaps we need util.adhoc?
Matthew Wild <mwild1@gmail.com>
parents: 34
diff changeset
    29
local add_user_layout = dataforms_new{
43
adc9eff8adb2 mod_adhoc, mod_adhoc_cmd_admin: Show only commands they may execute to the user
Florian Zeitz <florob@babelmonkeys.de>
parents: 40
diff changeset
    30
	title = "Adding a User";
34
fc374b724270 mod_adhoc_cmd_admin: Define form layout only once.
Florian Zeitz <florob@babelmonkeys.de>
parents: 33
diff changeset
    31
	instructions = "Fill out this form to add a user.";
fc374b724270 mod_adhoc_cmd_admin: Define form layout only once.
Florian Zeitz <florob@babelmonkeys.de>
parents: 33
diff changeset
    32
fc374b724270 mod_adhoc_cmd_admin: Define form layout only once.
Florian Zeitz <florob@babelmonkeys.de>
parents: 33
diff changeset
    33
	{ name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
fc374b724270 mod_adhoc_cmd_admin: Define form layout only once.
Florian Zeitz <florob@babelmonkeys.de>
parents: 33
diff changeset
    34
	{ name = "accountjid", type = "jid-single", required = true, label = "The Jabber ID for the account to be added" };
fc374b724270 mod_adhoc_cmd_admin: Define form layout only once.
Florian Zeitz <florob@babelmonkeys.de>
parents: 33
diff changeset
    35
	{ name = "password", type = "text-private", label = "The password for this account" };
fc374b724270 mod_adhoc_cmd_admin: Define form layout only once.
Florian Zeitz <florob@babelmonkeys.de>
parents: 33
diff changeset
    36
	{ name = "password-verify", type = "text-private", label = "Retype password" };
fc374b724270 mod_adhoc_cmd_admin: Define form layout only once.
Florian Zeitz <florob@babelmonkeys.de>
parents: 33
diff changeset
    37
};
fc374b724270 mod_adhoc_cmd_admin: Define form layout only once.
Florian Zeitz <florob@babelmonkeys.de>
parents: 33
diff changeset
    38
110
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
    39
local change_user_password_layout = dataforms_new{
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
    40
	title = "Changing a User Password";
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
    41
	instructions = "Fill out this form to change a user's password.";
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
    42
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
    43
	{ name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
    44
	{ name = "accountjid", type = "jid-single", required = true, label = "The Jabber ID for this account" };
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
    45
	{ name = "password", type = "text-private", required = true, label = "The password for this account" };
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
    46
};
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
    47
84
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
    48
local delete_user_layout = dataforms_new{
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
    49
	title = "Deleting a User";
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
    50
	instructions = "Fill out this form to delete a user.";
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
    51
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
    52
	{ name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
    53
	{ name = "accountjids", type = "jid-multi", label = "The Jabber ID(s) to delete" };
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
    54
};
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
    55
128
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
    56
local end_user_session_layout = dataforms_new{
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
    57
	title = "Ending a User Session";
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
    58
	instructions = "Fill out this form to end a user's session.";
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
    59
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
    60
	{ name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
    61
	{ name = "accountjids", type = "jid-multi", label = "The Jabber ID(s) for which to end sessions" };
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
    62
};
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
    63
91
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
    64
local get_user_password_layout = dataforms_new{
92
7dad958aad15 mod_adhoc_cmd_admin: Change to upcoming XEP version
Florian Zeitz <florob@babelmonkeys.de>
parents: 91
diff changeset
    65
	title = "Getting User's Password";
7dad958aad15 mod_adhoc_cmd_admin: Change to upcoming XEP version
Florian Zeitz <florob@babelmonkeys.de>
parents: 91
diff changeset
    66
	instructions = "Fill out this form to get a user's password.";
91
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
    67
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
    68
	{ name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
92
7dad958aad15 mod_adhoc_cmd_admin: Change to upcoming XEP version
Florian Zeitz <florob@babelmonkeys.de>
parents: 91
diff changeset
    69
	{ name = "accountjid", type = "jid-single", label = "The Jabber ID for which to retrieve the password" };
91
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
    70
};
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
    71
123
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
    72
local get_user_password_result_layout = dataforms_new{
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
    73
	{ name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
    74
	{ name = "accountjid", type = "jid-single", label = "JID" };
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
    75
	{ name = "password", type = "text-single", label = "Password" };
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
    76
};
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
    77
144
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
    78
local get_user_roster_layout = dataforms_new{
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
    79
	{ name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
    80
	{ name = "accountjid", type = "jid-single", label = "The Jabber ID for which to retrieve the roster" };
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
    81
};
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
    82
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
    83
local get_user_roster_result_layout = dataforms_new{
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
    84
	{ name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
    85
	{ name = "accountjid", type = "jid-single", label = "This is the roster for" };
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
    86
	{ name = "roster", type = "text-multi", label = "Roster XML" };
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
    87
};
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
    88
155
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
    89
local get_user_stats_layout = dataforms_new{
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
    90
	title = "Get User Statistics";
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
    91
	instructions = "Fill out this form to gather user statistics.";
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
    92
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
    93
	{ name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
    94
	{ name = "accountjid", type = "jid-single", label = "The Jabber ID for statistics" };
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
    95
};
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
    96
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
    97
local get_user_stats_result_layout = dataforms_new{
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
    98
	{ name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
    99
	{ name = "ipaddresses", type = "text-multi", label = "IP Addresses" };
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   100
	{ name = "rostersize", type = "text-single", label = "Roster size" };
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   101
	{ name = "onlineresources", type = "text-multi", label = "Online Resources" };
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   102
};
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   103
44
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   104
local get_online_users_layout = dataforms_new{
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   105
	title = "Getting List of Online Users";
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   106
	instructions = "How many users should be returned at most?";
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   107
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   108
	{ name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   109
	{ name = "max_items", type = "list-single", label = "Maximum number of users",
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   110
		value = { "25", "50", "75", "100", "150", "200", "all" } };
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   111
};
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   112
123
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
   113
local get_online_users_result_layout = dataforms_new{
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
   114
	{ name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
   115
	{ name = "onlineuserjids", type = "text-multi", label = "The list of all online users" };
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
   116
};
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
   117
67
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   118
local announce_layout = dataforms_new{
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   119
	title = "Making an Announcement";
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   120
	instructions = "Fill out this form to make an announcement to all\nactive users of this service.";
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   121
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   122
	{ name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   123
	{ name = "subject", type = "text-single", label = "Subject" };
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   124
	{ name = "announcement", type = "text-multi", required = true, label = "Announcement" };
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   125
};
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   126
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   127
local shut_down_service_layout = dataforms_new{
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   128
	title = "Shutting Down the Service";
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   129
	instructions = "Fill out this form to shut down the service.";
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   130
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   131
	{ name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" };
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   132
	{ name = "delay", type = "list-single", label = "Time delay before shutting down",
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   133
		value = { {label = "30 seconds", value = "30"},
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   134
			  {label = "60 seconds", value = "60"},
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   135
			  {label = "90 seconds", value = "90"},
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   136
			  {label = "2 minutes", value = "120"},
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   137
			  {label = "3 minutes", value = "180"},
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   138
			  {label = "4 minutes", value = "240"},
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   139
			  {label = "5 minutes", value = "300"},
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   140
		};
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   141
	};
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   142
	{ name = "announcement", type = "text-multi", label = "Announcement" };
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   143
};
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   144
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   145
function add_user_command_handler(self, data, state)
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   146
	if state then
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   147
		if data.action == "cancel" then
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   148
			return { status = "canceled" };
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   149
		end
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   150
		local fields = add_user_layout:data(data.form);
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   151
		local username, host, resource = jid.split(fields.accountjid);
171
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   152
		if data.to ~= host then
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   153
			return { status = "completed", error = { message = "Trying to add a user on " .. host .. " but command was sent to " .. data.to}};
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   154
		end
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   155
		if (fields["password"] == fields["password-verify"]) and username and host then
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   156
			if usermanager_user_exists(username, host) then
169
b3a68e71b8a1 mod_adhoc, mod_adhoc_cmd_admin: Handle errors according to XEP
Florian Zeitz < florob@babelmonkeys.de>
parents: 155
diff changeset
   157
				return { status = "completed", error = { message = "Account already exists" } };
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   158
			else
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   159
				if usermanager_create_user(username, fields.password, host) then
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   160
					module:log("info", "Created new account " .. username.."@"..host);
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   161
					return { status = "completed", info = "Account successfully created" };
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   162
				else
169
b3a68e71b8a1 mod_adhoc, mod_adhoc_cmd_admin: Handle errors according to XEP
Florian Zeitz < florob@babelmonkeys.de>
parents: 155
diff changeset
   163
					return { status = "completed", error = { message = "Failed to write data to disk" } };
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   164
				end
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   165
			end
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   166
		else
169
b3a68e71b8a1 mod_adhoc, mod_adhoc_cmd_admin: Handle errors according to XEP
Florian Zeitz < florob@babelmonkeys.de>
parents: 155
diff changeset
   167
			module:log("debug", (fields.accountjid or "<nil>") .. " " .. (fields.password or "<nil>") .. " "
b3a68e71b8a1 mod_adhoc, mod_adhoc_cmd_admin: Handle errors according to XEP
Florian Zeitz < florob@babelmonkeys.de>
parents: 155
diff changeset
   168
				.. (fields["password-verify"] or "<nil>"));
b3a68e71b8a1 mod_adhoc, mod_adhoc_cmd_admin: Handle errors according to XEP
Florian Zeitz < florob@babelmonkeys.de>
parents: 155
diff changeset
   169
			return { status = "completed", error = { message = "Invalid data.\nPassword mismatch, or empty username" } };
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   170
		end
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   171
	else
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   172
		return { status = "executing", form = add_user_layout }, "executing";
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   173
	end
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   174
end
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   175
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   176
function change_user_password_command_handler(self, data, state)
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   177
	if state then
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   178
		if data.action == "cancel" then
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   179
			return { status = "canceled" };
110
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
   180
		end
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   181
		local fields = change_user_password_layout:data(data.form);
110
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
   182
		local username, host, resource = jid.split(fields.accountjid);
171
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   183
		if data.to ~= host then
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   184
			return { status = "completed", error = { message = "Trying to change the password of a user on " .. host .. " but command was sent to " .. data.to}};
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   185
		end
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   186
		if usermanager_user_exists(username, host) and usermanager_set_password(username, fields.password, host) then
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   187
			return { status = "completed", info = "Password successfully changed" };
110
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
   188
		else
169
b3a68e71b8a1 mod_adhoc, mod_adhoc_cmd_admin: Handle errors according to XEP
Florian Zeitz < florob@babelmonkeys.de>
parents: 155
diff changeset
   189
			return { status = "completed", error = { message = "User does not exist" } };
110
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
   190
		end
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
   191
	else
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   192
		return { status = "executing", form = change_user_password_layout }, "executing";
110
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
   193
	end
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
   194
end
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
   195
128
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   196
function disconnect_user(match_jid)
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   197
	local node, hostname, givenResource = jid.split(match_jid);
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   198
	local host = hosts[hostname];
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   199
	local sessions = host.sessions[node] and host.sessions[node].sessions;
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   200
	for resource, session in pairs(sessions or {}) do
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   201
		if not givenResource or (resource == givenResource) then
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   202
			module:log("debug", "Disconnecting "..node.."@"..hostname.."/"..resource);
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   203
			session:close();
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   204
		end
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   205
	end
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   206
	return true;
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   207
end
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   208
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   209
function delete_user_command_handler(self, data, state)
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   210
	if state then
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   211
		if data.action == "cancel" then
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   212
			return { status = "canceled" };
84
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   213
		end
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   214
		local fields = delete_user_layout:data(data.form);
84
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   215
		local failed = {};
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   216
		local succeeded = {};
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   217
		for _, aJID in ipairs(fields.accountjids) do
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   218
			local username, host, resource = jid.split(aJID);
171
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   219
			if (host == data.to) and  usermanager_user_exists(username, host) and disconnect_user(aJID) and usermanager_create_user(username, nil, host) then
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   220
				module:log("debug", "User " .. aJID .. " has been deleted");
84
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   221
				succeeded[#succeeded+1] = aJID;
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   222
			else
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   223
				module:log("debug", "Tried to delete non-existant user "..aJID);
84
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   224
				failed[#failed+1] = aJID;
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   225
			end
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   226
		end
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   227
		return {status = "completed", info = (#succeeded ~= 0 and
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   228
				"The following accounts were successfully deleted:\n"..t_concat(succeeded, "\n").."\n" or "")..
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   229
				(#failed ~= 0 and
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   230
				"The following accounts could not be deleted:\n"..t_concat(failed, "\n") or "") };
84
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   231
	else
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   232
		return { status = "executing", form = delete_user_layout }, "executing";
84
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   233
	end
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   234
end
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   235
128
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   236
function end_user_session_handler(self, data, state)
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   237
	if state then
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   238
		if data.action == "cancel" then
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   239
			return { status = "canceled" };
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   240
		end
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   241
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   242
		local fields = end_user_session_layout:data(data.form);
171
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   243
		local failed = {};
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   244
		local succeeded = {};
128
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   245
		for _, aJID in ipairs(fields.accountjids) do
171
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   246
			local username, host, resource = jid.split(aJID);
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   247
			if (host == data.to) and  usermanager_user_exists(username, host) and disconnect_user(aJID) then
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   248
				succeeded[#succeeded+1] = aJID;
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   249
			else
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   250
				failed[#failed+1] = aJID;
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   251
			end
128
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   252
		end
171
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   253
		return {status = "completed", info = (#succeeded ~= 0 and
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   254
				"The following accounts were successfully disconnected:\n"..t_concat(succeeded, "\n").."\n" or "")..
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   255
				(#failed ~= 0 and
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   256
				"The following accounts could not be disconnected:\n"..t_concat(failed, "\n") or "") };
128
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   257
	else
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   258
		return { status = "executing", form = end_user_session_layout }, "executing";
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   259
	end
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   260
end
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   261
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   262
function get_user_password_handler(self, data, state)
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   263
	if state then
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   264
		if data.action == "cancel" then
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   265
			return { status = "canceled" };
91
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
   266
		end
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   267
		local fields = get_user_password_layout:data(data.form);
97
e172f02726d9 mod_adhoc_cmd_admin: Fix global access
Florian Zeitz <florob@babelmonkeys.de>
parents: 92
diff changeset
   268
		local user, host, resource = jid.split(fields.accountjid);
123
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
   269
		local accountjid = "";
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
   270
		local password = "";
171
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   271
		if host ~= data.to then
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   272
			return { status = "completed", error = { message = "Tried to get password for a user on " .. host .. " but command was sent to " .. data.to } };
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   273
		elseif usermanager_user_exists(user, host) then
123
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
   274
			accountjid = fields.accountjid;
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
   275
			password = usermanager_get_password(user, host);
92
7dad958aad15 mod_adhoc_cmd_admin: Change to upcoming XEP version
Florian Zeitz <florob@babelmonkeys.de>
parents: 91
diff changeset
   276
		else
169
b3a68e71b8a1 mod_adhoc, mod_adhoc_cmd_admin: Handle errors according to XEP
Florian Zeitz < florob@babelmonkeys.de>
parents: 155
diff changeset
   277
			return { status = "completed", error = { message = "User does not exist" } };
91
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
   278
		end
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   279
		return { status = "completed", result = { layout = get_user_password_result_layout, data = {accountjid = accountjid, password = password} } };
91
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
   280
	else
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   281
		return { status = "executing", form = get_user_password_layout }, "executing";
91
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
   282
	end
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
   283
end
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
   284
144
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   285
function get_user_roster_handler(self, data, state)
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   286
	if state then
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   287
		if data.action == "cancel" then
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   288
			return { status = "canceled" };
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   289
		end
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   290
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   291
		local fields = add_user_layout:data(data.form);
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   292
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   293
		local user, host, resource = jid.split(fields.accountjid);
171
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   294
		if host ~= data.to then
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   295
			return { status = "completed", error = { message = "Tried to get roster for a user on " .. host .. " but command was sent to " .. data.to } };
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   296
		elseif not usermanager_user_exists(user, host) then
169
b3a68e71b8a1 mod_adhoc, mod_adhoc_cmd_admin: Handle errors according to XEP
Florian Zeitz < florob@babelmonkeys.de>
parents: 155
diff changeset
   297
			return { status = "completed", error = { message = "User does not exist" } };
144
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   298
		end
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   299
		local roster = rm_load_roster(user, host);
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   300
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   301
		local query = st.stanza("query", { xmlns = "jabber:iq:roster" });
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   302
		for jid in pairs(roster) do
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   303
			if jid ~= "pending" and jid then
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   304
				query:tag("item", {
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   305
					jid = jid,
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   306
					subscription = roster[jid].subscription,
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   307
					ask = roster[jid].ask,
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   308
					name = roster[jid].name,
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   309
				});
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   310
				for group in pairs(roster[jid].groups) do
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   311
					query:tag("group"):text(group):up();
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   312
				end
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   313
				query:up();
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   314
			end
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   315
		end
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   316
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   317
		local query_text = query:__tostring(); -- TODO: Use upcoming pretty_print() function
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   318
		query_text = query_text:gsub("><", ">\n<");
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   319
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   320
		local result = get_user_roster_result_layout:form({ accountjid = user.."@"..host, roster = query_text }, "result");
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   321
		result:add_child(query);
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   322
		return { status = "completed", other = result };
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   323
	else
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   324
		return { status = "executing", form = get_user_roster_layout }, "executing";
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   325
	end
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   326
end
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   327
155
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   328
function get_user_stats_handler(self, data, state)
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   329
	if state then
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   330
		if data.action == "cancel" then
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   331
			return { status = "canceled" };
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   332
		end
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   333
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   334
		local fields = get_user_stats_layout:data(data.form);
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   335
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   336
		local user, host, resource = jid.split(fields.accountjid);
171
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   337
		if host ~= data.to then
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   338
			return { status = "completed", error = { message = "Tried to get stats for a user on " .. host .. " but command was sent to " .. data.to } };
d15c7d86db11 mod_adhoc_cmd_admin: Check whether action is to be performed on the host the command was sent to.
Florian Zeitz <florob@babelmonkeys.de>
parents: 169
diff changeset
   339
		elseif not usermanager_user_exists(user, host) then
169
b3a68e71b8a1 mod_adhoc, mod_adhoc_cmd_admin: Handle errors according to XEP
Florian Zeitz < florob@babelmonkeys.de>
parents: 155
diff changeset
   340
			return { status = "completed", error = { message = "User does not exist" } };
155
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   341
		end
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   342
		local roster = rm_load_roster(user, host);
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   343
		local rostersize = 0;
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   344
		local IPs = "";
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   345
		local resources = "";
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   346
		for jid in pairs(roster) do
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   347
			if jid ~= "pending" and jid then
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   348
				rostersize = rostersize + 1;
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   349
			end
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   350
		end
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   351
		for resource, session in pairs((hosts[host].sessions[user] and hosts[host].sessions[user].sessions) or {}) do
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   352
			resources = resources .. "\n" .. resource;
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   353
			IPs = IPs .. "\n" .. session.ip;
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   354
		end
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   355
		return { status = "completed", result = {layout = get_user_stats_result_layout, data = {ipaddresses = IPs, rostersize = tostring(rostersize),
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   356
			onlineresources = resources}} };
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   357
	else
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   358
		return { status = "executing", form = get_user_stats_layout }, "executing";
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   359
	end
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   360
end
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   361
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   362
function get_online_users_command_handler(self, data, state)
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   363
	if state then
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   364
		if data.action == "cancel" then
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   365
			return { status = "canceled" };
44
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   366
		end
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   367
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   368
		local fields = add_user_layout:data(data.form);
44
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   369
		
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   370
		local max_items = nil
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   371
		if fields.max_items ~= "all" then
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   372
			max_items = tonumber(fields.max_items);
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   373
		end
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   374
		local count = 0;
123
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
   375
		local users = nil;
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   376
		for username, user in pairs(hosts[data.to].sessions or {}) do
44
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   377
			if (max_items ~= nil) and (count >= max_items) then
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   378
				break;
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   379
			end
123
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
   380
			users = ((users and users.."\n") or "")..(username.."@"..data.to);
44
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   381
			count = count + 1;
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   382
		end
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   383
		return { status = "completed", result = {layout = get_online_users_result_layout, data = {onlineuserjids=users}} };
44
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   384
	else
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   385
		return { status = "executing", form = get_online_users_layout }, "executing";
40
4c4daa1f8ae7 mod_adhoc_cmd_admin: Add Get List of Online Users command
Florian Zeitz <florob@babelmonkeys.de>
parents: 36
diff changeset
   386
	end
4c4daa1f8ae7 mod_adhoc_cmd_admin: Add Get List of Online Users command
Florian Zeitz <florob@babelmonkeys.de>
parents: 36
diff changeset
   387
end
4c4daa1f8ae7 mod_adhoc_cmd_admin: Add Get List of Online Users command
Florian Zeitz <florob@babelmonkeys.de>
parents: 36
diff changeset
   388
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   389
function send_to_online(message, server)
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   390
	if server then
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   391
		sessions = { [server] = hosts[server] };
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   392
	else
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   393
		sessions = hosts;
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   394
	end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   395
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   396
	local c = 0;
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   397
	for domain, session in pairs(sessions) do
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   398
		for user in pairs(session.sessions or {}) do
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   399
			c = c + 1;
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   400
			message.attr.from = domain;
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   401
			message.attr.to = user.."@"..domain;
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   402
			core_post_stanza(session, message);
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   403
		end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   404
	end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   405
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   406
	return c;
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   407
end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   408
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   409
function announce_handler(self, data, state)
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   410
	if state then
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   411
		if data.action == "cancel" then
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   412
			return { status = "canceled" };
67
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   413
		end
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   414
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   415
		local fields = announce_layout:data(data.form);
67
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   416
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   417
		module:log("info", "Sending server announcement to all online users");
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   418
		local message = st.message({type = "headline"}, fields.announcement):up()
67
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   419
			:tag("subject"):text(fields.subject or "Announcement");
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   420
		
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   421
		local count = send_to_online(message, data.to);
67
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   422
		
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   423
		module:log("info", "Announcement sent to %d online users", count);
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   424
		return { status = "completed", info = "Announcement sent." };
67
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   425
	else
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   426
		return { status = "executing", form = announce_layout }, "executing";
67
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   427
	end
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   428
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   429
	return true;
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   430
end
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   431
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   432
function shut_down_service_handler(self, data, state)
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   433
	if state then
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   434
		if data.action == "cancel" then
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   435
			return { status = "canceled" };
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   436
		end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   437
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   438
		local fields = shut_down_service_layout:data(data.form);
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   439
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   440
		if fields.announcement then
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   441
			local message = st.message({type = "headline"}, fields.announcement):up()
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   442
				:tag("subject"):text("Server is shutting down");
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   443
			send_to_online(message);
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   444
		end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   445
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   446
		timer_add_task(tonumber(fields.delay or "5"), prosody.shutdown);
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   447
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   448
		return { status = "completed", info = "Server is about to shut down" };
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   449
	else
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   450
		return { status = "executing", form = shut_down_service_layout }, "executing";
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   451
	end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   452
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   453
	return true;
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   454
end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   455
43
adc9eff8adb2 mod_adhoc, mod_adhoc_cmd_admin: Show only commands they may execute to the user
Florian Zeitz <florob@babelmonkeys.de>
parents: 40
diff changeset
   456
local add_user_desc = adhoc_new("Add User", "http://jabber.org/protocol/admin#add-user", add_user_command_handler, "admin");
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   457
local announce_desc = adhoc_new("Send Announcement to Online Users", "http://jabber.org/protocol/admin#announce", announce_handler, "admin");
110
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
   458
local change_user_password_desc = adhoc_new("Change User Password", "http://jabber.org/protocol/admin#change-user-password", change_user_password_command_handler, "admin");
84
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   459
local delete_user_desc = adhoc_new("Delete User", "http://jabber.org/protocol/admin#delete-user", delete_user_command_handler, "admin");
128
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   460
local end_user_session_desc = adhoc_new("End User Session", "http://jabber.org/protocol/admin#end-user-session", end_user_session_handler, "admin");
91
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
   461
local get_user_password_desc = adhoc_new("Get User Password", "http://jabber.org/protocol/admin#get-user-password", get_user_password_handler, "admin");
144
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   462
local get_user_roster_desc = adhoc_new("Get User Roster","http://jabber.org/protocol/admin#get-user-roster", get_user_roster_handler, "admin");
155
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   463
local get_user_stats_desc = adhoc_new("Get User Statistics","http://jabber.org/protocol/admin#user-stats", get_user_stats_handler, "admin");
43
adc9eff8adb2 mod_adhoc, mod_adhoc_cmd_admin: Show only commands they may execute to the user
Florian Zeitz <florob@babelmonkeys.de>
parents: 40
diff changeset
   464
local get_online_users_desc = adhoc_new("Get List of Online Users", "http://jabber.org/protocol/admin#get-online-users", get_online_users_command_handler, "admin"); 
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   465
local shut_down_service_desc = adhoc_new("Shut Down Service", "http://jabber.org/protocol/admin#shutdown", shut_down_service_handler, "admin");
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   466
40
4c4daa1f8ae7 mod_adhoc_cmd_admin: Add Get List of Online Users command
Florian Zeitz <florob@babelmonkeys.de>
parents: 36
diff changeset
   467
module:add_item("adhoc", add_user_desc);
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   468
module:add_item("adhoc", announce_desc);
110
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
   469
module:add_item("adhoc", change_user_password_desc);
84
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   470
module:add_item("adhoc", delete_user_desc);
128
bdd1641c159d mod_adhoc_cmd_admin: Add "End User Session" command. Also end sessions before deleting a user
Florian Zeitz <florob@babelmonkeys.de>
parents: 124
diff changeset
   471
module:add_item("adhoc", end_user_session_desc);
91
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
   472
module:add_item("adhoc", get_user_password_desc);
144
b4f9518d5a00 mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Florian Zeitz <florob@babelmonkeys.de>
parents: 133
diff changeset
   473
module:add_item("adhoc", get_user_roster_desc);
155
7a037cb5ab9e mod_adhoc_cmd_admin: Add "Get User Statistics" command
Florian Zeitz < florob@babelmonkeys.de>
parents: 145
diff changeset
   474
module:add_item("adhoc", get_user_stats_desc);
40
4c4daa1f8ae7 mod_adhoc_cmd_admin: Add Get List of Online Users command
Florian Zeitz <florob@babelmonkeys.de>
parents: 36
diff changeset
   475
module:add_item("adhoc", get_online_users_desc);
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   476
module:add_item("adhoc", shut_down_service_desc);