Просмотр файла fmget-server/proxy.php

Размер файла: 3.98Kb
<?php
# FMGET ver. 1.1
# © Alex Extend, 2008
# 
# Данная программа является свободным программным обеспечением. Вы вправе
# распространять ее и/или модифицировать в соответствии с условиями версии 2 либо
# по вашему выбору с условиями более поздней версии Стандартной Общественной
# Лицензии GNU, опубликованной Free Software Foundation.
# 
# Мы распространяем данную программу в надежде на то, что она будет вам полезной
# однако НЕ ПРЕДОСТАВЛЯЕМ НА НЕЕ НИКАКИХ ГАРАНТИЙ, в том числе ГАРАНТИИ ТОВАРНОГО
# СОСТОЯНИЯ ПРИ ПРОДАЖЕ и ПРИГОДНОСТИ ДЛЯ ИСПОЛЬЗОВАНИЯ В КОНКРЕТНЫХ ЦЕЛЯХ. Для
# получения более подробной информации ознакомьтесь со Стандартной Общественной
# Лицензией GNU.

error_reporting(E_ALL);
include ('conf.php');
$host=str_replace(".$pdomain", "", $_SERVER['HTTP_HOST']);
$uri=preg_replace('|^http://([^/]+)|', '', $_SERVER['REQUEST_URI']);

$fp=fsockopen($host, 80, $errno, $errstr, 30);
if (!$fp) die("$host $errstr");
$req="$_SERVER[REQUEST_METHOD] $uri HTTP/1.1\r\n";
$req.="Host: $host\r\n";
if (isset($_SERVER['HTTP_USER_AGENT'])) $req.="User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
if (isset($_SERVER['HTTP_ACCEPT'])) $req.="Accept: $_SERVER[HTTP_ACCEPT]\r\n";
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) $req.="Accept-Language: $_SERVER[HTTP_ACCEPT_LANGUAGE]\r\n";
if (isset($_SERVER['HTTP_ACCEPT_CHARSET'])) $req.="Accept-Charset: $_SERVER[HTTP_ACCEPT_CHARSET]\r\n";
if (isset($_SERVER['HTTP_COOKIE'])) $req.="Cookie: $_SERVER[HTTP_COOKIE]\r\n";
$postdata="";
if ($_SERVER['REQUEST_METHOD']=='POST') {
	foreach ($_POST as $n=>$v) {
		$postdata.="$n=".urlencode($v)."&";
	}
	$req.="Content-Type: application/x-www-form-urlencoded\r\n";
	$req.="Content-Length: ".strlen($postdata)."\r\n";
}
$req.="Connection: close\r\n\r\n$postdata";
fwrite($fp, $req);
$head="";
while (!strstr($head, "\r\n\r\n")) {
	$head.=fread($fp, 1);
}
if (preg_match('|^Content\-Length:\s*(\d+)\s*$|m', $head, $mc)) {
	$cl=$mc[1];
	if ($cl>1024*1024) {
		$iweb['url']="http://$host$uri";
		$iweb['size']=$cl;
		$iweb['HTTP_USER_AGENT']=@$_SERVER['HTTP_USER_AGENT'];
		$iweb['HTTP_ACCEPT']=@$_SERVER['HTTP_ACCEPT'];
		$iweb['HTTP_ACCEPT_LANGUAGE']=@$_SERVER['HTTP_ACCEPT_LANGUAGE'];
		$iweb['HTTP_ACCEPT_CHARSET']=@$_SERVER['HTTP_ACCEPT_CHARSET'];
		$iweb['HTTP_COOKIE']=@$_SERVER['HTTP_COOKIE'];
		$tmp=time().rand(10, 99);
		file_put_contents("$basedir/users/tmp$tmp.txt", serialize($iweb));
		header("Location: http://$pdomain/profile.php?mode=ok&tmp=$tmp");
		exit;
	}
}
$body="";
while (!feof($fp)) {
	$body.=fread($fp, 1);
}
fclose($fp);

$head=preg_replace('|http://([a-z0-9\-\_\.]+)/|i', "http://$1.$pdomain/", $head);
$head=str_replace("$host.$pdomain", $host, $head);
$head=str_replace($host, "$host.$pdomain", $head);
$body=preg_replace('|http://([a-z0-9\-\_\.]+)/|i', "http://$1.$pdomain/", $body);
$body=str_replace("$host.$pdomain", $host, $body);
$body=str_replace($host, "$host.$pdomain", $body);
$body=str_replace('<title>', '<title>FMGET proxy: ', $body);
$body=str_replace('<TITLE>', '<TITLE>FMGET proxy: ', $body);

$ha=explode("\r\n", $head);
$hs=array();
foreach ($ha as $h) {
	$hb=explode(':', $h, 2);
	if (!empty($hb[1])) $hs[trim($hb[0])]=trim($hb[1]);
}
if (isset($hs['Content-Type'])) header("Content-Type: ".$hs['Content-Type']);
if (isset($hs['Set-Cookie'])) header("Set-Cookie: ".$hs['Set-Cookie']);
if (isset($hs['Location'])) header("Location: ".$hs['Location']);

header("Cache-Control: no-cache,must-revalidate");
header("Pragma: no-cache");
echo $body;

?>