<?php
require_once('../wu_init.php');

//Преобразование и чистка
$getid = str_replace(' ','+',$_GET['id']);
list($musor, $id) = explode('.php/', $getid);
$id = base64_decode(strrev($id));

list($file_p, $name) = explode('|', $id);
$file = str_replace('/','',$file_p);
$file = str_replace('..','',$file);
$file = str_replace('\\','',$file);
$file = str_replace('|','',$file);

if (!USER_LOGGED) { $iu_id = 0; } else { $iu_id = $u_id; }
$valid_types = array('gif','jpg', 'png', 'jpeg', 'doc', 'docx', 'rtf', 'rar', 'zip', '7z', 'pdf', 'ppt', 'pptx', 'txt', 'css');
$exts = strtolower(substr($file, 1 + strrpos($file, '.')));
$exts_n = strtolower(substr($name, 1 + strrpos($name, '.')));
if (!in_array($exts, $valid_types)) { wu_log_act(2, 'Пытался скачать через прикрепление '.wu_filter($file_p)); exit('Файл не найден'); }
if (!in_array($exts_n, $valid_types)) { wu_log_act(2, 'Пытался скачать через прикрепление '.wu_filter($file_p).' с именем '.wu_filter($name)); exit('Файл не найден'); }

$fdown = '../../wu-uploads/attach/full/'.$file;
if (file_exists($fdown)) {
$fsize = filesize($fdown);
if (getenv('HTTP_RANGE')=="") {
$f=fopen($fdown, 'r');
if (ob_get_level()) {
ob_end_clean();
}
header("HTTP/1.1 200 OK");
header("Connection: close");
header("Content-Type: application/force-download");
header("Accept-Ranges: bytes");
header("Content-Disposition: Attachment; filename=".$name);
header("Content-Length: ".$fsize); 
while (!feof($f)) {
if (connection_aborted()) {
fclose($f);
break;
}
echo fread($f, 1000000);
sleep(1);
}
fclose($f);
}
else {
preg_match ("/bytes=(\d+)-/", getenv('HTTP_RANGE'), $m);
$csize=$fsize-$m[1]; //Размер фрагмента
$p1=$fsize-$csize; //Позиция, с которой начинать чтение файла
$p2=$fsize-1; //Конец фрагмента
$f=fopen($fdown, 'r');
if (ob_get_level()) {
ob_end_clean();
}
header("HTTP/1.1 206 Partial Content");
header("Connection: close");
header("Content-Type: application/force-download");
header("Accept-Ranges: bytes");
header("Content-Disposition: Attachment; filename=".$name);
header("Content-Range: bytes ".$p1."-".$p2."/".$fsize);
header("Content-Length: ".$csize);
fseek ($f, $p1);
while (!feof($f)) {
if (connection_aborted()) {
fclose($f);
break;
}
echo fread($f, 1000000);
sleep(1);
}
fclose($f);
}
} else {
wu_log_act(1, 'Пытался скачать через прикрепление несуществующий файл '.wu_filter($file_p));
exit('Файл не найден');
}
?>