Основной файл настройки сервера — jabber.xml. Формат этого файла — XML, поэтому его можно редактировать в любом текстовом редакторе. Удобно использовать для этого редакторы XML, например, kxmleditor, emacs или vi с подсветкой синтаксиса.
Часть настроек в этом файле можно переопределять опциями командной строки при запуске сервера. Для этого значение тега, которое нужно переопределить, берётся ещё и в дополнительный тег jabberd:cmdline. В атрибуте flag нужно указать букву, соответствующую опции командной строки.
Можно вынести настройки из основного файла во включаемые файлы, например, для удобства настройки сервисов. Для включения таких файлов используется тег jabberd:include.
Структура файла конфигурации доступна в Приложение A. Структура jabber.xml.
В файле jabber.xml нет объявления XML, в котором можно было бы указать кодировку, поэтому сервер считает, что весь текст в кодировке UTF-8.
В указании тегов jabberd:cmdline и jabberd:include нет указания пространства имён jabberd. Это нарушает спецификации XML, что нужно учитывать при создании файла конфигурации с помощью программ для работы с XML.
Если после редактирования с помощью kxmleditor сервер Jabber не запускается с сообщением
The host tag contains illegal whitespace.
нужно убрать в файле jabber.xml все разделители между тегом host и jabberd:cmdline, а также все разделители внутри тега spool.
В дистрибутивах от ALT Linux Team файлы конфигурации находятся в каталоге /etc/jabber. Основные настройки вынесены в файл /etc/jabber/jabber.cfg.
Переменные jabber.cfg:
Содержит имя хоста или домена, который будет обслуживать Jabber. Если сервер будет иметь связь с другими серверами Jabber, имя хоста должно быть указано в форме FQDN (полностью, с указанием домена). Также это имя должно иметь соответствующую запись в DNS. Можно запустить несколько копий сервера Jabber для обслуживания нескольких хостов, данные каждого хоста хранятся в отдельном каталоге.
Можно указать серверу несколько хостов для обслуживания, прописав их в теги <host> раздела <service id='sessions'>.
Каталог, в котором хранятся данные обслуживаемых хостов.
Дополнительные параметры для передачи их серверу при запуске.
Определяет запуск внешней компоненты jabc2s для обслуживания клиентских соединений. Используется для масштабирования сервера.
Значение yes указывает запуск внешней части ICQv7-транспорта.
Опции для запуска внешней части ICQv7-транспорта.
Содержание
Сервер jabberd содержит несколько важных компонент, необходимых для его работы. В эти компоненты входят внутренние сервисы, ведение логов, управление соединениями. Все эти компоненты описаны в файле конфигурации сразу под корневым тегом:
Важнейшая компонента сервера — Jabber Session Manager (JSM), управление сессиями. Содержит информацию об имени сервера, его описание, адреса администраторов, правила фильтрации, загружаемые модули и список агентов для доступных сервисов.
Обеспечивает хранение данных, используя файловую систему. Можно настроить сервер для хранения данных в базе данных.
Компонента управления клиентскими соединениями, также известен как pthsock_client. Содержит настройки адресов и портов для ожидания простых или зашифрованных соединений, допустимое время авторизации, настройки кармы, альтернативное имя сервера.
Настройки внутренней части альтернативной компоненты для управления клиентскими соединениями, вместо pthsock_client. Используется для масштабирования количества одновременно подключенных клиентов. См. “Компонента jadc2s”.
Настройка компоненты протоколирования ошибок, формата записей в протоколе. Записи могут сохраняться в файле и/или перенаправляться на стандартный вывод ошибок.
Настройка компоненты протоколирования статистики и общей информации о подключениях.
Компонента для разрешения имён DNS, см. dnsrv (пространство имён jabber:config:dnsrv).
Компонента управления серверными соединениями. Содержит настройки “обратного звонка” (dialback) между серверами при установке соединения, адреса и порты для ожидания соединений, настройки кармы.
Компонента управления вводом/выводом, иначе известна как MIO (Managed Input/Output). Здесь можно указать глобальные значения кармы, приведены примеры её значений для разной пропускной способности канала.
Также в этом разделе можно указать тег ssl, в котором указать файлы с SSL-сертификатами для каждого адреса, на котором сервер принимает SSL-соединения.
Сервер позволяет управлять доступом по ip-адресам — для этого используются теги allow и deny.
Файл для хранения идентификатора процесса сервера. Иногда после аварийного падения сервера этот файл нужно удалять вручную перед новым запуском, иначе сервер не запустится.
После разделов внутренних компонент указываются настройки дополнительных транспортов и сервисов
jadc2s — это компонента управления клиентскими соединениями и может использоваться вместо компоненты pthsock_client.
Эта компонента позволяет обслуживать большое количество (больше 10 тысяч) входящих соединений одновременно, по сравнению с pthsock_client (~1024). Идея состоит в том, что можно запустить несколько компонент для обслуживания соединений, привязав их к разным портам. После начальной обработки соединений (например, авторизации) компонента пересылает соединения компоненте управления сессиями.
В данный момент реализация внешней части обработки соединений вынесена в отдельную программу и должна запускаться отдельно.
Содержание
Karma — численное значение, выражающее “кредит” соединению на объём пересылаемых байт в ближайший короткий период времени.
В общих словах, карма постепенно возрастает до некоторого максимума, если соединение не выходит за дозволенную скорость передачи, и убывает, когда предел начинает превышаться, постепенно ограничивая тем самым пропускную способность. Количество байтов, которые могут быть считаны из сокета в течение шага восстановления кармы, определяется как значение кармы, умноженное на 100.
Для компоненты jadc2s ограничение пропускной способности настраивается проще, в теге max_bps.
Алгоритм расчёта кармы управляется шестью параметрами, вложенными в элементы karma конфигурации различных соединений в конфигурации сервера:
<karma> <heartbeat>2</heartbeat> <init>10</init> <max>10</max> <inc>1</inc> <dec>1</dec> <penalty>-6</penalty> <restore>10</restore> </karma>
Время в секундах между шагами восстановления кармы. По умолчанию установлено в 2 секунды, так лучше его и оставить.
Этот тег можно указывать только в общих настройках karma, в разделе настройки системы ввода/вывода.
Начальное значение karma.
Максимальное положительное значение karma, которого может достичь сокет.
Значение, на которое увеличивается карма за каждый интервал времени, указанный в heartbeat.
Значение, на которое уменьшается карма каждый раз при превышении “кредита” (превышение может происходить чаще, чем heartbeat).
Отрицательная величина, в которую устанавливается карма после падения её до 0 или ниже. Характеризует время блокировки соединения.
Величина, в которую устанавливается карма по истечении периода блокировки, когда карма восстанавливается до 0. Обычно устанавливается в max.
Сбрасывать ли счётчик считанных байт по истечении блокировки, восстанавливая тем самым пропускную способность в полном объёме. Параметр имеет значение 0(нет) по умолчанию, что предпочтительно для ограничения продолжительных попыток превысить пропускную способность.
Количественные характеристики, более доступные человеческому пониманию, выводятся из этих величин следующим образом:
Средняя пропускная способность, достижимая без понижения кармы — до ( max * 200 / heartbeat ) Байт/c
Максимальное количество байт, которое может быть передано за heartbeat — примерно (r + 1) * max * 100 / 2, r = floor(max / dec)
Время блокировки после “зашкаливания” — abs(penalty) * heartbeat
У сервера есть несколько предопределённых ключей:
Файл конфигурации.
Включить отладочный вывод (отменяет запуск в фоновом режиме).
Домашний каталог сервера.
Запуск в фоновом режиме.
Уровень отладки.
Показать версию сервера и выйти.
Также есть возможность настроить ключи командной строки для любого тега, чтобы переопределять его значение при запуске. Для этого используется тег jabberd:cmdline .
Система Jabber позволяет подключать дополнительные сервисы и транспорты, расширяющие функциональность сервера. Для доступа пользователей к сервисам в теге browse должен быть указаны соответствующие агенты. Агенты могут предоставлять доступ не только к локальным сервисам, но и к сервисам на других серверах, например, к общему каталогу (JUD) пользователей на сервере jabber.org. Для работы локальных сервисов должны быть настроены соответствующие разделы в файле конфигурации.
В дистрибутивах от ALT Linux Team конфигурация сервисов хранится в отдельных файлах, включаемых тегом jabberd:include.
Например, для подключения транспорта ICQv7-t нужно установить пакет jabber-icqv7-t и отредактировать файлы в каталоге /etc/jabber/include, начинающиеся с icqv7-t. Также должен быть включен запуск внешней части ICQv7-t транспорта в файле jabber.cfg.
Если к локальному сервису будут подключаться пользователи других Jabber-серверов, JID этого сервиса должен иметь соответствующую запись в DNS. Если к сервису подключаются только локальные пользователи, записи в DNS не нужны.