Pubsub в Asterisk с использованием Tigase и res_xmpp
Я установил и настроил сервер Tigase для распределения состояния устройства между несколькими серверами Asterisk. Сервер работает нормально. Это файл конфигурации выглядит следующим образом:
--cluster-mode = true
config-type = --gen-config-def
--debug = server,xmpp,net
--user-db = mysql
--admins = admin@localhost
--user-db-uri = jdbc:mysql://localhost/tigasedb?user=root&password=no
--virt-hosts = localhost
--comp-name-3 = message-archive
--comp-class-3 = tigase.archive.MessageArchiveComponent
--comp-class-2 = tigase.socks5.Socks5ProxyComponent
--comp-name-2 = proxy
--comp-class-1 = tigase.muc.MUCComponent
--comp-name-1 = muc
--sm-plugins = +message-archive-xep-0136
#--ssl-container-class=tigase.extras.io.PEMSSLContextContainer
#--ssl-container-class=tigase.io.SSLContextContainer
--comp-name-1=pubsub
--comp-class-1=tigase.pubsub.PubSubComponent
Я установил два сервера звездочки на двух разных системах. Я также скомпилировал res_xmpp на обоих и настроил его, используя следующий файл конфигурации:
[general]
debug=yes
autoregister=yes
collection_nodes=yes
pubsub_autocreate=yes
[tigase]
type=client
serverhost=192.168.20.105
username=server1@localhost/voip1
pubsub_node=pubsub.192.168.20.105
secret=123456
priority=25
port=5222
usetls=yes
usesasl=yes
status=available
statusmessage="I am available"
timeout=5
buddy=server2@localhost/voip2
distribute_events=yes
имя пользователя для одного из моих серверов - server1@localhost/voip1, а для другого - server2@localhost/voip2. Теперь модуль xmpp работает правильно. Но события pubsub распределяются неправильно. Как вы можете видеть, я использовал IP-адрес, чтобы отличить мой сервер Tigase. Если я использую тот же IP-адрес в параметре pubsub_node модуля res_xmpp, сервер вернет ошибку "Не реализовано" с кодом ошибки 501; из-за этого я использовал pubsub.192.168.20.105 и установил это в /etc/hosts на обоих серверах, но там нет сообщений об ошибках, но я также не получу события!!! Как я могу это исправить?
3 ответа
У меня была такая же проблема с сервером Tigase и Asterisk; ваша проблема в том, что вы установили:
pubsub_autocreate=yes
Конфиг в вашем xmpp.conf. Эта опция вызывает автоматическое создание многих узлов; если вы посмотрите на tig_nodes в базе данных Tigase, вы увидите, что было создано много узлов. Вы должны прокомментировать эту опцию. После этого вы должны заново развернуть свою схему Tigase SQL или удалить все эти узлы; Тогда все будет хорошо. Посмотрев выходные данные отладки модуля res_xmpp в интерфейсе командной строки Asterisk, вы увидите, что res_xmpp попытается подписаться сразу на несколько узлов, что вызывает путаницу, поскольку существует много узлов с одинаковыми именами; и сервер вернет ошибки 409 и 501.
Проблема, вероятно, с конфигурацией Tigase. У тебя есть:
--comp-class-1 = tigase.muc.MUCComponent
--comp-name-1 = muc
--comp-name-1=pubsub
--comp-class-1=tigase.pubsub.PubSubComponent
Как видите, вы присвоили один и тот же номер как компоненту MUC, так и компоненту PubSub. Учитывая другую конфигурацию для других компонентов, правильная конфигурация для PubSub будет:
--comp-name-4=pubsub
--comp-class-4=tigase.pubsub.PubSubComponent
config-type=--gen-config-def
#config-type= --gen-config-all
--admins=admin@localhost
--virt-hosts=tigase.lc
--debug=server
--user-db=mysql
--user-db-uri = jdbc:mysql://localhost/tigasedb?user=root&password=no
--comp-name-1=pubsub
--comp-class-1=tigase.pubsub.PubSubComponent
--comp-class-2 = tigase.muc.MUCComponent
--comp-name-2 = muc
--sm-plugins = +message-archive-xep-0136
--comp-name-3 = message-archive
--comp-class-3 = tigase.archive.MessageArchiveComponent
--comp-class-4 = tigase.socks5.Socks5ProxyComponent
--comp-name-4 = proxy
Теперь мой конфиг выглядит так, но он снова дает мне возможность не реализована ошибка.