Установка Uni-Fi контроллера
Подключение скрипта авторизации
Uni-Fi авторизация проходит через скрипт сgi-bin/guest/s/default/index.cgi
В настройках Uni-Fi выставить тип авторизации: External guest portal, и прописать адрес билинга.
В скрипте index.cgi есть 3 основные функции:
Авторизация клиента проходит в 3 стадии:
guest/s/default/index.cgi
, с GET параметрами, которые обрабатываются скриптом.
Если уже авторизованный пользователь заходит на ту же страницу, ему показывает данные статуса и кнопку «Отключить»
В билинге есть сервер доступа Unifi. Там и в config.pl прописаны параметры соединения с сервером.
Поскольку сам Unifi ничего на билинг не отправляет, billd опрашивает unifi каждые 5 минут (плагин ubiquiti_online.pm, период можно поменять в настройках плагинов billd)
клиент подключается к точке. Через некоторое время (от 2 секунд) клиент появится в списке клиентов на контроллере. Когда клиент заходит в интернет (или когда ОС проверит наличие интернета), его отредиректит на портал указанный в настройках Unifi.
Тут вступает index.cgi
портала. По маку, который пришёл в запросе, он в списке клиентов на контроллере находит нужного и сверяет статус клиента.
Дальше, в зависимости от статуса:
Когда пользователь вводит свой логин и пароль. На сервер, скриптом страницы, асинхронно отправляется запрос на авторизацию, формируется внутренний запрос к Dv.
в ответе Dv при успешной авторизации возвращаются параметры таймаута сесии и скорости.
С этих параметров, формируется запрос на Unifi для авторизации пользователя на точке.
Если аторизация успешная, скрипт страницы после отображения сообщения, покажет таблицу статуса и запросит дополнительные даные для отображения клиенту. На этой же странице находится кнопка «Отключить», для самостоятельного завершения сесии клиентом.
Для удобности, в верхней части страницы - линк на страницу, куда направлялся пользователь.
Поскольку сам Unifi ничего не отправляет, то обновление даных происходит только, когда выполняется billd.
Billd опрашивает Unifi, и по макам клиентов, определяет к какой учетной записи они принадлежат и добавляет время.
Сама продолжительность сессии подсчитывается только когда сесия закончится, поэтому billd не скидывает абонентов.
Абонентов скидывает сам Unifi по таймауту сесии.
При повторной авторизации, биллинг сверит данные из пользовательского онлайна и если времени онлайна больше, чем позволено для тарифного плана, закончит сесию, и отдаст негативный результат аторизации.
/Настройка/Сервера доступа/