Конфигуратор бэкендов¶
Flussonic позволяет создавать авторизационные бэкенды в основном файле конфигурации.
Можно указать белые и черные списки для IP-адресов, токенов, User-Agents, стран, несколько параллельных HTTP-бэкендов. Не требуется писать свои lua-скрипты.
Настройка авторизации¶
Добавьте в файл /etc/flussonic/flussonic.conf
:
auth_backend myauth1 {
allow ip 127.0.0.1;
allow ip 192.168.0.1;
allow ip 172.16/24;
deny ip 8.8.8.8;
allow country RU US;
deny country GB;
allow token test_token1;
deny ua "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.10)";
backend http://stalker-1.iptv.net/auth.php;
backend http://stalker-2.iptv.net/auth.php;
}
allow
— объявляет "белый" список, т.е. немедленно разрешает просмотр без дальнейших проверок.deny
— объявляет черный список, запрещает просмотр.
Flussonic проверяет правила в следующем порядке:
- allow token
- deny token
- allow ip
- deny ip
- allow country (страна)
- deny country (страна)
- allow ua (useragent)
- deny ua (useragent)
-
Опрашивает несколько параллельных бэкендов
-
Запрещает доступ, если не указано
allow default
.
Приоритет правил важен. Правила с более высоким приоритетом применяются немедленно, и тогда правила с более низким уже не учитываются. Например, если вы разрешили IP-адрес, но клиентское приложение или устройство приходит с запрещенным токеном, доступ будет запрещен, т.к. у токена приоритет выше.
Чтобы использовать этот авторизационный бэкенд для потока, укажите auth://myauth1
:
stream example_stream {
input udp://239.255.0.1:1234;
on_play auth://myauth1;
}
Правила срабатывают после перезагрузки конфигурации.
Опция allow default¶
Опция allow default
позволяет определить поведение в случае, когда ни один авторизационный бэкенд не отвечает (например, в случае получения ошибки в HTTP-ответе или неработоспособности скрипта). Если эта опция включена, всем клиенатам или устройствам, за исключнием явно перечисленных в опции deny
, будет предоставлен доступ к содержимому. Если же эта опция отключена, то всем клиенатам или устройствам, за исключнием явно перечисленных в опции allow
, доступ к содержимому будет запрещен.
Таким образом, опция allow default
оставляет возможность доступа к контенту в случае неработоспособного бэкенда.
Рассмотрим, как Flussonic поступает с разными ответами от бэкенда и как включенная опция allow default
влияет на решение о предоставлении доступа к видеопотоку.
Опция allow default в случае одного бэкенда¶
Если авторизационный бэкенд запрещает доступ (отвечает с кодом ошибки 4xx, например, 403 Forbidden
), Flussonic не разрешит доступ к содержимому, даже если в конфигурации указано allow default
.
Однако если бэкенд не отвечает (не работает по причине ошибки) или произошла ошибка сервера, на котором работает бэкенд-скрипт (с кодом ошибки 5xx, например, 500 Internal Server Error
), Flussonic разрешает доступ к содержимому всем клиентам или устройствам, кроме перечисленных в опции deny
.
Опция allow default в случае нескольких бэкендов¶
Если у вас несколько параллельных бэкендов, правила примерно те же.
Если хотя бы один из бэкендов разрешает доступ, а остальные бэкенды запрещают его или не отвечают, то доступ будет разрешен.
Если хотя бы один из бэкендов запрещает доступ, а остальные не отвечают, т.е. ни один не разрешает, доступ будет запрещен.
Однако если все бэкенды не работают (не отвечают), Flussonic разрешает доступ к содержимому всем клиентам, кроме перечисленных в опции deny
.
В таблице показана логика авторизации при использовании нескольких бэкендов для потока:
Backend 1 | Backend 2 | Backend 3 | Результат |
---|---|---|---|
allow | allow | allow | Allow |
ban | ban | ban | Ban |
ban | allow | ban | Allow |
not responding | not responding | not responding | Allow |
not responding | allow | not responding | Allow |
not responding | ban | not responding | Ban |
Примеры¶
Мультиавторизация и доступ из локальной сети¶
auth_backend multi_local {
allow ip 192.168.0/24;
backend iptv://localhost; # iptv plugin
backend http://examplehost/stalker_portal/server/api/chk_flussonic_tmp_link.php;
}
Заблокировать несколько пользователей, остальным разрешить¶
auth_backend blacklist {
deny ip 1.1.1.1;
deny ip 2.2.2.2;
deny ip 10.10/16;
allow default;
}
Использовать HTTP бэкенд и разрешить просмотр видео клиентам с указанными токенами¶
auth_backend myauth2 {
allow token friend_token1;
allow token friend_token2;
backend http://examplehost/stalker_portal/server/api/chk_flussonic_tmp_link.php;
}
Разрешить только свои приставки по User-Agent, остальных блокировать¶
auth_backend agents {
allow ua MAG;
allow ua TVIP;
}