Просмотр Исходного

Черновик документации по интеграции Carbon Reductor DPI X с биллингами.


h1. REST-API

У Carbon Reductor DPI X есть REST-API для управления абонентами.

Грубо говоря, это позволяет отправлять команды с помощью curl.

В текущей версии управление строится на добавлении и снятии политик для абонентов.

Абоненты идентифицируются по IP адресу, поэтому в случае снятия зеркала после NAT управление абонентами работать не будет.

h2. Как работает API

Схема REST API:

{code}
http://адрес-carbon-reductor-dpi-x:порт/api/v1/policy/название-политики/ip-адрес-абонента
{code}

Поддерживается 4 вида политики:

* auth - абонент авторизован
* negbal - абонент в отрицательном балансе
* blocked - абонент заблокирован администратором
* notify - абоненту будет один раз показано уведомление

Не обязательно включать все политики - достаточно выбрать необходимые в мастере настройки в веб-интерфейсе.

Действие с политикой зависит от HTTP-метода:

* GET - узнать применена ли сейчас эта политика к абоненту
* POST - применить политику к абоненту
* DELETE - прекратить применять политику к абоненту


h2. Примеры команд для управления абонентами

Пусть веб-интерфейс Carbon Reductor DPI X доступен по адресу [http://10.30.40.1:8083].


Авторизовать абонента 10.30.40.50

{code}
curl -XPOST http://10.30.40.1:8083/api/v1/policy/auth/10.30.40.50
{code}

Проверить, перенаправляется ли абонент 10.30.40.50 на страницу отрицательного баланса

{code}
curl http://10.30.40.1:8083/api/v1/policy/negbal/10.30.40.50
{code}


Перестать блокировать абонента 10.30.40.50


{code}
curl -XDELETE http://10.30.40.1:8083/api/v1/policy/blocked/10.30.40.50
{code}

Показать абоненту 10.30.40.50 уведомление один раз:

{code}
curl -XPOST http://10.30.40.1:8083/api/v1/policy/notify/10.30.40.50
{code}
h2. Что делать на биллинге

Настроить отправку команд. Многие биллинги делают это в виде bash-скрипта, в котором нужно определить нужные функции. Что-то вроде:

{code}
#!/bin/bash

user_auth() {
return 0
}

user_auth_cancel() {
return 0
}
user_balance_negative() {
return 0
}

user_balance_positive() {
return 0
}

user_block() {
return 0
}

user_unblock() {
return 0
}
{code}

Мы постараемся помочь с написанием таких скриптов, позже в этом разделе будут примеры скриптов для разных биллингов.