====== 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"