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

Применение конфигурации FreePBX

Добавлено: 19 дек 2012, 18:07
Sanek
Всем привет. Имеется астер 1.8.15.0 и пбх 2.10.1.2 Написал скрипт, который мониторит звонки по транкам и в случае какого либо сбоя должен транки отключать.
Суть моего скрипта заключается в следующем: он просматривает CDR записи в БД по каждому транку, и если пошли звонки с нулевой длительностью он отключает транк. Транк я отключаю путем изменения информации в БД, так вот FreePBX эти изменения видит, но посит нажать кнопочку "применения конфигов".
Вопрос к спецам: как автоматизировать применение конфига прямо из РНР скрипта (желательно с кусочком кода).

Re: Применение конфигурации FreePBX

Добавлено: 19 дек 2012, 18:36
SVoy
открываете код странички с кнопкой применить и смотрите что выполняет данная кнопка. Потом копируете этот кусок кода в ваш пхп-скрипт

Re: Применение конфигурации FreePBX

Добавлено: 19 дек 2012, 19:26
Sanek
Запуск retrieve_conf результата не дает.
При ковырянии РВХ заметил следующее: изменение БД нужного результата не приносит. Действительно, при открытии странички параметров транка РВХ показывает, что якобы транк выключен, даже показывает кнопочку применения конфигов, при нажатии на которую происходит релоад конфигов. Но сам астер транк не отключает. Нужно страничку открыть, нажать кнопку "сохранить" и потом применить конфиг - тогда транк астером отключится.

В общем пока буду ковырять код РВХ, а если у кого появятся мысли буду рад помощи.

Re: Применение конфигурации FreePBX

Добавлено: 19 дек 2012, 20:34
Sanek
switch, на счет функции need_reload наверное Вы ошиблись. Пока нашел только строку в БД с таким именем имеющую параметр enable disable. Эта переменная отвечает за вывод кнопки "применить конфиг".

При ковырянии кода понял следующее: всё крутится вокруг config.php
Вызов странички с транком: config.php?display=trunks&extdisplay=OUT_id (id - номер транка в БД)
Применение конфига: config.php?handler=reload

В общем стоит такая задача:
1)вызвать страничку с транком (см. выше) и сохранить изменения (пока не знаю как)
2)применить изменения (config.php?handler=reload)

На сегодня у меня пока всё, завтра продолжу муч... ковыряние кода.

P.S. Если будут мысли - пишите. Буду очень благодарен и с удовольствием поделюсь своим скриптом (мож кому пригодится ;) )

Re: Применение конфигурации FreePBX

Добавлено: 19 дек 2012, 20:41
ded
Sanek писал(а):Суть моего скрипта заключается в следующем: он просматривает CDR записи в БД по каждому транку, и если пошли звонки с нулевой длительностью он отключает транк.
Изучите как работает fail2ban, он делает именно то же самое: анализирует любой лог, который подсунуть, и по установленной частоте любого события (например - неправильный логин smtp) заносит ИП в черный список. Может модифицировать fail2ban для задачи отключения транков? Записи CDR можно для удобства кроме БД выгружать также в CSV для анализа fail2ban.

Re: Применение конфигурации FreePBX

Добавлено: 19 дек 2012, 20:46
Samael28
А если просто в системе выполнить amportal restart?

Re: Применение конфигурации FreePBX

Добавлено: 19 дек 2012, 23:32
Sanek
ded писал(а):Изучите как работает fail2ban
Он блочит по айпишнику, а если на одном айпи несколько транков?

Re: Применение конфигурации FreePBX

Добавлено: 19 дек 2012, 23:36
Sanek
Samael28 писал(а):А если просто в системе выполнить amportal restart?
Если не ошибаюсь (если ошибаюсь - поправьте) amportal рестартит ядро астера полностью, в связи с этим будут разорваны текущие звонки (либо затянется время на рестарт), в случае если идет поток - это не приемлемо.

Re: Применение конфигурации FreePBX

Добавлено: 19 дек 2012, 23:48
zzuz
Веб-фрейморк использует для применения конфигурации скрипт
/var/lib/asterisk/bin/module_admin reload

, а не retrieve_conf .

Re: Применение конфигурации FreePBX

Добавлено: 20 дек 2012, 00:00
Sanek
В дополнение к моему посту http://forum.asterisk.ru/viewtopic.php? ... 396#p27040

Суть моего скрипта заключается в следующем:
На астере поднято много транков на разные направления и на разных пользователей (астер работает в роли sip-прокси для пробития nat). Иногда транки "падают", т.е. через них начинают идти звонки с нулевой длительностью; так вот мой скрипт отслеживает такое поведение транка и его отключает. Так же в некоторых случаях бывает необходимость через определенные транки пропустить не более какого-то количества минут, при достижении которого транк необходимо вырубить.
Так же в моем скрипте есть админка, зайдя в которую под своим логином-паролем юзверь видит параметры только своих транков (префикс канала и статус). Если какой-то из его каналов отключен (это видно в админке, так же указывается дата и время отключения) юзеру достаточно проверить канал (исправить) и нажать на спец. ссылку для его включения - остальное должен делать скрипт.

Для включения-отключения транков у меня возникла мысль (сегодня к астеру доступ ограничен, так что ее проверю завтра): Как я понял, РВХ должна конфиги из БД перенести в астеровские конфиги. Так что попробую допилить свой скрипт, что бы переписать файлы конфигов для транков (как это делает РВХ) и выполнить retrieve_conf.