Profile showing with ldap

Hi
I installed ejabberd on windows. I used Ldap for authentication ,user information. Everything is fine except one thing. Sometimes when i want to look at the profile of a user, i cannot see any information. But normally it is showing. After a moment it is showing. And it is not specific to one user. It may show all the profile but also there is a probability not to showing all profiles. I cannot understand when it happens. Maybe randomly? Here is my ejabberd.conf file. I also expecting some advice about my conf file if there is an existing mistake. Thanx to evryone.

% $Id: $

%override_acls.

% Users that have admin access. Add line like one of the following after you
% will be successfully registered on server to get admin access:
{acl, admin, {user, "admin"}}.

% Blocked users:
%{acl, blocked, {user, "test"}}.

% Local users:
{acl, local, {user_regexp, ""}}.

% Another examples of ACLs:
%{acl, jabberorg, {server, "jabber.org"}}.
%{acl, aleksey, {user, "aleksey", "jabber.ru"}}.
%{acl, test, {user_regexp, "^test"}}.
%{acl, test, {user_glob, "test*"}}.

% Everybody can create pubsub nodes
{access, pubsub_createnode, [{allow, all}]}.

% Only admins can use configuration interface:
{access, configure, [{allow, admin}]}.

% Every username can be registered via in-band registration:
% You could replace {allow, all} with {deny, all} to prevent user from using
% in-band registration
{access, register, [{deny, all}]}.

% After successful registration user will get message with following subject
% and body:
%{welcome_message,
% {"Welcome!",
% "Welcome to Instant Messaging server localhost. "
% "For information about ejabberd visit http://www.process-one.net/"}}.
% Replace them with 'none' if you don't want to send such message:
{welcome_message, none}.

% List of people who will get notifications about registered users
%{registration_watchers, ["admin1@localhost",
% "admin2@localhost"]}.

% Only admins can send announcement messages:
{access, announce, [{allow, admin}]}.

% Only non-blocked users can use c2s connections:
{access, c2s, [{deny, blocked},
{allow, all}]}.

% Set shaper with name "normal" to limit traffic speed to 1000B/s
{shaper, normal, {maxrate, 1000}}.

% Set shaper with name "fast" to limit traffic speed to 50000B/s
{shaper, fast, {maxrate, 50000}}.

% For all users except admins used "normal" shaper
{access, c2s_shaper, [{none, admin},
{normal, all}]}.

% For all S2S connections used "fast" shaper
{access, s2s_shaper, [{fast, all}]}.

% Admins of this server are also admins of MUC service:
{access, muc_admin, [{allow, admin}]}.

% All users are allowed to use MUC service:
{access, muc, [{allow, all}]}.

% This rule allows access only for local users:
{access, local, [{allow, local}]}.

% Authentication method. If you want to use internal user base, then use
% this line:
%{auth_method, internal}.

% For LDAP authentication use these lines instead of above one:
{auth_method, ldap}.
{ldap_servers, ["10.xxx.xxx.xxx"]}. % List of LDAP servers
{ldap_uidattr, "uid"}. % LDAP attribute that holds user ID
{ldap_base, "dc=example,dc=com"}. % Search base of LDAP directory
{ldap_rootdn, "cn=xxxxxxx"}. % LDAP manager
{ldap_password, "xxxxxxx"}. % Password to LDAP manager
{ldap_filter, "(AccountStatus=enabled)"}.
% For authentication via external script use the following:
%{auth_method, external}.
%{extauth_program, "/path/to/authentication/script"}.

% For authentication via ODBC use the following:
%{auth_method, odbc}.
%{odbc_server, "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"}.

% Host name:
{hosts, ["localhost"]}.

%% Define the maximum number of time a single user is allowed to connect:
{max_user_sessions, 10}.

%% Anonymous login support:
%% auth_method: anonymous
%% anonymous_protocol: sasl_anon|login_anon|both
%% allow_multiple_connections: true|false
%%{host_config, "public.example.org", [{auth_method, anonymous},
%% {allow_multiple_connections, false},
%% {anonymous_protocol, sasl_anon}]}.
%% To use both anonymous and internal authentication:
%%{host_config, "public.example.org", [{auth_method, [anonymous, internal]}]}.

% Default language for server messages
% TODO: Use installer selection
{language, "en"}.

% Listened ports:
{listen, [
%{5222, ejabberd_c2s, [{access, c2s},
% {max_stanza_size, 65536},
% {shaper, c2s_shaper}]},
%% Use this line to enable SSL:
%%{5223, ejabberd_c2s, [{access, c2s}, {max_stanza_size, 65536}, tls, {certfile, "C:\server.pem"}]},
%%
%% Use those lines instead for TLS support:
%%{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper},
%% starttls, {certfile, "C:\Program Files\ejabberd-1.1.2\conf\server.pem"}]},
{5222, ejabberd_c2s, [{access, c2s},
starttls, {certfile, "/server.pem"}]},
%% {5223, ejabberd_c2s, [{access, c2s},
%% tls, {certfile, "C:\server.pem"}]},

%% Remove this line if you want to prevent s2s connections:
%%{5269, ejabberd_s2s_in, [{shaper, s2s_shaper}, {max_stanza_size, 131072}]},

%% remove http_poll to remove support for http polling
%% remove web_admin to disable admin interface:
{5280, ejabberd_http, [http_poll, web_admin]}
%% This is an example on how to define an external service/transport:
%% {8888, ejabberd_service, [{access, all},
%% {hosts, ["icq.localhost", "sms.localhost"],
%% [{password, "secret"}]}]}
]}.

% If SRV lookup fails, then port 5269 is used to communicate with remote server
{outgoing_s2s_port, 5269}.

% Used modules:
{modules,
[
{mod_register, [{access, register}]},
{mod_roster, []},
{mod_privacy, []},
{mod_adhoc, []},
{mod_configure, []}, % Depends on mod_adhoc
{mod_configure2, []},
{mod_disco, []},
{mod_stats, []},
{mod_vcard_ldap, [{ldap_rootdn, ""},
{ldap_password, ""},
{ldap_base, "cn=birimsizler,dc=example,dc=com"},
{ldap_filter, "(AccountStatus=enabled)"},
%{ldap_uidattr, "%u"},
{ldap_uidattr_format, "%u"},
{ldap_vcard_map,
[{"NICKNAME", "%u", ["nickname"]}, % just use user's part of JID as his nickname
{"GIVEN", "%s", ["givenname"]},
{"FAMILY", "%s", ["sn"]},
{"FN", "%s, %s", ["sn", "givenName"]}, % example: "Smith, John"
{"EMAIL", "%s", ["mail"]}]},
%% Search form
{ldap_search_fields,
[{"User", "uid"},
{"Name", "givenName"},
{"Family Name", "sn"},
{"Email", "mail"}]},
%% vCard fields to be reported
%% Note that JID is always returned with search results
{ldap_search_reported,
[{"Full Name", "FN"}]}]},
{mod_offline, []},
{mod_announce, [{access, announce}]}, % Depends on mod_adhoc
{mod_echo, [{host, "echo.localhost"}]},
{mod_private, []},
{mod_irc, []},
% Default options for mod_muc:
% host: "conference." ++ ?MYNAME
% access: all
% access_create: all
% access_admin: none (only room creator has owner privileges)
{mod_muc, [{access, muc},
{access_create, muc},
{access_admin, muc_admin}]},
% {mod_muc_log, []},
% {mod_shared_roster, []},
{mod_pubsub, [{access_createnode, pubsub_createnode}]},
{mod_time, []},
{mod_last, []},
%%{mod_xmlrpc,[{port, 4560},{timeout, 5000}]},
{mod_version, []}
]}.

% Local Variables:
% mode: erlang
% End:

That's strange

That's strange a bit. Do you see any error messages in ejabberd.log?

Hi There is no error message

Hi
There is no error message in the log. I sniffed the network traffic with ethereal and i see that ejabberd is talking with ldap server. It gets attributes from it but not sending this attributes to jabber client. if someone profile is not shown, its ldap records returned like that when ejabber make query to ldap server
Distinguished Name: uid=abinvisible,cn=birimsizler,dc=example,dc=com
Attribute: objectclass
Attribute: accountStatus
Attribute: homeDirectory
Attribute: mailHost
Attribute: mailMessageStore
Attribute: preferredLanguage
Attribute: uid
Attribute: mail
Attribute: mailalternateadress
Attribute: nickname
Attribute: deliverymode
Attribute: cn
Attribute: displayname
Attribute: givenname
Attribute: sn
Attribute: departmentNumber

With this returning attributes i cannot see the profile (vcard)of this user.But ldap also can returned a record like that

Distinguished Name: uid=abvisible,cn=birimsizler,dc=example,dc=com
Attribute: accountStatus
Attribute: cn
Attribute: deliverymode
Attribute: departmentNumber
Attribute: displayname
Attribute: givenname
Attribute: homeDirectory
Attribute: mail
Attribute: mailalternateadress
Attribute: mailHost
Attribute: mailMessageStore
Attribute: nickname
Attribute: objectclass
Attribute: preferredLanguage
Attribute: sn
Attribute: uid
With this returning ldap records, I can see the profile of the user. Whenever i cannot see the profile of user its ldap records is the same as first one, on the contrary for visible profile ldap records is the same as second one. I think our ldap sometimes returned query in different orders and it cause a problem in ejabberd that cannot send the profile of user to jabber client. May it be a bug of ejabberd? Thanx to everyone

Syndicate content