mod_adhoc: Answer disco#info for node=xmlns_cmd
authorFlorian Zeitz <florob@babelmonkeys.de>
Fri, 01 Oct 2010 16:44:49 +0200
changeset 3511 4495403470cb
parent 3510 711eb5bf94b4
child 3512 e344b00f2cc9
mod_adhoc: Answer disco#info for node=xmlns_cmd
plugins/adhoc/mod_adhoc.lua
--- a/plugins/adhoc/mod_adhoc.lua	Tue Sep 28 16:36:17 2010 +0500
+++ b/plugins/adhoc/mod_adhoc.lua	Fri Oct 01 16:44:49 2010 +0200
@@ -17,23 +17,33 @@
 module:hook("iq/host/"..xmlns_disco.."#info:query", function (event)
 	local origin, stanza = event.origin, event.stanza;
 	local node = stanza.tags[1].attr.node;
-	if stanza.attr.type == "get" and node
-	    and commands[node] then
-		local privileged = is_admin(stanza.attr.from, stanza.attr.to);
-		if (commands[node].permission == "admin" and privileged)
-		    or (commands[node].permission == "user") then
+	if stanza.attr.type == "get" and node then
+		if commands[node] then
+			local privileged = is_admin(stanza.attr.from, stanza.attr.to);
+			if (commands[node].permission == "admin" and privileged)
+			    or (commands[node].permission == "user") then
+				reply = st.reply(stanza);
+				reply:tag("query", { xmlns = xmlns_disco.."#info",
+				    node = node });
+				reply:tag("identity", { name = commands[node].name,
+				    category = "automation", type = "command-node" }):up();
+				reply:tag("feature", { var = xmlns_cmd }):up();
+				reply:tag("feature", { var = "jabber:x:data" }):up();
+			else
+				reply = st.error_reply(stanza, "auth", "forbidden", "This item is not available to you");
+			end
+			origin.send(reply);
+			return true;
+		elseif node == xmlns_cmd then
 			reply = st.reply(stanza);
 			reply:tag("query", { xmlns = xmlns_disco.."#info",
 			    node = node });
-			reply:tag("identity", { name = commands[node].name,
-			    category = "automation", type = "command-node" }):up();
-			reply:tag("feature", { var = xmlns_cmd }):up();
-			reply:tag("feature", { var = "jabber:x:data" }):up();
-		else
-			reply = st.error_reply(stanza, "auth", "forbidden", "This item is not available to you");
+			reply:tag("identity", { name = "Ad-Hoc Commands",
+			    category = "automation", type = "command-list" }):up();
+			origin.send(reply);
+			return true;
+
 		end
-		origin.send(reply);
-		return true;
 	end
 end);