neoks

neoks
Рейтинг
152
Регистрация
17.03.2010

karpo518, Так и нужно, если верить документации http://nginx.org/ru/docs/http/ngx_http_secure_link_module.html

В моем примере файл отдается по другому url, "/video/md5/expires/piknik.mp4" вместо "/video/piknik.mp4" - (у заказчика была цель именно таких ссылок).

В вашем случаи правильные настройки выглядят так

location ~ \.mp4$ {
mp4;
mp4_buffer_size 1m;
mp4_max_buffer_size 5m;

secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr secret";

if ($secure_link = "") { return 403; }
if ($secure_link = "0") { return 410; }
}

PHP

function buildSecureLink($url, $secret, $ttl = 10000)
{

$userIp = $_SERVER['REMOTE_ADDR'];


$parts = parse_url($url);
$path = $parts['path'];

$expires = time() + $ttl;
$md5 = md5($expires.explode('?', $url)[0].$userIp.' '.$secret, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);

if(strpos($url, '?') !== false)
{
return $url . '&md5=' . $md5 . '&expires=' . $expires;
}

return $url . '?md5=' . $md5 . '&expires=' . $expires;
}

Ссылки соответственно идут так "/Natalia.mp4?args=s1&md5=YvLrbogLjUmjx1KOBIBGEQ&expires=1528733288"

P.S: Не забудьте указать рандомый текст вместо "secret".

karpo518, Я клиенту делал когда-то подобное, но так как это было давно и с php я уже не дружу, то просто приведу рабочий пример с архива.

PHP

// Шаблон для токена
$secret_word = "Tfv9WLsWbf"; // Секретное слово
$uri_prefix = "http://domain.ua/video/"; // Начало ссылки
$file = '/piknik.mp4'; // Файл
$time = time()+10800; // Ссылка будет действительна в течении 3х часов

// Генерируем token
$secret = md5($time.$file.$_SERVER["REMOTE_ADDR"].' '.$secret_word, true); // Хешируем в md5 bin.
$secret = base64_encode($secret); // Encode base64 url
$secret = strtr($secret, '+/', '-_'); // Редактирует ссылку
$secret = str_replace( '=', '', $secret); // Редактирует ссылку

// Формируем ссылку
$hash_url = '"'.$uri_prefix.$secret.'/'.$time.$file;

NGINX

location ~ ^/video/.+\.(flv|mp4)$ {
valid_referers none blocked .domain.ua;
if ($invalid_referer) {
return 403;
}

if ($uri ~* ^/video/([^/]+)/([0-9]+)/(.+\.(flv|mp4))$) {
set $md5 $1;
set $expires $2;
set $myuri $3;
}

secure_link $md5,$expires;
secure_link_md5 "$secure_link_expires/$myuri$remote_addr Tfv9WLsWbf";
if ($secure_link = "") { return 403; }
if ($secure_link = "0") { return 410; }
rewrite "^/video/([^/]+)/([0-9]+)/(.+)$" /video/$3 last;
}

P.S: Хеш nginx можно вывести через "return 200 $secure_link;"

На платном тарифе другие сетки, они тоже есть в блоке, но уже реже.

VPSprima, Есть еще VPS с картами, например https://vps.house/ как-то на хабре проскакивал.

OwnCloud должен подойти

spbkk, Попробуйте найти для начала через https://revisium.com/ai/ или ClamAV

Пендальф, В принципе даже так мало шансов попасть на сайт (взлом через хостинг, брут и т.д не в счет).

SeVlad:
Всё, я утомился.

А по существу так и не ответили..

Зачем генерировать копию сайта это дело ТС. В данном случаи ТС описал среду в которой будет эксплуатироваться WP и основываясь на этой среде я сделал вывод что конкретно в этом случаи крон не нужен, просто потому что ТС не собирается обновлять WP или плагины, на сайте не будет посетителей и крону просто нечего делать, нету ни кеша для чистки, нет задач для обновления количества просмотров и т.д.

Поэтому мне интересно почему вы считаете что в этой ситуации, ТС нужен крон ?

Если читать весь текст а не только между строк, то дословно там написано так "необходимость крона зависит от ситуации".

Вы лучше скажите мне зачем сайту который закрыт от всех, а весь функционал сводится к "зайти в админку и нажать кнопку для генерации html копии" нужен крон ?

Всего: 705