diff options
author | mrDoctorWho <mrdoctorwho@gmail.com> | 2015-01-18 17:46:41 +0300 |
---|---|---|
committer | mrDoctorWho <mrdoctorwho@gmail.com> | 2015-01-18 17:46:41 +0300 |
commit | 33e9860e3d9b82ca38783193bda17c614a86bf8a (patch) | |
tree | 096748b0989445c78d1e8f20d06d065abb32c164 /modules/mod_iq_disco.py | |
parent | 553b9271015f8fa018e9f905fc0b291656941a0c (diff) |
Finished global transport settings feature
Added feature "send all unavailable presences" in the global transport settings
Added "Show all users (not only active ones)" in the user settings
Diffstat (limited to 'modules/mod_iq_disco.py')
-rw-r--r-- | modules/mod_iq_disco.py | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/modules/mod_iq_disco.py b/modules/mod_iq_disco.py index e9a482a..123b34d 100644 --- a/modules/mod_iq_disco.py +++ b/modules/mod_iq_disco.py @@ -5,7 +5,7 @@ from __main__ import * -NODES = {"admin": ("Delete users", "Global message", "Show crashlogs", "Reload config"), "user": ("Edit settings",)} +NODES = {"admin": ("Delete users", "Global message", "Show crashlogs", "Reload config", "Global Transport settings"), "user": ("Edit settings",)} def disco_handler(cl, iq): source = iq.getFrom().getStripped() @@ -53,9 +53,9 @@ def disco_handler(cl, iq): elif node == xmpp.NS_COMMANDS: if source == evalJID: for node in NODES["admin"]: - payload.append(xmpp.Node("item", {"node": node, "name": node, "jid": TransportID })) + payload.append(xmpp.Node("item", {"node": node, "name": node, "jid": TransportID})) for node in NODES["user"]: - payload.append(xmpp.Node("item", {"node": node, "name": node, "jid": TransportID })) + payload.append(xmpp.Node("item", {"node": node, "name": node, "jid": TransportID})) result.setQueryPayload(payload) else: @@ -70,6 +70,7 @@ def getUsersList(): result = db.fetchall() return result + def deleteUsers(jids): for key in jids: try: @@ -77,6 +78,7 @@ def deleteUsers(jids): except Exception: pass + def sendGlobalMessage(text): jids = getUsersList() for jid in jids: @@ -143,17 +145,33 @@ def commands_handler(cl, iq): ) commandTag.addChild(node=form) completed = True + elif node == "Reload config": try: execfile(Config, globals()) except Exception: - commandTag = result.setTag("command", {"status": "executing", "node": node, "sessionid": sessionid}, xmpp.NS_COMMANDS) +## commandTag = result.setTag("command", {"status": "executing", "node": node, "sessionid": sessionid}, xmpp.NS_COMMANDS) form = utils.buildDataForm(None, None, [{"var": "FORM_TYPE", "type": "hidden", "value": xmpp.NS_ADMIN}, {"var": "body", "type": "text-multi", "label": "Error while loading the config file", "value": wException()}]) commandTag.addChild(node=form) completed = True + elif node == "Global Transport settings": + config = transportSettings.settings + if not form: + form_fields = [{"var": "FORM_TYPE", "type": "hidden"}] + for key, values in config.items(): + form_fields.append({"var": key, "label": values["label"], "type": values.get("type", "boolean"), "value": values["value"]}) ## todo: Add support for list-multi and others? + + form = utils.buildDataForm(None, None, form_fields, "Choose wisely") + commandTag.addChild(node=form) + elif form and source in Transport: + form = xmpp.DataForm(node=form).asDict() + for key in form.keys(): + if key in config.keys(): + transportSettings.settings[key] = utils.normalizeValue(form[key]) + completed = True if node == "Edit settings" and source in Transport: logger.info("user want to edit his settings (jid: %s)" % source) @@ -179,7 +197,6 @@ def commands_handler(cl, iq): sender(cl, result) - def load(): Component.RegisterHandler("iq", disco_handler, "get", xmpp.NS_DISCO_INFO) Component.RegisterHandler("iq", disco_handler, "get", xmpp.NS_DISCO_ITEMS) |