equal
deleted
inserted
replaced
25 local modulemanager = require "modulemanager"; |
25 local modulemanager = require "modulemanager"; |
26 |
26 |
27 module:depends("adhoc"); |
27 module:depends("adhoc"); |
28 local adhoc_new = module:require "adhoc".new; |
28 local adhoc_new = module:require "adhoc".new; |
29 |
29 |
|
30 local function generate_error_message(errors) |
|
31 local errmsg = {}; |
|
32 for name, err in pairs(errors) do |
|
33 errmsg[#errmsg + 1] = name .. ": " .. err; |
|
34 end |
|
35 return { status = "completed", error = { message = t_concat(errmsg, "\n") } }; |
|
36 end |
|
37 |
30 function add_user_command_handler(self, data, state) |
38 function add_user_command_handler(self, data, state) |
31 local add_user_layout = dataforms_new{ |
39 local add_user_layout = dataforms_new{ |
32 title = "Adding a User"; |
40 title = "Adding a User"; |
33 instructions = "Fill out this form to add a user."; |
41 instructions = "Fill out this form to add a user."; |
34 |
42 |
40 |
48 |
41 if state then |
49 if state then |
42 if data.action == "cancel" then |
50 if data.action == "cancel" then |
43 return { status = "canceled" }; |
51 return { status = "canceled" }; |
44 end |
52 end |
45 local fields = add_user_layout:data(data.form); |
53 local fields, err = add_user_layout:data(data.form); |
46 if not fields.accountjid then |
54 if err then |
47 return { status = "completed", error = { message = "You need to specify a JID." } }; |
55 return generate_error_message(err); |
48 end |
56 end |
49 local username, host, resource = jid.split(fields.accountjid); |
57 local username, host, resource = jid.split(fields.accountjid); |
50 if data.to ~= host then |
58 if data.to ~= host then |
51 return { status = "completed", error = { message = "Trying to add a user on " .. host .. " but command was sent to " .. data.to}}; |
59 return { status = "completed", error = { message = "Trying to add a user on " .. host .. " but command was sent to " .. data.to}}; |
52 end |
60 end |
83 |
91 |
84 if state then |
92 if state then |
85 if data.action == "cancel" then |
93 if data.action == "cancel" then |
86 return { status = "canceled" }; |
94 return { status = "canceled" }; |
87 end |
95 end |
88 local fields = change_user_password_layout:data(data.form); |
96 local fields, err = change_user_password_layout:data(data.form); |
89 if not fields.accountjid or fields.accountjid == "" or not fields.password then |
97 if err then |
90 return { status = "completed", error = { message = "Please specify username and password" } }; |
98 return generate_error_message(err); |
91 end |
99 end |
92 local username, host, resource = jid.split(fields.accountjid); |
100 local username, host, resource = jid.split(fields.accountjid); |
93 if data.to ~= host then |
101 if data.to ~= host then |
94 return { status = "completed", error = { message = "Trying to change the password of a user on " .. host .. " but command was sent to " .. data.to}}; |
102 return { status = "completed", error = { message = "Trying to change the password of a user on " .. host .. " but command was sent to " .. data.to}}; |
95 end |
103 end |
124 |
132 |
125 if state then |
133 if state then |
126 if data.action == "cancel" then |
134 if data.action == "cancel" then |
127 return { status = "canceled" }; |
135 return { status = "canceled" }; |
128 end |
136 end |
129 local fields = delete_user_layout:data(data.form); |
137 local fields, err = delete_user_layout:data(data.form); |
|
138 if err then |
|
139 return generate_error_message(err); |
|
140 end |
130 local failed = {}; |
141 local failed = {}; |
131 local succeeded = {}; |
142 local succeeded = {}; |
132 for _, aJID in ipairs(fields.accountjids) do |
143 for _, aJID in ipairs(fields.accountjids) do |
133 local username, host, resource = jid.split(aJID); |
144 local username, host, resource = jid.split(aJID); |
134 if (host == data.to) and usermanager_user_exists(username, host) and disconnect_user(aJID) and usermanager_create_user(username, nil, host) then |
145 if (host == data.to) and usermanager_user_exists(username, host) and disconnect_user(aJID) and usermanager_create_user(username, nil, host) then |
173 if state then |
184 if state then |
174 if data.action == "cancel" then |
185 if data.action == "cancel" then |
175 return { status = "canceled" }; |
186 return { status = "canceled" }; |
176 end |
187 end |
177 |
188 |
178 local fields = end_user_session_layout:data(data.form); |
189 local fields, err = end_user_session_layout:data(data.form); |
|
190 if err then |
|
191 return generate_error_message(err); |
|
192 end |
179 local failed = {}; |
193 local failed = {}; |
180 local succeeded = {}; |
194 local succeeded = {}; |
181 for _, aJID in ipairs(fields.accountjids) do |
195 for _, aJID in ipairs(fields.accountjids) do |
182 local username, host, resource = jid.split(aJID); |
196 local username, host, resource = jid.split(aJID); |
183 if (host == data.to) and usermanager_user_exists(username, host) and disconnect_user(aJID) then |
197 if (host == data.to) and usermanager_user_exists(username, host) and disconnect_user(aJID) then |
221 |
235 |
222 if state then |
236 if state then |
223 if data.action == "cancel" then |
237 if data.action == "cancel" then |
224 return { status = "canceled" }; |
238 return { status = "canceled" }; |
225 end |
239 end |
226 local fields = get_user_password_layout:data(data.form); |
240 local fields, err = get_user_password_layout:data(data.form); |
227 if not fields.accountjid then |
241 if err then |
228 return { status = "completed", error = { message = "Please specify a JID." } }; |
242 return generate_error_message(err); |
229 end |
243 end |
230 local user, host, resource = jid.split(fields.accountjid); |
244 local user, host, resource = jid.split(fields.accountjid); |
231 local accountjid = ""; |
245 local accountjid = ""; |
232 local password = ""; |
246 local password = ""; |
233 if host ~= data.to then |
247 if host ~= data.to then |
259 if state then |
273 if state then |
260 if data.action == "cancel" then |
274 if data.action == "cancel" then |
261 return { status = "canceled" }; |
275 return { status = "canceled" }; |
262 end |
276 end |
263 |
277 |
264 local fields = get_user_roster_layout:data(data.form); |
278 local fields, err = get_user_roster_layout:data(data.form); |
265 |
279 |
266 if not fields.accountjid then |
280 if err then |
267 return { status = "completed", error = { message = "Please specify a JID" } }; |
281 return generate_error_message(err); |
268 end |
282 end |
269 |
283 |
270 local user, host, resource = jid.split(fields.accountjid); |
284 local user, host, resource = jid.split(fields.accountjid); |
271 if host ~= data.to then |
285 if host ~= data.to then |
272 return { status = "completed", error = { message = "Tried to get roster for a user on " .. host .. " but command was sent to " .. data.to } }; |
286 return { status = "completed", error = { message = "Tried to get roster for a user on " .. host .. " but command was sent to " .. data.to } }; |
321 if state then |
335 if state then |
322 if data.action == "cancel" then |
336 if data.action == "cancel" then |
323 return { status = "canceled" }; |
337 return { status = "canceled" }; |
324 end |
338 end |
325 |
339 |
326 local fields = get_user_stats_layout:data(data.form); |
340 local fields, err = get_user_stats_layout:data(data.form); |
327 |
341 |
328 if not fields.accountjid then |
342 if err then |
329 return { status = "completed", error = { message = "Please specify a JID." } }; |
343 return generate_error_message(err); |
330 end |
344 end |
331 |
345 |
332 local user, host, resource = jid.split(fields.accountjid); |
346 local user, host, resource = jid.split(fields.accountjid); |
333 if host ~= data.to then |
347 if host ~= data.to then |
334 return { status = "completed", error = { message = "Tried to get stats for a user on " .. host .. " but command was sent to " .. data.to } }; |
348 return { status = "completed", error = { message = "Tried to get stats for a user on " .. host .. " but command was sent to " .. data.to } }; |
374 if state then |
388 if state then |
375 if data.action == "cancel" then |
389 if data.action == "cancel" then |
376 return { status = "canceled" }; |
390 return { status = "canceled" }; |
377 end |
391 end |
378 |
392 |
379 local fields = get_online_users_layout:data(data.form); |
393 local fields, err = get_online_users_layout:data(data.form); |
|
394 |
|
395 if err then |
|
396 return generate_error_message(err); |
|
397 end |
380 |
398 |
381 local max_items = nil |
399 local max_items = nil |
382 if fields.max_items ~= "all" then |
400 if fields.max_items ~= "all" then |
383 max_items = tonumber(fields.max_items); |
401 max_items = tonumber(fields.max_items); |
384 end |
402 end |
434 }; |
452 }; |
435 if state then |
453 if state then |
436 if data.action == "cancel" then |
454 if data.action == "cancel" then |
437 return { status = "canceled" }; |
455 return { status = "canceled" }; |
438 end |
456 end |
439 local fields = layout:data(data.form); |
457 local fields, err = layout:data(data.form); |
440 if (not fields.module) or (fields.module == "") then |
458 if err then |
441 return { status = "completed", error = { |
459 return generate_error_message(err); |
442 message = "Please specify a module." |
|
443 } }; |
|
444 end |
460 end |
445 if modulemanager.is_loaded(data.to, fields.module) then |
461 if modulemanager.is_loaded(data.to, fields.module) then |
446 return { status = "completed", info = "Module already loaded" }; |
462 return { status = "completed", info = "Module already loaded" }; |
447 end |
463 end |
448 local ok, err = modulemanager.load(data.to, fields.module); |
464 local ok, err = modulemanager.load(data.to, fields.module); |
468 }; |
484 }; |
469 if state then |
485 if state then |
470 if data.action == "cancel" then |
486 if data.action == "cancel" then |
471 return { status = "canceled" }; |
487 return { status = "canceled" }; |
472 end |
488 end |
473 local fields = layout:data(data.form); |
489 local fields, err = layout:data(data.form); |
474 if #fields.modules == 0 then |
490 if err then |
475 return { status = "completed", error = { |
491 return generate_error_message(err); |
476 message = "Please specify a module. (This means your client misbehaved, as this field is required)" |
|
477 } }; |
|
478 end |
492 end |
479 local ok_list, err_list = {}, {}; |
493 local ok_list, err_list = {}, {}; |
480 for _, module in ipairs(fields.modules) do |
494 for _, module in ipairs(fields.modules) do |
481 local ok, err = modulemanager.reload(data.to, module); |
495 local ok, err = modulemanager.reload(data.to, module); |
482 if ok then |
496 if ok then |
536 if state then |
550 if state then |
537 if data.action == "cancel" then |
551 if data.action == "cancel" then |
538 return { status = "canceled" }; |
552 return { status = "canceled" }; |
539 end |
553 end |
540 |
554 |
541 local fields = shut_down_service_layout:data(data.form); |
555 local fields, err = shut_down_service_layout:data(data.form); |
|
556 |
|
557 if err then |
|
558 return generate_error_message(err); |
|
559 end |
542 |
560 |
543 if fields.announcement and #fields.announcement > 0 then |
561 if fields.announcement and #fields.announcement > 0 then |
544 local message = st.message({type = "headline"}, fields.announcement):up() |
562 local message = st.message({type = "headline"}, fields.announcement):up() |
545 :tag("subject"):text("Server is shutting down"); |
563 :tag("subject"):text("Server is shutting down"); |
546 send_to_online(message); |
564 send_to_online(message); |
564 }; |
582 }; |
565 if state then |
583 if state then |
566 if data.action == "cancel" then |
584 if data.action == "cancel" then |
567 return { status = "canceled" }; |
585 return { status = "canceled" }; |
568 end |
586 end |
569 local fields = layout:data(data.form); |
587 local fields, err = layout:data(data.form); |
570 if #fields.modules == 0 then |
588 if err then |
571 return { status = "completed", error = { |
589 return generate_error_message(err); |
572 message = "Please specify a module. (This means your client misbehaved, as this field is required)" |
|
573 } }; |
|
574 end |
590 end |
575 local ok_list, err_list = {}, {}; |
591 local ok_list, err_list = {}, {}; |
576 for _, module in ipairs(fields.modules) do |
592 for _, module in ipairs(fields.modules) do |
577 local ok, err = modulemanager.unload(data.to, module); |
593 local ok, err = modulemanager.unload(data.to, module); |
578 if ok then |
594 if ok then |