diff options
author | Alexey Shchepin <alexey@process-one.net> | 2005-06-20 03:18:13 +0000 |
---|---|---|
committer | Alexey Shchepin <alexey@process-one.net> | 2005-06-20 03:18:13 +0000 |
commit | 4098c3ecbae91929039410ddf45f400b6e87db39 (patch) | |
tree | 752f096271a724d865377e34d896529229756808 /src/mod_irc | |
parent | * src/web/ejabberd_web_admin.erl: Bugfix (diff) |
* (all): Enhanced virtual hosting support
SVN Revision: 370
Diffstat (limited to 'src/mod_irc')
-rw-r--r-- | src/mod_irc/mod_irc.erl | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/src/mod_irc/mod_irc.erl b/src/mod_irc/mod_irc.erl index 9b05876fd..1192df510 100644 --- a/src/mod_irc/mod_irc.erl +++ b/src/mod_irc/mod_irc.erl @@ -12,7 +12,7 @@ -behaviour(gen_mod). --export([start/1, init/2, stop/0, +-export([start/2, init/2, stop/1, closed_connection/3, get_user_and_encoding/3]). @@ -26,44 +26,44 @@ -define(PROCNAME, ejabberd_mod_irc). -start(Opts) -> +start(Host, Opts) -> iconv:start(), mnesia:create_table(irc_custom, [{disc_copies, [node()]}, {attributes, record_info(fields, irc_custom)}]), - Hosts = gen_mod:get_hosts(Opts, "irc."), - Host = hd(Hosts), - update_table(Host), + MyHost = gen_mod:get_opt(host, Opts, "irc." ++ Host), + update_table(MyHost), Access = gen_mod:get_opt(access, Opts, all), - register(?PROCNAME, spawn(?MODULE, init, [Hosts, Access])). + register(gen_mod:get_module_proc(Host, ?PROCNAME), + spawn(?MODULE, init, [MyHost, Access])). -init(Hosts, Access) -> +init(Host, Access) -> catch ets:new(irc_connection, [named_table, public, {keypos, #irc_connection.jid_server_host}]), - ejabberd_router:register_routes(Hosts), - loop(Hosts, Access). + ejabberd_router:register_route(Host), + loop(Host, Access). -loop(Hosts, Access) -> +loop(Host, Access) -> receive {route, From, To, Packet} -> - case catch do_route(To#jid.lserver, Access, From, To, Packet) of + case catch do_route(Host, Access, From, To, Packet) of {'EXIT', Reason} -> ?ERROR_MSG("~p", [Reason]); _ -> ok end, - loop(Hosts, Access); + loop(Host, Access); stop -> - ejabberd_router:unregister_routes(Hosts), + ejabberd_router:unregister_route(Host), ok; _ -> - loop(Hosts, Access) + loop(Host, Access) end. do_route(Host, Access, From, To, Packet) -> - case acl:match_rule(Access, From) of + case acl:match_rule(Host, Access, From) of allow -> do_route1(Host, From, To, Packet); _ -> @@ -174,9 +174,10 @@ do_route1(Host, From, To, Packet) -> end. -stop() -> - ?PROCNAME ! stop, - {wait, ?PROCNAME}. +stop(Host) -> + Proc = gen_mod:get_module_proc(Host, ?PROCNAME), + Proc ! stop, + {wait, Proc}. closed_connection(Host, From, Server) -> |