===== Uni-Fi ===== [[abills:docs:nas:unifi:installation:ru | Установка Uni-Fi контроллера]] \\ [[abills:docs:nas:unifi:init:ru | Подключение скрипта авторизации ]] \\ Uni-Fi авторизация проходит через скрипт ''сgi-bin/guest/s/default/index.cgi''\\ В настройках Uni-Fi выставить тип авторизации: External guest portal, и прописать адрес билинга. В скрипте index.cgi есть 3 основные функции:\\ * unifiLogin() - Вход в API * getJson() - Получение данных из контролера * sendJson() - Отправка команды * unifiLogout() - Выход из API Авторизация клиента проходит в 3 стадии:\\ - Неавторизированый клиент перенаправляется на ''guest/s/default/index.cgi'', с GET параметрами, которые обрабатываются скриптом.\\ - С страницы пользователя отправляется запрос на Uni-Fi контроллер для получения статуса клиента.\\ В зависимости от статуса, пользователю показывается форма логина или статус. \\ Если MAC адреса клиента нет в списке, полученном от контролера, выводится надпись "You have to be redirected via hotspot". - При получении скриптом формы авторизации, отсылается запрос в билинг. - Если пользователю можно ходить в интернет, скрипт отправляет на Uni-Fi команду для авторизации пользователя. - Пользователю показывает данные статистики и ссылку на URL, куда он хотел попасть и кнопку "Отключить". \\ Если уже авторизованный пользователь заходит на ту же страницу, ему показывает данные статуса и кнопку "Отключить" ==== Подробное описание ==== В билинге есть сервер доступа Unifi. Там и в config.pl прописаны параметры соединения с сервером.\\ \\ Поскольку сам Unifi ничего на билинг не отправляет, billd опрашивает unifi каждые 5 минут (плагин ubiquiti_online.pm, период можно поменять в настройках плагинов billd)\\ \\ клиент подключается к точке. Через некоторое время (от 2 секунд) клиент появится в списке клиентов на контроллере. Когда клиент заходит в интернет (или когда ОС проверит наличие интернета), его отредиректит на портал указанный в настройках Unifi.\\ \\ ==== Авторизация ==== Тут вступает ''index.cgi'' портала. По маку, который пришёл в запросе, он в списке клиентов на контроллере находит нужного и сверяет статус клиента.\\ \\ Дальше, в зависимости от статуса: * неавторизован - показывает форму логина * авторизован - показывает форму статуса (там где сначала колёсико крутится) * не нашёл MAC - отвечает, что нет такого клиента на контроллере. Когда пользователь вводит свой логин и пароль. На сервер, скриптом страницы, асинхронно отправляется запрос на авторизацию, формируется внутренний запрос к **Dv**.\\ в ответе **Dv** при успешной авторизации возвращаются параметры таймаута сесии и скорости.\\ \\ С этих параметров, формируется запрос на Unifi для авторизации пользователя на точке.\\ \\ Если аторизация успешная, скрипт страницы после отображения сообщения, покажет таблицу статуса и запросит дополнительные даные для отображения клиенту. На этой же странице находится кнопка "Отключить", для самостоятельного завершения сесии клиентом.\\ \\ Для удобности, в верхней части страницы - линк на страницу, куда направлялся пользователь.\\ ==== Аккаунтинг и продолжительность сесии ==== **Поскольку сам Unifi ничего не отправляет, то обновление даных происходит только, когда выполняется billd**. \\ \\ Billd опрашивает Unifi, и по макам клиентов, определяет к какой учетной записи они принадлежат и добавляет время.\\ \\ Сама продолжительность сессии подсчитывается только когда сесия закончится, поэтому **billd** не скидывает абонентов.\\ ** Абонентов скидывает сам Unifi по таймауту сесии.** При повторной авторизации, биллинг сверит данные из пользовательского онлайна и если времени онлайна больше, чем позволено для тарифного плана, закончит сесию, и отдаст негативный результат аторизации. ==== Добавляем сервер доступа в ABIllS==== ''/Настройка/Сервера доступа/'' ^IP| IP Адрес точки | ^Тип | Unifi | ^Alive | Время обновления статистики и подтверждения активности сессии. Рекомендуемое значение 300 | ^MAC | Мак точки доступа. Если не указать мак система не будет видить к какой точке атворизировался абонент в журнале последних подключений (''/ Отчёт / Интернет / Последнее подключение '') | ^Radius-Identifier | Unifi Site Name {{:abills:docs:nas:unifi:3neubz3_1_.png?nolin|}}. Берём с веб строки контролера. \\ Если поле не заполнено используется идентификатор **default** | ^:Управление: | | ^IP:PORT: | IP адрес и порт для контролера (по умолчанию 8443) | ^Пользователь: | admin \\ Имя пользователя для контроля | ^Пароль: | секретный ключ |