Ejabberd2, my it-blog

Випадково відкрив ман по CUCM там кажуть, що ЧАТИК итд це огого як потрібно і якщо у Вас цього немає то у Вас немає і PBX. Пффф. Вибір був між Openfire і ejabberd2. Перше ненажерливе, але красиве, друге на Ерланген (НЕ ненажерливе), конфіги писати в текстовий файлик, і якщо прочитати назву статті ви самі розумієте що я вибрав) + захотілося мені зробити підтримку ejabberd і прив'язати це все справа до Астеріск.
1. Установка
2. Початкове налаштування
3. Налаштування
3.a Listen
3.b ACL
3.c Права доступу
3.d Шейпер
3.e Капча
3.f STUN
3.g Макроси
3.h Зв'язок з БД
4. Модулі
!Оскільки жаббер відкрив для себе вперше в житті, друкарські помилки, косяки і інше присутні в величезній кількості, хто помітив прошу писати.

1. Установка
1. Ставимо з портів

2. Генеруємо сертифікат)

3. Правимо inetrc

4. Тепер потрібно створити БД і заповнити Файлик беремо з distfiles і запилюють в створену БД.
Не забуваємо підключити odbc в конфіги Джабера, і включити відповідні модулі (як це зробити далі по тексту).

2. Початкове налаштування
1.Для початку потрібно створити учетку адміна, для входу в веб админку:

2. Правимо ejabberd.cfg

Опції для кластера, локальної Ноди і списки контролю доступу будуть перезаписані.
Тепер розглянемо опції:
hosts визначає список обслуговуваних доменів.
синтаксис:
.
приклад:

host_config визначає індивідуальні настройки для кожного віртуального хоста.
синтаксис:

приклади:

З модулями справи йдуть складніше,
, OptionValue> для додавання специфічного модуля до конкретного хосту.
приклад:

3.c Права доступу
Записи обмежують доступ до різних сервісів.
синтаксис:
, ...]>.
Коли JID перевіряється на доступ до Accessname, сервер послідовно перевіряє, чи збігається цей JID в ACLs яка задана в другому елементі записи. Якщо збігається, повертається перший елемент з першої збіглася записи, інакше повертається deny.
Глобальні правила приоритетнее локальних (для вирт хоста)
приклад:

Задані AccessName зумовлені:
all завжди повертає 'allow'.
none завжди повертає 'deny'.
Обмеження відкритих сесій за допомогою ACL
max_user_sessions визначає максимальне к-ть відкритих з'єднань на користувача. за замовчуванням нескінченність.
синтаксис:
, ...]>.
Обмежуємо к-ть сесій до 5 на користувача, для всіх користувачів і 10 для адмінів:
, ]>.

max_s2s_connections
Кілька з'єднань до віддаленого XMPP сервера з ACL, за замовчуванням 1. також доступний параметр max_s2s_connections_per_node.
синтаксис:
, ...]>.
приклад:
До 3 з'єднань з кожним віддаленим сервером:
]>.

Також необхідно DNS SRV запис для того щоб клієнти легко знайшли STUN сервер для вашого XMPP домену.
Приклад DNS SRV:

Підключення додаткових файлів конфігурації:
include_config_file
синтаксис:
.
.
Дозволений подопціі:

Забороняє використовувати цю подопцію в додатковому файлі. за замовчуванням нічого.

Дозволяє використовувати цю подопцію в додатковому файлі. за замовчуванням всі.
приклад:

3.g Макроси:
. обов'язково великими буквами і в одиночних лапках, а значення може бути будь-яким правильним виразом на Ерланг.
Два способи юзати макроси, замість значення просто ставимо 'MACRO', якщо макрос ні оголошено раніше, то програма впаде. або
якщо макрос не було визначено то буде використовуватися Defaultvalue.
приклад:

3.h Зв'язок з БД (MySQL)
Додаємо ось таку стрічечки:
>.
За замовчуванням відкривається 10 з'єднань з БД, змінити можна
.
Можна налаштувати фіктивні запити до SQL сервера щоб підтримувати з'єднання «на плаву»
.
Якщо з'єднання відпало, чекаємо 30 сек і перез'єднання
.
Наприклад для аутентифікації через MySQL DB потрібно вказати
.

Приклад 2 (всі записи через кому, крім останньої !!)

Доступні модулі:
mod_adhoc
mod_announce потрібно mod_adhoc
mod_announce_odbc потрібно mod_adhoc
mod_blocking потрібно mod_privacy
mod_blocking_odbc потрібно mod_privacy_odbc
mod_caps
mod_configure потрібно mod_adhoc
mod_disco
mod_echo
mod_http_bind
mod_http_fileserver
mod_irc IRC transport
mod_irc_odbc
mod_last
mod_last_odbc
mod_muc
mod_muc_odbc
mod_muc_log потрібно mod_muc or mod_muc_odbc
mod_offline
mod_offline_odbc
mod_ping
mod_pres_counter
mod_privacy
mod_privacy_odbc
mod_private
mod_private_odbc
mod_proxy65
mod_pubsub потрібно mod_caps
mod_pubsub_odbc потрібно mod_caps
mod_register
mod_register_web
mod_roster
mod_roster_odbc
mod_service_log
mod_shared_roster потрібно mod_roster або mod_roster_odbc
mod_shared_roster_odbc потрібно mod_roster або mod_roster_odbc
mod_shared_roster_ldap mod_roster або mod_roster_odbc
mod_sic
mod_stats
mod_time
mod_vcard
mod_vcard_ldap
mod_vcard_odbc
mod_vcard_xupdate потрібно mod_vcard або mod_vcard_odbc
mod_vcard_xupdate_odbc потрібно mod_vcard або mod_vcard_odbc
mod_version

host вказує Jabber ID сервісу, що надає ejabberd модулем.
синтаксис:

Якщо використовувати «@ HOST @», то буде вставлено ім'я віртуального хоста.
приклад:

Якщо кілька віртуальних хостів і однакових модулів піднято, то потрібно використовувати:

Модуль ненажерливий, на тисячах користувачів краще без!
mod_disco
За допомогою цього модуля, клієнти можуть знайти якісь сервіси доступні на сервері.
Опції:

Визначає обробку запитів при Service Discovery.

Задаємо список додаткових доменів для Service Discovery.
, ...]>
Доп інформація про сервер (XEP-0157). У Modules Службове слово 'all' - інфо поширюється на всі сервіси або список модулів, в інших випадках тільки для конкретного модуля. Поля Field і Value можуть заповнюватися довільно, а не тільки контактною інформацією.
Для обслуговування посилання на каталог користувача:

Для обслуговування посилання на транспорт на інших доменах

Посилання на декілька дружніх серверів:

mod_echo
Тупо відсилає назад всі повідомлення відправнику (потрібен при дебаге)
Опції:

Визначає Jabber ID сервісу. Якщо не задана Jabber ID буде ім'я віртуального хоста з префіксом 'echo.'. Службове слово «@ HOST @» замінюється на реальне ім'я віртуального хоста.

mod_http_bind
підтримка XMPP через Bosh (HTTP Binding) не призначена для браузера, повинен обробляти клієнт

Опції:

Максимальний таймаут в секундах. за замовчуванням 30

Не забуваємо додати порт:


Тільки члени кімнати можуть увійти.

Тільки користувачі з правом голосу можуть відправляти публічні повідомлення.

пароль кімнати

Вимагати введення пароля при вході в кімнату

Залишати кімнату активної навіть якщо останній учасник вийшов.

Кімната загальнодоступна тому відображається в списку чатів.

Список учасників загальнодоступний, навіть без входу в кімнату (подивитися хто в кімнаті навіть не заходячи в неї)

Людино зрозумілу назву кімнати.
приклади:
Всім дозволено користуватися чатом. Будь-хто може створювати кімнати, але тільки [email protected] може адмініструвати будь-яку кімнату. Він також і глобальний адмін.Когда [email protected] відправляє повідомлення 'кревест' на conference.example.org, то це буде відображено у всіх активних кімнатах. Історія відключена.

Приклад 3: Опція Анти abuse (зловживання, скарги) включена. Користувач не може відправляти більше 1 повідомлення в 0.4 секунди і статус користувача не може бути змінений частіше ніж кожні 4 секунди. Довжина Room ID і Room Names обмежена 20 символами, а опис кімнати 300 символів. ACL не визначені, але деякі обмеження користувачів можуть бути встановлені:

Приклад 4 показує як використовувати default_room_option:

mod_offline
Зберігання офлайн повідомлень. У ejabberdctl є команда видалення минулих повідомлень.
Опції:

Визначає квоту офлайн повідомлень. При перевищенні нові повідомлення ігноруються а відправник отримує повідомлення про помилку. За замовчуванням max_user_offline_messages. Можна визначити правило доступу подібно max_user_sessions.
Приклад: для poweruser квота 5К, для адмінів 2К, для інших 100.

mod_ping
Підтримка XMPP Ping і повідомленнях про доступність (keep-alive)
Опції:
Configuration options:

Відсилати пінг клієнтам, які не активні протягом ping_interval. Корисно для підтримки з'єднання клієнта або перевірки доступності, за замовчуванням відключена.

Як часто відправляти пінг підключеним клієнтам, Якщо клієнт не відсилає і не приймає ніяких рядків за цей проміжок часу, то відправляється пінг клієнту. За замовчуванням 60 секунд.

Що робити якщо клієнт не відповів на пінг за 32секунди, за замовчуванням нічого.
приклад:
Включає пінг при неактивності 4 хвилини, а для клієнтів які не відповіли на пінг за 32 секунди - прибити сесію.

mod_pres_counter
Детектування спаму.
Опції:

Кількість рядків для (subscribe, unsubscribe, subscribed, unsubscribed) дозволено для будь-якого напрямку (вх або вихід) за проміжок часу. 2 користувача підписаних один на одного зазвичай генерують 4 строфи, По замовчуванням 5.

Часовий інтервал в секундах. За замовчуванням 60.
Приклад: включає модуль і дозволяє до 5 строф для відправки або прийому в повідомленні про стан в інтервал 60 секунд:


Шейпер на передачу. За замовчуванням немає.
Приклад 1: Найпростіша конфігурація

Приклад 2: Більш складний

Приклад 2: За замовчуванням flat Ноди, також дозволені flat, nodetree і pep Ноди:

Приклад3 Попередній конфиг, але з використанням ODBC (астер відмовився так розмовляти):

Приклад 3 встановлюємо вітальне повідомлення, і 2 учеткі кому будемо писати при створенні користувача:

mod_roster
Підтримка ростера (списку контактів)
Опції:

Обробка IQ Roster Management (jabber: iq: roster).

Підключає версії ростера, за замовчуванням викл.

Якщо опція включена, версія ростера зберігається в БД (знижує навантаження на БД і сервер). Якщо викл, номер версії прораховується на льоту. ВАЖЛИВО: Якщо юзаєте mod_shared_roster, mod_shared_roster_odbc або mod_shared_roster_ldap, Потрібно відключати цю опцію.
Приклад з вкл вресіонностью:

mod_service_log
Підтримка логування кінцевих пакетів користувачів через службу таку як Bandersnatch. Всі пакети користувача инкапсулируются в тег route і відсилається на спец сервіс.
Опції:

Список сервісів які будуть отримувати пакети
Приклад логирование всіх призначених для користувача пакетів до Bandersnatch на bandersnatch.example.com

Загальний конфиг вийшов десь таким

Copyright © 2024