From 2f7f3d9b001ee6276172d88525ec805e6bb6f52b Mon Sep 17 00:00:00 2001 From: Alexey Shchepin Date: Fri, 5 Nov 2004 21:14:31 +0000 Subject: [PATCH] * src/aclocal.m4: Fixed headers detecting in AM_WITH_OPENSSL (thanks to Leif Johansson) * src/ejabberd_auth.erl: Added support for ldap_rootdn and ldap_password options (thanks to Stefan de Konink) * src/mod_vcard_ldap.erl: Likewise * src/ejabberd_router.erl: Now possible to route packet via function call instead of message sending * src/ejabberd_sm.erl: Added function route/3, use it in route table * src/ejabberd_local.erl: Likewise * src/ejabberd_s2s.erl: Likewise * (all): Fixed spelling of word "authentication" * src/*/Makefile.in: Replaced erlc with @ERLC@ SVN Revision: 285 --- ChangeLog | 27 ++++++++++ doc/guide.tex | 6 +-- src/aclocal.m4 | 8 ++- src/ejabberd_auth.erl | 6 ++- src/ejabberd_c2s.erl | 12 ++--- src/ejabberd_local.erl | 72 ++++++++++++++------------ src/ejabberd_router.erl | 102 ++++++++++++++++++++++++------------- src/ejabberd_s2s.erl | 18 +++++-- src/ejabberd_s2s_in.erl | 8 --- src/ejabberd_s2s_out.erl | 4 +- src/ejabberd_sm.erl | 17 +++++-- src/eldap/Makefile.in | 4 +- src/mod_irc/Makefile.in | 2 +- src/mod_muc/Makefile.in | 2 +- src/mod_pubsub/Makefile.in | 2 +- src/mod_vcard_ldap.erl | 4 +- src/stringprep/Makefile.in | 2 +- src/tls/Makefile.in | 2 +- src/web/Makefile.in | 2 +- 19 files changed, 194 insertions(+), 106 deletions(-) diff --git a/ChangeLog b/ChangeLog index 84f4ba121..dfc7f490b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,32 @@ +2004-11-05 Alexey Shchepin + + * src/aclocal.m4: Fixed headers detecting in AM_WITH_OPENSSL + (thanks to Leif Johansson) + + * src/ejabberd_auth.erl: Added support for ldap_rootdn and + ldap_password options (thanks to Stefan de Konink) + * src/mod_vcard_ldap.erl: Likewise + + * src/ejabberd_router.erl: Now possible to route packet via + function call instead of message sending + * src/ejabberd_sm.erl: Added function route/3, use it in route + table + * src/ejabberd_local.erl: Likewise + * src/ejabberd_s2s.erl: Likewise + +2004-10-23 Alexey Shchepin + + * (all): Fixed spelling of word "authentication" + + * src/*/Makefile.in: Replaced erlc with @ERLC@ + 2004-10-15 Alexey Shchepin + * src/ejabberd_s2s.erl: Added remove_connection/1 + * src/ejabberd_s2s_out.erl: Use ejabberd_s2s:remove_connection/1 + + * src/ejabberd_s2s_in.erl: Minor cleanup + * examples/transport-configs/: Transport config examples (thanks to Sander Devrieze) diff --git a/doc/guide.tex b/doc/guide.tex index 9021e6d40..7a4e08f08 100644 --- a/doc/guide.tex +++ b/doc/guide.tex @@ -116,7 +116,7 @@ The main features of \ejabberd{} are: \item Built-in web-based administration interface \item Built-in \tjepref{0025}{HTTP Polling} service \item SSL support -\item Support for LDAP authentification +\item Support for LDAP authentication \item Ability to interface with external components (JIT, MSN-t, Yahoo-t, etc.) \item Migration from jabberd14 is possible \item Mostly XMPP-compliant @@ -128,7 +128,7 @@ The main features of \ejabberd{} are: The misfeatures of \ejabberd{} are: \begin{itemize} \item No support for virtual domains -\item No support for authentification and STARTTLS in S2S connections +\item No support for authentication and STARTTLS in S2S connections \end{itemize} @@ -655,7 +655,7 @@ with such config: }. \end{verbatim} you should enter URL \verb|http://example.org:5280/admin/|. After -authentification you should see something like in figure~\ref{fig:webadmmain}. +authentication you should see something like in figure~\ref{fig:webadmmain}. \begin{figure}[htbp] \centering \insimg{webadmmain.png} diff --git a/src/aclocal.m4 b/src/aclocal.m4 index 25cd63b91..13b54abe5 100644 --- a/src/aclocal.m4 +++ b/src/aclocal.m4 @@ -205,12 +205,16 @@ if test x"$tls" != x; then SSL_LIBS="-L$ssl_prefix/lib -lcrypto" AC_CHECK_LIB(ssl, SSL_new, [ have_openssl=yes ], [ have_openssl=no ], [ $SSL_LIBS $SSL_CFLAGS ]) if test x"$have_openssl" = xyes; then - AC_CHECK_HEADERS($ssl_prefix/include/openssl/ssl.h, have_openssl_h=yes) + save_CPPFLAGS=$CPPFLAGS + CPPFLAGS="-I$ssl_prefix/lib $CPPFLAGS" + AC_CHECK_HEADERS(openssl/ssl.h, have_openssl_h=yes) + CPPFLAGS=$save_CPPFLAGS if test x"$have_openssl_h" = xyes; then have_openssl=yes printf "openssl found in $ssl_prefix\n"; SSL_LIBS="-L$ssl_prefix/lib -lssl -lcrypto" - SSL_CFLAGS="-I$ssl_prefix/include/openssl -DHAVE_SSL" + CPPFLAGS="-I$ssl_prefix/lib $CPPFLAGS" + SSL_CFLAGS="-DHAVE_SSL" break fi fi diff --git a/src/ejabberd_auth.erl b/src/ejabberd_auth.erl index d078223e1..d7f6b3668 100644 --- a/src/ejabberd_auth.erl +++ b/src/ejabberd_auth.erl @@ -79,8 +79,10 @@ init([]) -> ok; ldap -> LDAPServers = ejabberd_config:get_local_option(ldap_servers), - eldap:start_link("ejabberd", LDAPServers, 389, "", ""), - eldap:start_link("ejabberd_bind", LDAPServers, 389, "", "") + RootDN = ejabberd_config:get_local_option(ldap_rootdn), + Password = ejabberd_config:get_local_option(ldap_password), + eldap:start_link("ejabberd", LDAPServers, 389, RootDN, Password), + eldap:start_link("ejabberd_bind", LDAPServers, 389, RootDN, Password) end, {ok, #state{}}. diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index 05177c97c..2084a05e7 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -292,7 +292,7 @@ wait_for_auth({xmlstreamelement, El}, StateData) -> U, P, StateData#state.streamid, D) of true -> ?INFO_MSG( - "(~w) Accepted legacy authentification for ~s", + "(~w) Accepted legacy authentication for ~s", [StateData#state.socket, jlib:jid_to_string(JID)]), ejabberd_sm:open_session(U, R), @@ -319,7 +319,7 @@ wait_for_auth({xmlstreamelement, El}, StateData) -> privacy_list = PrivList}}; _ -> ?INFO_MSG( - "(~w) Failed legacy authentification for ~s", + "(~w) Failed legacy authentication for ~s", [StateData#state.socket, jlib:jid_to_string(JID)]), Err = jlib:make_error_reply( @@ -331,7 +331,7 @@ wait_for_auth({xmlstreamelement, El}, StateData) -> if JID == error -> ?INFO_MSG( - "(~w) Forbidden legacy authentification for " + "(~w) Forbidden legacy authentication for " "username '~s' with resource '~s'", [StateData#state.socket, U, R]), Err = jlib:make_error_reply(El, ?ERR_JID_MALFORMED), @@ -339,7 +339,7 @@ wait_for_auth({xmlstreamelement, El}, StateData) -> {next_state, wait_for_auth, StateData}; true -> ?INFO_MSG( - "(~w) Forbidden legacy authentification for ~s", + "(~w) Forbidden legacy authentication for ~s", [StateData#state.socket, jlib:jid_to_string(JID)]), Err = jlib:make_error_reply(El, ?ERR_NOT_ALLOWED), @@ -393,7 +393,7 @@ wait_for_feature_request({xmlstreamelement, El}, StateData) -> {xmlelement, "success", [{"xmlns", ?NS_SASL}], []}), U = xml:get_attr_s(username, Props), - ?INFO_MSG("(~w) Accepted authentification for ~s", + ?INFO_MSG("(~w) Accepted authentication for ~s", [StateData#state.socket, U]), {next_state, wait_for_stream, StateData#state{authentificated = true, @@ -469,7 +469,7 @@ wait_for_sasl_response({xmlstreamelement, El}, StateData) -> {xmlelement, "success", [{"xmlns", ?NS_SASL}], []}), U = xml:get_attr_s(username, Props), - ?INFO_MSG("(~w) Accepted authentification for ~s", + ?INFO_MSG("(~w) Accepted authentication for ~s", [StateData#state.socket, U]), {next_state, wait_for_stream, StateData#state{authentificated = true, diff --git a/src/ejabberd_local.erl b/src/ejabberd_local.erl index 5da4cfaa1..40b598e02 100644 --- a/src/ejabberd_local.erl +++ b/src/ejabberd_local.erl @@ -1,7 +1,7 @@ %%%---------------------------------------------------------------------- %%% File : ejabberd_local.erl %%% Author : Alexey Shchepin -%%% Purpose : +%%% Purpose : Route local packets %%% Created : 30 Nov 2002 by Alexey Shchepin %%% Id : $Id$ %%%---------------------------------------------------------------------- @@ -12,7 +12,8 @@ -export([start_link/0, init/0]). --export([register_iq_handler/3, +-export([route/3, + register_iq_handler/3, register_iq_handler/4, unregister_iq_handler/1, refresh_iq_handlers/0, @@ -22,7 +23,7 @@ -include("ejabberd.hrl"). -include("jlib.hrl"). --record(state, {mydomain, iqtable}). +-define(IQTABLE, local_iqtable). start_link() -> register(ejabberd_local, @@ -30,43 +31,41 @@ start_link() -> {ok, Pid}. init() -> - MyDomain = ?MYNAME, - ejabberd_router:register_route(MyDomain), - catch ets:new(local_iqtable, [named_table, public]), + ejabberd_router:register_route(?MYNAME, {apply, ?MODULE, route}), + catch ets:new(?IQTABLE, [named_table, public]), ejabberd_hooks:add(local_send_to_resource_hook, ?MODULE, bounce_resource_packet, 100), - loop(#state{mydomain = MyDomain, - iqtable = local_iqtable}). + loop(). -loop(State) -> +loop() -> receive {route, From, To, Packet} -> - case catch do_route(State, From, To, Packet) of + case catch do_route(From, To, Packet) of {'EXIT', Reason} -> ?ERROR_MSG("~p~nwhen processing: ~p", [Reason, {From, To, Packet}]); _ -> ok end, - loop(State); + loop(); {register_iq_handler, XMLNS, Module, Function} -> - ets:insert(State#state.iqtable, {XMLNS, Module, Function}), + ets:insert(?IQTABLE, {XMLNS, Module, Function}), catch mod_disco:register_feature(XMLNS), - loop(State); + loop(); {register_iq_handler, XMLNS, Module, Function, Opts} -> - ets:insert(State#state.iqtable, {XMLNS, Module, Function, Opts}), + ets:insert(?IQTABLE, {XMLNS, Module, Function, Opts}), catch mod_disco:register_feature(XMLNS), - loop(State); + loop(); {unregister_iq_handler, XMLNS} -> - case ets:lookup(State#state.iqtable, XMLNS) of + case ets:lookup(?IQTABLE, XMLNS) of [{_, Module, Function, Opts}] -> gen_iq_handler:stop_iq_handler(Module, Function, Opts); _ -> ok end, - ets:delete(State#state.iqtable, XMLNS), + ets:delete(?IQTABLE, XMLNS), catch mod_disco:unregister_feature(XMLNS), - loop(State); + loop(); refresh_iq_handlers -> lists:foreach( fun(T) -> @@ -78,22 +77,24 @@ loop(State) -> _ -> ok end - end, ets:tab2list(State#state.iqtable)), - loop(State); + end, ets:tab2list(?IQTABLE)), + loop(); _ -> - loop(State) + loop() end. -do_route(State, From, To, Packet) -> +do_route(From, To, Packet) -> ?DEBUG("local route~n\tfrom ~p~n\tto ~p~n\tpacket ~P~n", [From, To, Packet, 8]), - case To of - #jid{luser = "", lresource = ""} -> + if + To#jid.luser /= "" -> + ejabberd_sm:route(From, To, Packet); + To#jid.lresource == "" -> {xmlelement, Name, Attrs, _Els} = Packet, case Name of "iq" -> - process_iq(State, From, To, Packet); + process_iq(From, To, Packet); "message" -> ok; "presence" -> @@ -101,7 +102,7 @@ do_route(State, From, To, Packet) -> _ -> ok end; - #jid{luser = "", lresource = Res} -> + true -> {xmlelement, Name, Attrs, _Els} = Packet, case xml:get_attr_s("type", Attrs) of "error" -> ok; @@ -109,16 +110,14 @@ do_route(State, From, To, Packet) -> _ -> ejabberd_hooks:run(local_send_to_resource_hook, [From, To, Packet]) - end; - _ -> - ejabberd_sm ! {route, From, To, Packet} - end. + end + end. -process_iq(State, From, To, Packet) -> +process_iq(From, To, Packet) -> IQ = jlib:iq_query_info(Packet), case IQ of #iq{xmlns = XMLNS} -> - case ets:lookup(State#state.iqtable, XMLNS) of + case ets:lookup(?IQTABLE, XMLNS) of [{_, Module, Function}] -> ResIQ = Module:Function(From, To, IQ), if @@ -144,6 +143,15 @@ process_iq(State, From, To, Packet) -> ok end. +route(From, To, Packet) -> + case catch do_route(From, To, Packet) of + {'EXIT', Reason} -> + ?ERROR_MSG("~p~nwhen processing: ~p", + [Reason, {From, To, Packet}]); + _ -> + ok + end. + register_iq_handler(XMLNS, Module, Fun) -> ejabberd_local ! {register_iq_handler, XMLNS, Module, Fun}. diff --git a/src/ejabberd_router.erl b/src/ejabberd_router.erl index 700724eab..5713d1a33 100644 --- a/src/ejabberd_router.erl +++ b/src/ejabberd_router.erl @@ -12,6 +12,7 @@ -export([route/3, register_route/1, + register_route/2, unregister_route/1, dirty_get_all_routes/0, dirty_get_all_domains/0 @@ -22,15 +23,10 @@ -include("ejabberd.hrl"). -include("jlib.hrl"). --record(route, {domain, pid}). +-record(route, {domain, pid, local_hint}). start_link() -> - Pid = proc_lib:spawn_link(ejabberd_router, init, []), - register(ejabberd_router, Pid), - {ok, Pid}. - -init() -> update_tables(), mnesia:create_table(route, [{ram_copies, [node()]}, @@ -38,6 +34,11 @@ init() -> {attributes, record_info(fields, route)}]), mnesia:add_table_copy(route, node(), ram_copies), + Pid = proc_lib:spawn_link(ejabberd_router, init, []), + register(ejabberd_router, Pid), + {ok, Pid}. + +init() -> mnesia:subscribe({table, route, simple}), loop(). @@ -52,20 +53,6 @@ loop() -> ok end, loop(); - {register_route, Domain, Pid} -> - F = fun() -> - mnesia:write(#route{domain = Domain, - pid = Pid}) - end, - mnesia:transaction(F), - loop(); - {unregister_route, Domain, Pid} -> - F = fun() -> - mnesia:delete_object(#route{domain = Domain, - pid = Pid}) - end, - mnesia:transaction(F), - loop(); {mnesia_table_event, {write, #route{pid = Pid}, _ActivityId}} -> erlang:monitor(process, Pid), loop(); @@ -91,31 +78,76 @@ do_route(From, To, Packet) -> LDstDomain = To#jid.lserver, case mnesia:dirty_read(route, LDstDomain) of [] -> - ejabberd_s2s ! {route, From, To, Packet}; + ejabberd_s2s:route(From, To, Packet); [R] -> Pid = R#route.pid, - ?DEBUG("routed to process ~p~n", [Pid]), - Pid ! {route, From, To, Packet}; + if + node(Pid) == node() -> + case R#route.local_hint of + {apply, Module, Function} -> + Module:Function(From, To, Packet); + _ -> + Pid ! {route, From, To, Packet} + end; + true -> + Pid ! {route, From, To, Packet} + end; Rs -> - Rs1 = case [R || R <- Rs, node(R#route.pid) == node()] of - [] -> Rs; - LRs -> LRs - end, - R = lists:nth(erlang:phash(now(), length(Rs1)), Rs1), - Pid = R#route.pid, - ?DEBUG("routed to process ~p~n", [Pid]), - Pid ! {route, From, To, Packet} + case [R || R <- Rs, node(R#route.pid) == node()] of + [] -> + R = lists:nth(erlang:phash(now(), length(Rs)), Rs), + Pid = R#route.pid, + Pid ! {route, From, To, Packet}; + LRs -> + LRs, + R = lists:nth(erlang:phash(now(), length(LRs)), LRs), + Pid = R#route.pid, + case R#route.local_hint of + {apply, Module, Function} -> + Module:Function(From, To, Packet); + _ -> + Pid ! {route, From, To, Packet} + end + end end. +%route(From, To, Packet) -> +% ejabberd_router ! {route, From, To, Packet}. + route(From, To, Packet) -> - ejabberd_router ! {route, From, To, Packet}. + case catch do_route(From, To, Packet) of + {'EXIT', Reason} -> + ?ERROR_MSG("~p~nwhen processing: ~p", + [Reason, {From, To, Packet}]); + _ -> + ok + end. register_route(Domain) -> - ejabberd_router ! {register_route, Domain, self()}. + Pid = self(), + F = fun() -> + mnesia:write(#route{domain = Domain, + pid = Pid}) + end, + mnesia:transaction(F). + +register_route(Domain, LocalHint) -> + Pid = self(), + F = fun() -> + mnesia:write(#route{domain = Domain, + pid = Pid, + local_hint = LocalHint}) + end, + mnesia:transaction(F). unregister_route(Domain) -> - ejabberd_router ! {unregister_route, Domain, self()}. + Pid = self(), + F = fun() -> + mnesia:delete_object(#route{domain = Domain, + pid = Pid}) + end, + mnesia:transaction(F). dirty_get_all_routes() -> @@ -131,6 +163,8 @@ update_tables() -> [domain, node, pid] -> mnesia:delete_table(route); [domain, pid] -> + mnesia:delete_table(route); + [domain, pid, local_hint] -> ok; {'EXIT', _} -> ok diff --git a/src/ejabberd_s2s.erl b/src/ejabberd_s2s.erl index 18a86e6c2..53dc89b9f 100644 --- a/src/ejabberd_s2s.erl +++ b/src/ejabberd_s2s.erl @@ -11,9 +11,11 @@ -vsn('$Revision$ '). -export([start_link/0, init/0, + route/3, have_connection/1, get_key/1, try_register/1, + remove_connection/1, dirty_get_connections/0]). -include("ejabberd.hrl"). @@ -29,17 +31,14 @@ start_link() -> init() -> update_tables(), - mnesia:create_table(s2s,[{ram_copies, [node()]}, - {attributes, record_info(fields, s2s)}]), + mnesia:create_table(s2s, [{ram_copies, [node()]}, + {attributes, record_info(fields, s2s)}]), mnesia:add_table_copy(s2s, node(), ram_copies), mnesia:subscribe(system), loop(). loop() -> receive - {closed_conection, FromTo} -> - remove_connection(FromTo), - loop(); {mnesia_system_event, {mnesia_down, Node}} -> clean_table_from_bad_node(Node), loop(); @@ -57,6 +56,15 @@ loop() -> end. +route(From, To, Packet) -> + case catch do_route(From, To, Packet) of + {'EXIT', Reason} -> + ?ERROR_MSG("~p~nwhen processing: ~p", + [Reason, {From, To, Packet}]); + _ -> + ok + end. + remove_connection(FromTo) -> F = fun() -> diff --git a/src/ejabberd_s2s_in.erl b/src/ejabberd_s2s_in.erl index 4da98478e..5373123f1 100644 --- a/src/ejabberd_s2s_in.erl +++ b/src/ejabberd_s2s_in.erl @@ -311,14 +311,6 @@ handle_info(_, StateName, StateData) -> %% Returns: any %%---------------------------------------------------------------------- terminate(Reason, _StateName, StateData) -> -% case StateData#state.user of -% "" -> -% ok; -% _ -> -% %ejabberd_sm:close_session(StateData#state.user, -% % StateData#state.resource) -% end, - %ejabberd_s2s ! {closed_conection, StateData#state.server}, ?INFO_MSG("terminated: ~p", [Reason]), gen_tcp:close(StateData#state.socket), ok. diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl index 4da88b0cd..aec98ba6e 100644 --- a/src/ejabberd_s2s_out.erl +++ b/src/ejabberd_s2s_out.erl @@ -397,8 +397,8 @@ terminate(Reason, StateName, StateData) -> false -> ok; Key -> - ejabberd_s2s ! {closed_conection, {StateData#state.myname, - StateData#state.server}} + ejabberd_s2s:remove_connection({StateData#state.myname, + StateData#state.server}) end, case StateData#state.socket of undefined -> diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl index bb8fb4951..ef0fa1e1c 100644 --- a/src/ejabberd_sm.erl +++ b/src/ejabberd_sm.erl @@ -10,7 +10,9 @@ -author('alexey@sevcom.net'). -vsn('$Revision$ '). --export([start_link/0, init/0, open_session/2, close_session/2, +-export([start_link/0, init/0, + route/3, + open_session/2, close_session/2, bounce_offline_message/3, get_user_resources/1, set_presence/3, @@ -89,11 +91,20 @@ loop() -> end. +route(From, To, Packet) -> + case catch do_route(From, To, Packet) of + {'EXIT', Reason} -> + ?ERROR_MSG("~p~nwhen processing: ~p", + [Reason, {From, To, Packet}]); + _ -> + ok + end. + open_session(User, Resource) -> - ejabberd_sm ! {open_session, User, Resource, self()}. + register_connection(User, Resource, self()). close_session(User, Resource) -> - ejabberd_sm ! {close_session, User, Resource}. + remove_connection(User, Resource). register_connection(User, Resource, Pid) -> diff --git a/src/eldap/Makefile.in b/src/eldap/Makefile.in index 5ce2a4d9f..91384b328 100644 --- a/src/eldap/Makefile.in +++ b/src/eldap/Makefile.in @@ -17,10 +17,10 @@ OBJS = \ all: $(OBJS) ELDAPv3.erl: ELDAPv3.asn - erlc -bber_bin -W $(EFLAGS) $< + @ERLC@ -bber_bin -W $(EFLAGS) $< $(OUTDIR)/%.beam: %.erl ELDAPv3.erl - erlc -W $(EFLAGS) -o $(OUTDIR) $< + @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $< clean: diff --git a/src/mod_irc/Makefile.in b/src/mod_irc/Makefile.in index d8c1c74af..0a7cd5677 100644 --- a/src/mod_irc/Makefile.in +++ b/src/mod_irc/Makefile.in @@ -20,7 +20,7 @@ OBJS = \ all: $(OBJS) $(ERLSHLIBS) $(OUTDIR)/%.beam: %.erl - erlc -W $(EFLAGS) -o $(OUTDIR) $< + @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $< #all: $(ERLSHLIBS) # erl -s make all report "{outdir, \"..\"}" -noinput -s erlang halt diff --git a/src/mod_muc/Makefile.in b/src/mod_muc/Makefile.in index 7e4bd53fc..14e9a9763 100644 --- a/src/mod_muc/Makefile.in +++ b/src/mod_muc/Makefile.in @@ -17,7 +17,7 @@ OBJS = \ all: $(OBJS) $(OUTDIR)/%.beam: %.erl - erlc -W $(EFLAGS) -o $(OUTDIR) $< + @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $< clean: rm -f $(OBJS) diff --git a/src/mod_pubsub/Makefile.in b/src/mod_pubsub/Makefile.in index 096d8bbb1..e007294e0 100644 --- a/src/mod_pubsub/Makefile.in +++ b/src/mod_pubsub/Makefile.in @@ -16,7 +16,7 @@ OBJS = \ all: $(OBJS) $(OUTDIR)/%.beam: %.erl - erlc -W $(EFLAGS) -o $(OUTDIR) $< + @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $< clean: rm -f $(OBJS) diff --git a/src/mod_vcard_ldap.erl b/src/mod_vcard_ldap.erl index 75c8a298d..5be8cf0f9 100644 --- a/src/mod_vcard_ldap.erl +++ b/src/mod_vcard_ldap.erl @@ -29,7 +29,9 @@ start(Opts) -> gen_iq_handler:add_iq_handler(ejabberd_sm, ?NS_VCARD, ?MODULE, process_sm_iq, IQDisc), LDAPServers = ejabberd_config:get_local_option(ldap_servers), - eldap:start_link("mod_vcard_ldap", LDAPServers, 389, "", ""), + RootDN = ejabberd_config:get_local_option(ldap_rootdn), + Password = ejabberd_config:get_local_option(ldap_password), + eldap:start_link("mod_vcard_ldap", LDAPServers, 389, RootDN, Password), Host = gen_mod:get_opt(host, Opts, "vjud." ++ ?MYNAME), Search = gen_mod:get_opt(search, Opts, true), register(ejabberd_mod_vcard_ldap, spawn(?MODULE, init, [Host, Search])). diff --git a/src/stringprep/Makefile.in b/src/stringprep/Makefile.in index cd1ddbbaf..7717878a1 100644 --- a/src/stringprep/Makefile.in +++ b/src/stringprep/Makefile.in @@ -18,7 +18,7 @@ OBJS = \ all: $(OBJS) $(ERLSHLIBS) $(OUTDIR)/%.beam: %.erl - erlc -W $(EFLAGS) -o $(OUTDIR) $< + @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $< #all: $(ERLSHLIBS) # erl -s make all report "{outdir, \"..\"}" -noinput -s erlang halt diff --git a/src/tls/Makefile.in b/src/tls/Makefile.in index 0e5f7c038..e0ebd5d4f 100644 --- a/src/tls/Makefile.in +++ b/src/tls/Makefile.in @@ -18,7 +18,7 @@ OBJS = \ all: $(OBJS) $(ERLSHLIBS) $(OUTDIR)/%.beam: %.erl - erlc -W $(EFLAGS) -o $(OUTDIR) $< + @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $< #all: $(ERLSHLIBS) # erl -s make all report "{outdir, \"..\"}" -noinput -s erlang halt diff --git a/src/web/Makefile.in b/src/web/Makefile.in index 10949d9c2..37d4ce806 100644 --- a/src/web/Makefile.in +++ b/src/web/Makefile.in @@ -20,7 +20,7 @@ OBJS = \ all: $(OBJS) $(OUTDIR)/%.beam: %.erl - erlc -W $(EFLAGS) -o $(OUTDIR) $< + @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $< clean: