comparison mod_adhoc_cmd_admin/mod_adhoc_cmd_admin.lua @ 40:4c4daa1f8ae7

mod_adhoc_cmd_admin: Add Get List of Online Users command
author Florian Zeitz <florob@babelmonkeys.de>
date Wed, 14 Oct 2009 00:52:58 +0200
parents 58d326d86a9a
children adc9eff8adb2
comparison
equal deleted inserted replaced
39:b84b2b026eb4 40:4c4daa1f8ae7
1 -- Copyright (C) 2009 Florian Zeitz 1 -- Copyright (C) 2009 Florian Zeitz
2 -- 2 --
3 -- This file is MIT/X11 licensed. Please see the 3 -- This file is MIT/X11 licensed. Please see the
4 -- COPYING file in the source package for more information. 4 -- COPYING file in the source package for more information.
5 -- 5 --
6
7 local _G = _G;
8
9 local prosody = _G.prosody;
10 local hosts = prosody.hosts;
6 11
7 local usermanager_user_exists = require "core.usermanager".user_exists; 12 local usermanager_user_exists = require "core.usermanager".user_exists;
8 local usermanager_create_user = require "core.usermanager".create_user; 13 local usermanager_create_user = require "core.usermanager".create_user;
9 local is_admin = require "core.usermanager".is_admin; 14 local is_admin = require "core.usermanager".is_admin;
10 15
79 origin.send(st.reply(stanza):add_child(item:cmdtag("executing", sessionid):add_child(add_user_layout:form()))); 84 origin.send(st.reply(stanza):add_child(item:cmdtag("executing", sessionid):add_child(add_user_layout:form())));
80 end 85 end
81 return true; 86 return true;
82 end 87 end
83 88
84 local descriptor = adhoc_new("Add User", "http://jabber.org/protocol/admin#add-user", add_user_command_handler) 89 function get_online_users_command_handler(item, origin, stanza)
90 if not is_admin(stanza.attr.from) then
91 origin.send(st.error_reply(stanza, "auth", "forbidden", "You don't have permission to request a list of online users"):up()
92 :add_child(item:cmdtag("canceled")
93 :tag("note", {type="error"}):text("You don't have permission to request a list of online users")));
94 return true;
95 end
96 local field = st.stanza("field", {label="The list of all online users", var="onlineuserjids", type="text-multi"});
97 for username, user in pairs(hosts[stanza.attr.to].sessions or {}) do
98 field:tag("value"):text(username.."@"..stanza.attr.to):up();
99 end
100 origin.send(st.reply(stanza):add_child(item:cmdtag("completed", uuid:generate())
101 :tag("x", {xmlns="jabber:x:data", type="result"})
102 :tag("field", {type="hidden", var="FORM_TYPE"})
103 :tag("value"):text("http://jabber.org/protocol/admin"):up():up()
104 :add_child(field)));
105
106 return true;
107 end
108
109 local add_user_desc = adhoc_new("Add User", "http://jabber.org/protocol/admin#add-user", add_user_command_handler);
110 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);
85 111
86 function module.unload() 112 function module.unload()
87 module:remove_item("adhoc", descriptor); 113 module:remove_item("adhoc", add_user_desc);
114 module:remove_item("adhoc", get_online_users_desc);
88 end 115 end
89 116
90 module:add_item ("adhoc", descriptor); 117 module:add_item("adhoc", add_user_desc);
118 module:add_item("adhoc", get_online_users_desc);