Mercurial > prosody-hg
comparison plugins/adhoc/mod_adhoc.lua @ 9222:fe8abac62682
mod_adhoc: Simplify iq handling by hooking on iq-set/ instead of iq/.
| author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
|---|---|
| date | Fri, 24 Aug 2018 20:34:00 +0200 |
| parents | 50f2ad088589 |
| children | 2f634cc02eac |
comparison
equal
deleted
inserted
replaced
| 9221:6dc1aeefa876 | 9222:fe8abac62682 |
|---|---|
| 67 end | 67 end |
| 68 end | 68 end |
| 69 event.exists = true; | 69 event.exists = true; |
| 70 end); | 70 end); |
| 71 | 71 |
| 72 module:hook("iq/host/"..xmlns_cmd..":command", function (event) | 72 module:hook("iq-set/host/"..xmlns_cmd..":command", function (event) |
| 73 local origin, stanza = event.origin, event.stanza; | 73 local origin, stanza = event.origin, event.stanza; |
| 74 if stanza.attr.type == "set" then | 74 local node = stanza.tags[1].attr.node |
| 75 local node = stanza.tags[1].attr.node | 75 local command = commands[node]; |
| 76 local command = commands[node]; | 76 if command then |
| 77 if command then | 77 local from = stanza.attr.from; |
| 78 local from = stanza.attr.from; | 78 local admin = is_admin(from, stanza.attr.to); |
| 79 local admin = is_admin(from, stanza.attr.to); | 79 local global_admin = is_admin(from); |
| 80 local global_admin = is_admin(from); | 80 local username, hostname = jid_split(from); |
| 81 local username, hostname = jid_split(from); | 81 if (command.permission == "admin" and not admin) |
| 82 if (command.permission == "admin" and not admin) | 82 or (command.permission == "global_admin" and not global_admin) |
| 83 or (command.permission == "global_admin" and not global_admin) | 83 or (command.permission == "local_user" and hostname ~= module.host) then |
| 84 or (command.permission == "local_user" and hostname ~= module.host) then | 84 origin.send(st.error_reply(stanza, "auth", "forbidden", "You don't have permission to execute this command"):up() |
| 85 origin.send(st.error_reply(stanza, "auth", "forbidden", "You don't have permission to execute this command"):up() | 85 :add_child(commands[node]:cmdtag("canceled") |
| 86 :add_child(commands[node]:cmdtag("canceled") | 86 :tag("note", {type="error"}):text("You don't have permission to execute this command"))); |
| 87 :tag("note", {type="error"}):text("You don't have permission to execute this command"))); | 87 return true |
| 88 return true | |
| 89 end | |
| 90 -- User has permission now execute the command | |
| 91 adhoc_handle_cmd(commands[node], origin, stanza); | |
| 92 return true; | |
| 93 end | 88 end |
| 89 -- User has permission now execute the command | |
| 90 adhoc_handle_cmd(commands[node], origin, stanza); | |
| 91 return true; | |
| 94 end | 92 end |
| 95 end, 500); | 93 end, 500); |
| 96 | 94 |
| 97 local function adhoc_added(event) | 95 local function adhoc_added(event) |
| 98 local item = event.item; | 96 local item = event.item; |
