$arg = explode("/",$arg);
+ // supprimer et vider les buffers qui posent des problemes de memory limit
+ // http://www.php.net/manual/en/function.readfile.php#81032
+ @ini_set("zlib.output_compression","0"); // pour permettre l'affichage au fur et a mesure
+ @ini_set("output_buffering","off");
+ @ini_set('implicit_flush', 1);
+ @ob_implicit_flush(1);
+ $level = ob_get_level();
+ while ($level--){
+ @ob_end_clean();
+ }
+
+
if (count($arg)>=3){
$id_document = intval(array_shift($arg));
spip_log($file,'dbg');
$status = $dcc = false;
+ $dossiers_a_exclure = array('nl');
+
// securite : on refuse tout ../ ou url absolue
if (strpos($f,'../') !== false
OR preg_match(',^\w+://,', $f)) {
else if (!file_exists($file) OR !is_readable($file)) {
$status = 404;
}
+ // Si c'est dans un sous-dossier explicitement utilisé pour autre chose que les documents
+ // (exemple : les newsletters)
+ // et bien on ne teste pas l'accès
+ elseif (preg_match('%^(' . join('|', $dossiers_a_exclure) . ')/%', $f)){
+ $status = 200;
+ }
else {
$where = "documents.fichier=".sql_quote(set_spip_doc($file))
. ($id_document ? " AND documents.id_document=".intval($id_document): '');
}
-?>
\ No newline at end of file
+?>