mod_vcard_ldap question

Hi,

I have difficulty getting mod_vcard_ldap to work against windows AD (ejabberd itself runs on a debian box). Here is relavant parts of my .cfg, ldap auth works fine:

{auth_method, [ldap, internal]}.
%% List of LDAP servers:
{ldap_servers, ["DC1.domain.com","DC2.domain.com","DC3.domain.com"]}.
%%
%% LDAP attribute that holds user ID:
{ldap_uids, [{"sAMAccountName","%u"}]}.
{ldap_filter, "(&(objectClass=user)(objectCategory=person))"}.
%%
%%% Search base of LDAP directory:
{ldap_base, "OU=ejabberd,OU=testusers,OU=users,DC=domain,DC=com"}.
%%
%% LDAP manager:
%% ************************************************************************************************
%% Note for LDAP Manager : if this account is only member of the "Domain users" group it MUST BE
%% -----> Member of the Ejabberd server "Administrators" group
%% -----> Allowed to log on locally to the Ejabberd server
%% ************************************************************************************************
{ldap_rootdn, "CN=ejabber adreader,OU=Spetsiaal Userid,OU=Groups,DC=domain,DC=com"}.
%% Password to LDAP manager:
{ldap_password, "password"}.

Modules conf

{modules,
 [
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_ctlextra, []},
  {mod_disco,    []},
  %%{mod_echo,   [{host, "echo.localhost"}]},
  {mod_irc,      []},
  {mod_last,     []},
  {mod_muc,      [
		  %%{host, "conference.@HOST@"},
		  {access, muc},
		  {access_create, muc},
		  {access_persistent, muc},
		  {access_admin, muc_admin},
		  {max_users, 500}
		 ]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
		  {access, local},
		  {shaper, c2s_shaper}
		 ]},
  {mod_pubsub,   [ % requires mod_caps
		  {access_createnode, pubsub_createnode},
		  {plugins, ["default", "pep"]}
		 ]},
  {mod_register, [
		  %%
		  %% After successful registration, the user receives
		  %% a message with this subject and body.
		  %%
		  {welcome_message, {"Welcome!",
				     "Welcome to a Jabber service powered by Debian. "
				     "For information about Jabber visit "
				     "http://www.jabber.org"}},
		  %% Replace it with 'none' if you don't want to send such message:
		  %%{welcome_message, none},

		  %%
		  %% When a user registers, send a notification to
		  %% these Jabber accounts.
		  %%
		  %%{registration_watchers, ["admin1@example.org"]},

		  {access, register}
		 ]},
  {mod_roster,   []},
  %%{mod_service_log,[]},
  %%{mod_shared_roster,[]},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_version,  []},
  %%Vcard test 
  {mod_vcard_ldap,
      [
      {ldap_servers, ["DC1.domain.com","DC2.domain.com","DC3.domain.com"]},
      {ldap_rootdn, "CN=ejabber adreader,OU=Spetsiaal Userid,OU=Groups,DC=domain,DC=com"},
      {ldap_password, "password"},
      {ldap_base, "OU=ejabberd,OU=testusers,OU=users,DC=domain,DC=com"},
      {ldap_filter, "(&(objectClass=user)(objectCategory=person))"},
      {ldap_uids, [{"sAMAccountName","%u"}]},
      %%---------------------------------------------     
      {ldap_vcard_map,
	[{"NICKNAME", "%u", ["nickname"]},
	 {"GIVEN", "%s", ["givenname"]},
	 {"FAMILY", "%s", ["sn"]},
	 {"FN", "%s, %s", ["sn", "givenName"]},
	 {"EMAIL", "%s", ["mail"]}]},
      {ldap_search_fields,
	[{"User", "uid"},
	 {"Name", "givenName"},
	 {"Family Name", "sn"},
	 {"Email", "mail"}]},
      {ldap_search_reported,
	[{"Perekonnanimi", "FAMILY"},
	 {"Eesnimi", "GIVEN"}]}
  ]},
]}.

Also tried this:

    {mod_vcard_ldap, [
	{ldap_base, "OU=ejabberd,OU=testusers,OU=users,DC=domain,DC=com"},
	{ldap_vcard_map,
	    [
		{"NICKNAME", "%s", ["displayName"]},
		{"GIVEN", "%s", ["givenName"]},
		{"FAMILY", "%s", ["sn"]},
		{"FN", "%s", ["displayName"]},
		{"EMAIL", "%s", ["mail"]}
	]},
	{ldap_search_fields,
	    [{"User", "%u"},
	     {"Name", "givenName"},
	     {"Family Name", "sn"},
	     {"Email", "mail"}
	]},
	{ldap_search_reported, [
	    {"Full Name", "FN"},
	    {"Email", "EMAIL"}
	]}
    ]},

--------------------------------------
And this:
--------------------------------------

    {mod_vcard_ldap, [
	{auth_method, [ldap]},
	{ldap_servers, ["dc1.just.sise"]},
	{ldap_uids, [{"sAMAccountName","%u"}]}, %oige%%%
	{ldap_uids, [{"UID","%u"}]}
	{ldap_base, "OU=ejabberd,OU=testusers,OU=users,DC=domain,DC=com"},
	{ldap_rootdn, "CN=ejabber adreader,OU=Spetsiaal Userid,OU=Groups,DC=domain,DC=com"},
	{ldap_password, "password"},
	{ldap_filter, "(&(objectClass=user)(objectCategory=person))"},
	{ldap_vcard_map,[
	    {"NICKNAME", "%s %s", ["givenName", "sn"]},
	    {"GIVEN", "%s", ["givenName"]},
	    {"FAMILY", "%s", ["sn"]},
	    {"FN", "%s", ["displayName"]},
	    {"EMAIL", "%s", ["mail"]},
	    {"ORGNAME", "%s", ["company"]},
	    {"ORGUNIT", "%s", ["department"]},
	    {"TITLE", "%s", ["title"]},
	    {"DESC", "%s", ["description"]},
	    {"TEL", "%s", ["telephoneNumber"]}
	]},
	{ldap_search_fields,[
	    {"User", "%u"},
	    {"Name", "givenName"},
	    {"Family Name", "sn"},
	    {"Email", "mail"},
	    {"Company", "company"},
	    {"Department", "department"},
	    {"Role", "title"},
	    {"Description", "description"},
	    {"Phone", "telephoneNumber"}
	]},
        {ldap_search_reported,[
	    {"Name", "givenName"},
	    {"Family Name", "sn"},
	    {"Full Name", "FN"},
	    {"Email", "EMAIL"}
	]}
    ]},

None of those work, ejabber wont start and in sasl.log :

=CRASH REPORT==== 10-Mar-2009::09:37:06 ===
  crasher:
    pid: <0.285.0>
    registered_name: []
    exception exit: {bad_return,
                        {{ejabberd_app,start,[normal,[]]},
                         {'EXIT',
                             [47,101,116,99,47,101,106,97,98,98,101,114,100,
                              47,101,106,97,98,98,101,114,100,46,99,102,103,
                              58,32,"588",58,32,
                              ["syntax error before: ","'.'"]]}}}
      in function  application_master:init/4
    initial call: application_master:init(<0.254.0>,<0.284.0>,
                                          {appl_data,ejabberd,
                                           [ejabberd,ejabberd_sup,
                                            ejabberd_auth,ejabberd_router,
                                            ejabberd_sm,ejabberd_s2s,
                                            ejabberd_local,ejabberd_listeners,
                                            ejabberd_iq_sup,
                                            ejabberd_service_sup,
                                            ejabberd_s2s_out_sup,
                                            ejabberd_s2s_in_sup,
                                            ejabberd_c2s_sup,
                                            ejabberd_mod_roster,
                                            ejabberd_mod_echo,
                                            ejabberd_mod_pubsub,
                                            ejabberd_mod_irc,ejabberd_mod_muc,
                                            ejabberd_offline,random_generator],
                                           undefined,
                                           {ejabberd_app,[]},
                                           [acl,adhoc,configure,
                                            cyrsasl_anonymous,cyrsasl,
                                            cyrsasl_digest,cyrsasl_plain,
                                            ejabberd_admin,ejabberd_app,
                                            ejabberd_auth_anonymous,
                                            ejabberd_auth,
                                            ejabberd_auth_external,
                                            ejabberd_auth_internal,
                                            ejabberd_auth_ldap,
                                            ejabberd_auth_odbc,
                                            ejabberd_auth_pam,ejabberd,
                                            ejabberd_c2s,ejabberd_c2s_config,
                                            ejabberd_config,ejabberd_ctl,
                                            ejabberd_frontend_socket,
                                            ejabberd_hooks,ejabberd_http,
                                            ejabberd_http_bind,
                                            ejabberd_http_poll,
                                            ejabberd_listener,ejabberd_local,
                                            ejabberd_logger_h,
                                            ejabberd_loglevel,
                                            ejabberd_node_groups,
                                            ejabberd_rdbms,ejabberd_receiver,
                                            ejabberd_router,ejabberd_s2s,
                                            ejabberd_s2s_in,ejabberd_s2s_out,
                                            ejabberd_service,ejabberd_sm,
                                            ejabberd_socket,ejabberd_sup,
                                            ejabberd_system_monitor,
                                            ejabberd_tmp_sup,ejabberd_update,
                                            ejabberd_web_admin,ejabberd_web,
                                            ejabberd_zlib,ejd2odbc,eldap,
                                            eldap_filter,eldap_pool,
                                            eldap_utils,'ELDAPv3',extauth,
                                            gen_iq_handler,gen_mod,
                                            gen_pubsub_node,
                                            gen_pubsub_nodetree,iconv,idna,
                                            jd2ejd,jlib,mod_adhoc,
                                            mod_announce,mod_caps,
                                            mod_configure2,mod_configure,
                                            mod_ctlextra,mod_disco,mod_echo,
                                            mod_http_bind,mod_http_fileserver,
                                            mod_irc,mod_irc_connection,
                                            mod_last,mod_last_odbc,mod_muc,
                                            mod_muc_log,mod_muc_room,
                                            mod_offline,mod_offline_odbc,
                                            mod_privacy,mod_privacy_odbc,
                                            mod_private,mod_private_odbc,
                                            mod_proxy65,mod_proxy65_lib,
                                            mod_proxy65_service,
                                            mod_proxy65_sm,mod_proxy65_stream,
                                            mod_pubsub,mod_register,
                                            mod_roster,mod_roster_odbc,
                                            mod_service_log,mod_shared_roster,
                                            mod_stats,mod_time,mod_vcard,
                                            mod_vcard_ldap,mod_vcard_odbc,
                                            mod_version,node_buddy,node_club,
                                            node_default,node_dispatch,
                                            node_pep,node_private,node_public,
                                            nodetree_default,nodetree_virtual,
                                            p1_fsm,p1_mnesia,
                                            ram_file_io_server,randoms,sha,
                                            shaper,stringprep,stringprep_sup,
                                            tls,translate,xml,xml_stream,
                                            'XmppAddr'],
                                           [],infinity,infinity},
                                          normal)
    ancestors: [<0.284.0>]
    messages: [{'EXIT',<0.286.0>,normal}]
    links: [<0.284.0>,<0.254.0>]
    dictionary: []
    trap_exit: true
    status: running
    heap_size: 987
    stack_size: 23
    reductions: 126
  neighbours:

Have i misconfigured something?

Syntax mistake, remove comma at the end

kriks wrote:

None of those work, ejabberd wont start and in sasl.log :

=CRASH REPORT==== 10-Mar-2009::09:37:06 ===
  crasher:
    pid: <0.285.0>
    registered_name: []
    exception exit: {bad_return,
                        {{ejabberd_app,start,[normal,[]]},
                         {'EXIT',
                             [47,101,116,99,47,101,106,97,98,98,101,114,100,
                              47,101,106,97,98,98,101,114,100,46,99,102,103,
                              58,32,"588",58,32,
                              ["syntax error before: ","'.'"]]}}}
      in function  application_master:init/4
    initial call: application_master:init(<0.254.0>,<0.284.0>,
   ...

Have i misconfigured something?

Yes, ejabberd refuses to start because there is a syntax error in the configuration file. The error message does not exactly indicate where the problem is, but I think I found it.

ejabberd.cfg explains in the beginning:

A list can have as many elements as you want, and is enclosed in [], for example: [http_poll, web_admin, tls]

In your case, you have something like:

{modules,
  [
    {mod_adhoc,    []},
    {mod_announce, [{access, announce}]}, % requires mod_adhoc
    {mod_caps,     []},
    ...
    {mod_vcard_ldap, 
      [
        {ldap_base, "OU=ejabberd,OU=testusers,OU=users,DC=domain,DC=com"},
        ...
        {ldap_search_reported,
          [
            {"Perekonnanimi", "FAMILY"},
            {"Eesnimi", "GIVEN"}
          ]
        }
      ]
    },   %%% That comma must not exist, delete it! This line is the end of a list, should only have: }
  ]
}.

Thank you, that blasted comma

Thank you, that blasted comma was the "buG"

Syndicate content