Зміст

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:

У разі неправильних викликів Remote API повертатиме наступні помилки:

Якщо потрібно звідкись ззовні викликати якісь процедури з 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

        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" - завжди перший елемент масиву

Обгортка

Для зручності та красивості, можна скористатися ось таким скриптом /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.