<!-- Router configuration -->
<!-- настройки ядра XMPP-сервера -->
<!-- далее, "ядро XMPP-сервера", пишется как "ядро" -->
<router>
<!-- Идентификатор модуля, используя который другие модули могут у нему подключатся (default: router) -->
<id>router</id>
<!-- Адрес PID-файла (в нём фиксируется ID процесса) -->
<pidfile>/var/jabberd/pid/router.pid</pidfile>
<!-- Настройки журналирования (поддерживаемые типы: "syslog", "file" или "stdout") -->
<log type='file'>
<file>/var/jabberd/log/router.log</file>
</log>
<!-- Настройки сетевых подключений -->
<local>
<!-- Перечисляем IP-адреса несущего сервера, которые будут прослушиваться (default: 0.0.0.0) -->
<ip>127.0.0.1</ip>
<!-- Указываем порт, который будет прослушиваться модулем (default: 5347) -->
<port>5347</port>
<!-- Указываем имя файла, содержащего перечень пользователей, используя реквизиты которых модули могут аутентифицироваться, подключаясь к ядру -->
<users>/usr/local/etc/jabberd/router-users.xml</users>
<!-- В дополнение к способу доступа путём аутентификации с помощью логина и пароля из перечня обозначенного выше укажем пароль, используемый для упрощённой идентификации компонентов, работающих по спецификации XEP-0114 (таких, как mu-conference, например)-->
<secret>strongPassword</secret>
<!-- Файл, содержащий SSL-сертификат и закрытый ключ, используемые для шифрования подключений модулей к ядру -->
<pemfile>/usr/local/etc/jabberd/server.pem</pemfile>
</local>
<!-- Настройки контроля активности соединений -->
<check>
<!-- Установим интервал (в секундах) проверки активности соединений. По таймеру будут запускаться описанные далее тесты (для отключения функционала следует значение установить в "0") -->
<interval>60</interval>
<!-- Активный тест: устанавливаем интервал (в секундах), по истечении которого по соединению не проявляющему активности будет отправлен одиночный символ; если на отправленный запрос не придёт ответа, то TCP-соединение будет закрыто (для отключения функционала следует значение установить в "0") -->
<keepalive>60</keepalive>
</check>
<!-- Настройки подсистем ввода/вывода -->
<io>
<!-- Указываем максимальное количество открытых ядром одновременно "файловых дискрипторов". На каждое подключение модуля (компонента) к ядру создаётся по дискриптору. Кроме того, обеспечение функциональности самого ядра требует пару-тройку сетевых подключений, сокетов или открытых файлов. В общем, нужно иметь в виду, что допустимое количество не должно быть меньше предполагаемого числа одновременной подключенных к ядру компонентов (default: 1024, что на мой взляд экстремально много - ну да ладно) -->
<max_fds>1024</max_fds>
<!-- Ограничения пропускной способности -->
<limits>
<!--
Интересная функция контролирования объёмов передаваемого трафика: если за период в "Y" секунд будет передано "X" байт, то соединение компонента к серверу будет "придушено" на "Z" секунд. Рискованно, не правда-ли? Потому и отключено. Синтаксис:
<bytes seconds='Y' throttle='Z'>X</bytes>
Default: Y=1, Z=5 (для отключения функции следует "X" установить в "0").
-->
<bytes>0</bytes>
<!--
Компоненты можно ограничить по количеству попыток подключения с одного IP-адреса: если за период в "Y" секунд с одного IP-адреса будет осуществлено более "X" попыток подключения, то с этого IP-адреса в течении "Z" секунд не будут приниматься (???) подключения. Синтаксис:
<connects seconds='Y' throttle='Z'>X</connects>
Default: Y=5, Z=5 (для отключения функции следует "X" установить в "0"). -->
<connects>0</connects>
</limits>
</io>
<!-- Настройки контроля доступа, используемые при маршрутизации трафика между модулями и компонентами (Access control information) -->
<aci>
<!-- Перечисляем имена пользователей, которые получат неограниченный доступ ко всему, что только поддерживается ядром функционально, без каких либо ограничений (даже тех, что будут описаны далее) -->
<acl type='all'>
<user>jabberd</user>
</acl>
<!-- Выносим дальнейшие ACL во внешний подключаемый файл. -->
<filter>/usr/local/etc/jabberd/router-filter.xml</filter>
</aci>
</router>
<!-- настройки ядра XMPP-сервера -->
<!-- далее, "ядро XMPP-сервера", пишется как "ядро" -->
<router>
<!-- Идентификатор модуля, используя который другие модули могут у нему подключатся (default: router) -->
<id>router</id>
<!-- Адрес PID-файла (в нём фиксируется ID процесса) -->
<pidfile>/var/jabberd/pid/router.pid</pidfile>
<!-- Настройки журналирования (поддерживаемые типы: "syslog", "file" или "stdout") -->
<log type='file'>
<file>/var/jabberd/log/router.log</file>
</log>
<!-- Настройки сетевых подключений -->
<local>
<!-- Перечисляем IP-адреса несущего сервера, которые будут прослушиваться (default: 0.0.0.0) -->
<ip>127.0.0.1</ip>
<!-- Указываем порт, который будет прослушиваться модулем (default: 5347) -->
<port>5347</port>
<!-- Указываем имя файла, содержащего перечень пользователей, используя реквизиты которых модули могут аутентифицироваться, подключаясь к ядру -->
<users>/usr/local/etc/jabberd/router-users.xml</users>
<!-- В дополнение к способу доступа путём аутентификации с помощью логина и пароля из перечня обозначенного выше укажем пароль, используемый для упрощённой идентификации компонентов, работающих по спецификации XEP-0114 (таких, как mu-conference, например)-->
<secret>strongPassword</secret>
<!-- Файл, содержащий SSL-сертификат и закрытый ключ, используемые для шифрования подключений модулей к ядру -->
<pemfile>/usr/local/etc/jabberd/server.pem</pemfile>
</local>
<!-- Настройки контроля активности соединений -->
<check>
<!-- Установим интервал (в секундах) проверки активности соединений. По таймеру будут запускаться описанные далее тесты (для отключения функционала следует значение установить в "0") -->
<interval>60</interval>
<!-- Активный тест: устанавливаем интервал (в секундах), по истечении которого по соединению не проявляющему активности будет отправлен одиночный символ; если на отправленный запрос не придёт ответа, то TCP-соединение будет закрыто (для отключения функционала следует значение установить в "0") -->
<keepalive>60</keepalive>
</check>
<!-- Настройки подсистем ввода/вывода -->
<io>
<!-- Указываем максимальное количество открытых ядром одновременно "файловых дискрипторов". На каждое подключение модуля (компонента) к ядру создаётся по дискриптору. Кроме того, обеспечение функциональности самого ядра требует пару-тройку сетевых подключений, сокетов или открытых файлов. В общем, нужно иметь в виду, что допустимое количество не должно быть меньше предполагаемого числа одновременной подключенных к ядру компонентов (default: 1024, что на мой взляд экстремально много - ну да ладно) -->
<max_fds>1024</max_fds>
<!-- Ограничения пропускной способности -->
<limits>
<!--
Интересная функция контролирования объёмов передаваемого трафика: если за период в "Y" секунд будет передано "X" байт, то соединение компонента к серверу будет "придушено" на "Z" секунд. Рискованно, не правда-ли? Потому и отключено. Синтаксис:
<bytes seconds='Y' throttle='Z'>X</bytes>
Default: Y=1, Z=5 (для отключения функции следует "X" установить в "0").
-->
<bytes>0</bytes>
<!--
Компоненты можно ограничить по количеству попыток подключения с одного IP-адреса: если за период в "Y" секунд с одного IP-адреса будет осуществлено более "X" попыток подключения, то с этого IP-адреса в течении "Z" секунд не будут приниматься (???) подключения. Синтаксис:
<connects seconds='Y' throttle='Z'>X</connects>
Default: Y=5, Z=5 (для отключения функции следует "X" установить в "0"). -->
<connects>0</connects>
</limits>
</io>
<!-- Настройки контроля доступа, используемые при маршрутизации трафика между модулями и компонентами (Access control information) -->
<aci>
<!-- Перечисляем имена пользователей, которые получат неограниченный доступ ко всему, что только поддерживается ядром функционально, без каких либо ограничений (даже тех, что будут описаны далее) -->
<acl type='all'>
<user>jabberd</user>
</acl>
<!-- Выносим дальнейшие ACL во внешний подключаемый файл. -->
<filter>/usr/local/etc/jabberd/router-filter.xml</filter>
</aci>
</router>