Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
abills:docs:nas:unifi:ru [2015/10/10 14:33]
anton
abills:docs:nas:unifi:ru [2016/10/24 15:13] (текущий)
asmodeus [Добавляем сервер доступа в ABIllS]
Строка 1: Строка 1:
 ===== Uni-Fi ===== ===== Uni-Fi =====
-Uni-Fi ​авторизация проходит через скрипт ​''​сgi-bin/​guest/​s/​default/​index.cgi''​ +[[abills:​docs:​nas:​unifi:​installation:​ru | Установка ​Uni-Fi ​контроллера]] \\ 
-В настройках Uni-Fi тип ​авторизации: External portal.+[[abills:​docs:​nas:​unifi:​init:​ru | Подключение скрипта авторизации ​]] \\
  
-В скрипте index.cgi есть 3 основные функции:​ +Uni-Fi авторизация проходит ​через скрипт ''​сgi-bin/guest/​s/​default/​index.cgi''​\\ 
-  * unifiLogin() +В настройках Uni-Fi выставить тип авторизации: External guest portal, и прописать адрес билинга.
-  * sendJson() +
-  * unifiLogout() +
-Авторизация ​клиента ​проходит ​в 3 стадии:​ +
-   - Неавторизированый клиент ​перенаправляется на ''​guest/​s/​default/​index.cgi''​, с GET параметрами,​ которые обрабатываются скриптом. +
-   - С страницы пользователя отправляется запрос для получения статуса ​клиента +
-   В зависимости от статуса,​ пользователю показывается форима логина или ​статус. +
-   - Если пользователю можно ходить ​в интернет, скрипт авторизируется на Uni-Fi контроллере,​ отправляет команду для ​авторизации ​пользователя, и выходит+
-   - Пользователя перенаправляет ​на URL, на который он хотел попасть.+
  
 +В скрипте 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 \\ Имя пользователя для контроля |
 +^Пароль: ​            | секретный ключ |
 +
 +