]> granicus.if.org Git - ejabberd/commitdiff
Support static_modules in mod_vcard, vcard_xupdate, version, http_bind and http_files...
authorBadlop <badlop@process-one.net>
Fri, 15 Jul 2011 00:50:45 +0000 (02:50 +0200)
committerBadlop <badlop@process-one.net>
Fri, 15 Jul 2011 00:50:45 +0000 (02:50 +0200)
src/mod_vcard.erl
src/mod_vcard_xupdate.erl
src/mod_version.erl
src/web/ejabberd_http_bind.erl
src/web/mod_http_bind.erl
src/web/mod_http_fileserver.erl

index 7c052256ca658615c5bb3cf557e7a1eae0c5e1e2..cbb11fa8a27220c5cf659cdd113678004629b7de 100644 (file)
 
 -define(PROCNAME, ejabberd_mod_vcard).
 
-start(Host, Opts) ->
-    HostB = list_to_binary(Host),
+start(Host, Opts) when is_list(Host) ->
+    start(list_to_binary(Host), Opts);
+start(HostB, Opts) ->
     Backend = gen_mod:get_opt(backend, Opts, mnesia),
     gen_storage:create_table(Backend, HostB, vcard,
                             [{disc_only_copies, [node()]},
-                             {odbc_host, Host},
+                             {odbc_host, HostB},
                              {attributes, record_info(fields, vcard)},
                              {types, [{user_host, {text, text}}]}]),
     gen_storage:create_table(Backend, HostB, vcard_search,
                             [{disc_copies, [node()]},
-                             {odbc_host, Host},
+                             {odbc_host, HostB},
                              {attributes, record_info(fields, vcard_search)},
                              {types, [{user_host, {text, text}}]}]),
-    update_tables(Host, Backend),
+    update_tables(HostB, Backend),
     gen_storage:add_table_index(HostB, vcard_search, lusername),
     gen_storage:add_table_index(HostB, vcard_search, lfn),
     gen_storage:add_table_index(HostB, vcard_search, lfamily),
@@ -147,10 +148,10 @@ start(Host, Opts) ->
     gen_iq_handler:add_iq_handler(ejabberd_sm, HostB, ?NS_VCARD,
                                  ?MODULE, process_sm_iq, IQDisc),
     ejabberd_hooks:add(disco_sm_features, HostB, ?MODULE, get_sm_features, 50),
-    MyHost = gen_mod:expand_host_name(Host, Opts, "vjud"),
+    MyHost = gen_mod:expand_host_name(HostB, Opts, "vjud"),
     Search = gen_mod:get_opt(search, Opts, true),
-    register(gen_mod:get_module_proc(Host, ?PROCNAME),
-            spawn(?MODULE, init, [MyHost, Host, Search])).
+    register(gen_mod:get_module_proc(HostB, ?PROCNAME),
+            spawn(?MODULE, init, [MyHost, HostB, Search])).
 
 
 init(Host, ServerHost, Search) ->
@@ -343,7 +344,7 @@ set_vcard(User, Server, VCARD) ->
                           })
            end,
            gen_storage:transaction(Server, vcard, F),
-           ejabberd_hooks:run(vcard_set, Server, [LUser, Server, VCARD])
+           ejabberd_hooks:run(vcard_set, Server, [User, Server, VCARD])
     catch
        _ ->
            {error, badarg}
@@ -755,6 +756,9 @@ remove_user(User, Server) when is_binary(User), is_binary(Server) ->
 %%% Update tables
 %%%
 
+update_tables(global, Storage) ->
+    [update_tables(HostB, Storage) || HostB <- ejabberd_hosts:get_hosts(ejabberd)];
+
 update_tables(Host, mnesia) ->
     gen_storage_migration:migrate_mnesia(
       Host, vcard,
index 73c282633123ae33c1bbc2a17d2420ca61968ad7..bdb0d63607fa8f27ff325908ca0d88b6a9b154be 100644 (file)
@@ -26,8 +26,9 @@
 %% gen_mod callbacks
 %%====================================================================
 
-start(Host, _Opts) ->
-    HostB = list_to_binary(Host),
+start(Host, Opts) when is_list(Host) ->
+    start(list_to_binary(Host), Opts);
+start(HostB, _Opts) ->
     mnesia:create_table(vcard_xupdate,
                         [{disc_copies, [node()]},
                          {attributes, record_info(fields, vcard_xupdate)}]),
@@ -65,7 +66,7 @@ vcard_set(User, Server, VCARD) ->
        [] ->
            remove_xupdate(User, Server);
        BinVal ->
-           add_xupdate(User, Server, sha:sha(jlib:decode_base64(BinVal)))
+           add_xupdate(User, Server, list_to_binary(sha:sha(jlib:decode_base64(BinVal))))
     end,
     ejabberd_sm:force_update_presence(US).
 
@@ -105,7 +106,7 @@ presence_with_xupdate(Stanza, User, Host) ->
 build_xphotoel(User, Host) ->
     Hash = get_xupdate(User, Host),
     PhotoSubEls = case Hash of
-                     Hash when is_list(Hash) ->
+                     Hash when is_binary(Hash) ->
                          [exmpp_xml:cdata(Hash)];
                      _ ->
                          []
index 552a2129c51ffa42adcf8355376b3af9289778ab..d8218b76536eccfdc53fc129acef19a012cbe766 100644 (file)
 -include("ejabberd.hrl").
 
 
-
-start(Host, Opts) ->
+start(Host, Opts) when is_list(Host) ->
+    start(list_to_binary(Host), Opts);
+start(HostB, Opts) ->
     IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
-    gen_iq_handler:add_iq_handler(ejabberd_local, list_to_binary(Host), ?NS_SOFT_VERSION,
+    gen_iq_handler:add_iq_handler(ejabberd_local, HostB, ?NS_SOFT_VERSION,
                                  ?MODULE, process_local_iq, IQDisc).
 
 stop(Host) ->
index e508aafb38377aa6c918aeeaeeddf0e4da1a01bf..c3771f46cd10fd0c983fa6b6fe047aba7cf58f14 100644 (file)
 %%       supervisor
 start(XMPPDomain, Sid, Key, IP) ->
     ?DEBUG("Starting session", []),
-    SupervisorProc = gen_mod:get_module_proc(XMPPDomain, ?PROCNAME_MHB),
+    SupervisorProc = gen_mod:get_module_proc_existing(XMPPDomain, ?PROCNAME_MHB),
     case catch supervisor:start_child(SupervisorProc, [Sid, Key, IP]) of
        {ok, Pid} ->
            {ok, Pid};
index b08e00dcaeaf2f6aebf4b30692fb95887d0dd2ac..df2c7eb3f51bb91a01842bd58e11d9dd2eadbbd5 100644 (file)
@@ -103,9 +103,11 @@ get_human_html_xmlel() ->
 %%%----------------------------------------------------------------------
 %%% BEHAVIOUR CALLBACKS
 %%%----------------------------------------------------------------------
-start(Host, _Opts) ->
+start(Host, Opts) when is_list(Host) ->
+    start(list_to_binary(Host), Opts);
+start(HostB, _Opts) ->
     setup_database(),
-    Proc = gen_mod:get_module_proc(Host, ?PROCNAME_MHB),
+    Proc = gen_mod:get_module_proc(HostB, ?PROCNAME_MHB),
     ChildSpec =
         {Proc,
          {ejabberd_tmp_sup, start_link,
index 47c5d728a9b9e9afe48e82088d0b055daa1840d9..f6399ed60e779a4ac2cc6cf868695f0923696188 100644 (file)
@@ -44,7 +44,7 @@
 -export([process/2]).
 
 %% ejabberd_hooks callbacks
--export([reopen_log/1]).
+-export([reopen_log/0, reopen_log/1]).
 
 -include("ejabberd.hrl").
 -include("jlib.hrl").
 %% gen_mod callbacks
 %%====================================================================
 
-start(Host, Opts) ->
-    Proc = get_proc_name(Host),
+start(Host, Opts) when is_list(Host) ->
+    start(list_to_binary(Host), Opts);
+start(HostB, Opts) ->
+    Proc = get_proc_name(HostB),
     ChildSpec =
        {Proc,
-        {?MODULE, start_link, [Host, Opts]},
+        {?MODULE, start_link, [HostB, Opts]},
         transient, % if process crashes abruptly, it gets restarted
         1000,
         worker,
@@ -205,7 +207,7 @@ check_docroot_is_readable(DRInfo, DocRoot) ->
 
 try_open_log(undefined, _Host) ->
     undefined;
-try_open_log(FN, Host) ->
+try_open_log(FN, HostB) ->
     FD = try open_log(FN) of
             FD1 -> FD1
         catch
@@ -213,7 +215,6 @@ try_open_log(FN, Host) ->
                 ?ERROR_MSG("Cannot open access log file: ~p~nReason: ~p", [FN, Reason]),
                 undefined
         end,
-    HostB = list_to_binary(Host),
     ejabberd_hooks:add(reopen_log_hook, HostB, ?MODULE, reopen_log, 50),
     FD.
 
@@ -287,7 +288,7 @@ code_change(_OldVsn, State, _Extra) ->
 %% Returns the page to be sent back to the client and/or HTTP status code.
 process(LocalPath, Request) ->
     ?DEBUG("Requested ~p", [LocalPath]),
-    try gen_server:call(get_proc_name(Request#request.host), {serve, LocalPath}) of
+    try gen_server:call(get_proc_name_existing(Request#request.host), {serve, LocalPath}) of
        {FileSize, Code, Headers, Contents} ->
            add_to_log(FileSize, Code, Request),
            {Code, Headers, Contents}
@@ -359,11 +360,14 @@ reopen_log(FN, FD) ->
     close_log(FD),
     open_log(FN).
 
+reopen_log() ->
+    %% This function is called when the hook was registered for host 'global'
+    gen_server:cast(get_proc_name_existing(global), reopen_log).
 reopen_log(Host) ->
-    gen_server:cast(get_proc_name(Host), reopen_log).
+    gen_server:cast(get_proc_name_existing(Host), reopen_log).
 
 add_to_log(FileSize, Code, Request) ->
-    gen_server:cast(get_proc_name(Request#request.host),
+    gen_server:cast(get_proc_name_existing(Request#request.host),
                    {add_to_log, FileSize, Code, Request}).
 
 add_to_log(undefined, _FileSize, _Code, _Request) ->
@@ -404,6 +408,7 @@ find_header(Header, Headers, Default) ->
 %%----------------------------------------------------------------------
 
 get_proc_name(Host) -> gen_mod:get_module_proc(Host, ?PROCNAME).
+get_proc_name_existing(Host) -> gen_mod:get_module_proc_existing(Host, ?PROCNAME).
 
 join([], _) ->
     "";