Software /
code /
prosody-modules
Comparison
mod_adhoc_cmd_modules/mod_adhoc_cmd_modules.lua @ 206:d3498f115fcd
mod_adhoc_cmd_modules: Add "Unload module" command
author | Florian Zeitz <florob@babelmonkeys.de> |
---|---|
date | Fri, 09 Jul 2010 22:38:05 +0200 |
parent | 205:a6361a1fda5e |
child | 207:1ae653712e37 |
comparison
equal
deleted
inserted
replaced
205:a6361a1fda5e | 206:d3498f115fcd |
---|---|
26 local modules = array.collect(keys(hosts[data.to].modules)):sort():concat("\n"); | 26 local modules = array.collect(keys(hosts[data.to].modules)):sort():concat("\n"); |
27 | 27 |
28 return { status = "completed", result = { layout = result; data = { modules = modules } } }; | 28 return { status = "completed", result = { layout = result; data = { modules = modules } } }; |
29 end | 29 end |
30 | 30 |
31 -- TODO: Allow reloading multiple modules (depends on list-multi | 31 -- TODO: Allow reloading multiple modules (depends on list-multi) |
32 function reload_modules_handler(self, data, state) | 32 function reload_modules_handler(self, data, state) |
33 local modules = {}; | 33 local modules = {}; |
34 local layout = dataforms_new { | 34 local layout = dataforms_new { |
35 title = "Reload module"; | 35 title = "Reload module"; |
36 instructions = "Select the module to be reloaded"; | 36 instructions = "Select the module to be reloaded"; |
57 end | 57 end |
58 return { status = "executing", form = layout }, "executing"; | 58 return { status = "executing", form = layout }, "executing"; |
59 end | 59 end |
60 end | 60 end |
61 | 61 |
62 -- TODO: Allow unloading multiple modules (depends on list-multi) | |
63 function unload_modules_handler(self, data, state) | |
64 local modules = {}; | |
65 local layout = dataforms_new { | |
66 title = "Unload module"; | |
67 instructions = "Select the module to be unloaded"; | |
68 | |
69 { name = "FORM_TYPE", type = "hidden", value = "http://prosody.im/protocol/modules#unload" }; | |
70 { name = "module", type = "list-single", value = modules, label = "Module to be unloaded:"}; | |
71 }; | |
72 if state then | |
73 if data.action == "cancel" then | |
74 return { status = "canceled" }; | |
75 end | |
76 fields = layout:data(data.form); | |
77 local ok, err = modulemanager.unload(data.to, fields.module); | |
78 if ok then | |
79 return { status = "completed", info = 'Module "'..fields.module..'" successfully unloaded on host "'..data.to..'".' }; | |
80 else | |
81 return { status = "completed", error = 'Failed to unload module "'..fields.module..'" on host "'..data.to.. | |
82 '". Error was: "'..tostring(err)..'"' }; | |
83 end | |
84 else | |
85 local modules2 = array.collect(keys(hosts[data.to].modules)):sort(); | |
86 for i, val in ipairs(modules2) do | |
87 modules[i] = val; | |
88 end | |
89 return { status = "executing", form = layout }, "executing"; | |
90 end | |
91 end | |
92 | |
62 local list_modules_desc = adhoc_new("List loaded modules", "http://prosody.im/protocol/modules#list", list_modules_handler, "admin"); | 93 local list_modules_desc = adhoc_new("List loaded modules", "http://prosody.im/protocol/modules#list", list_modules_handler, "admin"); |
63 local reload_modules_desc = adhoc_new("Reload module", "http://prosody.im/protocol/modules#reload", reload_modules_handler, "admin"); | 94 local reload_modules_desc = adhoc_new("Reload module", "http://prosody.im/protocol/modules#reload", reload_modules_handler, "admin"); |
95 local unload_modules_desc = adhoc_new("Unload module", "http://prosody.im/protocol/modules#unload", unload_modules_handler, "admin"); | |
64 | 96 |
65 module:add_item("adhoc", list_modules_desc); | 97 module:add_item("adhoc", list_modules_desc); |
66 module:add_item("adhoc", reload_modules_desc); | 98 module:add_item("adhoc", reload_modules_desc); |
99 module:add_item("adhoc", unload_modules_desc); |