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

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


Сайдбар

Розділи

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

FAQ



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

Action disabled: media
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 - зняття АП користувачів УКВ
  • 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 - Отримує дані з PBX про пропущені дзвінки.
  • whydoyoucallstats - Записує статистику пропущених дзвінків за день у БД.
  • nasmon - здійснює опитування серверів NAS з довідника на тему їхньої живості.
  • mtsigmonpoll - проводить опитування Mikrotik, UBNT та інших бездротових пристроїв, для отримання рівнів сигналу.
  • 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 - DEPRECATED створює кеш останніх списань коштів старгейзером з рахунку користувача для кожного логіну витягаючи це все з 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.
  • userbyip + ip - повертає дані користувача за його IP.
  • 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.
  • callshistusrupd - виконує оновлення бази невідомих дзвінків, телепатично вгадуючи для них користувачів якщо вони з'явились вже після приходу дзвінка.
  • goose + [username|amount|stratid|runtime] - повертає дані необхідні для Опору Гусака.
  • onusigcompressor - стискає дані історії сигналів ONU, залишаючи по два записи на добу за всі місяці окрім поточного.
  • pbxmonrefill - оновлює кеш записів телефонних розмов в БД.
  • bgpmon - здійснює опит всіх пристроїв з довідника комутаторів з міткою BGPMON на предмет статистики BGP пірів.
  • getbgpstats - повертає JSON стану всіх BGP сесій на всіх BGPMON-маршрутизаторах.
  • opprocessing - запускає обробку всіх необроблених транзакцій Режиму високої продуктивності OpenPayz.
  • taxsupprocessing - обробка додаткових нарахувань користувачів.
  • generators - проводить обробку та запуск всіх One-punch скриптів, вказаних для пристроїв модуля Генератори з метою автоматичного визначення стану генераторів.
  • gencontrol + [start|stop]=generatorid - дозволяє вручну, віддалено проводити запуск чи зупинку обраних генераторів.
  • buildsmap - оновлює кеш мапи будинків.
  • debtrsarch - зберігає записи про поточних боржників та відморозків в архіві боржників, для подальшого аналізу.
  • sphidxr - оновлює індекс Sphinx search.
  • ctzilla + filterid + templateid - здійснює розсилку з заздалегідь заданими фільтрами з певним шаблоном за допомогою ClaptrapBot.
  • uscore + operation [+ login + value] - використовується для взаємозв'язку з кабінетом користувача.
  • sigreq - використовується сервісом прийому заявок на підключення. Воно вам не треба.

У разі неправильних викликів 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"
5 3 5 * *       /bin/ubapi "onusigcompressor"
*/2 * * * *     /bin/ubapi "opprocessing"
*/10 * * * *    /bin/ubapi "buildsmap"
*/30 * * * *    /bin/ubapi "sphidxr"

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

remoteapi.txt · Востаннє змінено: 2026/09/09 17:10 повз nightfly