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

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


Сайдбар

Розділи

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

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 для відповідних підмереж
  • 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 - Записує статистику пропущених дзвінків за день у БД.
  • 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"

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

Страшні виклики про Asterisk

  • asterisk + [param login] - дозволяє отримати логін клієнта за номером телефону
  • asterisk + [param realname] - дозволяє отримати логін та ПІБ клієнта за номером телефону у вигляді [login]-[ПІБ];
  • 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.
      • * Все значения дополнительных параметров, конечно же, указаны как пример.

Обгортка

Для зручності та красивості, можна скористатися ось таким скриптом /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.1686839568.txt.gz · Востаннє змінено: 2023/06/15 17:32 повз nightfly