Syntax error in ejabberd.cfg

I´am very close to finish up the configuration but there is a syntax error which i don´t understand.

Eshell V5.6.4  (abort with ^G)
(ejabberd@localhost)1>
=ERROR REPORT==== 20-Jun-2011::11:59:35 ===
E(<0.42.0>:ejabberd_config:187) : The following lines from your configuration file might be relevant to the error:
447:
448:              {access, register}
449:             ]},
450:   {mod_roster,   []},
451:   %%{mod_service_log,[]},
452:   %%{mod_shared_roster,[]},
453:   {mod_stats,    []},
454:   {mod_time,     []},
455:   {mod_vcard,    []},
456:   {mod_version,  []}
457:  ]}.
458:
459:
460: %%% $Id: ejabberd.cfg.example 1073 2007-12-17 11:03:22Z badlop $

=ERROR REPORT==== 20-Jun-2011::11:59:35 ===
E(<0.42.0>:ejabberd_config:106) : Problem loading ejabberd config file /opt/ejabberd/conf/ejabberd.cfg approximately in the line 457: syntax error before: ']'

Maybe someone can help me out to fix this.

Best regards UE

I don't see any syntax error

I don't see any syntax error in those lines, probably the error is before them, somewhere where you modified some lines.

If you paste all your cfg (remember to replace your private details with ****), it will probably be easy to find.

Hi badlop, thank you for your

Hi badlop,
thank you for your replay, here is my complete ejabberd.cfg:

%%%
%%%               ejabberd configuration file
%%%

%%% The parameters used in this configuration file are explained in more detail
%%% in the ejabberd Installation and Operation Guide.
%%% Please consult the Guide in case of doubts, it is included in
%%% your copy of ejabberd, and is also available online at
%%% http://www.process-one.net/en/ejabberd/docs/

%%% This configuration file contains Erlang terms.
%%% In case you want to understand the syntax, here are the concepts:
%%%
%%%  - The character to comment a line is %
%%%
%%%  - Each term ends in a dot, for example:
%%%      override_global.
%%%
%%%  - A tuple has a fixed definition, its elements are
%%%    enclosed in {}, and separated with commas:
%%%      {loglevel, 4}.
%%%
%%%  - A list can have as many elements as you want,
%%%    and is enclosed in [], for example:
%%%      [http_poll, web_admin, tls]
%%%
%%%  - A keyword of ejabberd is a word in lowercase.
%%%    The strings are enclosed in "" and can have spaces, dots...
%%%      {language, "en"}.
%%%      {ldap_rootdn, "dc=example,dc=com"}.
%%%
%%%  - This term includes a tuple, a keyword, a list and two strings:
{hosts, ["jabber.********.**"]}.
%%%

%%%   =======================
%%%   OVERRIDE STORED OPTIONS

%%
%% Override the old values stored in the database.
%%

%%
%% Override global options (shared by all ejabberd nodes in a cluster).
%%
%%override_global.

%%
%% Override local options (specific for this particular ejabberd node).
%%
%%override_local.

%%
%% Remove the Access Control Lists before new ones are added.
%%
%%override_acls.

%%%   =========
%%%   DEBUGGING

%%
%% loglevel: Verbosity of log files generated by ejabberd.
%% 0: No ejabberd log at all (not recommended)
%% 1: Critical
%% 2: Error
%% 3: Warning
%% 4: Info
%% 5: Debug
%%
{loglevel, 4}.

%%
%% watchdog_admins: If an ejabberd process consumes too much memory,
%% send live notifications to those Jabber accounts.
%%
{watchdog_admins, ["admin@jabber.********.**"]}.

%%%   ================
%%%   SERVED HOSTNAMES

%%
%% hosts: Domains served by ejabberd.
%% You can define one or several, for example:
%% {hosts, ["example.net", "example.com", "example.org"]}.
%%
{hosts, ["jabber.********.**"]}.

%%
%% route_subdomains: Delegate subdomains to other Jabber server.
%% For example, if this ejabberd serves example.org and you want
%% to allow communication with a Jabber server called im.example.org.
%%
%%{route_subdomains, s2s}.

%%%   ===============
%%%   LISTENING PORTS

%%
%% listen: Which ports will ejabberd listen, which service handles it
%% and what options to start it with.
%%
{listen,
[
%%TLS wird erzwungen durch starttls_require
  {5222, ejabberd_c2s, [
  {access, c2s},
  {shaper, c2s_shaper},
  {max_stanza_size, 65536},
starttls_require, {certfile, "/opt/ejabberd/conf/jabbercert_jabber.********.**.pem"}
       ]},

  %%
  %% To enable the old SSL connection method in port 5223:
  %%
  %%{5223, ejabberd_c2s, [
  %% {certfile, "/opt/ejabberd/conf/server.pem"}, tls,
  %% {access, c2s},
  %% {shaper, c2s_shaper},
  %% {max_stanza_size, 65536}
  %%        ]},

  {5269, ejabberd_s2s_in, [
   {shaper, s2s_shaper},
   {max_stanza_size, 131072}
  ]},

  %%
  %% ejabberd_service: Interact with external components (transports...)
  %%
  %%{8888, ejabberd_service, [
  %%     {access, all},
  %%     {shaper_rule, fast},
  %%     {ip, {127, 0, 0, 1}},
  %%     {hosts, ["icq.example.org", "sms.example.org"],
  %%      [{password, "secret"}]
  %%     }
  %%    ]},

  {5280, ejabberd_http, [
                         %%{request_handlers, [
%% {["web"], mod_http_fileserver}
%%]},
captcha,
http_bind,
http_poll,
web_admin
]}

]}.

%%
%% s2s_use_starttls: Enable STARTTLS + Dialback for S2S connections.
%% Allowed values are: true or false.
%% You must specify a certificate file.
%%
%%{s2s_use_starttls, true}.

%%
%% s2s_certfile: Specify a certificate file.
%%
{s2s_certfile, "jabbercert_jabber.********.**.pem"}.

%%
%% domain_certfile: Specify a different certificate for each served hostname.
%%
%%{domain_certfile, "example.org", "/opt/ejabberd/conf/example_org.pem"}.
%%{domain_certfile, "example.com", "/opt/ejabberd/conf/example_com.pem"}.

%%
%% S2S whitelist or blacklist
%%
%% Default s2s policy for undefined hosts.
%%
%%{s2s_default_policy, allow}.

%%
%% Allow or deny communication with specific servers.
%%
%%{{s2s_host, "goodhost.org"}, allow}.
%%{{s2s_host, "badhost.org"}, deny}.

%%%   ==============
%%%   AUTHENTICATION

%%
%% auth_method: Method used to authenticate the users.
%% The default method is the internal.
%% If you want to use a different method,
%% comment this line and enable the correct ones.
%%
{auth_method, internal}.

%%
%% Authentication using external script
%% Make sure the script is executable by ejabberd.
%%
%%{auth_method, external}.
%%{extauth_program, "/path/to/authentication/script"}.

%%
%% Authentication using ODBC
%% Remember to setup a database in the next section.
%%
%%{auth_method, odbc}.

%%
%% Authentication using PAM
%%
%%{auth_method, pam}.
%%{pam_service, "pamservicename"}.

%%
%% Authentication using LDAP
%%
%%{auth_method, ldap}.
%%
%% List of LDAP servers:
%%{ldap_servers, ["jabber.********.**"]}.   
%%
%% LDAP attribute that holds user ID:
%%{ldap_uids, [{"mail", "%u@mail.example.org"}]}.
%%
%% Search base of LDAP directory:
%%{ldap_base, "dc=example,dc=com"}.
%%
%% LDAP manager:
%%{ldap_rootdn, "dc=example,dc=com"}.
%%
%% Password to LDAP manager:
%%{ldap_password, "******"}.

%%
%% 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, [internal, anonymous]}]}.

%%%   ==============
%%%   DATABASE SETUP

%% ejabberd uses by default the internal Mnesia database,
%% so you can avoid this section.
%% This section provides configuration examples in case
%% you want to use other database backends.
%% Please consult the ejabberd Guide for details about database creation.

%%
%% MySQL server:
%%
%%{odbc_server, {mysql, "server", "database", "username", "password"}}.
%%
%% If you want to specify the port:
%%{odbc_server, {mysql, "server", 1234, "database", "username", "password"}}.

%%
%% PostgreSQL server:
%%
%%{odbc_server, {pgsql, "server", "database", "username", "password"}}.
%%
%% If you want to specify the port:
%%{odbc_server, {pgsql, "server", 1234, "database", "username", "password"}}.
%%
%% If you use PostgreSQL, have a large database, and need a
%% faster but inexact replacement for "select count(*) from users"
%%
%%{pgsql_users_number_estimate, true}.

%%
%% ODBC compatible or MSSQL server:
%%
%%{odbc_server, "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"}.

%%%   ===============
%%%   TRAFFIC SHAPERS

%%
%% The "normal" shaper limits traffic speed to 1.000 B/s
%%
{shaper, normal, {maxrate, 1000}}.

%%
%% The "fast" shaper limits traffic speed to 50.000 B/s
%%
{shaper, fast, {maxrate, 50000}}.

%%%   ====================
%%%   ACCESS CONTROL LISTS

%%
%% The 'admin' ACL grants administrative privileges to Jabber accounts.
%% You can put as many accounts as you want.
%%
{acl, admin, {user, "admin", "jabber.********.**"}}.

%%
%% Blocked users
%%
%%{acl, blocked, {user, "baduser", "example.org"}}.
%%{acl, blocked, {user, "test"}}.

%%
%% Local users: don't modify this line.
%%
{acl, local, {user_regexp, ""}}.

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

%%%   ============
%%%   ACCESS RULES

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

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

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

%% 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}]}.

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

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

%% 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}]}.
{access, muc_create, [{allow, local}]}.

%% In-band registration
{access, register, [{allow, all}]}.

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

%%%   ================
%%%   DEFAULT LANGUAGE

%%
%% language: Default language used for server messages.
%%
{language, "en"}.

%%%   =======
%%%   CAPTCHA
 
%%
%% Full path to a script that generates the image.
%%
%%{captcha_cmd, "/opt/ejabberd/priv/bin/captcha.sh"}.
 
%%
%% Host part of the URL sent to the user.
%%
%%{captcha_host, "example.org:5280"}.

%%%   =======
%%%   MODULES

%%
%% Modules enabled in all ejabberd virtual hosts.
%%
{modules,
[
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_disco,    []},
  %%{mod_echo,   [{host, "echo.jabber.jabber.********.**"}]},
  {mod_http_bind,[]},
  %%{mod_http_fileserver, [
  %%  {docroot, "/opt/ejabberd/www"},
  %%  {accesslog, "/opt/ejabberd/www/webaccess.log"},
  %%  {content_types, [{".htm", "text/html"}]},
  %%  {directory_indices, ["index.html", "index.htm"]}
  %%]},
  %%{mod_irc,      []},
  {mod_last,     []},
  {mod_muc,      [
  %%{host, "conference.@HOST@"},
  {access, muc},
  {access_create, muc_create},
  {access_persistent, muc_create},
  {access_admin, muc_admin}
]},
  %%{mod_muc_log,[]},
  {mod_offline,  []},
  {mod_privacy,  []},
  {mod_private,  []},
  %%{mod_proxy65,[]},
  %%{mod_pubsub,   [ % requires mod_caps
  %%{access_createnode, pubsub_createnode},
  {ignore_pep_from_offline, true},
  {last_item_cache, false},
  {plugins, ["flat", "hometree", "pep"]}
]},
  {mod_register, [
  %%
  %% After successful registration, the user receives
  %% a message with this subject and body.
  %%
  {welcome_message, {"Welcome!",
     "Welcome to ummeegges Jabber server."}},

  %%
  %% When a user registers, send a notification to
  %% these Jabber accounts.
  %%
  {registration_watchers, ["admin@jabber.jabber.********.**"]},

  {access, register}
]},
  {mod_roster,   []},
  %%{mod_service_log,[]},
  %%{mod_shared_roster,[]},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard,    []},
  {mod_version,  []}
]}.

%%% $Id: ejabberd.cfg.example 1073 2007-12-17 11:03:22Z badlop $

%%% Local Variables:
%%% mode: erlang
%%% End:
%%% vim: set filetype=erlang tabstop=8:

A little more information, i try to install ejabberd on a firewall system called IPFire an it is based on Linux from Scratch. I used the ejabberd-2.1.8-linux-x86-installer.bin and the installation process works fine except on error while the postinstallation script, which was looking like this:

/opt/ejabberd/bin/postinstall.sh
\/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/bin/sh: -c: line 1: syntax error: unexpected end of file

With the ejabberdctl live command i was able to fix a couple of little configuration errors, but with the obove mentioned one i need help because it is not clear for me.
If you need additional information tell it to me.

Thanks for help me

Greetings UE

Here is the syntax

Here is the syntax error:

ummeegge wrote:
  %%{mod_pubsub,   [ % requires mod_caps
  %%{access_createnode, pubsub_createnode},
  {ignore_pep_from_offline, true},
  {last_item_cache, false},
  {plugins, ["flat", "hometree", "pep"]}
]},

If you comment
{mod_pubsub,
you must also comment the other lines, until
]},

And there is a semantic error: you have two 'hosts' option. Remove one of them:

ummeegge wrote:
{hosts, ["jabber.********.**"]}.
...
{hosts, ["jabber.********.**"]}.

Thanks a lot the error is

Thanks a lot the error is left, but now there is a permission problem with the .pem file. He said that it is not readable (but it is for owner ejabberd, group and others also), but maybe i need to clear the user permissions on the machine itself.

Again thanks for your help

Best regards UE

Oh the wrong line sorry

Oh the wrong line sorry

Syndicate content