Формат конфигурационных файлов

Настройки

Asterisk является очень гибким движком телефонии. Но эта гибкость приносит небольшие сложности. Asterisk имеет достаточно большое количество файлов, которые контролиют все аспекты его деятельности. Однако формат этих файлов достаточно прост. Конфигурационные файлы Asterisk являются простыми текстовыми файлами и могут быть отредактированы в любом текстовом редакторе.

Конфигурационные файлы разбиты на несколько секций, чьи имена заключены в квадратные скобки. Имена секций не должны содержать пробелы и чувствительны к регистру. Внутри каждой секции вы можете присваивать значения различным настройкам. Параметры одной секции не зависят от значений параметров другой секции. Синтаксис присваивания значения параметру такой: пишем имя параметра, сразу за ним знак присваивания (равно), а потом значение. Например так:

[section-name] setting=true [another_section] setting=false setting2=true

Объекты

В некоторых конфигурационных файлах создаются объекты. Синтаксис для объектов немного отличается от синтаксиса для настроек. Для создания объекта вы указываете тип объекта, далее знак равно и знак больше чем (=>) и потом значение объекта. Пример:

[section-name] label1=value1 label2=value2 object1 => name1 label1=value0 label3=value3 object2 => name2

В этом примере, object1 наследует значения параметров label1 и label2. Важно понимать что объект object2 также наследует label1 (у которого изменено значение), label2 и label3.

Вкратце, объект наследует все настройки располагающиеся выше него в текущей секции и более поздние настройки перезаписывают определённые ранее.

Комментарии

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

Пример однострочного комментария:

[section-name] 
setting=true

 [another_section]
 setting=false ; это комментарий части строки 
; это комментарий всей строки
 ;awesome=true
 ; точка с запятой в строке выше делает её комментарием, 
; отключая настройку

Asterisk также позволяет создавать многострочные комментарии. Многострочный комментарий это комментарий, который начинается в одной строке и продолжается несколько строк. Многострочные комментарии начинаются с последовательности символов ;-- и завершается --;. Пример:

[section-name] setting=true ;-- это многострочный комментарий, который начинается на этой строке и продолжается несколько строк, пока не доберёмся до сюда --;

Конструкции include и exec

Конструкция #include указывает Asterisk прочитать содержимое другого конфигурационного файла и действует так как-будто содержимое находилось в данном месте в этом конфигурационном файле. Синтаксис такой: #include filename, где filename это имя файла, который вы жлаете добавить. Конструкция обычно используется для разбиения большого конфигурационного файла на маленькие кусочки, которые проще редактировать.

Конструкция #exec идёт немного дальше. Она позволяет выполнить внешнюю программу и пометсить вывод этой программы в текущий конфигурационный файл. Синтаксис - #exec program, где program - это имя программы, которую вы хотите выполнить. По умолчанию использование конструкции #exec запрещено. Для включения данной фукциональности зайдите в конфигурационный файл asterisk.conf (обычно находится в /etc/asterisk) и укажите параметр execinclude=yes в секции [options]. Данная настройка уже имеется в файле конфигурации, но она закомментирована. Просто уберите ; из начала строки с настройкой. Пример использования #include и #exec:

[section-name] setting=true #include otherconfig.conf ; вставить другой конфигурационный файл #exec otherprogram ; вставить в конфигурацию вывод программы otherprogram

Добавление в существующую секцию

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

[section-name] setting1=value1 ; тут много других секций с настройками [section-name](+) setting2=value2

В данном примере показано как настройка setting2 добавлена в уже существующую секцию конфигурации.

Шаблоны

Другой конструкцией, которой можно пользоваться во многих конфигурационных файлах Asterisk, являются шаблоны. Шаблон, это секция конфигурационного файла, который используется как база из которой создаются другие секции.

Для того чтобы определить секцию как шаблон, поместите восклицательный знак в скобках (!) сразу после заголовка секции, как показано в примере ниже:

[template-name](!) setting=value

Для использования шаблона при создании своей секции, просто поместите имя шаблона в скобках после заголовка секции. Если вы хотите использовать несколько шаблонов, то используйте запятую для разделения имён шаблонов. Пример:

[template-name](!) setting=value [template-2](!) setting2=value2 [section-name](template-name,template-2) setting3=value3

Созданная секция будет наследовать параметры и объекты определённые в шаблоне, также как любые новые параметры или объекты объявленные в самой секции. Настройки о объекты, определённые в созданной секции перезаписывают параметры и объекты с тем же именем из шаблона. Пример:

[test-one](!) permit=192.168.0.2 host=alpha.example.com deny=192.168.0.1 [test-two](!) permit=192.168.1.2 host=bravo.example.com deny=192.168.1.1 [test-three](test-one,test-two) permit=192.168.3.1 host=charlie.example.com

Секция [test-three] будет обработана как если бы она была записана следующим образом:

[test-three] permit=192.168.0.2 host=alpha.example.com deny=192.168.0.1 permit=192.168.1.2 host=bravo.example.com deny=192.168.1.1 permit=192.168.3.1 host=charlie.example.com