|
Версия 6.4 |
|
| ||||||||||||||||||||||||
Настройки ПомощниковДля того, чтобы указать путь к Внешнему Помощнику, через Веб Интерфейс Администратора откройте в области Установки страницу Общее и нажмите на ссылку Помощники: Флажок рядом с именем Помощника предписывает Серверу запускать указанную программу как отдельный процесс ОС.
Манифест Дочерних ПроцессовВ целях безопасности имена внешних программ, запускаемых Сервером CommuniGate Pro, должны быть указаны в файле Манифеста Дочерних Процессов. Это текстовый файл Settings/ChildProcs.data из директории данных Сервера.
Помимо программ-Помощников, Манифест также применяется к другим программам, которые могут запускаться Сервером:
Имена программ зависят от используемой ОС. В ОС Windows имена регистро-независимы, в Unix-подобных ОС имена регистро-зависимы. Строки из манифеста помимо пути и имени программы также могут включать идущие далее параметры командной строки Программы. Пробелы имеют значение. Пример для ОС Windows: CGPKAV\CGPKAV.exe CGPKAS\CGPKAS.exe c:\perl64\bin\perl authLDAPNewAD.pl Пример для Unix-подобной ОС: ./mmindex-helper CGPKAV/CGPKAV CGPKAS/CGPKAS /usr/local/bin/aspell -a --lang= Обратите внимание: указав на Unix-подобных ОС в Манифесте строки / и ., можно разрешить запускать программы с любыми именами. Протокол ПомощниковКогда программа-Помощник запущена, Сервер отправляет команды процессу Помощника через стандартный ввод процесса. Сервер читает ответы программы из стандартного вывода процесса. Команды и ответы являются текстовыми строками, оканчивающимся символом (символами) EOL, используемыми в ОС Сервера. Каждая команда начинается с последовательного числа и ответ, выдаваемый программой - Помощником, также начинается с этого же числа. Этот метод позволяет программе - Помощнику обрабатывать несколько одновременных запросов и возвращать ответы в любом порядке. Программа - Помощник может отправлять информационные ответы в любое время. Все информационные ответы начинаются с символа звездочка (*). Сервер игнорирует информационные ответы, но они могут появляться в Журнале работы Сервера. Строки с ответами, созданные в программе - Помощнике, должны иметь размер не более чем 4096 байт. Обратите внимание: коммуникация между Сервером и программой-Помощником происходит через каналы ОС и многие библиотеки, используемые для создания программ, осуществляют буферизацию выходных данных, отправляемых в каналы. Убедитесь, что ваша программа-Помощник использует в том или ином виде команду типа flush после отправки ответа на стандартный вывод, потому что в противном случае ответ может не достичь сервера. Текущей директорией запущенной программы-Помощника является директория данных CommuniGate Pro. Программы-Помощники не должны записывать ничего в своей поток стандартного вывода ошибок, за исключения случаев, когда им необходимо уведомить о причине сбоя перед аварийным завершением работы. CommuniGate Pro читает поток стандартного вывода ошибок только после завершения программы и, если программа записывала что-либо в этот поток во время обработки команды Сервера, то её работа может быть приостановлена операционной системой при переполнении буфера канала стандартного вывода ошибок. Команда "Версия Интерфейса" используется для обеспечения совместимости между различными версиями программ - Помощников и различными версиями Сервера CommuniGate Pro. Сервер отправляет эту команду, указывая реализованную в нём версию протокола:nnnnnn INTF serverInterfaceVersion где:
Программа - Помощник должна вернуть ответ INTF и поддерживаемую версию протокола. Когда Сервер прекращает свою работу или когда ему необходимо остановить программу - Помощника, он отправляет команду QUIT и затем закрывает стандартный ввод процесса. Программа - Помощник должна отправить ответ OK и прекратить работу в течение 5 секунд. Пример сессии (I: - команда сервера, отправленная на стандартный ввод программы, O: - ответы программы, записанные в её стандартный вывод, COMMAND - специальная команда Помощника):
В примере выше показывается, что сервер не ждёт ответа для отправки следующей команды, и что он может принимать ответы от нескольких отправленных ранее команд в любом порядке - до тех пор, пока эти ответы приходят в течение указанного ограничения времени. Внешняя АутентификацияПрограммы для Внешней Аутентификации могут использоваться для проведения аутентификации, управления пользователями и оказания услуг маршрутизации с использованием внешних источников данных. Протокол Интерфейса Внешнего Аутентификатора основывается на обычном Протоколе Помощников. В этом руководстве описывается Версия 11 Интерфейса Внешнего Аутентификатора. Когда пользователь должен быть аутентифицирован при помощи незащищённого (clear text) метода, Сервер отправляет следующую команду:nnnnnn VRFY (mode) name@domain password [loginAddress] где:
nnnnnn SASL(method) (mode) name@domain password key [loginAddress] где:
Если пароль принимается, то Внешний Аутентификатор должен вернуть положительный ответ: Если пароль не принимается, то должен возвращаться отрицательный ответ: Если пароль принимается и есть аутентификационный ответ, который должен быть возвращён клиенту, то положительный ответ должен возвращаться как строка в кавычках: Проверка SASL пароля требует, чтобы в программе Внешнего Аутентификатора все SASL методы и алгоритмы поддерживались корректно. Как альтернатива, программа Внешнего Аутентификатора может возвращать пароль пользователя в открытом виде, заставляя Сервер проверять пароль и рассчитывать аутентификационные ответы. Пароль пользователя в открытом виде должен возвращаться как строка в кавычках:
Программа Внешней Аутентификации может использоваться для получения паролей в открытом виде из внешних баз данных. Для того, чтобы получить пароль, Сервер отправляет следующие команды:nnnnnn READPLAIN name@domain где:
Программа должна возвращать пароль пользователя в открытом виде как строка в кавычках: Программы Внешней Аутентификации могут также использоваться для обработки неизвестных имён. Например, программа может осуществлять поиск во внешней базе данных, проверяя, существует ли в этой базе данных пользователь, создавать Пользователя, Псевдоним, Группу, Список Рассылки или Переадресатор используя CLI/APICommuniGate Pro и возвращать Серверу положительный ответ. В этом случае CommuniGate Pro повторно попытается открыть объект с указанным именем в этом домене. Для проверки неизвестного имени, Сервер отправляет следующие команды:nnnnnn NEW name@domain relayType где:
Если программа отправляет ответ OK, то Сервер снова пытается найти объект name в Домене domain. Если программа отправляет ответ ROUTED address, то Сервер берёт полученный address и перезапускает процедуру Маршрутизации с этим адресом. Маршрутизируемый адрес получает атрибут "can Relay", за исключением ситуации, если он был указан с префиксом [NORELAY]. Если программа отправляет ответ FAILURE, то Маршрутизатор Сервера возвращает код "временной внутренней ошибки" (этот код заставляет SMTP модуль вернуть код ошибки 4xx, а не код постоянной ошибки 5xx). Если программа отправляет любой другой ответ, то Маршрутизатор Сервера возвращает ошибку "неизвестный пользователь". Пример сессии:
Установка Домена "Обратиться к Помощнику для Неизвестных" указывает серверу использовать программу Внешнего Аутентификатора при адресации неизвестного имени. Программа Внешней Аутентификации может использоваться для помощи при Маршрутизации адреса. Если адрес направляется в домен @external, то "локальная часть" адреса передаётся Программе Внешней Аутентификации при помощи команды ROUTE:nnnnnn ROUTE <address> relayType где:
Если программа отправляет ответ ROUTED address, то Сервер берёт полученный address и перезапускает процедуру Маршрутизации с этим адресом. Маршрутизируемый адрес получает атрибут "can Relay", если он был указан с префиксом [RELAY]. Если программа отправляет ответ FAILURE, то Маршрутизатор Сервера возвращает код "временной внутренней ошибки" (этот код заставляет SMTP модуль вернуть код ошибки 4xx, а не код постоянной ошибки 5xx). Если программа отправляет любой другой ответ, то Маршрутизатор Сервера возвращает ошибку "не могу провести маршрутизацию адреса". Пример сессии:
Имя аутентифицированного Пользователя CommuniGate Pro, от имени которого выполняется операция, - authAccount. Если имя этого Пользователя неизвестно, то имя и квадратные скобки в команде не передаются. Программа должна либо отправить ответ OK, либо ответ FAILURE "errorCode". Внешние Фильтры СообщенийПрограммы - Внешние Фильтры Сообщений используются для фильтрования содержимого (от вирусов и спама). Протокол Интерфейса Внешнего Фильтра основывается на обычном Протоколе Помощников.
Если внешняя программа заканчивает свою работу аварийно, то CommuniGate Pro приостанавливает процесс Установки в Очередь до тех пор, пока внешняя программа не будет перезапущена. Внешние Помощники RADIUSВнешние RADIUS программы могут использоваться для проведения дополнительной проверки при операциях аутентификации, выполняемых через модуль RADIUS, а также для добавления дополнительных атрибутов в ответы RADIUS. Протокол Интерфейса Внешнего RADIUS основывается на обычном Протоколе Помощников. nnnnnn LOGIN name@domain attributes settings где: nnnnnn ACCEPT attributes где:
Если пароль не принимается, то должен возвращаться отрицательный ответ: nnnnnn ACCNT command name@domain attributes где:
nnnnnn OK где:
Атрибуты в словаре должны использовать цифровые значения как ключи (например, 27 для Session-Timeout). Следующие атрибуты интерпретируются как 32-битные целые значения и закодированы в словаре как числовые строки: Следующие атрибуты интерпретируются как 32-битные IP адреса и кодируются в словаре как строки вида aaa.bbb.ccc.ddd: Следующие атрибуты игнорируются в ответах Помощника: Все другие значения атрибутов кодируются либо как Строка, либо как Блоки Данных. Сервер использует формат Блоков Данных для тех значений атрибутов, которые содержат байты не из диапазона 0x20-0x7F. Если атрибут имеет несколько значений, то значение атрибута кодируется как Массив. Следующие атрибуты добавляются к атрибутам словаря, передаваемым Помощнику:
Атрибуты, специфичные для Производителя, представляются при помощи ключей с отрицательными цифровыми значениями. Абсолютное значение ключа является значением "VendorID". Для каждого VendorID, связанный с ним элемент является словарём. Ключи этого словаря являются специфичными для Производителя "типами производителя", со связанными с ними "специфическими атрибутами". Значения "специфических атрибутов" могут храниться как Строка, Блоки Данных, Числа или Массивы Строк, Блоков Данных и/или Чисел. Пример сессии (I: - команда сервера, отправленная на стандартный ввод программы, O: - ответы программы, записанные в её стандартный вывод):
Обратите внимание: Сервер может отправлять несколько параллельных запросов для одного Пользователя. Обратите внимание: Внешняя программа RADIUS вызывается, когда данные Пользователя открыты. В системе с Динамическим Кластером это означает, что Внешние программы RADIUS должны запускаться на Backend Серверах и такие Внешние программы RADIUS, запущенные на других Backend Серверах, никогда не получат одновременные запросы для одного и того же Пользователя. Внешние Обработчики CDRПрограммы - Внешние Обработчики CDR могут использоваться для обработки CDR (Call Detail Records, Детализированная Информация о Звонках), созданных компонентом Signal при попытках установления звонка и его дальнейшей обработке. Они также могут обрабатывать CDR записи, созданные CG/PL приложениями. Протокол Интерфейса Внешнего Обработчика CDR основывается на обычном Протоколе Помощников. Когда включена программа Внешний Обработчик CDR, то модуль Signal генерирует CDR и отправляет их в эту программу. При создании CDR Сервер отправляет следующие команды:nnnnnn CDR cdr_data где:
когда запись обработана, программа должна вернуть положительный ответ: Балансировщик Нагрузки DSRПрограммы Внешнего Балансировщика Нагрузки используются для управления программными балансировщиками нагрузки в Динамических Кластерах. Эти программы должны быть установлены и запущены на членах Кластера, которые могут выступать в качестве балансировщиков нагрузки. Для каждой "группы балансировки" Контроллер Кластера выбирает один из доступных балансировщиков и запускает его, в то время как остальные члены группы работают в режиме "горячей замены". Протокол Интерфейса Внешнего Балансировщика основывается на обычном Протоколе Помощников. nnnnnn MEMBERS (ip-address [,ip-address...] ) (ip-address [,ip-address...] ) где:
nnnnnn LOCAL ip-address где:
nnnnnn STARTBALANCER Когда балансировщик должен быть остановлен, программа получает команду: nnnnnn STOPBALANCER Помощники ПриложенийПомощники Приложений могут быть использованы из приложений на языке CG/PL для обмена произвольными данными. Протокол Помощников Приложений основывается на обычном Протоколе Помощников. nnnnnn USER user@domain REQ requestData где:
nnnnnn RESP responseData где:
Если программа Помощника Приложения не запущена, то любой запрос возвращает пустой ответ. Внешняя Рекламная СистемаПрограммы Внешней Рекламной Системы могут использоваться для обеспечения XIMSS клиентов "рекламными" данными (рекламной информацией, демонстрируемой клиентом пользователю). Протокол Интерфейса Внешней Рекламной Системы основывается на обычном Протоколе Помощников. nnnnnn BANNER bannerType [ accountName@domainName ] [ INFO bannerSetting ] [ PREFS bannerPreference ] [ PARAM paramData ] где:
nnnnnn RESULT resultData где:
nnnnnn BLOCK Указанный bannerType добавляется в список "заблокированных" типов. Если клиент запрашивает рекламу "заблокированного" типа, то ему немедленно возвращается пустой ответ, при этом вызова программы Внешней Рекламной Системы не происходит. Если программа Внешней Рекламной Системы не запущена, то любой запрос на рекламу возвращает пустой ответ. |