ACTOS
(Asterisk Configuration Tool
Open Source)
Приложение Open Source для конфигурирования Астериска.
Официальный
сайт проекта: http://www.ifrance.com/belikewater/code/actos.html
Статья
написана в среде EoleWiki, свободно доступном информационном портале.
Содержание
статьи распространяется на условиях лицензии GNU Free Documentation License 1.2
На
момент публикации перевода последняя модификация оригинального документа: 07.03
2005
Перевод
на русский: Юрий Караваев 11.03-12.03
2005 г.
(CopyLeft )
2005 г.
Оглавление
“Дорожная
карта” проекта (new)
Класс управления пользователями
Класс управления контекстом соединения
Необходимое программное обеспечение:
Астериск это
программная, базирующаяся на идеологии Open Source
для Линукс PBX,
несущая в себе всю функциональность, которую можно ожидать от обычной аппаратно
реализованной PBX. Смотри http://www.asterisk.org/
для дополнительной информации.
Управляющая программа такой PBX как Астериск служит, в основном, для коммутации телефонных вызовов между
множеством IP портов. Она в равной степени позволяет
контролировать доступ и производить авторизацию вызовов, или обеспечивать
прозрачность связи между IP
сетью и классической телефонной сетью (RPC). Управляющая программа ASTERISK это без сомнения самое многообещающее для PBX и
постоянно развивающееся решение, благодаря большому числу разработчиков, её
поддерживающих (смотри форум #asterick на FreeNode)
Мы, однако, хотим
отметить некоторые пробелы в том, что касается средств и методов конфигурирования.
В самом деле, ASTERISK конфигурируется посредством большого числа текстовых файлов, синтаксис
которых плохо читаем и слабо документирован. Невероятное число функциональных
нюансов и возможных опций делает конфигурирование ПО довольно тягостной
процедурой.
Исходя из этого
соображения и был разработан ACTOS:
сделать конфигурирование простым и интуитивно понятным, программа как бы ведёт
за руку оператора через выбор опций и эффективное создание правил коммутации.
Текущая версия: 2.1 В
настоящий момент ACTOS используется более чем 1500 пользователями со
всего света (США, Франция, Германия, Турция, Япония…)
Множество
разработчиков участвуют в развитии проекта.
В процессе создания:
ACTOS это прежде всего GUI, базирующийся на GTK и Glade.
Его интерфейс
позволяет легко создать и редактировать все аспекты конфигурирования ASTERISK’ а ( абонентов, контексты схемы организации
связи, протоколы…)
Благодаря специально
выделенному интерпретатору команд, ACTOS позволяет как импортировать
существующую конфигурацию, как и экспортировать её в стандартном формате ASTERISK’ a.
Дополнительный модуль предусмотрен для экспорта в формате DeStar (DeStar это конфигурационное
приложение разработанное в то же время, что и ACTOS, и авторы обоих стремились сделать оба
инструментария совместимыми).
Файлы ASTERISK’a,
редактируемые ACTOS’ом в основном,
следующие:
ACTOS структурно представлен большим числом файлов
и модулей.
actos.py : Главная программа. Загружает параметры интерфейса, инициализирует
требуемую языковую поддержку и режим логгинга, и запускает GUI.
actos.conf : Файл конфигурирования ACTOS’ a. Содержит параметры интерфейса, языка,
различные опции…
Другие модули,
хранящиеся в подкаталоге actos_modules:
Global.py : содержит все глобальные переменные, словари
переводов, различные возможные опции и пр… Это редактируемый файл,
предназначенный для управления дополнительными новыми функциями в фазе
разработки ASTERISK’a.
Interface.py : содержит классы управления графическим
интерфейсом GLADE/GTK.
Windows.py: основной модуль управления окнами. Включает
основной класс WindowCtrl из которого производными являются классы,
специфические для каждого окна (по классу на каждое окно).
User.py : Управление пользователями
Context.py : Управление схемой организации связи
(контекстом соединений). Содержит интерпретатор, позволяющий загружать и обрабатывать файл "extensions.conf"
Filesystem.py : Управление файлами (импорт/экспорт файлов .conf, чтение файла конфигурации ACTOS, различные средства доступа к файлам)
ConfFilesDef.py : определение структуры файлов .conf для экспорта
Tools.py : подпрограммы, используемые в других модулях.
Анализатор синтаксических ошибок, различные действия над моделями данных, классы
управления модулями GLADE
или группами вспомогательных
утилит.
Com.py : простой клиент связи с ACTOS_SERVER (отсылка конфигурации на удалённый xocт)
Package ACTOS_SERVER состоит из сервера XMLRPC предназначенного к установке на ASTERISK, позволяющий запустить конфигурацию с удаленного
компьютера. Код серверной части находится, главным образом, в файле Server.py
Скрипты launch_me_to_install и setup.py позволяют автоматически устанавливать ACTOS.
Файлы .def содержат
данные, импортируемые ACTOS’ ом
при старте. Это данные, которые должны быть востребованы в каждой новой версии ASTERISK’ a
(перечень поддерживаемых команд, предопределённые в ASTERISK переменные и т.д. ...)
Глобальные переменные хранятся в модуле
Global.py и доступны через определение "GLOBAL"
GLOBAL.LANGUAGES Названия поставляемых файлов языков поддержки и ассоциированные с ними
аббревиатуры
GLOBAL.PREFIXDIR Путь к каталогу данных ACTOS’a (/usr/share/actos). В случае изменений пути не забудьте скорректировать также и
инсталляционный скрипт.
GLOBAL.GLADE_FILE Названия файлов GLADE
для каждого поддерживаемого
языка
GLOBAL.LOGFILE Обработчик log-файла. Инициализируется
скриптом actos.py
GLOBAL.ListeUsers и GLOBAL.ListeContextes Список абонентов и схем связи: эти два списка являют
собой конфигурацию, которая и редактируется и загружается в ASTERISK (исключая общие параметры протоколов)
GLOBAL.PROTOCOLS Общие параметры протоколов.
GLOBAL.TEMP_PROTOCOLS Временная копия общих параметров протоколов, позволяющая откатить
сделанные изменения.
GLOBAL.CONFROOMS Перечень конференц-групп с их паролями авторизации доступа.
GLOBAL.GLOBAL_PARAMS Параметры ACTOS’а, загруженные из actos.conf
GLOBAL.TOREGISTER Список запросов на регистрацию, загруженный из файлов
при импорте конфигураций и не сопоставленный автоматически с оператором.
GLOBAL.USER_TYPES Типы возможных абонентов (члены группы, отдельные абоненты, операторы...)
GLOBAL.AUTH_TYPES Возможные варианты способа авторизации доступа (plaintext,md5,rsa,...)
GLOBAL.TOS_TYPES Возможные варианты соглашений по качеству обслуживания (нет, минимальная
задержка, заданная полоса пропускания, гарантированность поддержания соединения,
критерий минимальной стоимости,...)
GLOBAL.DMTF_MODES Возможные режимы передачи DMTF тонов (по-умолчанию,
внутриполосно, rfc2833, информационный
обмен на установленном соединении,...)
GLOBAL.COLUMN_OF_TABLE_USERS Выводимые в окне EDIT_USER столбцы
GLOBAL.OPTIONS_USER перечень дополнительных опций выводимых в окне EDIT_USER
GLOBAL.DEFAULT_QUALIFY_MS Время по умолчанию в миллисекундах для регистрации соединения как
установленного
GLOBAL.DEFAULT_CONTEXTS Соединение, устанавливаемое по умолчанию, если ни один абонент не
определён как активизировавшийся
GLOBAL.DEFAULTS_NEW_USER Значения по умолчанию, присваемые при программировании нового абонента
GLOBAL.DEFAULT_EXTENSIONS Абонентские номера, специально предопределённые в ASTERISK’e
GLOBAL.CODECS Перечень возможных кодеков для заданной полосы пропускания
GLOBAL.ACTIONS Перечень команд (действий), возможных для заданной схемы связи в
соответствии с документацией.
GLOBAL.ACTIONS_AVAILABLE_WIZARD Описание действий, для которых было создано соответствующее окно
GLOBAL.ACTIONS_WITHOUT_PARAMS Перечень действий, не требующих параметров
GLOBAL.ACTIONS_MOSTUSED Перечень наиболее часто исполняемых действий
GLOBAL.VARIABLES Содержит перечень глобальных переменных, определённых оператором
GLOBAL.CHANNEL_VARS Специальные переменные предопределённые для транков (соединительных
линий) ASTERISK’ом в соответствии с документацией
GLOBAL.WORDS Перевод некоторых отдельных слов, зарезервированных для нужд программы.
Для облегчения программного кода
было принято решение не интегрировать «gettext».
Управление переводом осуществляется
с помощью словаря DICO находящегося в Global.py и метода _() который использует в качестве
параметра идентификатор сообщения + при необходимости, вставки для замены в
тексте вместо номеров %х% ( посмотрите файл, чтобы понять, это очень просто).
С каждым GLADE-окном ассоциирован класс из скрипта Windows.py
Все эти классы являются производными
от WindowCtrl
который содержит базовые
методы для управления окном GLADE.
Основными методами (параметры
варьируются от окна к окну) являются:
Update():
запуск и открытие окна
Valide(): верификация окна
Close(): закрытие окна
Update_parent(): запуск родительского окна, процедура, автоматически вызываемая при
закрытие текущего…
Всё находится в скрипте User.py
Всё находится в скрипте Context.py
Всё находится в скрипте Filesystem.py
Всё находится в скрипте Context.py
Чтобы избежать необходимости добавления новых
модулей в ACTOS, был разработан
специальный протокол, базирующийся на технологии XMLRPC.
Идея такова:
Серверу (ACTOS_SERVER)
известен список действующих паролей ассоциированных каждый со своим путем
доступа в соответствующий каталог/подкаталог. Конечно, он не сам это выдумал,
он был сконфигурирован. (Ха, фантастика)
Примеры:
Psw1
-> /etc/asterisk/
Psw2
-> /etc/configuration_temporaire/
Эти пароли и пути зашифрованы в
файле /usr/share/actos/passwd по нереверсивному алгоритму шифрования
(невозможно восстановить оригинальный пароль с помощью самой криптограммы)
Клиентская сторона должна
зашифровать пароль и послать его вместе с путём доступа к файлу на сервер. Для
большей безопасности этот ключ посылается при каждом запросе методом,
определяемом сервером.
Возможные методы (см. Server.py) следующие:
serveur.getfile(clé, chemin, fichier): открывается
FTP-сессия
(немного специальная) и посылает определённый в качестве параметра файл (от
клиента к серверу)
serveur.getfilelist(clé,chemin) : получает список файлов, предназначенный для
передачи
serveur.sendfile(clé,chemin, fishier) : открывает такую же FTP-сессию на сервере и посылает файл в качестве
параметра в сторону клиента.
serveur.ping() : позволяет проверить установленное соединение
serveur.identify(clé,chemin) : позволяет проверить авторизацию в начале сессии. Этот
метод инициируется при каждом переносе файла чтобы избежать любой возможный сбой
в политике безопасности.
ACTOS_SERVER запускается одновременно при запуске приложения “actos” на целевой машине, поэтому необходимо
удостовериться в том, что оператор имеет соответствующие права доступа к
каталогам, содержащим пароли с тем, чтобы он мог открывать файлы конфигурации и
перезапускать ASTERISK (посредством sudo: см. инсталляционные скрипты для более подробной
информации)
Всё следует искать в скрипте Tools.py
См. ссылку http://eole.orion.education.fr/wiki/index.php/Maquette_VoIP
Загрузка последней версии по адресу:
http://www.asterisk.org/index.php?menu=download
·
установленный пакет ядра Linux (Linux
Kernel Source)
·
bison
·
readline
·
readline-devel
·
openssl
·
openssl-devel
·
libtermcap
·
libtermcap-devel
·
newt
·
newt-devel
·
ncurses
·
ncurses-devel
Загрузка
последней версии:
http://www.ifrance.com/belikewater/code/actos.html
Необходимое
программное обеспечение:
·
Python >=2.3
·
Python-devel >=2.3
·
Glib >=2.0
·
GTK+ >=2.0
·
pyGTK >=2.0
·
libGlade
Всё есть
в файле INSTALL пакета
Pierre
Derrier
Neon/Nodal
Factory
Equipe
EOLE (Dijon, France)
I.N.S.A.
de Lyon (France)
Universitad
de las Americas (Puebla, Mexique)
pierre.derrier@laposte.net
Источник публикации:
http://dev-eole.ac-dijon.fr/wiki/index.php/ACTOS
Статья в портале EoleWiKi была просмотрена 3156 раз на 11.03.2005 г.
Содержание статьи распространяется на условиях лицензии GNU Free Documentation License 1.2