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 г.
Оглавление

 

Введение. 3

Принцип устройства Астериска. 3

Постановка задачи. 3

Дорожная карта проекта (new) 3

Документация на ACTOS. 4

Принципы организации ACTOS’a. 4

Общая архитектура модулей. 4

Глобальные переменные. 6

Управление переводом.. 8

Классы управления окнами. 8

Класс управления пользователями. 8

Класс управления контекстом соединения. 8

Файловый интерфейс. 8

Архитектура клиент/сервер. 8

Утилиты и драйвера. 9

Тестовая платформа. 10

Пример архитектуры. 10

Установка ASTERICKa. 10

Необходимое программное обеспечение: 10

Установка ACTOS’a. 10

Об авторе. 11

Источник публикации. 11

 


 

Введение.

 

Принцип устройства Астериска.

Астериск это программная, базирующаяся на идеологии Open Source для Линукс  PBX, несущая в себе всю функциональность, которую можно ожидать от обычной аппаратно реализованной PBX. Смотри http://www.asterisk.org/ для дополнительной информации.

 Управляющая программа такой PBX как Астериск служит, в основном, для коммутации телефонных вызовов между множеством IP портов. Она в равной степени позволяет контролировать доступ и производить авторизацию вызовов, или обеспечивать прозрачность связи между IP сетью и классической телефонной сетью (RPC). Управляющая программа ASTERISK это без сомнения самое многообещающее для PBX и постоянно развивающееся решение, благодаря большому числу разработчиков, её поддерживающих (смотри форум #asterick на FreeNode)

 

Постановка задачи.

 

Мы, однако, хотим отметить некоторые пробелы в том, что касается средств и методов конфигурирования.

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

 

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

 

Дорожная карта проекта (new)

 

Текущая версия: 2.1 В настоящий момент ACTOS используется более чем 1500 пользователями со всего света (США, Франция, Германия, Турция, Япония…)

 

Множество разработчиков участвуют в развитии проекта.

 

В процессе создания:

 

 

Документация на ACTOS

 

Принципы организации ACTOS’a.

 

ACTOS это прежде всего GUI, базирующийся на GTK и Glade.

Его интерфейс позволяет легко создать и редактировать все аспекты конфигурирования ASTERISK’ а ( абонентов, контексты схемы организации связи, протоколы…)

Благодаря специально выделенному интерпретатору команд, ACTOS позволяет как импортировать существующую конфигурацию, как и экспортировать её в стандартном формате ASTERISKa. Дополнительный модуль предусмотрен для экспорта в формате DeStar (DeStar это конфигурационное приложение разработанное в то же время, что и ACTOS, и авторы обоих стремились сделать оба инструментария совместимыми).

 

Файлы ASTERISKa, редактируемые ACTOS’ом в основном, следующие:

 

Общая архитектура модулей.

ACTOS структурно представлен большим числом файлов и модулей.

 

actos.py : Главная программа. Загружает параметры интерфейса, инициализирует требуемую языковую поддержку и режим логгинга, и запускает GUI.

actos.conf : Файл конфигурирования ACTOSa.  Содержит параметры интерфейса, языка, различные опции…

Другие модули, хранящиеся в подкаталоге actos_modules:

Global.py : содержит все глобальные переменные, словари переводов, различные возможные опции и пр… Это редактируемый файл, предназначенный для управления дополнительными новыми функциями в фазе разработки ASTERISKa.

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’ ом при старте. Это данные, которые должны быть востребованы в каждой новой версии ASTERISKa (перечень поддерживаемых команд, предопределённые в ASTERISK переменные и т.д. ...)


Глобальные переменные

Глобальные переменные хранятся в модуле Global.py и доступны через определение "GLOBAL"

GLOBAL.LANGUAGES Названия поставляемых файлов языков поддержки и ассоциированные с ними аббревиатуры

GLOBAL.PREFIXDIR Путь к каталогу данных ACTOSa (/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 Абонентские номера, специально предопределённые в ASTERISKe

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

Установка ASTERICKa

Загрузка последней версии по адресу:
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

Установка ACTOS’a

Загрузка последней версии:
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://www.derrier.com/pierre

 

Источник публикации.

Источник публикации: http://dev-eole.ac-dijon.fr/wiki/index.php/ACTOS

Статья в портале EoleWiKi была просмотрена 3156 раз на 11.03.2005 г.
Содержание статьи распространяется на условиях лицензии GNU Free Documentation License 1.2