Mercurial > prosody-modules
comparison mod_adhoc_cmd_admin/mod_adhoc_cmd_admin.lua @ 155:7a037cb5ab9e
mod_adhoc_cmd_admin: Add "Get User Statistics" command
author | Florian Zeitz < florob@babelmonkeys.de> |
---|---|
date | Fri, 21 May 2010 19:24:57 +0200 |
parents | 890140ade4e5 |
children | b3a68e71b8a1 |
comparison
equal
deleted
inserted
replaced
154:1849614af19a | 155:7a037cb5ab9e |
---|---|
82 | 82 |
83 local get_user_roster_result_layout = dataforms_new{ | 83 local get_user_roster_result_layout = dataforms_new{ |
84 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; | 84 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; |
85 { name = "accountjid", type = "jid-single", label = "This is the roster for" }; | 85 { name = "accountjid", type = "jid-single", label = "This is the roster for" }; |
86 { name = "roster", type = "text-multi", label = "Roster XML" }; | 86 { name = "roster", type = "text-multi", label = "Roster XML" }; |
87 }; | |
88 | |
89 local get_user_stats_layout = dataforms_new{ | |
90 title = "Get User Statistics"; | |
91 instructions = "Fill out this form to gather user statistics."; | |
92 | |
93 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; | |
94 { name = "accountjid", type = "jid-single", label = "The Jabber ID for statistics" }; | |
95 }; | |
96 | |
97 local get_user_stats_result_layout = dataforms_new{ | |
98 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; | |
99 { name = "ipaddresses", type = "text-multi", label = "IP Addresses" }; | |
100 { name = "rostersize", type = "text-single", label = "Roster size" }; | |
101 { name = "onlineresources", type = "text-multi", label = "Online Resources" }; | |
87 }; | 102 }; |
88 | 103 |
89 local get_online_users_layout = dataforms_new{ | 104 local get_online_users_layout = dataforms_new{ |
90 title = "Getting List of Online Users"; | 105 title = "Getting List of Online Users"; |
91 instructions = "How many users should be returned at most?"; | 106 instructions = "How many users should be returned at most?"; |
290 else | 305 else |
291 return { status = "executing", form = get_user_roster_layout }, "executing"; | 306 return { status = "executing", form = get_user_roster_layout }, "executing"; |
292 end | 307 end |
293 end | 308 end |
294 | 309 |
310 function get_user_stats_handler(self, data, state) | |
311 if state then | |
312 if data.action == "cancel" then | |
313 return { status = "canceled" }; | |
314 end | |
315 | |
316 local fields = get_user_stats_layout:data(data.form); | |
317 | |
318 local user, host, resource = jid.split(fields.accountjid); | |
319 if not usermanager_user_exists(user, host) then | |
320 return { status = "error", error = { type = "cancel", condition = "item-not-found", message = "User does not exist" } }; | |
321 end | |
322 local roster = rm_load_roster(user, host); | |
323 local rostersize = 0; | |
324 local IPs = ""; | |
325 local resources = ""; | |
326 for jid in pairs(roster) do | |
327 if jid ~= "pending" and jid then | |
328 rostersize = rostersize + 1; | |
329 end | |
330 end | |
331 for resource, session in pairs((hosts[host].sessions[user] and hosts[host].sessions[user].sessions) or {}) do | |
332 resources = resources .. "\n" .. resource; | |
333 IPs = IPs .. "\n" .. session.ip; | |
334 end | |
335 return { status = "completed", result = {layout = get_user_stats_result_layout, data = {ipaddresses = IPs, rostersize = tostring(rostersize), | |
336 onlineresources = resources}} }; | |
337 else | |
338 return { status = "executing", form = get_user_stats_layout }, "executing"; | |
339 end | |
340 end | |
341 | |
295 function get_online_users_command_handler(self, data, state) | 342 function get_online_users_command_handler(self, data, state) |
296 if state then | 343 if state then |
297 if data.action == "cancel" then | 344 if data.action == "cancel" then |
298 return { status = "canceled" }; | 345 return { status = "canceled" }; |
299 end | 346 end |
391 local change_user_password_desc = adhoc_new("Change User Password", "http://jabber.org/protocol/admin#change-user-password", change_user_password_command_handler, "admin"); | 438 local change_user_password_desc = adhoc_new("Change User Password", "http://jabber.org/protocol/admin#change-user-password", change_user_password_command_handler, "admin"); |
392 local delete_user_desc = adhoc_new("Delete User", "http://jabber.org/protocol/admin#delete-user", delete_user_command_handler, "admin"); | 439 local delete_user_desc = adhoc_new("Delete User", "http://jabber.org/protocol/admin#delete-user", delete_user_command_handler, "admin"); |
393 local end_user_session_desc = adhoc_new("End User Session", "http://jabber.org/protocol/admin#end-user-session", end_user_session_handler, "admin"); | 440 local end_user_session_desc = adhoc_new("End User Session", "http://jabber.org/protocol/admin#end-user-session", end_user_session_handler, "admin"); |
394 local get_user_password_desc = adhoc_new("Get User Password", "http://jabber.org/protocol/admin#get-user-password", get_user_password_handler, "admin"); | 441 local get_user_password_desc = adhoc_new("Get User Password", "http://jabber.org/protocol/admin#get-user-password", get_user_password_handler, "admin"); |
395 local get_user_roster_desc = adhoc_new("Get User Roster","http://jabber.org/protocol/admin#get-user-roster", get_user_roster_handler, "admin"); | 442 local get_user_roster_desc = adhoc_new("Get User Roster","http://jabber.org/protocol/admin#get-user-roster", get_user_roster_handler, "admin"); |
443 local get_user_stats_desc = adhoc_new("Get User Statistics","http://jabber.org/protocol/admin#user-stats", get_user_stats_handler, "admin"); | |
396 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"); | 444 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"); |
397 local shut_down_service_desc = adhoc_new("Shut Down Service", "http://jabber.org/protocol/admin#shutdown", shut_down_service_handler, "admin"); | 445 local shut_down_service_desc = adhoc_new("Shut Down Service", "http://jabber.org/protocol/admin#shutdown", shut_down_service_handler, "admin"); |
398 | 446 |
399 module:add_item("adhoc", add_user_desc); | 447 module:add_item("adhoc", add_user_desc); |
400 module:add_item("adhoc", announce_desc); | 448 module:add_item("adhoc", announce_desc); |
401 module:add_item("adhoc", change_user_password_desc); | 449 module:add_item("adhoc", change_user_password_desc); |
402 module:add_item("adhoc", delete_user_desc); | 450 module:add_item("adhoc", delete_user_desc); |
403 module:add_item("adhoc", end_user_session_desc); | 451 module:add_item("adhoc", end_user_session_desc); |
404 module:add_item("adhoc", get_user_password_desc); | 452 module:add_item("adhoc", get_user_password_desc); |
405 module:add_item("adhoc", get_user_roster_desc); | 453 module:add_item("adhoc", get_user_roster_desc); |
454 module:add_item("adhoc", get_user_stats_desc); | |
406 module:add_item("adhoc", get_online_users_desc); | 455 module:add_item("adhoc", get_online_users_desc); |
407 module:add_item("adhoc", shut_down_service_desc); | 456 module:add_item("adhoc", shut_down_service_desc); |