Користувальницькькі налаштування

Налаштування сайту


Сайдбар

Розділи

Загальний опис
Історія змін
Рекомендації до оновлення
Плани на майбутнє
Відомі проблеми
Онлайн демо
Допомога проекту
Люди
Трохи про безпеку

FAQ



Редагувати сайдбар

remoteapi

Це стара версія документу!


API віддаленого виклику процедур

У Ubilling починаючи з релізу 0.3.1 підтримується виклик зовнішніми програмами певних внутрішніх процедур білінгу. Для цього потрібна опція REMOTEAPI_ENABLED=1 alter.ini. Для авторизації використається серійний номер Ubilling.

Формат викликів за допомогою HTTP GET запитів:

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

На даний момент підтримуються наступні action:

  • reset + param [login] - ресет пользователя, логин - объязательный параметр.
  • handlersrebuild - перестройка всех сетевых хендлеров и перезапуск dhcpd для соответствующих подсетей
  • catvfeeprocessing - снятие АП пользователей КТВ
  • vserviceschargefee + param [nofrozen] - снятие АП виртуальных сервисов. Необъязательный параметр nofrozen - не снимать АП с отморозков.
    • &period - позволяет указать период снятия оплаты в днях для фильтрации сервисов по этому признаку. Только сервисы, удовлетворяющие условиям фильтра будут обработаны, что позволяет, например, сделать раздельную обработку сервисов с помесячным и подневным снятием АП(да - таким образом можно делать несколько вызовов vserviceschargefee из crontab): &period=30 или &period=1.
      Так же можно группировать периоды снятия оплат в одном вызове, разделяя их подчеркиваниями: &period=30_7_15.
  • discountprocessing - обработка скидок
  • backupdb - резервирование БД
  • autocleandb - зачистка БД от старых логов и детальной статистики
  • swpoll - опрос всех устройств, из справочника “Свичи” при помощи SNMP с целью заполнения кеша сырых данных
  • swping - опрос всех устройств, из справочника “Свичи” “на живость” при помощи ICMP ping
  • fullhostscan + param [traffdiff] + nn - опрос всех клиентов из подсетей указанных в справочнике “Сети и сервисы” при помощи nmap а также при указании параметра traffdiff пытается анализировать активность по изменениям исходящего трафика. Также параметр nn (например &nn=1) отключает использование nmap, что радикально повышает быстродействие вызова fullhostscan.
  • 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 - собака-посылака пробегается по всем очередям для отправки и осуществляет отправку всех сообщений.
  • senddog + [param chkmsgstatuses] - нужно только при включенной истории СМС сообщений. Обязывает собаку-посылаку попытаться получить статусы ранее отправленных СМС.
  • ukvfeeprocessing - снятие АП пользователей УКВ
  • switchescoverage param [1000×800] - возвращает карту покрытия свитчами, с размерами указанными в param в формате XxY
  • rebuildglscache - принудительно перестраивается кеш глобального поиска.
  • uhwbrutecleanup - очищает реестр попыток перебора UHW
  • cudiscounts - запускает механизм обработки накопительных скидок.
  • crimeandpunishment - запускает механизм обработки преступления и наказания
  • oltpoll - запускает опрос всех OLT устройств.
  • reminder + [param force] - запускает SMS напоминалку. Очередь SMS будет обработана при следующем запуске senddog. Необязательный param=force осуществляет принудительную посылку всем пользователям, кроме замороженных - транслит принудителен.
  • friendshipdaily - производит внесение процентов по всем дружественным платежам, за предыдущие сутки.
  • freezemonth + [param debug2ublog] - производит списание средств у замороженных пользователей равным alter.ini:FREEZEMONTH_COST. Необязательный параметр debug2ublog включает дебаг-режим и запись происходящего в веблог.
  • writevlanmachistory - делает опрос по влан терминаторам и заносит маки абонентов в таблицу, записывает только если у какого-то конкретного абонента сменился мак (данные берет из своей таблицы, и не имеет ничего общего с маком в nethosts), так же определяет суммарное количество онлайн абонентов (вланов).
  • dealwithit - выполняет для пользователей задачи, за текущие сутки из планировщика “живи с этим”.
  • mgqueue - Производит запланированные отписки от тарифов Megogo
  • mgprocessing - Производит начисление АП по тарифам Megogo
  • mgfreecleanup - Производит ликвидацию уже тестовых подписок Megogo с просроченым периодом.
  • exhorse + [&ebobo=true] - Производит сбор данных и запись в базу, требуемых для работы экзистенциального коня.
  • policedog - Запускает быстрое сканирование собакой-полициякой. Раз в полчаса-час будет вполне нормально.
  • whydoyoucall - Получает данные с Askozia PBX о пропущенных звонках.
  • whydoyoucallstats - Записывает статистику пропущенных звонков за день в БД.
  • asterisk + [param login] - позволяет получить логин клиента по номеру телефона
  • asterisk + [param realname] - позволяет получить логин и ФИО клиента по номеру телефона в виде [login]-[FIO];
  • asterisk + [param swstatus] - позволяет получить состояние оборудования к которому привязан клиент в билинге по номеру телефона (Ответ будет: OK или DIE)
  • asterisk - возможен следующий запрос: /?module=remoteapi&key=[ubserial]&action=asterisk&number=[mobile_number]&param=[login|realname|swstatus|userstatus|setcredit|paycardpay|setpause|setunpause|getuserdatabylogin|getuserdatabymobile|getcontractsbymobile|addusermobile|getvservicescount|getonlinedaysleft|getcontragentdata|getuserspends]
    • &param=userstatus - позволяет использовать два вполне себе “self explanationary” дополнительных параметра: &ignorecache=true и &getmoney=true
    • &param=setcredit - обязывает использовать дополнительные параметры: &login=some_user_login, &money=123.45 и &expiredays=7.
    • &param=paycardpay - обязывает использовать дополнительные параметры: &login=some_user_login и &paycardnum=987654321. Параметр &paycardcashtype=24 - необязателен, подразумевает ID типа оплат и по-умолчанию равен 1.
    • &param=setpause - обязывает использовать дополнительный параметр: &login=some_user_login.
    • &param=setunpause - обязывает использовать дополнительный параметр: &login=some_user_login. Настойчиво рекомендуем использовать данный функционал крайне осторожно, поскольку каких либо особых проверок состояния юзера перед разморозкой НЕ проводится.
    • &param=getuserdatabylogin - обязывает использовать дополнительный параметр: &login=some_user_login. При использовании необязательного параметра &userpass=some_password будет произведена верификация пары “логин + пароль” перед возвратом данных юзера.
    • &param=getuserdatabymobile|getcontractsbymobile - не подразумевают использования каких-либо дополнительных параметров, кроме &number=[mobile_number] и их действия/возвращаемые данные вполне себе соответствуют их наименованиям.
    • &param=addusermobile - помимо &number=[mobile_number] обязывает так же использовать параметр &login=some_user_login, что, как бы, логично. Необязательный параметр &maxmobilesamnt=4 указывает максимально возможное количество мобильных номеров на одного юзера.
    • getvservicescount - подразумевает возможность поиска юзера по номеру телефона &number=[mobile_number] или логину. Возвращает количество виртуальных сервисов, привязанных к определенному пользователю.
    • getonlinedaysleft - подразумевает возможность поиска юзера по номеру телефона &number=[mobile_number] или логину &login=some_user_login. Вы также можете использовать параметр includevsrvs=true, чтобы включить стоимость виртуальных услуг в расчет “оставшихся дней в сети”. Возвращает количество «оставшихся дней в сети» для определенного пользователя.
    • getcontragentdata - подразумевает возможность поиска юзера по номеру телефона &number=[mobile_number] или логину &login=some_user_login. Возвращает данные связанного контрагента для определенного пользователя.
    • getuserspends - подразумевает возможность поиска юзера по номеру телефона &number=[mobile_number] или логину &login=some_user_login. Вы также можете использовать параметр includevsrvs=true, для получения всех виртуальных услуг в дополнение к основному тарифу. Возвращает информацию о тарифе пользователя и его стоимости, а также, опционально, аналогичную информацию о виртуальных услугах пользователя в формате:
        array(TarrifName => array('price' => TariffCost, 'daysperiod' => TariffChargePeriod),
              Vservice1 => array('price' => Vservice1Cost, 'daysperiod' => Vservice1ChargePeriod),
              Vservice2 => array('price' => Vservice2Cost, 'daysperiod' => Vservice2ChargePeriod), 
              VserviceN => array('price' => VserviceNCost, 'daysperiod' => VserviceChargePeriod)
             )
        //Примечание: "TarrifName => TariffCost" - всегда первый элемент массива
    • - ! -
      • * Стоит отметить, что getuserdatabylogin|getuserdatabymobile|getcontractsbymobile|getcontragentdata|getuserspends возвращают данные в формате JSON.
      • * Все значения дополнительных параметров, конечно же, указаны как пример.
  • nasmon - производит опрос серверов NAS из справочника на тему их живости.
  • mtsigmonpoll - производит опрос Mikrotik и UBNT устройств для получения уровней сигнала.
  • sormcast - производит выгрузку данных в ИС СОРМ Яхонт.
  • askozianum + [param mobilenumber] - возвращает состояние пользователя по номеру его мобильного номера: 0 - не найден, 1 - найден и с ним все хорошо, 2 - должник, 3 - отморозок.
  • freezedayscharge + [param debug2ublog] - запускает процесс обработки замороженных пользователей при включенном ограничении количества дней заморозки. Списывает или начисляет доступные дни заморозки, а так же отключает заморозку тем, кто исчерпал свои доступные дни заморозки. Необязательный параметр debug2ublog включает дебаг-режим и запись происходящего в веблог. Подробнее
  • mikrotikdnshaper + [param downshift] - запускает обработку правил динамического шейпера для Mikrotik NAS. Опциональный параметр downshift указывает обработчику вернуть пользователям скорости согласно их тарифных планов. Подробнее
  • getagentdata + [param login] - возвращает JSON с данными о присвоенном пользователю контрагенте.
  • districtscache - обновляет кэш соответствия пользователей районам.
  • smszilla + filterid + templateid + [translit] - производит рассылку по заранее заданным фильтрам с определенным шаблоном и опциональным принудительным транслитом при помощи SMSZilla.
  • multigen - производит быструю регенерацию всех сценариев и отработку требуемых сервисов
  • multigentotal - очищает все сценарии, потом производит регенерацию всех сценариев и выполняет требуемые сервисы (не рекомендуется использовать просто так)
  • multigentraff - аггрегирует статистику сессий из таблички аккаунтинга и обновляет трафик пользователей stargazer-а.
  • multigenpod + [param login] - шлет PoD на NAS пользователя с логином указанным в параметре param. Управляется опцией MULTIGEN_POD_ON_MAC_CHANGE.
  • onepunch + [param alias] - запускает выполнение существующего One-Punch скрипта.
  • paycardsqueue - обрабатывает очередь платежных карточек и помечает их как полностью “использованные”.
  • salarytelegram - рассылает сотрудникам закрытые на них работы за день.
  • warehousetelegram - рассылает сотрудникам забронированные на них ТМЦ.
  • ddt - вызывает периодическую обработку тарифов судного дня.
  • visorcharge - производит начисление средств для камер в случае их дефицита, в последний день месяца с основного аккаунта.
  • fdbarchive - производит сохранение текущего кэша FDB для архива. При необходимости производит ротацию.
  • remotedhcp - возвращает данные необходимые для синхронизации удаленными DHCP серверами.
  • stgfeecharge2mysql - создает кэш последних списаний денежных средств старгейзером со счета пользователя для каждого логина вытягивая это все из stargazer.log. Нужно для корректной работы функционала, включаемого опцией alter.ini ONLINE_SHOW_LAST_FEECHARGE.
  • smartup - вызов предназначен для обеспечения базовой интеграция c сервисом SmartUP.
  • envyarchive - сохраняет конфигурацию всех завистливых устройств в архиве.
  • autocredit - вызывает автоматическое кредитование особенных пользователей в последний день месяца.
  • sc +[login,cr,end,fee,ct] - вызывает процедуру установки кредита пользователя.
  • pt - вызывает обработку Мощей тарифов.
  • usercash - денежные операции пользователя. Принимает параметры login (логин), summ(сумма денег), ct(тип оплат), op (add/correct/set/mock), note(примечание). Пример: usercash&login=sometestuser&summ=2&ct=1&op=correct&note=test
  • ptvchargefee - производит начисление АП всем подписчикам ProstoTV.
  • karmaguard - пытается автоматически чинить карму пользователям, у которых она по какой-то причине успела испортиться.
  • callmeback + [param number] - создает новую заявку для модуля Перезвоните мне пожалуйста.
  • olltvchargefee - производит тарификацию услуг OllTV.
  • opayzsmsnotify - запуск рассылки СМС уведомлений OpenPayz.
  • cachedog - следит за инвалидацией кэша полных пользовательских данных. В момент вызова проверяется состояние всех пользователей и в случае если оно не соответствует закэшированному в ключе USER_ALL_DATA - последний просто сбрасывается.
  • telepony + number - реагує на вхідний дзвінок TelePony.
  • fastping - опитує пристрої з довідника комутаторів на живість за допомогою FastPing.
  • feesharvester - реплікує дані про нарахування АП з логу Stargazer до БД. З додатковим параметром full - сканує весь лог за весь час, з параметром today - тільки за поточну добу, без параметрів - за поточний місяць.
  • btrxupd - Пушить за наявності всі зміни в абонбазі для CRM Bitrix24

При неверных вызовах 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"
*/10 * * * *    /bin/ubapi "fastping"
5 * * * *       /bin/ubapi "fullhostscan&param=traffdiff&nn=1"
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"
*/30 * * * *    /bin/ubapi "mtsigmonpoll"
10 10 1 * *     /bin/ubapi "autocleandb"
10 */1 * * *    /bin/ubapi "fdbarchive"
*/10 * * * *    /bin/ubapi "oltpoll"
*/20 * * * *    /bin/ubapi "cachedog"
*/2 * * * *     /bin/ubapi "multigen"
10 0 * * *      /bin/ubapi "feesharvester"

Это необходимый минимум(!) для обеспечения минимально рабочего состояния Ubilling.

remoteapi.1686838047.txt.gz · Востаннє змінено: 2023/06/15 17:07 повз nightfly