Diff

plugins/muc/mod_muc.lua @ 3575:bc3dfc00da5d

MUC: Allow restricting room creation to local JIDs (thanks thomas.mangin).
author Waqas Hussain <waqas20@gmail.com>
date Mon, 08 Nov 2010 20:44:53 +0500
parent 3560:fb49b63e3fe2
child 3576:8d8ce17b83ca
line wrap: on
line diff
--- a/plugins/muc/mod_muc.lua	Mon Nov 08 03:12:30 2010 +0000
+++ b/plugins/muc/mod_muc.lua	Mon Nov 08 20:44:53 2010 +0500
@@ -15,8 +15,13 @@
 local muc_name = module:get_option("name");
 if type(muc_name) ~= "string" then muc_name = "Prosody Chatrooms"; end
 local restrict_room_creation = module:get_option("restrict_room_creation");
-if restrict_room_creation and restrict_room_creation ~= true then restrict_room_creation = nil; end
-
+if restrict_room_creation then
+	if restrict_room_creation == true then 
+		restrict_room_creation = "admin";
+	elseif restrict_room_creation ~= "admin" and restrict_room_creation ~= "local" then
+		restrict_room_creation = nil;
+	end
+end
 local muc_new_room = module:require "muc".new_room;
 local register_component = require "core.componentmanager".register_component;
 local deregister_component = require "core.componentmanager".deregister_component;
@@ -121,7 +126,9 @@
 		if to_host == muc_host or bare == muc_host then
 			local room = rooms[bare];
 			if not room then
-				if not(restrict_room_creation) or is_admin(stanza.attr.from) then
+				if not(restrict_room_creation) or
+				  (restrict_room_creation == "admin" and is_admin(stanza.attr.from)) or
+				  (restrict_room_creation == "local" and select(2, jid_split(stanza.attr.from)) == module.host:gsub("^[^%.]+%.", "")) then
 					room = muc_new_room(bare, {
 						history_length = max_history_messages;
 					});