Документация Flussonic Media Server

Contents

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

В Flussonic 18.05 появилась возможность создавать авторизационные бэкенды в основном файле конфигурации.

Можно указать белые и черные списки для IP адресов, токенов, User-Agents, стран, несколько параллельных HTTP-бэкендов. Не требуется писать свои lua-скрипты.

Настройка авторизации

Добавьте в файл /etc/flussonic/flussonic.conf:

auth_backend main {
  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://main:

stream ort {
  url udp://239.255.0.1:1234;
  auth auth://main;
}

Правила срабатывают после перезагрузки конфигурации.

Опция allow default

Опция allow default разрешает доступ к видео всем клиентам (получателям), кроме перечисленных в опции deny. Если эта опция не указана, то доступ к потоку запрещается для всех клиентов, а не только для тех, которым вы запретили явно через deny.

В версии 19.02 и выше эта опция разрешает просмотр потока в случае, когда авторизационный бэкенд не отвечает по причине неработоспособности скрипта или ошибки на сервере. Таким образом, опция allow default оставляет возможность доступа к контенту в случае неработоспособного бэкенда.

Рассмотрим, как Flussonic поступает с разными ответами от бэкенда и как влияет опция allow default на решение о предоставлении доступа к видеопотоку.

Опция allow default в случае одного бэкенда

Если авторизационный бэкенд запрещает доступ (отвечает с кодом ошибки 403 Forbidden), Flussonic не разрешит доступ к содержимому, даже если в конфигурации указано allow default.

Однако если бэкенд не отвечает (не работает по причине ошибки) или произошла ошибка сервера, на котором работает бэкенд-скрипт, Flussonic разрешает доступ к содержимому. Т.е. при помощи опции allow default Flussonic оставляет возможность доступа к контенту в случае неработоспособного бэкенда.

Опция allow default в случае нескольких бэкендов

Если у вас несколько параллельных бэкендов, правила примерно те же.

Если хотя бы один из бэкендов разрешает доступ, а остальные бэкенды запрещают его или не отвечают, то доступ будет разрешен.

Если хотя бы один из бэкендов запрещает доступ, а остальные не отвечают, т.е. ни один не разрешает, доступ будет запрещен.

Однако если все бэкенды не работают (не отвечают), Flussonic разрешает доступ к содержимому (при наличии в настройках потока опции allow default).

В таблице показана логика авторизации при использовании нескольких бэкендов для потока:

Backend 1 Backend 2 Backend 3 Результат
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 http://127.0.0.1/tv/auth; # iptv plugin
  backend http://<HOSTNAME>/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 myauth {
  allow token friend_token1;
  allow token friend_token2;
  backend http://<HOSTNAME>/stalker_portal/server/api/chk_flussonic_tmp_link.php;
}

Разрешить только свои приставки по User-Agent, остальных блокировать

auth_backend agents {
  allow ua MAG;
  allow ua TVIP;
}