aboutsummaryrefslogtreecommitdiff
path: root/src/mod_muc/mod_muc.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_muc/mod_muc.erl')
-rw-r--r--src/mod_muc/mod_muc.erl21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/mod_muc/mod_muc.erl b/src/mod_muc/mod_muc.erl
index f31230933..d516cc1c4 100644
--- a/src/mod_muc/mod_muc.erl
+++ b/src/mod_muc/mod_muc.erl
@@ -3,12 +3,10 @@
%%% Author : Alexey Shchepin <alexey@sevcom.net>
%%% Purpose : MUC support (JEP-0045)
%%% Created : 19 Mar 2003 by Alexey Shchepin <alexey@sevcom.net>
-%%% Id : $Id$
%%%----------------------------------------------------------------------
-module(mod_muc).
-author('alexey@sevcom.net').
--vsn('$Revision$ ').
-behaviour(gen_server).
-behaviour(gen_mod).
@@ -36,7 +34,7 @@
-record(muc_online_room, {name_host, pid}).
-record(muc_registered, {us_host, nick}).
--record(state, {host, server_host, access, history_size}).
+-record(state, {host, server_host, access, history_size, default_room_opts}).
-define(PROCNAME, ejabberd_mod_muc).
@@ -156,12 +154,14 @@ init([Host, Opts]) ->
AccessAdmin = gen_mod:get_opt(access_admin, Opts, none),
AccessPersistent = gen_mod:get_opt(access_persistent, Opts, all),
HistorySize = gen_mod:get_opt(history_size, Opts, 20),
+ DefRoomOpts = gen_mod:get_opt(default_room_options, Opts, []),
ejabberd_router:register_route(MyHost),
load_permanent_rooms(MyHost, Host, {Access, AccessCreate, AccessAdmin, AccessPersistent},
HistorySize),
{ok, #state{host = MyHost,
server_host = Host,
access = {Access, AccessCreate, AccessAdmin, AccessPersistent},
+ default_room_opts = DefRoomOpts,
history_size = HistorySize}}.
%%--------------------------------------------------------------------
@@ -195,8 +195,9 @@ handle_info({route, From, To, Packet},
#state{host = Host,
server_host = ServerHost,
access = Access,
+ default_room_opts = DefRoomOpts,
history_size = HistorySize} = State) ->
- case catch do_route(Host, ServerHost, Access, HistorySize, From, To, Packet) of
+ case catch do_route(Host, ServerHost, Access, HistorySize, From, To, Packet, DefRoomOpts) of
{'EXIT', Reason} ->
?ERROR_MSG("~p", [Reason]);
_ ->
@@ -254,11 +255,11 @@ stop_supervisor(Host) ->
supervisor:terminate_child(ejabberd_sup, Proc),
supervisor:delete_child(ejabberd_sup, Proc).
-do_route(Host, ServerHost, Access, HistorySize, From, To, Packet) ->
- {AccessRoute, _AccessCreate, _AccessAdmin, AccessPersistent} = Access,
+do_route(Host, ServerHost, Access, HistorySize, From, To, Packet, DefRoomOpts) ->
+ {AccessRoute, _AccessCreate, _AccessAdmin, _AccessPersistent} = Access,
case acl:match_rule(ServerHost, AccessRoute, From) of
allow ->
- do_route1(Host, ServerHost, Access, HistorySize, From, To, Packet);
+ do_route1(Host, ServerHost, Access, HistorySize, From, To, Packet, DefRoomOpts);
_ ->
{xmlelement, _Name, Attrs, _Els} = Packet,
Lang = xml:get_attr_s("xml:lang", Attrs),
@@ -269,8 +270,8 @@ do_route(Host, ServerHost, Access, HistorySize, From, To, Packet) ->
end.
-do_route1(Host, ServerHost, Access, HistorySize, From, To, Packet) ->
- {_AccessRoute, AccessCreate, AccessAdmin, AccessPersistent} = Access,
+do_route1(Host, ServerHost, Access, HistorySize, From, To, Packet, DefRoomOpts) ->
+ {_AccessRoute, AccessCreate, AccessAdmin, _AccessPersistent} = Access,
{Room, _, Nick} = jlib:jid_tolower(To),
{xmlelement, Name, Attrs, _Els} = Packet,
case Room of
@@ -395,7 +396,7 @@ do_route1(Host, ServerHost, Access, HistorySize, From, To, Packet) ->
{ok, Pid} = mod_muc_room:start(
Host, ServerHost, Access,
Room, HistorySize, From,
- Nick),
+ Nick, DefRoomOpts),
register_room(Host, Room, Pid),
mod_muc_room:route(Pid, From, Nick, Packet),
ok;