# Синтаксис файла конфигурации

Конфигурационный файл состоит из отдельных выражений. В положении символов и использовании знака пробел не существует каких либо ограничений. Текст, помеченный как коментарий, не интерпретируется как полезная информация.

## 1. Комментарии

Существует два типа комментариев - блочные и строковые. Блочный комментарий начинается с пары символов '/*' и заканчивается парой '*/'. Строчный комментарий начинается с '//' и заканчивается с текущей строкой.

Пример

    /* Это комментарий */
    // Это тоже комментарий

## 2. Выражения

Каждое выражение начинается зарезервированным словом, которое указывает на тип выражения. Существует два типа выражений: простые и сложные. Простые выражения осуществляют контроль над одним свойством.

Пример

    login 'copah';

Сложные выражения похожи на простые. Они включают в себя одно или несколько простых выражений, заключенных в фигурные скобки. Сложные выражения имеют простую форму при которой простые составляющие разделяются запятой и следуют сразу после объявления сложного выражения.

Пример

    user John
    {
      location LAN;
      login "John";
      alias "John";
    }

    user Anyone group member Basic,login '(.+)' set UN to '\1',alias UN;

Порядок, в котором представляются выражения, имеет важное значение. Если существует более одного выражения определенного типа и все они контролируют одно и то же свойство, то только первое активное выражение будет интерпретировано как действительное. Некоторые выражения могут быть ограничены по действию во времени. Такие выражения имеют факультативное ключевое слово 'at' (См. подвыражение 'at' ).

Пример

    group Group1
    {
      proxy level none;
      registration validity 70;
    }

    user User1
    {
      registration validity unlimited;
      group member Group1;
      proxy level signalling;
      connections 4 at 9:00-18:00;
      connections 2 at 13:00-14:00;
      connections 1;
    }

В этом примере время регистрации пользователя не будет ограничено потому, что первое выражение соответствующего типа объявляет именно такое состояние. Ограничение регистрации, описаное в группе, не имеет силы. И наоборот, 'proxy level ' пользователя не имеет эффекта потому, что объявление группы аннулирует это объявление.

С 9:00 до 18:00 абонент будет иметь возможность произвести до 4-х соединений, и только одно соединиение все остальное время. Второе правило (connections) не имеет эффекта потому, что время его действия перекрывается первым выражением, имеющим более высокий приоритет.

## 3. Ключевые (зарезервированные) слова

Ключевые слова регистро-независимые. Администратор может использовать любой регистр в ключевых словах и даже смешивать их. Например, 'file' и 'File' - это одно и то же ключевое слово. Большинство ключевых слов используется для указания типа выражения и его факультативов. Эта тема будет рассмотрена позже. Другие ключевые слова используются для указания состояния свойств.

Пример

Boolean: true, false
Numeric: unlimited

## 4. Типы

### string

Строка. Текст заключенный в апострофы или кавычки. Везде, где применимы переменные, параметр типа string может быть представлен переменной.

### regexp

Строка, в которой допустимо использование регулярных выражений. Везде, где применимы переменные, параметр типа regexp может быть представлен переменной.

### uint

Беззнаковое целое число или ключевое слово 'unlimited' для определения бесконечно большой характеристики.

### bool

Булево значение. 'true' или 'false' ключевое слово.

### identifier

Идентификатор. Текст начинающийся с буквы без пробелов. Идентификатор используется внутри конфигурационного файла для обозначения различных обектов, таких как: зоны, соединения, пользователи, переменные, и.т.д.

### ip address

Числовой IP адрес или интернет имя заключенное в апострофы или кавычки.

Пример

    123.48.132.56:12345
    'canopus.aqua.comptek.ru:12345'

### address range

Единичный IP адрес или два адреса фомирующие диапазон.

Пример

Запись | Описание
--- | ---
19.38.12.45 | единичный IP адрес.
19.38.12.45-19.38.12.49 | диапазон.
19.38.12.45-49 | упрощённый диапазон.

### direction

Заерезервированое слово 'incoming' или 'outgoing' или пусто (если разрешено конструкцией) для обоих направлений.

### side

Заерезервированое слово 'caller' или 'callee' или пусто (если разрешено конструкцией) для обоих сторон.

### bandwidth

Полоса пропускания в битах в секунду. Должна быть кратной 100. Возможно использование модификаторов 'K', 'M', 'G' для записи полосы в килобитах, мегабитах и гигабитах соотвественно. Возможные варианты: 128K, 6.4K, 10M, 0.5M

### time

Дата и время, записанные в форме: Mon 31/12/2000 23:59:59. В случае групповых выражений, любая из отдельных величин может быть заменена на символ '.'. Некоторые поля могут быть опущены для того, чтобы укоротить запись. Возможные варианты:

- Mon 1/12/1999 12:00:00
- Mon 1/12/1999 12:00
- 1/12/1999 12:00:00
- 1/12/1999 12:00
- 12:00:00
- 12:00
- Mon

### period

Два указателя времени, разделенных знаком '-', образующие период.

Example

Notation | Description
--- | ---
Mon-Wed | from Monday to Wednesday every week.
12:00-17:59 | from 12:00:00 to 17:59:59 every day.
1/./. 00:00-10/./. 23:59 | from 1st day 00:00:00 to 10th day 23:59:59 every month.
./1/. 00:00-./2/. 23:59 | from 1 Jan to 31 Feb every year.

## 5. Основные опции

### system { ... }

Сложное выражение содержащее основные опции системы.

### monitor { ... }

Выражение контроля опций монитора. Смотри раздел опции монитора.

### log { ... }

Сложное выражение содержащее опции контроля за логом.

### aaa { ... }

Содержит информацию о RADUS сервере и ААА опции.

### zone <identifier> { ... }

Объявление информационной зоны. Обычно это сегмент сети, который несет поток данных и независим от других зон по его пропускной способности. Используется для ограничения телефонного трафика через определенный участок сети и других QoS. Гейткипер не допустит образования соединений через зону с исчерпанной пропуской способностью. См. раздел "Опции зоны и соединения" с описанием выражений, которые могут быть включены в данное сложное выражение.

### link [identifier] between <identifier zone> and <identifier zone> { ... }

Это выражение имеет ту же функциональность, что и 'zone', с дополнительной возможностью соединить две зоны для повторения топологии реальной сети. См. раздел "Опции зоны и соединения" с описанием выражений, которые могут быть включены в данное сложное выражение.

### group <identifier> { ... }

Сложное выражение, используемое для объявления группы и ее поведения. Это выражение может влючать любые выражения из сложных выражений 'user' и 'gatekeeper'. См. разделы "Опции пользователя" и "Опции гейткипера". Вы можете создать группу с зарезервированным именем 'everyone', пользователи объявленные позже атоматически становятся членами этой группы.

### user <identifier> { ... }

Это выражение имеет почти тот же смысл, что и 'group', за одним исключением. Оно объявляет конкретного пользователя, который может быть зарегистрирован в системе. См. раздел "Опции пользователя" с описанием выражений, которые могут быть включены в данное сложное выражение.

### gatekeeper <identifier> { ... }

Служит для объявления пользозователя с раширенными возможностями (типа гейткипер). Это выражение может содержать простые выражения пользователя и группы, а так же добавочные, собственные выражения. Основное отличие между выражениями 'user' и 'gatekeeper' состоит в том, что гейткипер не будет сразу производить звонок при совпадении номера.

Звонку будет предшествовать сообщение Location Request (LRQ) к удаленному гейткиперу (или гейткиперам, если более одного подошли под метрику маршрута) для того, чтобы обнаружить конкретного вызываемого абонента. Как абонент, удаленный гейткипер должен зарегистрироваться для того, чтобы показать свое активное состояние. В случае, если удаленный гейткипер не поддерживает регистрацию, следует использовать выражение 'static'. Для детальной информации по специфическим выражениям См. раздел "Опции гейткипера".

## 6. Опции системы (сложное выражение system)

### identifier <string>

Идентификатор гейткипера. Используется как основной индентификационный элемент гейткипера. Это имя может быть использовано абонентами в процессах обнаружения гейткипера и регистрации на нём в том случае, если абонент желает зарегистрироваться на гейткипере с определенным именем. В этом случае все запросы обнаружения и регистрации с неподходящим идентификатором гейткипера будут отвергнуты гейткипером. Однако, запросы, не содержащие идентификатор гейткипера, будут обработаны.

### address <ip address>

Выходной интерфейс, через который должен работать гейткипер. Важно правильно установить этот параметр на машинах, имеющих более одного интерфейса для того, чтобы гейткипер мог использовать правильный выход в сеть H.323. Это правило не актуально на машинах с едиственным интерфейсом. Однако, если хост, на котором запущен гейткипер, имеет несколько интерфейсов (например, выполняет роль маршрутизатора), то, в случае, если это выражение будет опущено, в качестве адреса гейткипером будет выбран адрес одного из интерфейсов по случайному закону, что может привести к проблемам.

### RAS port <uint>
default value: 1719

Номер порта, используемого для RAS коммуникации с гейткипером. Если выражение опущено, будет использован стандартный порт 1719.

### call signal port <uint>
default value: 1720

Номер порта, который будет использован для сигнального уровня. Сигнальный порт используется гейткипером для вызова другими устройствами, не поддерживающими функции регистрации у гейткипера. Если это выражение опущено, будет использован стандартный порт 1720.

## 7. Опции монитора (сложное выражение monitor)

### port <uint>
default value: 2040

Номер порта, используемого монитором.

### password <string>

Пароль для доступа к монитору. Примечание: Этот пароль используется для шифрования конфигурации во время передачи по сети с использованием монитор протокола. В случае, если пароль не установлен — шифрование производиться не будет.

### address <address range> [bool]
address <bool>

Определяет право соединения с сервисом монитора с определённого адреса или набора адресов. Опущенный адрес подразумевает все возможные адреса. Опущенный параметр "bool" подразумевает 'true'.

## 8. Опции лога (сложное выражение log)

### file <string>

Путь к файлу журнала, который будет содержать копию консольного вывода. Идентично ключу командной строки 'consolefile'.

### [direction] ras messages <bool>

Котролирует печать RAS сообщений. В соответствии с использованым направлением входящие или исходящие сообщения будут печататься в лог. Опция контролирует все RAS сообщения если направление отсутствует.

### [direction] q931 messages <bool>

Контролирует печать Q.931 сообщений.

### [direction] h245 messages <bool>

Контролирует печать H.245 сообщений.

### [direction] radius messages <bool>

Контролирует печать RADIUS сообщений.

### messages dump <bool>

Печать дампа всех входящих сообщений.

### registrations <bool>

Печать регистраций.

### connection status <bool>

Печать информации о этапах развития соединения.

### chosen route <bool>

Печать выбраного маршрута при разрешении строки набора.

### available bandwidth <bool>

Печать полосы доступной для звонка.

### bandwidth changes <bool>

Печать всех изменений используемой полосы.

## 9. Опции ААА (сложное выражение AAA)

### file <string>

Путь к файлу, который будет содержать информацию о соединениях, времени их начала и продолжительности (CDR файл). Если путь опущен, то файл будет создан в каталоге с файлом конфигурации. CDR файл не будет создан если опущенна опция целиком.

### address <ip address>

Адрес RADIUS сервера.

### authentication port <uint>
default value: 1812

Порт идентификации. Будет использоваться стандартный (1812) если опция опущена.

### accounting port <uint>
default value: 1813

Порт учета. Будет использоваться стандартный (1813) если опция опущена.

### password <string>

Секрет RADIUS сервера.

### log failed calls <bool>
default value: false

Регистрировать неудачные звонки в CDR файле и на RADIUS сервере.

### time zone name <string>
default value: "UTC"

Определяет имя временной зоны используемой в RADIUS пакетах.

### time zone offset <offset>
default value: GMT

Смещение временной зоны для AAA записей. Допустимые значения: GMT, local.

## 10. Опции зоны и соединения (сложные выражения zone & link)

### bandwidth <bandwidth>
default value: unlimited

Суммарная пропускная способность зоны. Гейткипер не допустит образования соединений через зону с исчерпанной пропуской способностью.

### connections <uint>
default value: unlimited

Количество соединений которое может быть обслужено зоной. Гейткипер не допустит образования большего количества соединений для данной зоны.

## 10. Опции пользователя (сложное выражение group)

### proxy level <level>
default value: signalling

Устанавливает указанный уровень прокси. Допустимые значения: 'none', 'signalling' и 'full'.

- none - Абонент имеет возможность вызывать и быть вызванным другим абонентом напрямую (используя тип вызова "direct"). Однако, в этом режиме, абонент может запросить тип вызова "routed" (при включённой опции 'proxy level choice') который соответствует 'signalling' уровню проксирования. Не рекомендуется использовать эту опцию потому, что наличие звонка может быть определено только с использованием сообщений IRR. Поэтому, иформация о продолжительности звонка может быть неадекватной.
- signalling - Гейткипер будет проксировать оба ("call signal" и "control") сигнальных уровня. Все вызовы типа "direct" будут ремаршрутизированы на гейткипер и тип вызова будет заменен на "routed".
- full - В дополнение к уровню проксирования 'signalling', гейткипер будет проксировать все RTP каналы несущие полезные данные.

В случае если абоненты учавствующие в соединении имеют различные уровни проксирования, будет принят старший. Используя эту особенность вы можете установить уровень проксирования 'signalling' для абонентов внутри сети, в то время как внешние гейтвеи используют уровень 'full' для того, чтобы иметь возможность обойти файрвол.

### proxy level choice <bool>
default value: false

Управляет возможностю изменения абонетом установленного уровня проксирования. Стандарт H.323 предполагает, что абонент имеет возможность выбрать "direct" или "gatekeeper routed" режим. Следовательно с включённой опцией 'proxy level choice' абонент может переключиться с установленного уровня проксирования 'signalling' или 'full' в 'none', или остаться в оригинальном режиме. В случае если абонет сконфигкрирован с уровнем проксирования 'none', он имеет возможность перключиться в 'signalling' или остаться в 'none' режиме.

### hunt level <level>
default value: neutral

Устанавливает уровень хантинга, если абонент является вызывающей стороной. Допустимые значения: 'none', 'neutral', 'soft', 'hard'.

- none - В этом режиме хантинг производиться не будет. Если по каким либо причинам (удалённый абонент занят или удалённое оборудование неисправно, и.т.д.) разговор состояться не может, вызывающий абонент не будет переключен на другую альтернативу и звонящий услышит сигнал ошибки.
- neutral - Вызывающий абонент будет переключен на альтернативный маршрут в случае возникновения ошибки во время соединения. Однако, если к этому моменту каналы данных уже установлены, переключение произведено не будет. Гейткипер не будет пытаться отсрочить образование каналов данных, поэтому данный режим назван "нейтральным".
- soft - В этом режиме гейткипер будет пытаться отсрочить создание каналов данных перемещая информацию FastStart и H245Address в сообщение Alerting.
- hard - В этом режиме гейткипер будет пытаться отсрочить создание каналов данных перемещая информацию FastStart и H245Address в сообщение Connect.

Заметьте, что в любом режиме абоненты всё же имеют возможноть открыть каналы данных используя H.245 туннелинг, тем самым делая дальнейший хантинг невозможным.

### fast start <bool>
default value: true

Контролирует "fast connect" процедуру для данного абонента. Некоторые абонентские устройства (например Cisco ATA186) могут быть приведены в нерабочее состояние "fast start" последовательностью, вы можете обойти это запретив "fast connect" процедуру для таких абонентов.

### h245 tunneling <bool>
default value: true

Контролирует H.245 туннелинг для данного абонента.

### cost <uint> [at]
default value: unlimited

Стоимость маршрута. Если существует более одного абонента с одним и тем же псевдонимом, для звонка будет выбран наименее дорогой. Это выражение может содержать суб-выражение 'at'.

### connections <uint> [at]
default value: unlimited

Объявляет максимальное количество соединений, одновременно открытых к пользователю. Это значение используется в расчете загрузки абонента в процедуре уравновешивания загрузки (load balancing). Если существует более одного абонента с одним и тем же псевдонимом и ценой, будет выбран наименее нагруженный. В любом случае гейткипер не допустит большего количества соединений с пользователем, чем указано в этой команде.

### location <identifier zone>

Зона, котрой принадлежит абонент. Используется для QoS и ограничения трафика. Если выражение не определено, абонент находится вне какой-либо зоны.

### bandwidth <bandwidth>
default value: 128k

Двунаправленная, кратная 100, полоса пропускания для статических абонентов. Например, если ваш абонент использует 64 kbit aLaw кодек для обоих направлений, то полоса должна быть записана как 128k.

### login <regexp> [bool] [set list]
login <bool> [set list]

Псевдоним (alias) с которым будет регистрироваться абонент. Опущенный пареметр "regexp" подразумевает все возможные псевдонимы. Опущенный параметр "bool" подразумевает 'true'. Используя подвыражение 'set' вы можете извлечь различные части псевдонима.

Пример

    login 'user(.+)goinin' set UserAlias to '\1';
    alias UserAlias;

Пользователь, регистрирующийся с псевдонимом 'userJohngoinin' будет зарегистрирован с установками текущего пользователя и будет доступен по псевдониму 'John'.

### alias <regexp> [bool] [cost <uint>] [translate to <regexp>] [set list] [at]
alias <bool> [cost <uint>] [set list] [at]

Определяет набор действительных псевдонимов, по которым может быть вызван абонент. Параметр "bool" указывает на принадлежность данного псевдонима пользователю. Если паметр "bool" установлен в значение 'false', данный псевдоним исключается из набора действительных.

Пример

alias '81234' false;
alias '8\d{5}' true;

В данном примере абонет будет доступен по всем пятизначным номерам начинающимся с цифры 8 кроме номера 81234. Опущенный параметр "bool" подразумевает состояние 'true'. Опущенный параметр "regexp string" подразумевает все возможные псевдонимы.

Подвыражение 'translate to' используется для трансляции принятой строки набора при представлении её абоненту, подобно тому как это делается в директиве 'translate alias'.

Подвыражение 'cost' позволяет установить цену маршрута на индивидуальный псевдоним. В случае если подвыражение опущено, будет использоваться цена маршрута на абонента.

### translate [direction] [side] alias <regexp> to <regexp> [at]

Трансляция псевдонима для дальнейшей обработки и представления. Параметры "direction" и "side" соотвественно контролируют трансляцию "входящих/исходящих" (incoming/outgoing) псевдонимов и псевдонимов "вызывающего/вызываемого" (caller/callee). "Входящий" (incoming) псевдоним будет странслирован только после того как он совпадёт с объявленным псевдонимом абонента. Псевдоним модифицирует только первая совпавшая трансляция. Параметры "direction" и "side" могу быть опущены для того чтобы произвести трансляцию всех типов псевдонимов в опущенном классе. К примеру, если псевдонимы вызывающей и вызываемой стороны относятся к одному плану нумерации, для того чтобы согласоваться с внешним планом нумерации Вы можете записать следующие правила транляции для гейтвея:

    translate incoming alias '\d{3}' to '+73432451\1';
    translate outgoing alias '+73432451\d{3}' to '\1';

Так же, очень полезно установить исходящий псевдоним конкретному единичному пользователю:

    translate outgoing caller alias '.*' to '212';

в то время как его действительный псевдоним сконфигурирован как

    alias '212';

### dial [identifier] <bool> [at]

Определяет право пользователя вызывать другого пользователя или пользователя из группы. Опущенный идентификатор (identifier) подразумевает всех пользователей в системе. По умолчанию пользователь имеет право вызывать любого абонента в системе. Если же пользователь или его группа содержат одно или больше выражений 'dial' вызовы к пользователям, не объявленным данными выражениями, будут отвергнуты. Вместо имени пользователя вы можете использовать зарезервированное слово 'self'.

### address <address range> [bool]
address <bool>

Определяет право пользователя регистрироваться в систему с определённого адреса или диапазона адресов. Опущенный диапазон адресов подразумевает все возможноые значения адресов. Опущенное булево значение подразумевает 'true'. Однако хотя бы один параметр должен присутствовать. По умолчанию пользователь имеет право регистрироваться с любого адреса, что эквивалентно единственному выражению 'address true'. Если же пользователь или его группа содержат одно или больше выражений 'address', попытки регистрации со всех остальных адресов будут отвергнуты. В случае если абонент статический (помечен директивой 'static'), выражения 'address' определяют набор допустимых адресов для прямого (call signal) вызова гейткипера. Так же, выражение 'static' автоматически производит директиву 'address' с данным адресом и флагом доступа установленным в 'true'.

### static [ip address]
static [bool]

Автоматически зарегистрировать абонента при старте системы с данным сигнальным (call signal) адресом. Предусмотрено для терминалов, которые не могут общаться с гейткипером. Все RAS регистрации на данную учётную запись пользователся будут отклонены. Так же, автоматически производит директиву 'address' с данным адресом и флагом доступа установленным в 'true'. При опущенном параметре "ip address" звонки на/от данного абонента невозможны. Однако, для того чтобы разрешить пользователю производить звонки вы можете вставить директиву 'address'.

Example

    address 19.38.12.7;
    static;

В этом примере статический абонент имеет возможность производить звонки но не имеет возможности принимать их.

Example

    address 19.38.12.7 false;
    static 19.38.12.7;

В этом примере абонент имеет возможность принимать звонки но не имеет возможноти производить звонки.

### registration validity <uint seconds>
default value: unlimited

Ограничить действительность регистрации абонента до "uint" секунд. Абонент должен поддерживать возможность перерегистрации для того, чтобы поддерживать состояние активности. Если абонент не перерегистрируется в указанный промежуток времени, он будет отсоединён от системы. Используйте ключевое слово 'unlimited' для того, чтобы отменить ранее объявленный (например, в группе пользователя) период.

### connection validity <uint seconds>
default value: 60

Ограничить дейтвительность соединения до "uint" секунд. Абонент должен поддерживать активное состояние соединения переодически послыая IRR сообщение. IRR период устанавливается гейткипером и он в три раза меньше чем параметр 'connection validity'. Гейткипер не будет запрашивать у абонента IRR сообщений если 'connection validity' установлено в 'unlimited'. Эта возможность может помочь подключить абонентов не рассылающих IRR сообщения во время звонка, несмотря на то что эта функция объявлена обязательной в H.323 стандарте. Настоятельно не рекомендуется использовать 'connection validity unlimited;' с 'proxy level none;' потому, что в этом случае для гейткипера не существует надежного способа узнать что соединение было прервано. Это может вызвать недостоверность данных биллинга и "повисшие" соединения.

### max [direction] ringback duration <uint seconds>
default value: unlimited

Лимит (в сеундах) времени ожидания ответа. Будет взято наименьшее из двух (incoming для терминирующей стороны и outgoing для вызывающей) значений.

### max [direction] connection duration <uint seconds>
default value: unlimited

Лимит (в секундах) маскимальной продолжительности соединения. Будет взято наименьшее из двух (incoming для терминирующей стороны и outgoing для вызывающей) значений.

### radius authentication <mode>
default value: none

Устанавливает режим идентификации на RADIUS сервере. Допустимые значения: 'none', 'login', 'caller', 'callee', 'call' и 'full'. Опции могут быть объединены знаком вертикальная черта (|).

- none - Идентификация производиться не будет.
- login - Гейткипер будет запрашивать разрешение на регистрацию пользователя у RADIUS сервера.
- caller - Гейткипер будет запрашивать разрешение на установление соединения в случае если абонент является вызывающей стороной.
- callee - Гейткипер будет запрашивать разрешение на установление соединения в случае если абонент является вызываемой стороной.
- call - Идентично 'caller | callee'.
- full - Идентично 'login | call'.

Идентификационный запрос на регистрацию имеет поле "Service-Type" установленое в "Login". Идентификационный запрос на установление соединения имеет поле "Service-Type" установленое в "Call Check".

### radius accounting <mode>
default value: none

Устанавливает режим учета на RADIUS сервере. Допустимые значения: 'none', 'login', 'caller', 'callee', 'call' и 'full'. Опции могут быть объединены знаком вертикальная черта (|).

- none - Учет для абонента производиться не будет.
- login - Гейткипер будет регистрировать время пребывания пользователя в системе.
- caller - Гейткипер будет регистрировать продолжительность звонков в случае если абонент является вызывающей стороной.
- callee - Гейткипер будет регистрировать продолжительность звонков в случае если абонент является вызываемой стороной.
- call - Идентично 'caller | callee'.
- full - Идентично 'login | call'.

Запрос на учет регистрации имеет поле "Service-Type" установленое в "Login". Запрос на учет соединения не имеет поля "Service-Type".

### radius name <string>
default value: UserName

Установить имя пользователя для RADIUS операций. Так же можно использовать встроенные переменные UserName H235Name которые содержат, соотвественно, имя пользователя из конфигурации и имя пользователя из предоставленной H.235 информации.

### radius password <string>

Установить пароль пользователя для RADIUS операций. Пароль нулевой длинны подразумевает, что пароль не используется. Это значение по умолчанию. В случае если использовано выражение 'radius password H235Password', гейткипер извлечёт пароль из доставленного абонентом информационного уровня H.235. Этот режим поддерживает только Cisco Access Token.

### h235 authentication <bool>

Включить/выключить H.235 авторизацию RAS и Q.931 сообщений. Поддерживаемые методы: CAT, Password with hashing (MD5).

### h235 name <string>
default value: UserName

Установить имя которое должен представить пользователь для авторизации сообщений.

### h235 password <string>

Установить пароль который должен представить пользователь для авторизации сообщений.

### display <string>
default value: UserDisplay

Присваивает заданное значение полю Q.931 display. Оригинальное значение поля display помещается в переменную UserDisplay автоматически. Вы всегда можете восстановить оригиальный режим дав команду 'display UserDisplay'.

### connection dupe <bool>
default value: false

Разрешить или запретить пользователю создавать соединения с повторяющимся идентификатором соединения. Обычно эта функция должна быть запрещена. Однако, некоторые абоненты, такие как ремаршрутизирующие автоответчики могут открыть соединение с изменённым адресом номером но с тем же идентификатором соединения. Обычно, такой звонок будет запрещён детектором петель, таким образом, в данном случае, вы должны включить функцию 'connection dupe' для данного абонента. Используйте эту возможность с особой осторожностью, абонент не должен выступать с одной стороны (например, со стороны вызывающего) дважды в разных соединениях с идентичным идентификатором соединения. Это вызвано тем, что у гейткипера не будет возможности различать такие соединения.

### set <identifier:variable> to <string>

Устанавливает данной переменной строковое зачение. Как и с остальными выражениями, только первое выражение 'set' сработет над определённой переменной.

### make login <regexp> <set list>

Побудить систему создать переменную по какому-либо псевдониму. Заметьте, что это выражение не влияет на процесс регистрации, оно включается в работу только после того как псевдоним прошёл выражение 'login'.

Пример

    group everyone make login '.*' set UserAlias to '\0',alias UserAlias;
    user User1 login '201';
    user User2 login '202';

В этом примере User1 будет зарегистрирован с только псевдонимом "201". И он будет иметь действительный псевдоним "201".

### make [direction] [side] alias <regexp> <set list> [at]

Побудить систему создать переменную по псевдониму звонка. Пропущенные direction и/или side параметры подразумевают все псевдонимы всех типов в опущенном классе.

### alternate gatekeeper <ip address> [string] [gatekeeper ...]
alternate gatekeeper none

Объявляет список альтернативных гейткиперов для пользователя. Этот список будет предоставлен абоненту в случае если он поддреживает процедуры альтернативного гейткипера обозначая это включением поля SupportsAltGK в RRQ сообщение. Выражение 'alternate gatekeeper none' выключает эту функцию. Это значение по умолчанию.

## 12. Опции гейткипера (сложное выражение gatekeeper)

### ras address <ip address>

Объявляет адрес уровня RAS удаленного гейткипера. Используется совместно с опцией 'static', в том случае, если наш гейткипер не имеет возможности обнаружить этот адрес, используя другие источники.

### identifier <string>

Идентификатор удаленного гейткипера. Наш гейткипер будет использовать его во всех запросах, где это возможно. Так же, если выражение 'ras address' опущено, гейткипер попытается обнаружить удаленный гейткипер при помощи сообщения Gatekeeper Request (GRQ). Примечание: GRQ является широковещательным сообщением и может быть не пропущено через маршрутизатор.

### register alias <string> [alias ...]
register alias none

Побуждает гейткипер зарегистрироваться на удаленном гейткипере для того, чтобы показать свое активное состояние. Метод регистрации точно такой же, как у абонента. Удалённый гейткипер может интерпретировать наш гейткипер как обычного абонента в том случае, если он не анализирует тип регистрируемого терминала.

### link h235 name <string>
default value: UserName

Устанавливает H.235 имя для соединения с удалённым гейткипером.

### link h235 password <string>

Устанавливает H.235 пароль для соединения с удалённым гейткипером.

### link h235 authentication <bool>
default value: false

Включает/выключает H.235 аутентикацию на соединении с удалённым гейткипером.

### registration period <uint seconds>

Побуждает гейткипер повторять процедуру регистрации в установленный период ("uint" секунд). Эта функция используется для подтвержения активного состояния.

### link alternate gatekeeper <bool>
default value: false

Разрешает процедуры альтернативнного гейткипера на данном соединении с удалённым гейткипером. При разрешённой опции будет выставлен флаг SupportsAltGK, проанализирован список альтернативных гейткиперов представленный удалённым гейткипером и включены соотвествующие процедуры переключения между альтенативными гейткиперами.

## 13. Подвыражения

### at <period>

Устанавливает период действительности выражения.

### set <identifier variable> to <string>

Присваивает стороковое значение данной переменной.

Пример

    set UserLogin to 'user(.+)';
    login UserLogin set UserAlias to '\1';
    alias UserAlias;

### set <identifier variable> add <string>

Добавляет строку к указанной переменной. Если переменная уже содержит строку не нулевой длинны то строка будет предварена знаком вертикальная черта (|). Эта функция создана специально для обработки нескольких псевдонимов в процессе регистрации абонента. Если в строке, которую содержит переменная, есть скобки, то подстрока будет вставлена перед первой закрывающей скобкой.

Пример

    set UserAlias to 'common|(2())';
    login 'gw5(\d{3})' set UserAlias add '\1';
    alias UserAlias;

В этом примере, пользователь представленный псевдонимами "gw5100" и "gw5101", будет иметь результирующий псевдоним "common|(2(100|101))".

### set list

Список подвыражений 'set ... to' и 'set ... add'.

Пример

    alias '(\d{3})(\d{3}).*' set Account to '\1' set PIN to '\2';