Pull to refresh

Защита видеоконтента (flv) от кражи с помощью lighttpd

В этом посте я попробую подробно расписать как защититься от кражи видеоконтента. Для начала нужно определиться с ОС и сервером. Мой выбор пал на Ubuntu. Нам потребуется 2 http сервера: один — Apache, другой — Lighttpd. В качестве web-оболочки выбираем свой любимый двигатель CMS. На примере буду рассматривать datalife engine (DLE).

Настройка


Предполагается уже установленная ОС, apache2, lighttpd и CMS. В datalife engine создана первая новость. Для привязки материала и видеоролика используем дополнительное поле для новости, назовём к его idvideo.

Настройка lighttpd

В lighttpd нам потребуются несколько модулей (mod_secdownload, mod_flv_streaming, mod_evasive).

  • mod_evasive — ограничение кол-во соединений с 1 ip(Осторожно, не все провайдеры выдают каждому отдельный IP)
  • mod_secdownload — для предотвращения хотлинкинга
  • mod_flv_streaming — позволяет искать файлы FLV в использовании высокой производительности инфраструктуры в Lighttpd

Чтобы наши сервера не пересекались на портах меняем в lighttpd.conf порт на:

server.port = 81

В этом же файле дописываем в конце:

flv-streaming.extensions = ( ".flv" ) //маска файлов которые будем защищать;
secdownload.secret = "Ваш ключ" //уникальный ключ для доступа к видео архиву;
secdownload.document-root = "/var/www/video/" //папка с видео архивом(можно использовать подпапки);
secdownload.uri-prefix = "/films2/" //префикс для ссылок по которым обращаться к видео;
secdownload.timeout = 12 //длительность жизни ссылки(в секундах).


Готовим php файл для генерации ссылки

Вписываем переменные:

$id        = (isset($_GET['id'])) ? strval($_GET['id']) : 2;
$secret = "Ваш ключ";
$uri_prefix = "/films2/";

Вычисляем timestamp:

$f = "$path/$file";
$t = time();
$t_hex = sprintf("%08x", $t);
md5($secret.$f.$t_hex);

Склеиваем ссылку:

$url = sprintf('%s%s/%s%s', $uri_prefix, $m, $t_hex, $f, $f);

Ссылка для видеоплеера будет выглядеть так(http://mysite.com — заменить на свой):

http ://mysite.com:81$url

Если же у вас имеется несколько серверов хранения материала, тогда применяем парсирование php. Подключаем файл к базе. Используем GET запросы или же на ваш вкус. Php файл готов к работе.

Для аккуратности и помещения нашего php файла я использовал thickbox. В шаблоне нашей CMS подключил всё необходимое для наших библиотек:

<script type="text/javascript" src="path-to-file/jquery.js"></script>
<script type="text/javascript" src="path-to-file/thickbox.js"></script>
<style type="text/css" media="all">@import "path-to-file/thickbox.css";</style>

В месте предполагаемого запуска плеера нарисовал кнопку и вставил код:

</img src="ссыка к кнопке">

У меня получилось так:

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.