Защита моих ссылок с привязкой по IP

Самый оптимальный вариан это раздача киношек сервером NginX, для защиты контента его нужно немного настроить, поэтому нужер root доступ к серверу, хотя это может быть и VPS конечно

Решение данной задачи с помощью nginx реализуется просто и очень эффективно. В конфиг nginx в блок server для нашего домена добавляем:
location / {
rewrite ^/video/(w+)/(.+)$ /get.php?hash=&filename= last;
...
}
location /video {
internal;
flv;
}

К сожалению форум выстригает некоторые символы, вообщем в строке реврайта
get.php?hash=«знак доллара»1&filename=«знак доллара»2 last;
«знак доллара» это "$"

Первый локейшен это настройка реврайта NginX, а второй это папка от корня вашего домена в которой лежит видео, то есть вы закрываете внешний доступ к этой папке, теперь NginX будет отдавать файлы с этой папки только по внутреннему запросу (internal)

В корень домена ложим файлик get.php это обработчик flv запросов
Тут есть небольшая проблемка, для псевдостреминга(«перемотки»), плеер приклепляет к ссылке смещение в байтах через знак ?, регулярка в реврайте конфига NginX не может выбрать весь GET запрос, вернее может, но только до знака "?", поэтому я малость извратилась и вставила $url=explode(’?’,$url);…
неуклюже конечно, но зато перемотка в плеере работает
Вот текст обработчика flv запросов get.php
$hash =$_GET['hash'];
$filename = $_GET['filename'];
$ip = md5(getenv(”REMOTE_ADDR”).”key”);
if ($hash == $ip){
$url=$_SERVER['REQUEST_URI'];
$url=explode(’?',$url);
$url=$url[1];
if (isset($url)){$filename .=’?’.$url;}
header(”Content-Type: video/x-flv”);
header(”X-Accel-Redirect:/video/”.$filename);
die();
}
echo “фигу вам! :)”; //Ну или можно клипчик с фигой показать, для наглядности

Например у вас есть файл по адресу
http://flv.site.ru/video/video.flv

дабавляете в ссылку хеш из ip юзера и секретного слова
$ip = md5(getenv(”REMOTE_ADDR”).”key”);
и получаете ссылку уже вида
http://flv.site.ru/video/922f3b5fcb227cfae135299e786edd82/video.flv

когда плеер запросит ссылку, она попадёт к nginx, если вы всё выставили как написанно, то nginx передаст ссылку обработчику, который проверит хешь, если всё правильно то кажем киношку, если ip не совпадает, то кажем фигу!
В принципе в хеше можно что угодно закодировать, например добавить к хешу два байта время жизни ссылки в минутах, ну или девичью фамилию бабушки посетителя проверить можно :))) шутка!
На самом деле обработчику конечно много чего можно поручить, например можно манипулировать скоростями отдачи файла, типа ВИПу на максимальной скорости, остальных бреем до 50 кбайт, докачки, псевдостреминг, мультисесии, ну естествено и NginX нужно настроить под нужные задачи. У меня файлы залиты на раздельные зеркальные диски и обработчик разруливает раздачу файлов так чтобы нагрузка на дисках была примерно одинаковая…

у меня почему то отказывался работать второй локейшен, пока не прописали в нем root путь
root /home/support/www/flv.site.ru;

Оптимизация дефолтного ls

  • Скопировать все содержимое файла comment.tpl и вставить его в файл comments_tree.tpl, вместо строки
    {include file='comment.tpl'}  

    тоже самое сделать, с topic_list.tpl + topic.tpl

    Итого — full time на топиках с 1000+ комментариев будет без тормозов.
  • Удалить нахуй у себя файл /engine/lib/external/CSSTidy-1.3/css_optimiser.php
  • И еще вот это.
    Найти в файле /engine/modules/text/Text.class.php
    213 строчку:
    return array($sTextShort,$sTextNew,$sTextCut);

    Заменить ее на строчку:
    return array($sTextShort,$sTextNew,$sTextCut? htmlspecialchars($sTextCut): null);

Еще, если будут напряги на хостинге с кешем, то отключить его просто. В разы ускорит публицации. Ибо кеш в livestreet говянно написан.
Отключается это так:
в файле config.php найди эту строчки:
$config['compress']['css']['merge'] = true;
$config['sys']['cache']['use'] = true;

и заменить true, на false.