From fa5ca54555e33d71850f2f8c6ba2e643d3ed45d1 Mon Sep 17 00:00:00 2001 From: Benjamin Sonntag Date: Wed, 11 Nov 2015 09:43:57 +0100 Subject: [PATCH] We know SHOW the 'protected' files in the browser, so that you understand why you can't edit them --- bureau/admin/bro_main.php | 14 +++++++++----- bureau/class/m_bro.php | 12 ++++++++++-- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/bureau/admin/bro_main.php b/bureau/admin/bro_main.php index 0d22961b..ca685eeb 100644 --- a/bureau/admin/bro_main.php +++ b/bureau/admin/bro_main.php @@ -62,13 +62,13 @@ $R=$bro->convertabsolute($R,1); // on fait ? if (!empty($formu) && $formu) { switch ($formu) { - case 1: // Cr�er le r�pertoire $R.$nomfich + case 1: // Create the folder $R.$nomfich if (!$bro->CreateDir($R,$nomfich)) { $error = $err->errstr(); } $p=$bro->GetPrefs(); break; - case 6: // Cr�er le fichier $R.$nomfich + case 6: // Create the file $R.$nomfich if (!$bro->CreateFile($R,$nomfich)) { $error = $err->errstr(); } @@ -133,7 +133,7 @@ if (!empty($formu) && $formu) { } break; case 7: // Changement de permissions [ML] - if (!@$bro->ChangePermissions($R, $d, $perm)) { + if (!$bro->ChangePermissions($R, $d, $perm)) { $error = $err->errstr(); } break; @@ -331,7 +331,7 @@ function actmoveto_not_empty() { - \n"; @@ -348,7 +348,11 @@ function actmoveto_not_empty() { echo "bro_downloadfile.php?dir=".urlencode($R)."&file=".urlencode($c[$i]["name"]); } echo "\">"; ehe($c[$i]["name"]); - echo"\n"; + echo""; + if (!($c[$i]["permissions"] & 0000200)) { + echo " ("._("protected").")"; + } + echo "\n"; echo " ".format_size($c[$i]["size"]).""; echo "".format_date(_('%3$d-%2$d-%1$d %4$d:%5$d'),date("Y-m-d H:i:s",$c[$i]["date"]))."
"; if ($p["showtype"]) { diff --git a/bureau/class/m_bro.php b/bureau/class/m_bro.php index ff0a70ca..a08b2285 100644 --- a/bureau/class/m_bro.php +++ b/bureau/class/m_bro.php @@ -206,11 +206,15 @@ class m_bro { $err->raise('bro', _("This directory is not readable.")); return false; } + clearstatcache(true); $c = array(); if ($dir = @opendir($absolute)) { while (($file = readdir($dir)) !== false) { if ($file != "." && $file != "..") { - $c[] = array("name" => $file, "size" => $this->fsize($absolute . "/" . $file, $showdirsize), "date" => filemtime($absolute . "/" . $file), "type" => (!is_dir($absolute . "/" . $file))); + $stat=stat($absolute . "/" . $file); + $c[] = array("name" => $file, "size" => $this->fsize($absolute . "/" . $file, $showdirsize), + "date" => filemtime($absolute . "/" . $file), "type" => (!is_dir($absolute . "/" . $file)), + "permissions" => $stat[2] ); } } closedir($dir); @@ -563,12 +567,14 @@ class m_bro { $m = $m & (~ 0222); // ugo-w } $action->chmod($absolute . "/" . $d[$i], $m); + // We'd like to *wait* for this to complete, but since this is essentially asynchronous, we can't be sure easily + // So we chose to wait a little bit (2 sec) at the end of the loop... if ($verbose) { echo "chmod " . sprintf('%o', $m) . " file, was " . sprintf('%o', fileperms($absolute . "/" . $d[$i])) . " -- " . $perm[$i]['w']; } } } - + sleep(2); return true; } @@ -873,6 +879,8 @@ class m_bro { include('foot.php'); exit; } + $stat=stat($absolute); + if (!($stat[2] & 0000200)) return false; $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $absolute); if (substr($mime, 0, 5) == "text/" || $mime == "application/x-empty" || $mime == "inode/x-empty") {