summaryrefslogtreecommitdiff
path: root/static
diff options
context:
space:
mode:
authorWubTheCaptain <wub@partyvan.eu>2015-09-15 16:28:14 +0200
committerpantsucat <contact@pantsu.cat>2015-09-15 16:28:14 +0200
commit82ae4c6587c81211fe384c4b8bc607026dd018a7 (patch)
treed86d18680114a5e23d9c8db730dc0ef27bece953 /static
parent666adf95aa148dd169180c05bcd1dc4415a9b29a (diff)
Rework generate_name() logic
Adds a new config option POMF_FILES_LENGTH. This will allow the user to adjust the length of filenames. Defaults to 6. The filename generator never used character z in new filenames. There are 27 characters in a-z, but the old code uses a magic number of 26 characters. This bug was introduced in commit 5b77a4eaab418836820b2a0bad7c88f0b88136a0. Instead of relying on magic numbers like with mt_rand(), conveniently use arrays with array_rand() instead. More characters can be added with array_merge() in future if desired.
Diffstat (limited to 'static')
-rw-r--r--static/includes/settings.inc.php4
-rw-r--r--static/upload.php12
2 files changed, 9 insertions, 7 deletions
diff --git a/static/includes/settings.inc.php b/static/includes/settings.inc.php
index e909b9a..9751cff 100644
--- a/static/includes/settings.inc.php
+++ b/static/includes/settings.inc.php
@@ -9,8 +9,10 @@ define('POMF_DB_PASS', '***');
// Root location of files
define('POMF_FILES_ROOT', '/mnt/pantsu/http/files/');
-// Maximum number of iterations while generating a new name
+// Maximum number of iterations while generating a new filename
define('POMF_FILES_RETRIES', 15);
+// Number of random characters to use in a new filename
+define('POMF_FILES_LENGTH', 6);
// URL to prepend to output (include trailing slash)
define('POMF_URL', 'https://i.pantsu.cat/');
diff --git a/static/upload.php b/static/upload.php
index 8aac02c..6e54ae1 100644
--- a/static/upload.php
+++ b/static/upload.php
@@ -23,8 +23,9 @@ function generate_name ($file) {
global $doubledots;
// We start at N retries, and --N until we give up
- $tries = POMF_FILES_RETRIES;
- $ext = pathinfo($file->name, PATHINFO_EXTENSION);
+ $tries = POMF_FILES_RETRIES;
+ $length = POMF_FILES_LENGTH;
+ $ext = pathinfo($file->name, PATHINFO_EXTENSION);
// Check if extension is a double-dot extension and, if true, override $ext
$revname = strrev($file->name);
@@ -39,11 +40,10 @@ function generate_name ($file) {
// Iterate until we reach the maximum number of retries
if ($tries-- == 0) throw new Exception('Gave up trying to find an unused name', 500);
- $chars = 'abcdefghijklmnopqrstuvwxyz';
+ $chars = range('a', 'z');
$name = '';
- for ($i = 0; $i < 6; $i++) {
- $name .= $chars[mt_rand(0, 25)];
- // $chars string length is hardcoded, should use a variable to store it?
+ for ($i = 0; $i < $length; $i++) {
+ $name .= $chars[array_rand($chars)];
}
// Add the extension to the file name