Выдача удаленного файла скриптом с докачкой

<?php
/**
 * Выдача удаленного файла скриптом с докачкой
 * автор: Nc_Soft
 * 26.10.09
 */

//урл удаленного файла
$url = 'http://snippets.pp.ru/1.mp3';

//инициализация сеанса curl
$ch = curl_init($url);

//если клиент запрашивает докачку
if(isset($_SERVER['HTTP_RANGE'])) {
	curl_setopt($ch, CURLOPT_RANGE, str_replace('bytes=', '', $_SERVER['HTTP_RANGE']));
}

//бинарные данные
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);

//функция обратного вызова для заголовков (выдает такие же заголовки как и удаленный сервер)
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'curlHeaderCallback');

//падаем в случаи ошибки
curl_setopt($ch, CURLOPT_FAILONERROR, 1);

//браузер
curl_setopt($ch, CURLOPT_USERAGENT, 'Opera/9.80 (Windows NT 5.1; U; ss; MRA 5.4 (build 02647); ru) Presto/2.2.15 Version/10.00');

//accept браузера
$info = array(
'Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1',
'Accept-Language: ru-RU,ru;q=0.9,en;q=0.8',
'Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1',
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $info);

//запуск
curl_exec($ch);

function curlHeaderCallback($ch, $strHeader) {
	//выдаем такой же заголовок, как и удаленный сервер, где лежит файл.
	//заголовки идут по порядку
	header($strHeader);
	return strlen($strHeader);
}

//запустив скрипт вы можете выдать удаленный файл через свой сайт.
//а чтобы файл нормально сохранялся, а не с адресом скрипта, 
//надо настроить mod_rewrite, чтобы на запрос блаблабла/file.mp3 выдавался этот скрипт