Software /
code /
prosody
Comparison
plugins/mod_admin_adhoc.lua @ 5076:88fb94df9b18
mod_admin_adhoc, mod_announce: Explicitly specify possible actions for ad-hoc commands
author | Florian Zeitz <florob@babelmonkeys.de> |
---|---|
date | Thu, 02 Aug 2012 21:42:00 +0200 |
parent | 5013:ab693eea0869 |
child | 5100:65207b768f60 |
comparison
equal
deleted
inserted
replaced
5075:4d939d2b1574 | 5076:88fb94df9b18 |
---|---|
73 else | 73 else |
74 module:log("debug", "Invalid data, password mismatch or empty username while creating account for %s", fields.accountjid or "<nil>"); | 74 module:log("debug", "Invalid data, password mismatch or empty username while creating account for %s", fields.accountjid or "<nil>"); |
75 return { status = "completed", error = { message = "Invalid data.\nPassword mismatch, or empty username" } }; | 75 return { status = "completed", error = { message = "Invalid data.\nPassword mismatch, or empty username" } }; |
76 end | 76 end |
77 else | 77 else |
78 return { status = "executing", form = add_user_layout }, "executing"; | 78 return { status = "executing", actions = {"next", "complete", default = "complete"}, form = add_user_layout }, "executing"; |
79 end | 79 end |
80 end | 80 end |
81 | 81 |
82 function change_user_password_command_handler(self, data, state) | 82 function change_user_password_command_handler(self, data, state) |
83 local change_user_password_layout = dataforms_new{ | 83 local change_user_password_layout = dataforms_new{ |
105 return { status = "completed", info = "Password successfully changed" }; | 105 return { status = "completed", info = "Password successfully changed" }; |
106 else | 106 else |
107 return { status = "completed", error = { message = "User does not exist" } }; | 107 return { status = "completed", error = { message = "User does not exist" } }; |
108 end | 108 end |
109 else | 109 else |
110 return { status = "executing", form = change_user_password_layout }, "executing"; | 110 return { status = "executing", actions = {"next", "complete", default = "complete"}, form = change_user_password_layout }, "executing"; |
111 end | 111 end |
112 end | 112 end |
113 | 113 |
114 function config_reload_handler(self, data, state) | 114 function config_reload_handler(self, data, state) |
115 local ok, err = prosody.reload_config(); | 115 local ok, err = prosody.reload_config(); |
153 return {status = "completed", info = (#succeeded ~= 0 and | 153 return {status = "completed", info = (#succeeded ~= 0 and |
154 "The following accounts were successfully deleted:\n"..t_concat(succeeded, "\n").."\n" or "").. | 154 "The following accounts were successfully deleted:\n"..t_concat(succeeded, "\n").."\n" or "").. |
155 (#failed ~= 0 and | 155 (#failed ~= 0 and |
156 "The following accounts could not be deleted:\n"..t_concat(failed, "\n") or "") }; | 156 "The following accounts could not be deleted:\n"..t_concat(failed, "\n") or "") }; |
157 else | 157 else |
158 return { status = "executing", form = delete_user_layout }, "executing"; | 158 return { status = "executing", actions = {"next", "complete", default = "complete"}, form = delete_user_layout }, "executing"; |
159 end | 159 end |
160 end | 160 end |
161 | 161 |
162 function disconnect_user(match_jid) | 162 function disconnect_user(match_jid) |
163 local node, hostname, givenResource = jid.split(match_jid); | 163 local node, hostname, givenResource = jid.split(match_jid); |
203 return {status = "completed", info = (#succeeded ~= 0 and | 203 return {status = "completed", info = (#succeeded ~= 0 and |
204 "The following accounts were successfully disconnected:\n"..t_concat(succeeded, "\n").."\n" or "").. | 204 "The following accounts were successfully disconnected:\n"..t_concat(succeeded, "\n").."\n" or "").. |
205 (#failed ~= 0 and | 205 (#failed ~= 0 and |
206 "The following accounts could not be disconnected:\n"..t_concat(failed, "\n") or "") }; | 206 "The following accounts could not be disconnected:\n"..t_concat(failed, "\n") or "") }; |
207 else | 207 else |
208 return { status = "executing", form = end_user_session_layout }, "executing"; | 208 return { status = "executing", actions = {"next", "complete", default = "complete"}, form = end_user_session_layout }, "executing"; |
209 end | 209 end |
210 end | 210 end |
211 | 211 |
212 local end_user_session_layout = dataforms_new{ | 212 local end_user_session_layout = dataforms_new{ |
213 title = "Ending a User Session"; | 213 title = "Ending a User Session"; |
252 else | 252 else |
253 return { status = "completed", error = { message = "User does not exist" } }; | 253 return { status = "completed", error = { message = "User does not exist" } }; |
254 end | 254 end |
255 return { status = "completed", result = { layout = get_user_password_result_layout, values = {accountjid = accountjid, password = password} } }; | 255 return { status = "completed", result = { layout = get_user_password_result_layout, values = {accountjid = accountjid, password = password} } }; |
256 else | 256 else |
257 return { status = "executing", form = get_user_password_layout }, "executing"; | 257 return { status = "executing", actions = {"next", "complete", default = "complete"}, form = get_user_password_layout }, "executing"; |
258 end | 258 end |
259 end | 259 end |
260 | 260 |
261 function get_user_roster_handler(self, data, state) | 261 function get_user_roster_handler(self, data, state) |
262 local get_user_roster_layout = dataforms_new{ | 262 local get_user_roster_layout = dataforms_new{ |
310 | 310 |
311 local result = get_user_roster_result_layout:form({ accountjid = user.."@"..host, roster = query_text }, "result"); | 311 local result = get_user_roster_result_layout:form({ accountjid = user.."@"..host, roster = query_text }, "result"); |
312 result:add_child(query); | 312 result:add_child(query); |
313 return { status = "completed", other = result }; | 313 return { status = "completed", other = result }; |
314 else | 314 else |
315 return { status = "executing", form = get_user_roster_layout }, "executing"; | 315 return { status = "executing", actions = {"next", "complete", default = "complete"}, form = get_user_roster_layout }, "executing"; |
316 end | 316 end |
317 end | 317 end |
318 | 318 |
319 function get_user_stats_handler(self, data, state) | 319 function get_user_stats_handler(self, data, state) |
320 local get_user_stats_layout = dataforms_new{ | 320 local get_user_stats_layout = dataforms_new{ |
363 IPs = IPs .. "\n" .. session.ip; | 363 IPs = IPs .. "\n" .. session.ip; |
364 end | 364 end |
365 return { status = "completed", result = {layout = get_user_stats_result_layout, values = {ipaddresses = IPs, rostersize = tostring(rostersize), | 365 return { status = "completed", result = {layout = get_user_stats_result_layout, values = {ipaddresses = IPs, rostersize = tostring(rostersize), |
366 onlineresources = resources}} }; | 366 onlineresources = resources}} }; |
367 else | 367 else |
368 return { status = "executing", form = get_user_stats_layout }, "executing"; | 368 return { status = "executing", actions = {"next", "complete", default = "complete"}, form = get_user_stats_layout }, "executing"; |
369 end | 369 end |
370 end | 370 end |
371 | 371 |
372 function get_online_users_command_handler(self, data, state) | 372 function get_online_users_command_handler(self, data, state) |
373 local get_online_users_layout = dataforms_new{ | 373 local get_online_users_layout = dataforms_new{ |
423 end | 423 end |
424 end | 424 end |
425 end | 425 end |
426 return { status = "completed", result = {layout = get_online_users_result_layout, values = {onlineuserjids=t_concat(users, "\n")}} }; | 426 return { status = "completed", result = {layout = get_online_users_result_layout, values = {onlineuserjids=t_concat(users, "\n")}} }; |
427 else | 427 else |
428 return { status = "executing", form = get_online_users_layout }, "executing"; | 428 return { status = "executing", actions = {"next", "complete", default = "complete"}, form = get_online_users_layout }, "executing"; |
429 end | 429 end |
430 end | 430 end |
431 | 431 |
432 function list_modules_handler(self, data, state) | 432 function list_modules_handler(self, data, state) |
433 local result = dataforms_new { | 433 local result = dataforms_new { |
467 else | 467 else |
468 return { status = "completed", error = { message = 'Failed to load module "'..fields.module..'" on host "'..data.to.. | 468 return { status = "completed", error = { message = 'Failed to load module "'..fields.module..'" on host "'..data.to.. |
469 '". Error was: "'..tostring(err or "<unspecified>")..'"' } }; | 469 '". Error was: "'..tostring(err or "<unspecified>")..'"' } }; |
470 end | 470 end |
471 else | 471 else |
472 return { status = "executing", form = layout }, "executing"; | 472 return { status = "executing", actions = {"next", "complete", default = "complete"}, form = layout }, "executing"; |
473 end | 473 end |
474 end | 474 end |
475 | 475 |
476 function reload_modules_handler(self, data, state) | 476 function reload_modules_handler(self, data, state) |
477 local layout = dataforms_new { | 477 local layout = dataforms_new { |
501 local info = (#ok_list > 0 and ("The following modules were successfully reloaded on host "..data.to..":\n"..t_concat(ok_list, "\n")) or "").. | 501 local info = (#ok_list > 0 and ("The following modules were successfully reloaded on host "..data.to..":\n"..t_concat(ok_list, "\n")) or "").. |
502 (#err_list > 0 and ("Failed to reload the following modules on host "..data.to..":\n"..t_concat(err_list, "\n")) or ""); | 502 (#err_list > 0 and ("Failed to reload the following modules on host "..data.to..":\n"..t_concat(err_list, "\n")) or ""); |
503 return { status = "completed", info = info }; | 503 return { status = "completed", info = info }; |
504 else | 504 else |
505 local modules = array.collect(keys(hosts[data.to].modules)):sort(); | 505 local modules = array.collect(keys(hosts[data.to].modules)):sort(); |
506 return { status = "executing", form = { layout = layout; values = { modules = modules } } }, "executing"; | 506 return { status = "executing", actions = {"next", "complete", default = "complete"}, form = { layout = layout; values = { modules = modules } } }, "executing"; |
507 end | 507 end |
508 end | 508 end |
509 | 509 |
510 function send_to_online(message, server) | 510 function send_to_online(message, server) |
511 if server then | 511 if server then |
565 | 565 |
566 timer_add_task(tonumber(fields.delay or "5"), prosody.shutdown); | 566 timer_add_task(tonumber(fields.delay or "5"), prosody.shutdown); |
567 | 567 |
568 return { status = "completed", info = "Server is about to shut down" }; | 568 return { status = "completed", info = "Server is about to shut down" }; |
569 else | 569 else |
570 return { status = "executing", form = shut_down_service_layout }, "executing"; | 570 return { status = "executing", actions = {"next", "complete", default = "complete"}, form = shut_down_service_layout }, "executing"; |
571 end | 571 end |
572 end | 572 end |
573 | 573 |
574 function unload_modules_handler(self, data, state) | 574 function unload_modules_handler(self, data, state) |
575 local layout = dataforms_new { | 575 local layout = dataforms_new { |
599 local info = (#ok_list > 0 and ("The following modules were successfully unloaded on host "..data.to..":\n"..t_concat(ok_list, "\n")) or "").. | 599 local info = (#ok_list > 0 and ("The following modules were successfully unloaded on host "..data.to..":\n"..t_concat(ok_list, "\n")) or "").. |
600 (#err_list > 0 and ("Failed to unload the following modules on host "..data.to..":\n"..t_concat(err_list, "\n")) or ""); | 600 (#err_list > 0 and ("Failed to unload the following modules on host "..data.to..":\n"..t_concat(err_list, "\n")) or ""); |
601 return { status = "completed", info = info }; | 601 return { status = "completed", info = info }; |
602 else | 602 else |
603 local modules = array.collect(keys(hosts[data.to].modules)):sort(); | 603 local modules = array.collect(keys(hosts[data.to].modules)):sort(); |
604 return { status = "executing", form = { layout = layout; values = { modules = modules } } }, "executing"; | 604 return { status = "executing", actions = {"next", "complete", default = "complete"}, form = { layout = layout; values = { modules = modules } } }, "executing"; |
605 end | 605 end |
606 end | 606 end |
607 | 607 |
608 local add_user_desc = adhoc_new("Add User", "http://jabber.org/protocol/admin#add-user", add_user_command_handler, "admin"); | 608 local add_user_desc = adhoc_new("Add User", "http://jabber.org/protocol/admin#add-user", add_user_command_handler, "admin"); |
609 local change_user_password_desc = adhoc_new("Change User Password", "http://jabber.org/protocol/admin#change-user-password", change_user_password_command_handler, "admin"); | 609 local change_user_password_desc = adhoc_new("Change User Password", "http://jabber.org/protocol/admin#change-user-password", change_user_password_command_handler, "admin"); |