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

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


Сайдбар

Розділи

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

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 - виклик призначений для забезпечення базової інтеграції з сервісом 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 - запуск розсилки SMS сповіщень OpenPayz.
  • cachedog - стежить за інвалідацією кешу повних даних користувача. У момент виклику перевіряється стан всіх користувачів і якщо він, не відповідає закешованому в ключі USER_ALL_DATA - останній просто прибивається.
  • telepony + number - реагує на вхідний дзвінок TelePony.
  • fastping - опитує пристрої з довідника комутаторів на живість за допомогою FastPing.
  • feesharvester - реплікує дані про нарахування АП з логу Stargazer до БД. З додатковим параметром full - сканує весь лог за весь час, з параметром today - тільки за поточну добу, без параметрів - за поточний місяць.
  • btrxupd - Пушить за наявності всі зміни в абонбазі для CRM Bitrix24
  • btrxpolls - пушить дані про всі наявні опитування та їх результати до CRM Bitrix24
  • setculpa + [login,culpa] - встановлює користувачу login кульпу вказану в culpa
  • pseudocrm + [param] - виконує відповідний виклик функцій вказахнив в param з PseudoCRM.
  • stickynotify - виконує розсилку в Telegram всім активним працівникам, з кількістю їх активних персональних нотаток та нагадувань “на сьогодні”.
  • taskmannotify - виконує розсилку в Telegram всім активним працівникам, з кількістю запланованих на них задач планувальника задач “на сьогодні”.
  • ophanimtraff - виконує синхронізацію локальної БД з даними джерел OphanimFlow.

У разі неправильних викликів 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 - не вказано обов'язковий параметр для виклику поточної процедури (наприклад, логін користувача)

Якщо потрібно звідкись ззовні викликати якісь процедури з 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.txt · Востаннє змінено: 2024/01/02 17:55 повз nightfly