Здравствуйте.
На FreeBSD 10.1 установили erlang 6.2 и Ejabberd 14.07
При каких-то попытках установить связь через xmlrpc идет ошибка:
{xmlrpc_http,168,
{ejabberd_xmlrpc,handler,
{'EXIT',{badarg,[{erlang,binary_to_list,["\n"],[]},
{ejabberd_regexp,greplace,3,
[{file,"src/ejabberd_regexp.erl"},{line,80}]},
{mod_admin_extra,'-get_status_list/2-lc$^3/1-3-',3,
[{file,"ejabberd-modules/mod_admin_extra/trunk/src/mod_admin_extra.erl"},
{line,843}]},
{mod_admin_extra,status_list,2,
[{file,"ejabberd-modules/mod_admin_extra/trunk/src/mod_admin_extra.erl"},
{line,814}]},
{ejabberd_xmlrpc,do_command,6,
[{file,"src/ejabberd_xmlrpc.erl"},{line,350}]},
{ejabberd_xmlrpc,try_do_command,6,
[{file,"src/ejabberd_xmlrpc.erl"},{line,313}]},
{xmlrpc_http,eval_payload,7,
[{file,"src/xmlrpc_http.erl"},{line,166}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,237}]}]}}}}
Ничего похожего в гугле не нашел.
Конфигурация:
$ cat /usr/local/etc/ejabberd/ejabberd.yml
host_config:
"old.gortest.ru":
odbc_username: "ejabberd"
odbc_type: mysql
odbc_server: "localhost"
odbc_port: 3306
odbc_password: "xxx"
odbc_database: "ejabberd"
host_config:
"line.astratest.ru":
odbc_username: "ejabberd"
odbc_type: mysql
odbc_server: "localhost"
odbc_port: 3306
odbc_password: "xxx"
odbc_database: "ejabberd_line"
host_config:
"gortest.ru":
odbc_username: "ejabberd"
odbc_type: mysql
odbc_server: "localhost"
odbc_port: 3306
odbc_password: "xxx"
odbc_database: "ejabberd"
host_config:
"cons.astratest.com":
odbc_username: "ejabberd"
odbc_type: mysql
odbc_server: "localhost"
odbc_port: 3306
odbc_password: "xxx"
odbc_database: "ejabberd_astra"
hosts:
- "gortest.ru"
- "cons.astratest.com"
- "line.astratest.ru"
- "old.gortest.ru"
access:
announce:
admin: allow
c2s:
blocked: deny
all: allow
c2s_shaper:
admin: none
all: normal
configure:
admin: allow
pubsub_createnode:
all: allow
register:
admin: allow
s2s_shaper:
all: fast
xmlrpcaccess:
admin: allow
acl:
admin:
user:
-
"admin.line": "line.astratest.ru"
-
"admin": "cons.astratest.com"
-
"forum.gortest": "gortest.ru"
local:
user_regexp:
- ""
auth_method: odbc
language: "ru"
listen:
-
port: 4560
module: ejabberd_xmlrpc
access_commands:
xmlrpcaccess:
commands: all
options: []
timeout: 9000
maxsessions: 100
-
port: 5222
module: ejabberd_c2s
max_stanza_size: 65536
shaper: c2s_shaper
access: c2s
-
port: 5269
module: ejabberd_s2s_in
max_stanza_size: 131072
shaper: s2s_shaper
-
port: 5280
module: ejabberd_http
web_admin: true
http_bind: true
request_handlers:
"/web": mod_http_fileserver
loglevel: 4
max_user_sessions: 10000
modules:
mod_register:
welcome_message:
subject: "Welcome!"
body: "Welcome to Astratest Jabber server."
registration_watchers:
- "mazurok@gortest.ru"
access: register
mod_roster: []
mod_privacy: []
mod_adhoc: []
mod_announce:
access: announce
mod_configure: []
mod_caps: []
mod_disco: []
mod_stats: []
mod_vcard:
db_type: odbc
search: true
matches: infinity
allow_return_all: true
mod_offline:
db_type: odbc
mod_private: []
mod_pubsub:
access_createnode: pubsub_createnode
plugins:
- "default"
- "pep"
mod_time: []
mod_version: []
mod_http_bind: []
mod_admin_extra: []
## mod_ctlextra: []
mod_http_fileserver:
docroot: "/mnt/disk2/home/www_grtpn/htdocs/ejabberd"
accesslog: "/mnt/disk2/home/www_grtpn/logs/ejabberd.log"
odbc_database: "ejabberd"
odbc_keepalive_interval: 3600
odbc_password: "xxx"
odbc_pool_size: 3
odbc_port: 3306
odbc_server: "localhost"
odbc_type: mysql
odbc_username: "ejabberd"
shaper:
normal: 128000
fast: 256000
welcome_message:
subject: "Welcome!"
body: "Welcome to Astratest Jabber Service. For information about Jabber contact"
Вроде бы, ошибка в модуле регулярок, но не могу понять как его пересобрать.
Ну или в другом модуле.
Решение
Решение проблемы:https://github.com/processone/ejabberd-contrib/blob/master/mod_admin_ext... по принципу http://ejabberd17.rssing.com/chan-8645506/all_p2.html начиная с пункта 3, предварительно заменив файл "mod_admin_extra.erl" на github'овский
Перекомпилировать модуль "mod_admin_extra" с