====== Freeradius API ======
Предоставляет API интерфейс в биллинге для генерации radius конфигов и кеша пользователей.
[[billing/freeradius_cache]]
===== Активация =====
Настройки находятся по пути: Настройки => Системные опции => Внешние интеграции, раздел "freeradius"
{{:billing:freeradius_api.jpg?500|}}
\\ Для активации необходимо "Разрешить" использование функционала поставив галочку с одноименным названием.
\\ Далее необходимо указать IP адрес либо сеть с которой будут приходить запросы.
\\ И указать ключ который будет использоваться при запросах
===== Запросы =====
Параметр **request** принимает следующие значения:
* cache - для генерации кеша пользователей и может принимать следующие параметры
* config - для генерации файлов конфигурации
При генерации кеша пользователей, доступны следующие переменные:
* type - тип кеша, может принимать значения:
* accelv2 - для модуля BRAS accelv2
* pattern - генерируемая строка поиска абонента (по умолчанию local_mac), может принимать значения:
* {{local_mac}} - локальный MAC абонента
* {{local_ip}} - локальный IP абонента
* {{framed_ip}} - Framed IP абонента
* {{user}} - логин абонента
* {{password}} - пароль абонента
* {{dev_mac}} - МАК из устройства абонента (если в устройстве нет MAC используется local_mac)
При генерации файлов конфигурации, доступны следующие переменные:
* file - тип генерируемого файла, может принимать значения:
* clients- для генерации информации о BRAS
* radius - оптимальные настройки для radius (в разработке)
==== Примеры запросов ====
Для генерации файла clients.conf с информацией о BRAS серверах, необходимо выполнить запрос
https://admin.ispnet.demo/api/index/freeradius/key/1234567890/request/config/file/clients
В результате которого будут данные в виде:
client bras_1 {
#shortname = radius check2
#brastype = accelv2
ipaddr = 127.0.0.1
netmask = 32
secret = testing123
nastype = other
}
client bras_2 {
#shortname = junmx2
#brastype = junmxv2
ipaddr = 192.168.8.1
netmask = 32
secret = secret
nastype = other
}
client bras_3 {
#shortname = NAS 2
#brastype = accelv2
ipaddr = 192.168.200.4
netmask = 32
secret = secret
nastype = other
}
client bras_4 {
#shortname = PPPoE
#brastype = mikrotik
ipaddr = 192.168.1.205
netmask = 32
secret = secret
nastype = other
}
Для генерации кеш файла users с ответами на запросы авторизации от абонентов, необходимо отправить запрос
https://admin.ispnet.demo/api/index/freeradius/key/1234567890/request/cache/type/accelv2/pattern/{{dev_mac}}
В результате которого будут данные в виде:
00:00:00:00:00:06 Auth-Type := Accept
Framed-IP-Address = 192.168.1.10,
DHCP-Mask = 25,
DHCP-Router-IP-Address = 192.168.1.1,
DHCP-Domain-Name-Server = 8.8.8.8,
DHCP-Domain-Name-server = 192.168.1.1,
Acct-Interim-Interval = 300,
Filter-Id = 0/0,
L4-Redirect-ipset = active
00:00:00:00:02:03 Auth-Type := Accept
Framed-IP-Address = 10.100.200.144,
DHCP-Mask = 24,
DHCP-Router-IP-Address = 10.100.200.1,
DHCP-Domain-Name-Server = 10.100.200.2,
DHCP-Domain-Name-server = 10.100.200.1,
Acct-Interim-Interval = 300,
Filter-Id = 0/0,
L4-Redirect-ipset = active
00:00:00:01:02:03 Auth-Type := Accept
Framed-IP-Address = 10.100.200.144,
DHCP-Mask = 24,
DHCP-Router-IP-Address = 10.100.200.1,
DHCP-Domain-Name-Server = 10.100.200.2,
DHCP-Domain-Name-server = 10.100.200.1,
Acct-Interim-Interval = 300,
Filter-Id = 0/0,
L4-Redirect-ipset = active
00:00:22:33:44:55 Auth-Type := Accept
Framed-IP-Address = 10.0.1.24,
DHCP-Mask = 24,
DHCP-Router-IP-Address = 10.0.1.1,
DHCP-Domain-Name-Server = 8.8.8.8,
DHCP-Domain-Name-server = 10.0.1.1,
Acct-Interim-Interval = 300,
Filter-Id = 1024/2048,
L4-Redirect-ipset = active
01:00:00:02:03:04 Auth-Type := Accept
Framed-IP-Address = 10.2.0.2,
DHCP-Mask = 25,
DHCP-Router-IP-Address = 10.2.0.30,
DHCP-Domain-Name-Server = 1.1.1.1,
Acct-Interim-Interval = 300,
Filter-Id = 0/0,
L4-Redirect-ipset = active
88:11:22:33:44:70 Auth-Type := Accept
Framed-IP-Address = 10.0.1.22,
DHCP-Mask = 24,
DHCP-Router-IP-Address = 10.0.1.1,
DHCP-Domain-Name-Server = 8.8.8.8,
DHCP-Domain-Name-server = 10.0.1.1,
Acct-Interim-Interval = 300,
Filter-Id = 0/0,
L4-Redirect-ipset = active
===== Коды ошибок =====
* 0 => 'Success' - Запрос обработался без ошибок
* 1 => 'API not enable' - API не включено
* 2 => 'Wrong API key' - неверный ключ API
* 3 => 'Bad request' - в запросе нету ключа "request"
* 4 => 'Unknown request' - неизвестное значение ключа "request"
* 5 => 'Access denied from your IP' - доступа с вашего IP запрещен
* 6 => 'Bad type' - в запросе нету ключа "type"
* 7 => 'Unknown type' - неизвестное значение ключа "type"
* 8 => 'Bad file' - в запросе нету ключа "file"
* 9 => 'Unknown file' - неизвестное значение ключа "file"