Запуск Converse.js у зв'язці з Bosh punjab на Apache 2.4 і віддаленим сервером Openfire або як прикрутити до сторінки jabber з коробки

Вирішив написати цю статтю, бо не знайшов в російськомовному інтернеті опис вирішення проблем, з якими зіткнувся в процесі встановлення і налаштування усього описаного в заголовку. Формально кажучи, про punjab на Хабре є стаття, але, на мій жаль, вона мені допомогла не сильно. Стаття розрахована на людину, який не сильно обізнаний у хитрощах адміністрування, Pyton'а і т. д. і т. п.

Отже, почнемо. Моя система являє собою сервер на Ubuntu 14.04 на якому працює Apache 2.4. Він хостить сторінку, до якої виникло бажання прикрутити Jabber-клієнт. Вибір клієнта упав на Converse.js, так як він вимагає мінімальну кількість налаштувань і працює з коробки. Jabber сервер — Openfire. Він розташований на віддаленій машині в мережі, доступ до якого я маю тільки як рядовий користувач. Відомі про нього мені було тільки IP-адресу і порт.

Будь JS — Jabber (самописний, Strophe, converse) зажадає від вас наявності BOSH-сервера. Грубо кажучи, це відлуння сервер, який пересилає повідомлення від JS-Jabbera до jabber сервера і назад. Як BOSH був узятий Punjab .

З вступною частиною закінчили — поїхали ставити.

Punjab
Для роботи він вимагає: Python 2.6>=, Twisted 11.1>=. Для Ubuntu в репозиторії є пакет python-twisted. Якщо є бажання використовувати TLS, знадобиться пакет pyopenssl.
Наш сервер працює без шифрування, тому я цей пакет не ставив.
Далі або хилимо з GitHub, або качаємо архів і разархивируем Punjab. Кладемо його куди нам подобається, наприклад /usr/share/punjab. З цієї папки в консолі виконуємо:

python setup.py install

Далі за описом авторів пропонується відразу запустити сервер. Я ж рекомендую звернути свою увагу на файл punjab.tac.
У ньому є такий рядок:

internet.TCPServer(5280, site).setServiceParent(application)

Інших налаштувань для порту віддаленого сервера я не знайшов, а так як наш сервер працює на порте 5222, цю я замінив 5280 на 5222:

internet.TCPServer(5222, site).setServiceParent(application)

У вас може виникнути питання: «А де писати адресу jabber-сервера?». У конфігурації ніде. Адреса сервера вказується вже клієнта у вигляді запису: vasyliy_pupkin@192.168.1.18, де 192.168.1.18 — адреса jabber-сервера.

Запускаємо Punjab через консоль:

twistd-y punjab.tac

Якщо все пройшло нормально, консоль проковтне цю рядок, а в папці punjab з'явиться файл twistd.log, в якому можна подивитися, як там поживає наш BOSH-сервер.

Тонкий момент: якщо в балці з'являються записи DNS, вам потрібно дописати в punjab.tac відразу після рядка:

bosh = HttpbService(1)
наступний код:
bosh.connect_srv = False 

Перевіряємо роботу:

.http://адрес_сервера: порт_punjab/ покаже повідомлення виду: A XEP-0124 — BOSH — component manager.
.http://адрес_сервера: порт_punjab/http bind повідомлення виду: XEP-0124 — BOSH

Apache 2.4
Припускаю, що Апач у вас стоїть. Нам потрібно включити модулі proxy, proxy_http. Включається простою командою a2enmod proxy proxy_http.

Йдемо в apache2.conf і дописуємо там:

<IfModule proxy_module>
ProxyRequests Off
ProxyPass /http bind http://localhost:5222/http-bind
ProxyPassReverse /http bind http://localhost:5222/http-bind
</IfModule>

Нагадаю, що у мене порт 5222.
Навіщо це потрібно. Браузер не може послати пакет на порт, тільки на адресу. Тому ми замінюємо порт адресою.

Converse.js
Кладемо файли з архіву converse в папку веб-сайту апача, відкриваємо редагування index.html. В самому кінці файлу знаходимо фрагмент JS-коду:

converse.initialize({
bosh_service_url: 'https://conversejs.org/http-bind/', // Please use this connection manager only for testing purposes
i18n: locales['en'], // Refer to ./locale/locales.js to see which are supported locales
keepalive: true,
message_carbons: true,
play_sounds: true,
roster_groups: true,
show_controlbox_by_default: true,
xhr_user_search: false
});

У цьому коді вказуємо потрібний bosh_service_url і locales за бажанням.

Зберігаємо, відкриваємо в браузері демо-сторінку. На ній вказуємо свої облікові дані в формі входу у вигляді: «Jabber_Id@jabber_server» і пароль.

Якщо все пройшло гладко, ви побачите свій список контактів.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.