Страница 1 из 2

Cинтаксический анализ конфигурационных файлов Asterisk

Добавлено: 08 мар 2013, 15:07
noize
Запилил модуль для разбора и анализа конфигурационных файлов Asterisk на предмет корректности данных. Сама разработка доступна на гитхабе https://github.com/ruzhnikov/libasteris ... onfig-perl
Сейчас модуль умеет делать только предварительный парсинг файла extensions.conf и всех инклудов файлов(рекурсивная обработка), проверяет корректность строк

Код: Выделить всё

#include <file>
и

Код: Выделить всё

include => context
В разработке находится проверка синтаксиса строк

Код: Выделить всё

exten => ....
Сам модуль написан на перле, в комплекте идёт приложение asterisk-checksyntax, которое устанавливается автоматически и позволяет пользоваться модулем не рисуя своих велосипедов.
Пишется всё в первую очередь для внутреннего использования, поэтому какие-то специафические вещи, типа same или ignorepad пока что не учитываются.

Если кто проявит интерес к разработке и захочет поучаствовать, буду сильно признателен, т.к. времени на разработку в течение недели получается выделять немного.
Также, буду сильно благодарен тем, у кого хорошо с английским языком, т.к. мой write-english оставляет желать лучшего. Необходимо написать документацию на английском и подправить синтаксис сообщений об ошибках и предупреждениях.

Re: Cинтаксический анализ конфигурационных файлов Asterisk

Добавлено: 08 мар 2013, 15:23
zzuz
Впринципе TODO простецкий. Но вот когда дело дойдет до анализа строк приложений , где активно будут использоваться регулярные выражения или многоуровневые вложения булевских типов сравнений, то будет крайне весело). Использовать регулярные выражения для анализа регулярных выражений - звучит заманчиво.

Re: Cинтаксический анализ конфигурационных файлов Asterisk

Добавлено: 08 мар 2013, 15:25
zzuz
например анализ синтаксиса строки

Код: Выделить всё

exten => h,n,ExecIf($["${DIALSTATUS}"="NOANSWER"|"${DIALSTATUS}"="CANCEL"|"${DIALSTATUS}"="BUSY"|"${DIALSTATUS}"="CHANUNAVAIL"|"${DIALSTATUS}"="CONGESTION"]?ExecIF($[${VALID_EXTEN(ext-custom,${ext_id})}]?Gosub(ext-custom,${ext_id},1)))
А иногда еще нужно зарулить групповое сравнение. А если это будет еще и с вызовом AGI с хитро поданными именованными аргументами, то ваще будет бомба)

Re: Cинтаксический анализ конфигурационных файлов Asterisk

Добавлено: 08 мар 2013, 15:41
noize
zzuz, это планируется))
для начала, будет реализована проверка корректности конструкций exten =>, экстеншенов, приоритетов, закрытия всех открытых скобок в строке. И уже после будут написаны дополнительные модули для непосредственного анализа команд/функций диалплана.

Re: Cинтаксический анализ конфигурационных файлов Asterisk

Добавлено: 09 мар 2013, 00:29
gosha
vim вполне себе синтаксис конфигов астериска подсвечивает. не удивлюсь что emacs тоже...

Re: Cинтаксический анализ конфигурационных файлов Asterisk

Добавлено: 09 мар 2013, 00:55
ded
Для версий 1.0-1.2 быоа подсветка в Midnight commander.

Re: Cинтаксический анализ конфигурационных файлов Asterisk

Добавлено: 09 мар 2013, 02:37
noize

Код: Выделить всё

ls asterisk-1.8.20.0/contrib/editors/
ael.vim  asterisk.vim  asteriskvm.vim
Что касается модуля проверки синтаксиса, то когда разрабываешь сложную конструкцию диалпланов, с кучей инклудов файлов и контелстов, то сложно бывает отследить, где допустил ошибку. Бывает, что не поставил однку скобку и вся конструкция работает неправильно. Да и сам астериск не выводит при dialplan reload варнинги на строки с незакрытми скобками

Re: Cинтаксический анализ конфигурационных файлов Asterisk

Добавлено: 09 мар 2013, 02:52
ded
Выводит.

Re: Cинтаксический анализ конфигурационных файлов Asterisk

Добавлено: 09 мар 2013, 13:04
gosha
не надо путать vi и vim. не хочется холиварить но после приведенный мной редакторов сомнительным удовольствием кажутся все остальные...

Re: Cинтаксический анализ конфигурационных файлов Asterisk

Добавлено: 09 мар 2013, 13:34
zzuz
Да. Холивар про редактор в этом топике довольно странен. Каждому свое. Я вот перед сном вспоминаю весь перечень хоткеев в vi , потому что долго работая на фряшных машинах приходилось как мантру это заучивать. Нет ничего лучшего , есть только привычное.