Mercurial > prosody-modules
comparison mod_manifesto/mod_manifesto.lua @ 1307:71dd991c94e7
mod_manifesto: Add ad-hoc command to enable "manifesto mode"
author | Florian Zeitz <florob@babelmonkeys.de> |
---|---|
date | Mon, 17 Feb 2014 20:39:48 +0100 |
parents | 63e7e20a0074 |
children | 9ddfff2acddc |
comparison
equal
deleted
inserted
replaced
1306:63e7e20a0074 | 1307:71dd991c94e7 |
---|---|
2 | 2 |
3 local timer = require "util.timer"; | 3 local timer = require "util.timer"; |
4 local jid_split = require "util.jid".split; | 4 local jid_split = require "util.jid".split; |
5 local st = require "util.stanza"; | 5 local st = require "util.stanza"; |
6 local dm = require "util.datamanager"; | 6 local dm = require "util.datamanager"; |
7 local dataforms_new = require "util.dataforms".new; | |
8 local adhoc_initial = require "util.adhoc".new_initial_data_form; | |
9 local mm_reload = require "modulemanager".reload; | |
10 local config = require "core.configmanager"; | |
11 local config_get = config.get; | |
12 local config_set = config.set; | |
13 local t_concat = table.concat; | |
14 local adhoc_new = module:require "adhoc".new; | |
7 local time = os.time; | 15 local time = os.time; |
8 | 16 |
9 local hosts = prosody.hosts; | 17 local hosts = prosody.hosts; |
10 local host = module.host; | 18 local host = module.host; |
11 local host_session = hosts[host]; | 19 local host_session = hosts[host]; |
117 end | 125 end |
118 | 126 |
119 function module.uninstall() | 127 function module.uninstall() |
120 dm.store(nil, host, module.name, nil); | 128 dm.store(nil, host, module.name, nil); |
121 end | 129 end |
130 | |
131 -- Ad-hoc command for switching to/from "manifesto mode" | |
132 local layout = dataforms_new { | |
133 title = "Configure manifesto mode"; | |
134 | |
135 { name = "FORM_TYPE", type = "hidden", value = "http://prosody.im/protocol/manifesto" }; | |
136 { name = "state", type = "list-single", required = true, label = "Manifesto mode:"}; | |
137 }; | |
138 | |
139 local adhoc_handler = adhoc_initial(layout, function() | |
140 local enabled = config_get(host, "c2s_require_encryption") and config_get(host, "s2s_require_encryption"); | |
141 return { state = { | |
142 { label = "Enabled", value = "enabled", default = enabled }, | |
143 { label = "Configuration settings", value = "config", default = not enabled }, | |
144 }}; | |
145 end, function(fields, err) | |
146 if err then | |
147 local errmsg = {}; | |
148 for name, err in pairs(errors) do | |
149 errmsg[#errmsg + 1] = name .. ": " .. err; | |
150 end | |
151 return { status = "completed", error = { message = t_concat(errmsg, "\n") } }; | |
152 end | |
153 | |
154 local info; | |
155 if fields.state == "enabled" then | |
156 config_set(host, "c2s_require_encryption", true); | |
157 config_set(host, "s2s_require_encryption", true); | |
158 info = "Manifesto mode enabled"; | |
159 else | |
160 local ok, err = prosody.reload_config(); | |
161 if not ok then | |
162 return { status = "completed", error = { message = "Failed to reload config: " .. tostring(err) } }; | |
163 end | |
164 info = "Reset to configuration settings"; | |
165 end | |
166 | |
167 local ok, err = mm_reload(host, "tls"); | |
168 if not ok then return { status = "completed", error = { message = "Failed to reload mod_tls: " .. tostring(err) } }; end | |
169 ok, err = mm_reload(host, "s2s"); | |
170 if not ok then return { status = "completed", error = { message = "Failed to reload mod_s2s: " .. tostring(err) } }; end | |
171 ok, err = mm_reload(host, "saslauth"); | |
172 if not ok then return { status = "completed", error = { message = "Failed to reload mod_saslauth: " .. tostring(err) } }; end | |
173 | |
174 return { status = "completed", info = info }; | |
175 end); | |
176 module:provides("adhoc", adhoc_new("Configure manifesto mode", "http://prosody.im/protocol/manifesto", adhoc_handler, "admin")); |