Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMickaël Rémond <mickael.remond@process-one.net>2006-09-23 13:52:53 +0400
committerMickaël Rémond <mickael.remond@process-one.net>2006-09-23 13:52:53 +0400
commitccfcfa49fad66fa1e571f49140ca48115145c4f5 (patch)
tree92a155bc65059a89ea8ede815187fba018e72d22
parente734ad16822ec68ded52b8fcff8bc96a481fe5c7 (diff)
Improvement coming from trunk (SVN #622):
* src/eldap/eldap.erl: Enable the keepalive socket option (thanks to Evgeniy Khramtsov) * src/ejabberd_auth_ldap.erl: Now uses two LDAP connections (thanks to Evgeniy Khramtsov) * src/eldap/eldap_filter.erl: Bugfix (thanks to Evgeniy Khramtsov) * src/mod_vcard_ldap.erl: Likewise SVN Revision: 623
-rw-r--r--ChangeLog11
-rw-r--r--src/ejabberd_auth_ldap.erl10
-rw-r--r--src/eldap/eldap.erl2
-rw-r--r--src/mod_vcard_ldap.erl11
4 files changed, 24 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 58d3c3180..60844364f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2006-09-23 Alexey Shchepin <alexey@sevcom.net>
+
+ * src/eldap/eldap.erl: Enable the keepalive socket option (thanks
+ to Evgeniy Khramtsov)
+
+ * src/ejabberd_auth_ldap.erl: Now uses two LDAP connections
+ (thanks to Evgeniy Khramtsov)
+
+ * src/eldap/eldap_filter.erl: Bugfix (thanks to Evgeniy Khramtsov)
+ * src/mod_vcard_ldap.erl: Likewise
+
2006-09-22 Mickael Remond <mickael.remond@process-one.net>
* src/msgs/cs.msg: Added Czech translation (thanks to Milos Svasek).
diff --git a/src/ejabberd_auth_ldap.erl b/src/ejabberd_auth_ldap.erl
index a1ce74609..d152d0895 100644
--- a/src/ejabberd_auth_ldap.erl
+++ b/src/ejabberd_auth_ldap.erl
@@ -44,6 +44,7 @@
-record(state, {host,
eldap_id,
+ bind_eldap_id,
servers,
port,
dn,
@@ -101,6 +102,11 @@ init(Host) ->
State#state.port,
State#state.dn,
State#state.password),
+ eldap:start_link(State#state.bind_eldap_id,
+ State#state.servers,
+ State#state.port,
+ State#state.dn,
+ State#state.password),
ejabberd_ctl:register_commands(
Host,
[{"registered-users", "list all registered users"}],
@@ -174,7 +180,7 @@ handle_call({check_pass, User, Password}, _From, State) ->
false ->
false;
DN ->
- case eldap:bind(State#state.eldap_id, DN, Password) of
+ case eldap:bind(State#state.bind_eldap_id, DN, Password) of
ok -> true;
_ -> false
end
@@ -327,6 +333,7 @@ usort_attrs(_) ->
parse_options(Host) ->
Eldap_ID = atom_to_list(gen_mod:get_module_proc(Host, ?MODULE)),
+ Bind_Eldap_ID = atom_to_list(gen_mod:get_module_proc(Host, bind_ejabberd_auth_ldap)),
LDAPServers = ejabberd_config:get_local_option({ldap_servers, Host}),
LDAPPort = case ejabberd_config:get_local_option({ldap_port, Host}) of
undefined -> 389;
@@ -363,6 +370,7 @@ parse_options(Host) ->
end,
#state{host = Host,
eldap_id = Eldap_ID,
+ bind_eldap_id = Bind_Eldap_ID,
servers = LDAPServers,
port = LDAPPort,
dn = RootDN,
diff --git a/src/eldap/eldap.erl b/src/eldap/eldap.erl
index a1f320fc1..894982e82 100644
--- a/src/eldap/eldap.erl
+++ b/src/eldap/eldap.erl
@@ -808,7 +808,7 @@ polish([], Res, Ref) ->
%%-----------------------------------------------------------------------
connect_bind(S) ->
Host = next_host(S#eldap.host, S#eldap.hosts),
- TcpOpts = [{packet, asn1}, {active, true}, binary],
+ TcpOpts = [{packet, asn1}, {active, true}, {keepalive, true}, binary],
case gen_tcp:connect(Host, S#eldap.port, TcpOpts) of
{ok, Socket} ->
case bind_request(Socket, S) of
diff --git a/src/mod_vcard_ldap.erl b/src/mod_vcard_ldap.erl
index 4389e4bce..0921ce92f 100644
--- a/src/mod_vcard_ldap.erl
+++ b/src/mod_vcard_ldap.erl
@@ -670,14 +670,9 @@ map_vcard_attr(VCardName, Attributes, Pattern, UD) ->
_ -> ""
end.
-process_pattern(Str, {User, Domain}, Attrs) ->
- Res = lists:foldl(
- fun(X, Acc) ->
- {ok, NewStr, _} = regexp:sub(Acc, "%s", X),
- NewStr
- end,
- Str, Attrs),
- eldap_filter:do_sub(Res, [{"%u", User},{"%d", Domain}]).
+process_pattern(Str, {User, Domain}, AttrValues) ->
+ eldap_filter:do_sub(Str,
+ [{"%s", V, 1} || V <- AttrValues] ++ [{"%u", User},{"%d", Domain}]).
get_ldap_attr(LDAPAttr, Attributes) ->
Res = lists:filter(