mod_adhoc_cmd_admin/mod_adhoc_cmd_admin.lua
author Florian Zeitz <florob@babelmonkeys.de>
Fri, 12 Mar 2010 03:15:49 +0100
changeset 144 b4f9518d5a00
parent 133 8945153321a1
child 145 890140ade4e5
permissions -rw-r--r--
mod_adhoc_cmd_admin: "Get User Roster" command (with not very good™ XML formatting for now)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
     1
-- Copyright (C) 2009 Florian Zeitz
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;
91
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
    15
local usermanager_get_password = require "core.usermanager".get_password;
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    16
local usermanager_create_user = require "core.usermanager".create_user;
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
    17
local is_admin = require "core.usermanager".is_admin;
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    18
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
    19
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
    20
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
    21
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
    22
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
    23
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
    24
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
    25
local adhoc_new = module:require "adhoc".new;
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
    26
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
    27
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
    28
	title = "Adding a User";
34
fc374b724270 mod_adhoc_cmd_admin: Define form layout only once.
Florian Zeitz <florob@babelmonkeys.de>
parents: 33
diff changeset
    29
	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
    30
fc374b724270 mod_adhoc_cmd_admin: Define form layout only once.
Florian Zeitz <florob@babelmonkeys.de>
parents: 33
diff changeset
    31
	{ 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
    32
	{ 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
    33
	{ 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
    34
	{ 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
    35
};
fc374b724270 mod_adhoc_cmd_admin: Define form layout only once.
Florian Zeitz <florob@babelmonkeys.de>
parents: 33
diff changeset
    36
110
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
    37
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
    38
	title = "Changing a User Password";
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
    39
	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
    40
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
    41
	{ 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
    42
	{ 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
    43
	{ 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
    44
};
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
    45
84
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
    46
local delete_user_layout = dataforms_new{
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
    47
	title = "Deleting a User";
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
    48
	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
    49
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
    50
	{ 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
    51
	{ 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
    52
};
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
    53
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
    54
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
    55
	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
    56
	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
    57
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
	{ 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
    59
	{ 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
    60
};
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
91
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
    62
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
    63
	title = "Getting User's Password";
7dad958aad15 mod_adhoc_cmd_admin: Change to upcoming XEP version
Florian Zeitz <florob@babelmonkeys.de>
parents: 91
diff changeset
    64
	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
    65
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
    66
	{ 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
    67
	{ 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
    68
};
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
    69
123
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
    70
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
    71
	{ 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
    72
	{ 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
    73
	{ 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
    74
};
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
    75
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
    76
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
    77
	{ 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
    78
	{ 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
    79
};
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
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
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
    82
	{ 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
    83
	{ 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
    84
	{ 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
    85
};
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
44
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
    87
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
    88
	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
    89
	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
    90
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
    91
	{ 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
    92
	{ 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
    93
		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
    94
};
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
    95
123
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
    96
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
    97
	{ 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
    98
	{ 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
    99
};
c04443ea114c mod_adhoc, mod_adhoc_cmd_admin: use util.datforms for type="result" forms
Florian Zeitz <florob@babelmonkeys.de>
parents: 121
diff changeset
   100
67
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   101
local announce_layout = dataforms_new{
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   102
	title = "Making an Announcement";
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   103
	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
   104
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   105
	{ 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
   106
	{ name = "subject", type = "text-single", label = "Subject" };
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   107
	{ 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
   108
};
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   109
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   110
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
   111
	title = "Shutting Down the Service";
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   112
	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
   113
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   114
	{ 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
   115
	{ 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
   116
		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
   117
			  {label = "60 seconds", value = "60"},
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   118
			  {label = "90 seconds", value = "90"},
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   119
			  {label = "2 minutes", value = "120"},
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   120
			  {label = "3 minutes", value = "180"},
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   121
			  {label = "4 minutes", value = "240"},
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   122
			  {label = "5 minutes", value = "300"},
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   123
		};
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   124
	};
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   125
	{ 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
   126
};
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   127
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   128
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
   129
	if state then
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   130
		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
   131
			return { status = "canceled" };
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   132
		end
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   133
		local fields = add_user_layout:data(data.form);
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   134
		local username, host, resource = jid.split(fields.accountjid);
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   135
		if (fields["password"] == fields["password-verify"]) and username and host and host == data.to then
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   136
			if usermanager_user_exists(username, host) then
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   137
				return { status = "error", error = { type = "cancel", condition = "conflict", message = "Account already exists" } };
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   138
			else
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   139
				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
   140
					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
   141
					return { status = "completed", info = "Account successfully created" };
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   142
				else
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   143
					return { status = "error", error = { type = "wait", condition = "internal-server-error",
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   144
						 message = "Failed to write data to disk" } };
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   145
				end
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   146
			end
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   147
		else
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   148
			module:log("debug", fields.accountjid .. " " .. fields.password .. " " .. fields["password-verify"]);
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   149
			return { status = "error", error = { type = "cancel", condition = "conflict",
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   150
				 message = "Invalid data.\nPassword mismatch, or empty username" } };
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   151
		end
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   152
	else
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   153
		return { status = "executing", form = add_user_layout }, "executing";
29
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   154
	end
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   155
end
b384999b047f mod_adhoc_cmd_admin: Initial commit
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff changeset
   156
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   157
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
   158
	if state then
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   159
		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
   160
			return { status = "canceled" };
110
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
   161
		end
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   162
		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
   163
		local username, host, resource = jid.split(fields.accountjid);
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
   164
		if usermanager_user_exists(username, host) and usermanager_create_user(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
   165
			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
   166
		else
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   167
			return { status = "error", error = { type = "cancel", condition = "item-not-found", 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
   168
		end
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
   169
	else
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   170
		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
   171
	end
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
   172
end
e02281edc273 mod_adhoc_cmd_admin: Add Change User Password command
Florian Zeitz <florob@babelmonkeys.de>
parents: 109
diff changeset
   173
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
   174
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
   175
	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
   176
	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
   177
	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
   178
	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
   179
		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
   180
			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
   181
			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
   182
		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
   183
	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
   184
	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
   185
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
   186
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   187
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
   188
	if state then
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   189
		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
   190
			return { status = "canceled" };
84
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   191
		end
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   192
		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
   193
		local failed = {};
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   194
		local succeeded = {};
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   195
		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
   196
			local username, host, resource = jid.split(aJID);
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
   197
			if 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
   198
				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
   199
				succeeded[#succeeded+1] = aJID;
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   200
			else
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   201
				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
   202
				failed[#failed+1] = aJID;
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   203
			end
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   204
		end
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   205
		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
   206
				"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
   207
				(#failed ~= 0 and
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   208
				"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
   209
	else
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   210
		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
   211
	end
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   212
end
b47216512a1d mod_adhoc_cmd_admin: Implement "Delete User" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 67
diff changeset
   213
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
   214
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
   215
	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
   216
		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
   217
			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
   218
		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
   219
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
   220
		local fields = end_user_session_layout:data(data.form);
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
   221
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
   222
		for _, aJID in ipairs(fields.accountjids) 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
   223
			disconnect_user(aJID);
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
   224
		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
   225
		return { status = "completed", info = "User(s) have been disconnected" };
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
   226
	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
   227
		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
   228
	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
   229
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
   230
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   231
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
   232
	if state then
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   233
		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
   234
			return { status = "canceled" };
91
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
   235
		end
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   236
		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
   237
		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
   238
		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
   239
		local password = "";
92
7dad958aad15 mod_adhoc_cmd_admin: Change to upcoming XEP version
Florian Zeitz <florob@babelmonkeys.de>
parents: 91
diff changeset
   240
		if 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
   241
			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
   242
			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
   243
		else
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   244
			return { status = "error", error = { type = "cancel", condition = "item-not-found", message = "User does not exist" } };
91
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
   245
		end
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   246
		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
   247
	else
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   248
		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
   249
	end
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
   250
end
63bf00fd8f6e mod_adhoc_cmd_admin: Implement Get User Password
Florian Zeitz <florob@babelmonkeys.de>
parents: 84
diff changeset
   251
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
   252
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
   253
	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
   254
		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
   255
			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
   256
		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
   257
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
   258
		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
   259
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
   260
		local user, host, resource = jid.split(fields.accountjid);
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
   261
		if not usermanager_user_exists(user, host) 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
   262
			return { status = "error", error = { type = "cancel", condition = "item-not-found", message = "User does not exist" } };
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
   263
		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
   264
		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
   265
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
   266
		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
   267
		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
   268
			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
   269
				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
   270
					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
   271
					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
   272
					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
   273
					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
   274
				});
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
   275
				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
   276
					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
   277
				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
   278
				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
   279
			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
   280
		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
   281
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
   282
		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
   283
		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
   284
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
		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
   286
		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
   287
		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
   288
	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
   289
		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
   290
	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
   291
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
   292
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   293
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
   294
	if state then
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   295
		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
   296
			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
   297
		end
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   298
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   299
		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
   300
		
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   301
		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
   302
		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
   303
			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
   304
		end
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   305
		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
   306
		local users = nil;
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   307
		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
   308
			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
   309
				break;
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   310
			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
   311
			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
   312
			count = count + 1;
00f96207693a mod_adhoc_cmd_admin: Possibility to limit number of received answers
Florian Zeitz <florob@babelmonkeys.de>
parents: 43
diff changeset
   313
		end
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   314
		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
   315
	else
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   316
		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
   317
	end
4c4daa1f8ae7 mod_adhoc_cmd_admin: Add Get List of Online Users command
Florian Zeitz <florob@babelmonkeys.de>
parents: 36
diff changeset
   318
end
4c4daa1f8ae7 mod_adhoc_cmd_admin: Add Get List of Online Users command
Florian Zeitz <florob@babelmonkeys.de>
parents: 36
diff changeset
   319
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   320
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
   321
	if server then
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   322
		sessions = { [server] = hosts[server] };
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   323
	else
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   324
		sessions = hosts;
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   325
	end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   326
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   327
	local c = 0;
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   328
	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
   329
		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
   330
			c = c + 1;
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   331
			message.attr.from = domain;
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   332
			message.attr.to = user.."@"..domain;
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   333
			core_post_stanza(session, message);
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   334
		end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   335
	end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   336
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   337
	return c;
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   338
end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   339
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   340
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
   341
	if state then
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   342
		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
   343
			return { status = "canceled" };
67
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   344
		end
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   345
121
a9898f13c89e mod_adhoc: Major refactoring. Actuall data exchange happens here now
Florian Zeitz <florob@babelmonkeys.de>
parents: 110
diff changeset
   346
		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
   347
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   348
		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
   349
		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
   350
			:tag("subject"):text(fields.subject or "Announcement");
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   351
		
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   352
		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
   353
		
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   354
		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
   355
		return { status = "completed", info = "Announcement sent." };
67
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   356
	else
124
843cadf36306 mod_adhoc*: Move state handling to mod_adhoc itself
Florian Zeitz <florob@babelmonkeys.de>
parents: 123
diff changeset
   357
		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
   358
	end
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   359
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   360
	return true;
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   361
end
e839b4453387 mod_adhoc_cmd_admin: Add announce command
Florian Zeitz <florob@babelmonkeys.de>
parents: 49
diff changeset
   362
133
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   363
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
   364
	if state then
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   365
		if data.action == "cancel" then
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   366
			return { status = "canceled" };
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   367
		end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   368
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   369
		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
   370
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   371
		if fields.announcement then
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   372
			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
   373
				: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
   374
			send_to_online(message);
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   375
		end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   376
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   377
		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
   378
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   379
		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
   380
	else
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   381
		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
   382
	end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   383
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   384
	return true;
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   385
end
8945153321a1 mod_adhoc_cmd_admin: Add "Shut Down Service" command
Florian Zeitz <florob@babelmonkeys.de>
parents: 128
diff changeset
   386
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
   387
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
   388
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
   389
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
   390
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
   391
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
   392
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
   393
local get_user_roster_desc = adhoc_new("Get User Roster","http://jabber.org/protocol/admin#get-user-roster", get_user_roster_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
   394
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
   395
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
   396
40
4c4daa1f8ae7 mod_adhoc_cmd_admin: Add Get List of Online Users command
Florian Zeitz <florob@babelmonkeys.de>
parents: 36
diff changeset
   397
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
   398
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
   399
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
   400
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
   401
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
   402
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
   403
module:add_item("adhoc", get_user_roster_desc);
40
4c4daa1f8ae7 mod_adhoc_cmd_admin: Add Get List of Online Users command
Florian Zeitz <florob@babelmonkeys.de>
parents: 36
diff changeset
   404
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
   405
module:add_item("adhoc", shut_down_service_desc);