API удаленного вызова процедур

В Ubilling начиная с релиза 0.3.1 поддерживается вызов внешними приложениями определенных внутренних процедур биллинга. Для этого требуется опция REMOTEAPI_ENABLED=1 в alter.ini. Для авторизации используется серийный номер Ubilling.

Формат вызовов при помощи GET:

http://billing.isp/?module=remoteapi&key=[ubserial]&action=[action][&param=[parameter]]

На данный момент поддерживаються следующие action:

  • reset + param [login] - ресет пользователя, логин - объязательный параметр.
  • handlersrebuild - перестройка всех сетевых хендлеров и перезапуск dhcpd для соответствующих подсетей
  • catvfeeprocessing - снятие АП пользователей КТВ
  • vserviceschargefee + param [nofrozen] - снятие АП виртуальных сервисов. Необъязательный параметр nofrozen - не снимать АП с отморозков.
  • discountprocessing - обработка скидок
  • backupdb - резервирование БД
  • autocleandb - зачистка БД от старых логов и детальной статистики
  • swpoll - опрос всех устройств, из справочника «Свичи» при помощи SNMP с целью заполнения кеша сырых данных
  • swping - опрос всех устройств, из справочника «Свичи» «на живость» при помощи ICMP ping
  • fullhostscan + param [traffdiff] - опрос всех клиентов из подсетей указанных в справочнике «Сети и сервисы» при помощи nmap а также при указании параметра traffdiff пытается анализировать активность по изменениям трафика.
  • rebuilduserdatacache - перестраивается кеш пользовательских даных в exports: cache_address, cache_ips, cache_mac
  • autofreeze + param [nocredit] - запускает процедуру автозаморозки пользователей с балансом ниже alter.ini:AUTOFREEZE_CASH_LIMIT
  • autofreezemonth + param [nocredit] - запускает процедуру автозаморозки пользователей с балансом ниже или равным alter.ini:(AUTOFREEZE_CASH_LIMIT*стоимость тарифа). Опциональный параметр nocredit символизирует своим видом исключение из автозаморозки пользователей, воспользовавшихся в текущем месяце функцией кредитования в кабинете пользователя.
  • watchdog - натравливает собаку-наблюдаку на исполнение ее задач
  • senddog - собака-посылака пробегается по всем очередям для отправки и осуществляет отправку всех сообщений.
  • ukvfeeprocessing - снятие АП пользователей УКВ
  • switchescoverage param [1000×800] - возвращает карту покрытия свитчами, с размерами указанными в param в формате XxY
  • rebuildglscache - принудительно перестраивается кеш глобального поиска.
  • uhwbrutecleanup - очищает реестр попыток перебора UHW
  • cudiscounts - запускает механизм обработки накопительных скидок.
  • crimeandpunishment - запускает механизм обработки преступления и наказания
  • oltpoll - запускает опрос всех OLT устройств.
  • reminder + [param force] - запускает SMS напоминалку. Очередь SMS будет обработана при следующем запуске watchdog. Необязательный param=force осуществляет принудительную посылку всем пользователям, кроме замороженных - транслит принудителен.
  • friendshipdaily - производит внесение процентов по всем дружественным платежам, за предыдущие сутки.
  • freezemonth - производит списание средств у замороженных пользователей равным alter.ini:FREEZEMONTH_COST
  • writevlanmachistory - делает опрос по влан терминаторам и заносит маки абонентов в таблицу, записывает только если у какого-то конкретного абонента сменился мак (данные берет из своей таблицы, и не имеет ничего общего с маком в nethosts), так же определяет суммарное количество онлайн абонентов (вланов).
  • dealwithit - выполняет для пользователей задачи, за текущие сутки из планировщика «живи с этим».
  • mgqueue - Производит запланированные отписки от тарифов Megogo
  • mgprocessing - Производит начисление АП по тарифам Megogo
  • exhorse - Производит сбор данных и запись в базу, требуемых для работы экзистенциального коня.
  • policedog - Запускает быстрое сканирование собакой-полициякой. Раз в полчаса-час будет вполне нормально.
  • whydoyoucall - Получает данные с Askozia PBX о пропущенных звонках.
  • whydoyoucallstats - Записывает статистику пропущенных звонков за день в БД.
  • asterisk - позволяет получить логин клиента или состояние оборудования к которому привязан клиент в билинге по номеру телефона (Ответ будет: OK или DIE). Подробнее пока здесь.
  • jungen - производит регенерацию всех изменившихся/отсутствующих атрибутов для пользователей на NAS Juniper
  • nasmon - производит опрос серверов NAS из справочника на тему их живости.
  • mtsigmonpoll - производит опрос Mikrotik и UBNT устройств для получения уровней сигнала.

При неверных вызовах Remote API будет возвращать следующие исключения:

  • ERROR:GET_NO_ACTION - не указана процедура которую следует вызвать
  • ERROR:GET_WRONG_KEY - указан неверный серийный номер Ubilling
  • ERROR:NO_UBSERIAL_EXISTS - не сгенерирован серийный номер Ubilling (можно узнать в модуле «Состояние системы»)
  • ERROR:GET_NO_KEY - не указан серийный номер Ubilling
  • ERROR:API_DISABLED - Remote API отключена при помощи параметра REMOTEAPI_ENABLED=0 в alter.ini
  • ERROR:GET_NO_PARAM - не указан объязательный параметр для вызова текущей процедуры (например логин пользователя)

На данный момент вызовы reset и handlersrebuild используються для работы UHW. Пока что мы не хотим выносить слишком много излишнего функционала в это API в целях безопасности. Если вы хотите вызывать что-то из того что делает Ubilling в своих внешних приложениях - мы с удовольствием рассмотрим все предложения.

Если требуется вызов каких-то процедур из API (а оно для этого и есть), можно оформить это в таком виде:

/usr/local/bin/curl -o /dev/null "http://127.0.0.1/billing/?module=remoteapi&key=ваш_серийник&action=vserviceschargefee"

или так

/usr/local/bin/curl -o /dev/null "http://127.0.0.1/billing/?module=remoteapi&key=ваш_серийник&action=swping"

Мысль надеюсь понятна.

Обертка

Для удобства и красивости, можно воспользоваться вот таким скриптом /bin/ubapi (не забываем chmod a+x /bin/ubapi) :

ubapi
#!/bin/sh
 
#= Change this to your real  Ubilling serial ==
UBSERIAL=UB000000000000000000000000000000000
#==============================================
if [ $# -ne 1 ]
then
  echo "Usage: /bin/ubapi \"action\""
  echo "Example: /bin/ubapi \"backupdb\" or /bin/ubapi \"swping\""
  exit
fi
 
ACTION=$1
/usr/local/bin/curl -o /dev/null "http://127.0.0.1/billing/?module=remoteapi&key=${UBSERIAL}&action=${ACTION}"

Начиная с релиза 0.8.0 он уже лежит по нужному пути. Вам стоит только установить в нем серийник вашего Ubilling.

И дальше что?

И как теперь будет выглядеть crontab -e в минимальном джентльменском наборе? А вот как-то так:

40 1 1 * *      /bin/ubapi "vserviceschargefee"
*/20 * * * *    /bin/ubapi "swping"
5 * * * *       /bin/ubapi "fullhostscan&param=traffdiff"
0 */1 * * *     /bin/ubapi "swpoll"
*/10 * * * *    /bin/ubapi "watchdog"
*/5 * * * *     /bin/ubapi "senddog"
1 1 * * *       /bin/ubapi "backupdb"
3 * * * *       /bin/ubapi "rebuildglscache"
10 2 * * *      /bin/ubapi "dealwithit"
50 23 * * *     /bin/ubapi "exhorse"
*/10 * * * *    /bin/ubapi "nasmon"
remoteapi.txt · Последние изменения: 2017/09/15 11:56 — pautina
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki