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

  1. Быстрый старт
  2. How To
  3. Потоковое вещание
    1. Публикация
    2. Прием мультикаста
    3. Варианты источников
    4. Переключение источников
    5. Плейлисты
    6. Наложение логотипа
    7. Миксер
    8. WebRTC публикация
    9. SDI
    10. Отправка на другие сервера
    11. Распознавание DVB субтитров
  4. Транскодер
    1. Логотип
    2. Hardware
    3. Скриншоты
    4. Мозаика
  5. DRM
    1. Simple CAS
    2. Conax DRM
    3. BuyDRM (KeyOS)
  6. Авторизация
    1. Конструктор бэкендов
    2. Сервис сбора статистики
    3. Domain lock
    4. Middleware
    5. Secure links
    6. Ограничение сессий
    7. Мультиавторизация
    8. Бан IP адресов
    9. DVR
    10. Aliaser
  7. API
    1. HTTP API
    2. Events API
    3. MySQL API
    4. SQL API для кластеров
    5. SNMP
  8. Кластер
    1. Ретрансляция
    2. Кластерный захват
    3. Балансировщик нагрузки
    4. Пиринг
    5. Организация CDN
  9. VOD
    1. Кэш
    2. Облако
    3. Транскодирование файлов
  10. DVR
    1. Настройка
    2. Timeshift
    3. Catchup
    4. Проигрывание
    5. Экспорт в MP4
    6. Доступ по протоколам
    7. Timelapse
    8. API
    9. Кластеризация DVR
    10. Репликация
    11. Облако
  11. Воспроизведение
    1. HLS
    2. embed.html
    3. HTML5 с низкой задержкой
    4. Плеер HTML5 с низкой задержкой
    5. MPEG-TS
    6. RTMP
    7. DASH
    8. HDS
    9. RTSP
    10. multicast, CBR UDP
    11. WebRTC проигрывание
    12. H.265
  12. Администрирование
    1. Установка
    2. Обновление

    3. Конфигурация
    4. Мониторинг
    5. Производительность
    6. Лицензия
    7. LUA скрипты
    8. Безопасность
    9. Let's Encrypt
    10. Миграция
  13. IPTV
    1. Захват спутникового видео
    2. Транскодирование
    3. Middleware в IPTV OTT
    4. Экспорт EPG со спутника
    5. Группы каналов

Псевдонимы для имен потоков

В Flussonic есть функция «Алиасер» — создание превдонимов для имен потоков и файлов. Она позволяет спрятать имена потоков от конечных пользователей. На каждый запрос от пользователя имя будет переписано на внутреннее имя, которое вы указали.

Итак, у вас есть поток «clock» и обычно вы даете пользователям ссылку http://192.168.2.3/clock/index.m3u8 Теперь вы оставить имя «clock», но давать людям ссылку http://192.168.2.3/crf7930803e4e334e104/index.m3u8

Это может пригодиться в ситуациях, если вам нужно:

  • спрятать имена потоков или файлов от пользователей, создать временные имена;
  • управлять именами потоков, что позволит делится потоками, отзывать embed.

Чтобы включить «Алиасер», вам нужно написать бэкенд с необходимой логикой и включить его в настройках Flussonic:

aliaser /opt/flussonic/priv/rewrite.lua;

Можно указать только один lua бэкенд. Он должен вернуть false или имя потока. Объект req с полем name передается бэкенду.

Если включен «Алиасер», то Flussonic будет передавать авторизационному бэкенду новый параметр:

  • user_name - оригинальное имя запрашиваемого потока.

Пример перезаписи бэкэнда Anchor Anchor x2

Мы покажем вам пример сценария перезаписи, который поможет вам понять механизм работы «Алиасера».

Представим себе, что мы хотим скрыть исходное имя потока clock от пользователя и дать ему временную ссылку.

Создайте файл /etc/flussonic/alias.lua с кодом:

a = {}

a["alias"] = "clock"

if a[req.name] ~= nil then
  return a[req.name]
else
  return req.name
end

и затем включите его в /etc/flussonic/flussonic.conf:

# Global settings:
...
aliaser /etc/flussonic/alias.lua;

Теперь мы можем получить доступ к потоку clock через два имени:

http://flussonic/clock/index.m3u8
http://flussonic/alias/index.m3u8

Вы можете добавить дополнительные псевдонимы для своих потоков. Например:

a = {}

a["alias"] = "clock"
a["alias2"] = "clock"
a["alias3"] = "clock"
a["bbc-news"] = "bbc"
a["bbc-entertainment"] = "bbc"
a["BBC"] = "bbc"

if a[req.name] ~= nil then
  return a[req.name]
else
  return req.name
end

Пример перезаписи бэкэнда: криптографическая версия Anchor Anchor x2

Мы покажем вам пример сценария перезаписи, который поможет вам понять механизм работы «Алиасера».

Представим себе, что мы хотим скрыть исходное имя потока clock от пользователя и дать ему временную ссылку.

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

Например, наш ключ будет 000102030405060707090A0B0C0D0E0F (16 байт), IV будет заполнен нулями, поэтому шестнадцатеричное значение зашифрованной строки clock с помощью aes ctr encryption будет: a5cd5454ec

Чтобы расшифровать его в нашем сценарии lua, нам нужно будет написать следующий бэкэнд:

decrypted = crypto.aes_ctr_decrypt(crypto.from_hex("000102030405060708090A0B0C0D0E0F"), crypto.from_hex(req.name))
return decrypted

Новое имя потока не будет уникальным, оно будет таким же.

Добавим к нашему имени потока некоторую случайную последовательность 4 байта. Теперь зашифрованные «1234» + «clock» будут: f7930803e4e334e104

Теперь на нашем веб-сайте нам нужно добавить 4 случайных байта перед нашим потока и затем зашифровать. Бэкенд будет выглядеть довольно просто:

decrypted = crypto.aes_ctr_decrypt(crypto.from_hex("000102030405060708090A0B0C0D0E0F"), crypto.from_hex(req.name))
return string.sub(decrypted,5)