";
$base_url = "http://slicks.studentenweb.org/browser/browser.php";
//$base_url = "http://localhost/browser2.php";
$bu = parse_url($base_url);
$base_host = @$bu[scheme] . "://" . @$bu[host];
if (!@$address) { echo "No address specified."; exit; }
//else
{
$address = rawurldecode($address);
$filename = "";
$pu = parse_url (@$previous);
$pp = parse_path($pu["path"]);
$au = parse_url ($address);
$ap = parse_path($au["path"]);
if (@$au["scheme"])
{
# echo "Scheme detected.
";
if ((!$au["path"] || $ap["path"][strlen($ap["path"])-1] != '/') && !$ap["extension"])
$filename = $address . "/";
else
$filename = $address;
}
else
{
# echo "No scheme detected.
";
if ($ap["root"]) $filename = $pu["scheme"] ."://". $pu["host"] . $address;
else if ((!$ap["extension"] && $ap["filename"]) || $address[0] == "&") $filename = $pu["scheme"] ."://". $pu["host"] . "/" . $pp["path"] . $address . "/";
else $filename = $pu["scheme"] ."://". $pu["host"] . "/" . $pp["path"] . $address;
}
# echo "Opening File: ". $filename ."
";
/* if (strncmp($address, "http", 4) != 0)
{
$filename = @$pr[scheme] ."://". @$pr[host]. (($address[0] != '/') ? @$pr[path] : "") . $address ;
}
else if (@$ad[path] == "") $filename .= "/";*/
$fd = @fopen ($filename, "r");
if ($fd === false)
{
echo $filename;
echo " could not be opened.
";/* Try this one or this one
";*/
}
else
{
$ext = @$ap["extension"];
if ($ext && $ext != "htm" && $ext != "html" && $ext != "php" && $ext != "php3" && $ext != "asp")
{
header("Content-type: application/octet-stream");
header("Content-Disposition: "/*attachment; */."filename=" . $ap["filename"]);
fpassthru($fd);
}
else
{
if (@$debug)
{
echo "------------------
";
echo "Filename: ". $ap["filename"] ."
";
echo "Extension: ". $ap["extension"] ."
";
echo "Path: ". $ap["path"] ."
";
echo "Query: ".@$au["query"] ."
";
echo "------------------
";
echo "Address: " . $address ."
";
echo "Previous: " .@$previous ."
";
echo "------------------
";
echo "Opened File: ". $filename ."
";
echo "------------------
";
}
$contents = fread ($fd, 1000000);
$oldoffset = 0;
while(1)
{
$sep = " ";
for ($i = $oldoffset + 1; $i < strlen($contents); $i++)
{
if ($contents[$i] == 'h' || $contents[$i] == 'H')
if ($contents[$i+1] == 'r' || $contents[$i+1] == 'R')
if ($contents[$i+2] == 'e' || $contents[$i+2] == 'E')
if ($contents[$i+3] == 'f' || $contents[$i+3] == 'F')
if ($contents[$i+4] == '=')
if ($contents[$i+5] == '"') { $offset = $i+6; $sep = '"'; break; }
else if ($contents[$i+5] == '\'') { $offset = $i+6; $sep = '\''; break; }
else { $offset = $i+5; $sep = " "; break; }
if ($contents[$i] == 's' || $contents[$i] == 'S')
if ($contents[$i+1] == 'r' || $contents[$i+1] == 'R')
if ($contents[$i+2] == 'c' || $contents[$i+2] == 'C')
if ($contents[$i+3] == '=')
if ($contents[$i+4] == '"') { $offset = $i+5; $sep = '"'; break; }
elseif ($contents[$i+4] == '\'') { $offset = $i+5; $sep = '\''; break; }
else { $offset = $i+4; $sep = " "; break; }
if ($contents[$i] == 'a' || $contents[$i] == 'A')
if ($contents[$i+1] == 'c' || $contents[$i+1] == 'C')
if ($contents[$i+2] == 't' || $contents[$i+2] == 'T')
if ($contents[$i+3] == 'i' || $contents[$i+3] == 'I')
if ($contents[$i+4] == 'o' || $contents[$i+5] == 'O')
if ($contents[$i+5] == 'n' || $contents[$i+6] == 'N')
if ($contents[$i+6] == '=')
if ($contents[$i+7] == '"') { $offset = $i+8; $sep = '"'; break; }
else if ($contents[$i+7] == '\'') { $offset = $i+8; $sep = '\''; break; }
else { $offset = $i+7; $sep = " "; break; }
}
if ($i == strlen($contents)) break;
$replace_url = $base_url . "?previous=" . $filename . "&address=";
if ($sep != " ") $url_end = strpos ($contents, $sep, $offset+1);
else
{
$next_space = strpos ($contents, " ", $offset+1);
$next_gt = strpos ($contents, ">", $offset+1);
$url_end = ($next_space < $next_gt) ? $next_space : $next_gt;
}
$old_url = substr ($contents, $offset, $url_end - $offset - 1);
$len = strlen($old_url);
$encoded_url = rawurlencode ($old_url);
$contents = substr_replace($contents, $replace_url . $encoded_url, $offset, $len);
$oldoffset = $offset;
}
echo $contents;
fclose ($fd);
}
}
}
function parse_path ($full_path)
{
$str = strrchr ($full_path, "/");
if ($str) $filename = substr ($str, 1, strlen ($str) - 1);
else $filename = $full_path;
$str = strrchr ($filename, ".");
if ($str) $extension = substr ($str, 1, strlen ($str) - 1);
else $extension = "";
if ($full_path && $full_path[0] == '/') { $path = substr($full_path, 1, strlen ($full_path) - strlen ($filename) -1); $root = true; }
else { $path = substr($full_path, 0, strlen ($full_path) - strlen ($filename) ); $root = false; }
return array("filename" => $filename, "extension" => $extension, "path" => $path, "root" => $root);
}
?>