Skip to content

Конфигуратор бэкендов

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 проверяет правила в следующем порядке:

  1. allow token
  2. deny token
  3. allow ip
  4. deny ip
  5. allow country (страна)
  6. deny country (страна)
  7. allow ua (useragent)
  8. deny ua (useragent)
  9. Опрашивает несколько параллельных бэкендов

  10. Запрещает доступ, если не указано 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;
}