]> git.p6c8.net - jirafeau_mojo42.git/blobdiff - lib/functions.php
[BUGFIX] Fix unwritable folders messages
[jirafeau_mojo42.git] / lib / functions.php
index e4bfbb56219f573d383f52a4b7b7a1e64a093ba8..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')),
 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()
 {
  */
 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());
 }
 
 /**
 }
 
 /**
@@ -374,7 +372,7 @@ function jirafeau_upload($file, $one_time_download, $key, $time, $ip, $crypt, $l
         return (array(
                  'error' =>
                    array('has_error' => true,
         return (array(
                  'error' =>
                    array('has_error' => true,
-                          'why' => t('Internal error during file creation.')),
+                          'why' => t('INTERNAL_ERROR_DEL')),
                  'link' =>'',
                  'delete_link' => ''));
     }
                  'link' =>'',
                  'delete_link' => ''));
     }
@@ -500,20 +498,17 @@ function check_errors($cfg)
         exit;
     }
 
         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)) {
     /* 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)) {
     }
 
     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)) {
     }
 
     if (!is_writable(VAR_ASYNC)) {
-        add_error(t('The async directory is not writable!'), VAR_ASYNC);
+        add_error(t('ASYNC_DIR_W'), VAR_ASYNC);
     }
 }
 
     }
 }
 
@@ -553,28 +548,28 @@ function jirafeau_admin_list($name, $file_hash, $link_hash)
 {
     echo '<fieldset><legend>';
     if (!empty($name)) {
 {
     echo '<fieldset><legend>';
     if (!empty($name)) {
-        echo t('Filename') . ": $name ";
+        echo t('FILENAME') . ": " . jirafeau_escape($name);
     }
     if (!empty($file_hash)) {
     }
     if (!empty($file_hash)) {
-        echo t('file') . ": $file_hash ";
+        echo t('FILE') . ": " . jirafeau_escape($file_hash);
     }
     if (!empty($link_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)) {
     }
     if (empty($name) && empty($file_hash) && empty($link_hash)) {
-        echo t('List all files');
+        echo t('LS_FILES');
     }
     echo '</legend>';
     echo '<table>';
     echo '<tr>';
     }
     echo '</legend>';
     echo '<table>';
     echo '<tr>';
-    echo '<td>' . t('Filename') . '</td>';
-    echo '<td>' . t('Type') . '</td>';
-    echo '<td>' . t('Size') . '</td>';
-    echo '<td>' . t('Expire') . '</td>';
-    echo '<td>' . t('Onetime') . '</td>';
-    echo '<td>' . t('Upload date') . '</td>';
-    echo '<td>' . t('Origin') . '</td>';
-    echo '<td>' . t('Action') . '</td>';
+    echo '<td>' . t('FILENAME') . '</td>';
+    echo '<td>' . t('TYPE') . '</td>';
+    echo '<td>' . t('SIZE') . '</td>';
+    echo '<td>' . t('EXPIRE') . '</td>';
+    echo '<td>' . t('ONETIME') . '</td>';
+    echo '<td>' . t('UPLOAD_DATE') . '</td>';
+    echo '<td>' . t('ORIGIN') . '</td>';
+    echo '<td>' . t('ACTION') . '</td>';
     echo '</tr>';
 
     /* Get all links files. */
     echo '</tr>';
 
     /* Get all links files. */
@@ -597,7 +592,7 @@ function jirafeau_admin_list($name, $file_hash, $link_hash)
                 }
 
                 /* Filter. */
                 }
 
                 /* Filter. */
-                if (!empty($name) && !preg_match("/$name/i", htmlspecialchars($l['file_name']))) {
+                if (!empty($name) && !@preg_match("/$name/i", jirafeau_escape($l['file_name']))) {
                     continue;
                 }
                 if (!empty($file_hash) && $file_hash != $l['md5']) {
                     continue;
                 }
                 if (!empty($file_hash) && $file_hash != $l['md5']) {
@@ -609,10 +604,10 @@ function jirafeau_admin_list($name, $file_hash, $link_hash)
                 /* Print link informations. */
                 echo '<tr>';
                 echo '<td>' .
                 /* Print link informations. */
                 echo '<tr>';
                 echo '<td>' .
-                '<strong><a id="upload_link" href="f.php?h='. htmlspecialchars($node) .'" title="' .
-                    t('Download page') . '">' . htmlspecialchars($l['file_name']) . '</a></strong>';
+                '<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>';
-                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>';
                 echo '<td>' . jirafeau_human_size($l['file_size']) . '</td>';
                 echo '<td>' . ($l['time'] == -1 ? '∞' : jirafeau_get_datetimefield($l['time'])) . '</td>';
                 echo '<td>';
@@ -628,17 +623,20 @@ 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 . '"/>' .
                 '<form method="post">' .
                 '<input type = "hidden" name = "action" value = "download"/>' .
                 '<input type = "hidden" name = "link" value = "' . $node . '"/>' .
-                '<input type = "submit" value = "' . t('Download') . '" />' .
+                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 . '"/>' .
                 '</form>' .
                 '<form method="post">' .
                 '<input type = "hidden" name = "action" value = "delete_link"/>' .
                 '<input type = "hidden" name = "link" value = "' . $node . '"/>' .
-                '<input type = "submit" value = "' . t('Del link') . '" />' .
+                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'] . '"/>' .
                 '</form>' .
                 '<form method="post">' .
                 '<input type = "hidden" name = "action" value = "delete_file"/>' .
                 '<input type = "hidden" name = "md5" value = "' . $l['md5'] . '"/>' .
-                '<input type = "submit" value = "' . t('Del file and links') . '" />' .
+                jirafeau_admin_csrf_field() .
+                '<input type = "submit" value = "' . t('DEL_FILE_LINKS') . '" />' .
                 '</form>' .
                 '</td>';
                 echo '</tr>';
                 '</form>' .
                 '</td>';
                 echo '</tr>';
@@ -1243,3 +1241,34 @@ function jirafeau_replace_markers($content, $htmllinebreaks = false)
 
     return $content;
 }
 
     return $content;
 }
+
+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