Как стать автором
Обновить

Защита видеоконтента (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="ссыка к кнопке">

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

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.