SIP-аккаунты в FS построены по принципу электронной почты. Каждый аккаунт принадлежит определенному домену. Например, 1000@example.com — это абонент с номером 1000 в домене example.com. Доменом может выступать ip-адрес FS’а или доменное имя, которое с помощью DNS преобразуется в тот же ip-адрес.
В общем виде структура домена выглядит следующим образом:
<include> <!-- имя домена --> <domain name="example.com"> <!-- здесь указываем общие параметры для всех аккаунтов домена --> <params> <param name="имя_параметра" value="значение_параметра"/> ... </params> <!-- здесь указываем общие переменные для всех аккаунтов домена --> <variables> <variable name="имя_переменной" value="значение_переменной"/> ... </variables> <!-- Пользователей домена можно объединять в группы --> <groups> <group name="example.com"> <users> <user id="1000"> <params> <param name="password" value="$${default_password}"/> <param name="имя_параметра" value="значение_параметра"/> </params> <variables> <variable name="имя_переменной" value="значение_переменной"/> </variables> </user> </users> </group> </groups> </domain> </include>
Вот такая иерархия:
- есть домен;
- домену принадлежат пользователи;
- пользователи могут объединяться в группы;
- пользователи могут находиться в нескольких группах одновременно.
Параметры (params) и переменные (variables) могут быть указаны в настройках:
- домена — тогда они распостраняются на всех пользователей домена;
- группы — распостраняются на пользователей группы;
- отдельного пользователя — соответсвенно, распостраняются только на этого пользователя.
Чем ниже уровень вложения, тем выше приоритет настроек. Например, если один и тот же параметр указан в настройках и домена, и отдельно пользователя, но имеет разные значения, конкретно для этого пользователя будет применяться его настройка, а не всего домена.
Расположение файлов пользователей
$FS_ROOT/conf/directory/
Дефолтная конфигурация FS предлагает вести конфигурационные файлы домена и пользователей следующим образом:
- есть отдельно файл домена example.com.xml
- и есть директория , в котором хранится множество xml-файлов пользователей — по одному файлу на каждого пользователя;
- директория с пользователями example.com подключается к файлу домена example.com.xml с помощью X-PRE-PROCESS. Вот как это выглядит в файле домена:
$FS_ROOT/conf/directory/example.com.xml
<include> <domain name="example.com"> <groups> <group name="example.com"> <users> <X-PRE-PROCESS cmd="include" data="example.com/*.xml"/> </users> </group> </groups> </domain> </include>
Минимальная конфигурация подключения пользователя предполагает задание значений ID (логин) и password (пароль):
$FS_ROOT/conf/directory/example.com/1000.xml
<include> <user id="1000"> <params> <param name="password" value="password_for_1000"/> </params> </user> </include>
Группы пользователей
Группа (group) — это логическое объединение пользователей. Может использоваться для задания общих параметров, чтобы не прописывать их для каждого пользователя отдельно; также применяется для групповых вызовов, чем упрощает написание диалплана.
Следующий пример конфигурации домена говорит о том, что:
- в домене example.com создаем группу из всех пользователей домена, называем группу example.com;
- создаем группу managers, которая состоит из пользователей 1000, 1001 и 1002;
- создаем группу support, которая состоит из пользователей 1000, 2000 и 2001;
$FS_ROOT/conf/directory/example.com.xml
<include> <domain name="example.com"> ... <groups> <group name="example.com"> <users> <X-PRE-PROCESS cmd="include" data="example.com/*.xml"/> </users> </group> <group name="managers"> <users> <user id="1000" type="pointer"/> <user id="1001" type="pointer"/> <user id="1002" type="pointer"/> </users> </group> <group name="support"> <users> <user id="1000" type="pointer"/> <user id="2000" type="pointer"/> <user id="2001" type="pointer"/> </users> </group> </groups> </domain> </include>
В группы managers и support пользователи были добавлены с указанием типа «pointer» — указатель — именно благодаря этому можно одного и того же пользователя добавлять одновременно в несколько групп.