Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/main/chat/old/phpfreechat/data/public/CTEST3/proxy.php

72 lines
2.0 KiB

<?php
// gzip compression should not be used because it can slowdown a lot the page loading (>60 seconds!)
ini_set('zlib.output_compression','Off');
ob_start(); // start capturing output
$rootpath = dirname(__FILE__)."/../../";
$allowedpath = array();
$allowedpath[] = 'C:\projets\dokeos_SVN\main\chat\phpfreechat\lib';
$allowedpath[] = 'C:\projets\dokeos_SVN\main\chat\phpfreechat\src\client';
$allowedpath[] = 'C:\projets\dokeos_SVN\main\chat\phpfreechat\themes';
$allowedpath[] = 'C:\projets\dokeos_SVN\main\chat\phpfreechat\themes';
// get the wanted file path
// and check if the file is allowed to be displayed
$page = isset($_GET["p"]) ? $_GET["p"] : "";
if ($page == "") die();
$files = array();
foreach($allowedpath as $ap)
{
$f = realpath($ap."/".$page);
if ($f !== FALSE && file_exists($f)) $files[] = $f;
}
$found = "";
for( $i = 0; $i < count($allowedpath) && $found == ""; $i++)
{
$ap = $allowedpath[$i];
foreach($files as $file)
{
if (strpos($file, $ap) === 0 ) $found = $file;
}
}
if (trim($found) == "")
die();
else
$file = $found;
// setup the HTTP cache
// @todo understand how it really works
session_cache_limiter('public');
// output the file content
readfile($file);
// output HTTP headers
$contenttype = "text/plain";
//$contentlength = filesize($file);
if (preg_match("/\.js$/", $file))
$contenttype = "text/javascript";
else if (preg_match("/\.css$/", $file))
$contenttype = "text/css";
else if (preg_match("/\.gif$/", $file))
$contenttype = "image/gif";
else if (preg_match("/\.jpg$/", $file))
$contenttype = "image/jpeg";
else if (preg_match("/\.jpeg$/", $file))
$contenttype = "image/jpeg";
else if (preg_match("/\.png$/", $file))
$contenttype = "image/png";
header("Content-Type: ".$contenttype);
$contentlength = ob_get_length();
header("Content-Length: ".$contentlength);
// As far as I can tell the only way to mimic ob_flush()'s behaviour on PHP < 4.2.0 is calling ob_end_flush() followed by ob_start().
// http://fr.php.net/manual/en/function.ob-flush.php#28477
ob_end_flush();
ob_start();
?>