]> git.p6c8.net - jirafeau.git/blobdiff - lib/functions.php
[BUGFIX] Fix unwritable folders messages
[jirafeau.git] / lib / functions.php
index b417769a5beb9d5b1634f6dccbcbadca123117c9..cf6b913c53e5ec1fd50049210de158f45aa0e17e 100644 (file)
@@ -204,7 +204,7 @@ function jirafeau_ini_to_bytes($value)
 function jirafeau_get_max_upload_size_bytes()
 {
     return min(jirafeau_ini_to_bytes(ini_get('post_max_size')),
-                jirafeau_ini_to_bytes(ini_get('upload_max_filesize')));
+               jirafeau_ini_to_bytes(ini_get('upload_max_filesize')));
 }
 
 /**
@@ -213,9 +213,7 @@ function jirafeau_get_max_upload_size_bytes()
  */
 function jirafeau_get_max_upload_size()
 {
-    return jirafeau_human_size(
-            min(jirafeau_ini_to_bytes(ini_get('post_max_size')),
-                 jirafeau_ini_to_bytes(ini_get('upload_max_filesize'))));
+    return jirafeau_human_size(jirafeau_get_max_upload_size_bytes());
 }
 
 /**
@@ -500,16 +498,13 @@ function check_errors($cfg)
         exit;
     }
 
-    /* check if the destination dirs are writable */
-    $writable = is_writable(VAR_FILES) && is_writable(VAR_LINKS);
-
     /* Checking for errors. */
     if (!is_writable(VAR_FILES)) {
-        add_error(t('The file directory is not writable!'), VAR_FILES);
+        add_error(t('FILE_DIR_W'), VAR_FILES);
     }
 
     if (!is_writable(VAR_LINKS)) {
-        add_error(t('The link directory is not writable!'), VAR_LINKS);
+        add_error(t('LINK_DIR_W'), VAR_LINKS);
     }
 
     if (!is_writable(VAR_ASYNC)) {
@@ -553,13 +548,13 @@ function jirafeau_admin_list($name, $file_hash, $link_hash)
 {
     echo '<fieldset><legend>';
     if (!empty($name)) {
-        echo t('FILENAME') . ": $name ";
+        echo t('FILENAME') . ": " . jirafeau_escape($name);
     }
     if (!empty($file_hash)) {
-        echo t('FILE') . ": $file_hash ";
+        echo t('FILE') . ": " . jirafeau_escape($file_hash);
     }
     if (!empty($link_hash)) {
-        echo t('LINK') . ": $link_hash ";
+        echo t('LINK') . ": " . jirafeau_escape($link_hash);
     }
     if (empty($name) && empty($file_hash) && empty($link_hash)) {
         echo t('LS_FILES');
@@ -597,7 +592,7 @@ function jirafeau_admin_list($name, $file_hash, $link_hash)
                 }
 
                 /* Filter. */
-                if (!empty($name) && !preg_match("/$name/i", jirafeau_escape($l['file_name']))) {
+                if (!empty($name) && !@preg_match("/$name/i", jirafeau_escape($l['file_name']))) {
                     continue;
                 }
                 if (!empty($file_hash) && $file_hash != $l['md5']) {
@@ -612,7 +607,7 @@ function jirafeau_admin_list($name, $file_hash, $link_hash)
                 '<strong><a id="upload_link" href="f.php?h='. jirafeau_escape($node) .'" title="' .
                     t('DL_PAGE') . '">' . jirafeau_escape($l['file_name']) . '</a></strong>';
                 echo '</td>';
-                echo '<td>' . $l['mime_type'] . '</td>';
+                echo '<td>' . jirafeau_escape($l['mime_type']) . '</td>';
                 echo '<td>' . jirafeau_human_size($l['file_size']) . '</td>';
                 echo '<td>' . ($l['time'] == -1 ? '∞' : jirafeau_get_datetimefield($l['time'])) . '</td>';
                 echo '<td>';
@@ -628,16 +623,19 @@ function jirafeau_admin_list($name, $file_hash, $link_hash)
                 '<form method="post">' .
                 '<input type = "hidden" name = "action" value = "download"/>' .
                 '<input type = "hidden" name = "link" value = "' . $node . '"/>' .
+                jirafeau_admin_csrf_field() .
                 '<input type = "submit" value = "' . t('DL') . '" />' .
                 '</form>' .
                 '<form method="post">' .
                 '<input type = "hidden" name = "action" value = "delete_link"/>' .
                 '<input type = "hidden" name = "link" value = "' . $node . '"/>' .
+                jirafeau_admin_csrf_field() .
                 '<input type = "submit" value = "' . t('DEL_LINK') . '" />' .
                 '</form>' .
                 '<form method="post">' .
                 '<input type = "hidden" name = "action" value = "delete_file"/>' .
                 '<input type = "hidden" name = "md5" value = "' . $l['md5'] . '"/>' .
+                jirafeau_admin_csrf_field() .
                 '<input type = "submit" value = "' . t('DEL_FILE_LINKS') . '" />' .
                 '</form>' .
                 '</td>';
@@ -1248,3 +1246,29 @@ function jirafeau_escape($string)
 {
     return htmlspecialchars($string, ENT_QUOTES);
 }
+
+function jirafeau_admin_session_start()
+{
+    $_SESSION['admin_auth'] = true;
+    $_SESSION['admin_csrf'] = md5(uniqid(mt_rand(), true));
+}
+
+function jirafeau_admin_session_end()
+{
+    $_SESSION = array();
+    session_destroy();
+}
+
+function jirafeau_admin_session_logged()
+{
+    return isset($_SESSION['admin_auth']) &&
+           isset($_SESSION['admin_csrf']) &&
+           isset($_POST['admin_csrf']) &&
+           $_SESSION['admin_auth'] === true &&
+           $_SESSION['admin_csrf'] === $_POST['admin_csrf'];
+}
+
+function jirafeau_admin_csrf_field()
+{
+    return "<input type='hidden' name='admin_csrf' value='". $_SESSION['admin_csrf'] . "'/>";
+}

patrick-canterino.de