mirror of
https://github.com/hyzendust/share.freedoms4.org.git
synced 2026-04-15 21:48:33 +02:00
Add: date/time, prepositions, extra underscore/dash filters
This commit is contained in:
69
index.php
69
index.php
@@ -99,6 +99,70 @@ function get_remaining_quota($ip) {
|
|||||||
return max(0, $RATE_LIMIT - $total_usage);
|
return max(0, $RATE_LIMIT - $total_usage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -------------------------
|
||||||
|
// REMOVE DATE/TIME FROM FILENAME
|
||||||
|
// -------------------------
|
||||||
|
function remove_datetime_from_filename($filename) {
|
||||||
|
$patterns = [
|
||||||
|
'/\d{4}-\d{2}-\d{2}/', // YYYY-MM-DD
|
||||||
|
'/\d{4}\d{2}\d{2}/', // YYYYMMDD
|
||||||
|
'/\d{2}-\d{2}-\d{4}/', // DD-MM-YYYY or MM-DD-YYYY
|
||||||
|
'/\d{2}\/\d{2}\/\d{4}/', // DD/MM/YYYY or MM/DD/YYYY
|
||||||
|
'/\d{2}\.\d{2}\.\d{4}/', // DD.MM.YYYY
|
||||||
|
'/\d{2}:\d{2}:\d{2}/', // HH:MM:SS
|
||||||
|
'/\d{2}:\d{2}/', // HH:MM
|
||||||
|
'/\d{2}-\d{2}-\d{2}/', // HH-MM-SS
|
||||||
|
'/\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}:\d{2}/', // ISO 8601 full datetime
|
||||||
|
'/\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}/', // ISO 8601 datetime without seconds
|
||||||
|
'/\d{2}[\/\-\.]\d{2}[\/\-\.]\d{2}/', // YY-MM-DD or similar
|
||||||
|
'/\b\d{10}\b/', // 10-digit timestamp
|
||||||
|
'/\b\d{13}\b/', // 13-digit millisecond timestamp
|
||||||
|
'/\d{4}-\d{2}/', // YYYY-MM
|
||||||
|
'/[Jj]an|[Ff]eb|[Mm]ar|[Aa]pr|[Mm]ay|[Jj]un|[Jj]ul|[Aa]ug|[Ss]ep|[Oo]ct|[Nn]ov|[Dd]ec/i', // Month names
|
||||||
|
'/_\d{4}\d{2}\d{2}/', // _YYYYMMDD
|
||||||
|
'/_\d{4}-\d{2}-\d{2}/', // _YYYY-MM-DD
|
||||||
|
];
|
||||||
|
|
||||||
|
$sanitized = $filename;
|
||||||
|
foreach ($patterns as $pattern) {
|
||||||
|
$sanitized = preg_replace($pattern, '', $sanitized);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean up resulting double underscores, dashes, or dots
|
||||||
|
$sanitized = preg_replace('/[_\-\.]{2,}/', '_', $sanitized);
|
||||||
|
// Remove leading/trailing underscores, dashes, or dots
|
||||||
|
$sanitized = trim($sanitized, '_-.');
|
||||||
|
|
||||||
|
return $sanitized;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------
|
||||||
|
// REMOVE PREPOSITION WORDS FROM FILENAME
|
||||||
|
// -------------------------
|
||||||
|
function remove_preposition_words($filename) {
|
||||||
|
// List of preposition words to remove (case-insensitive)
|
||||||
|
$prepositions = [
|
||||||
|
'from', 'by', 'to', 'via', 'till', 'until', 'at', 'in', 'on', 'with',
|
||||||
|
'for', 'of', 'and', 'or', 'but', 'as', 'is', 'was', 'are', 'be',
|
||||||
|
'been', 'being', 'have', 'has', 'had', 'do', 'does', 'did',
|
||||||
|
];
|
||||||
|
|
||||||
|
$sanitized = $filename;
|
||||||
|
|
||||||
|
// Remove whole word matches with word boundaries
|
||||||
|
foreach ($prepositions as $word) {
|
||||||
|
// Match word as a whole word (case-insensitive)
|
||||||
|
$sanitized = preg_replace('/\b' . preg_quote($word, '/') . '\b/i', '', $sanitized);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean up resulting multiple underscores and dashes (any combination)
|
||||||
|
$sanitized = preg_replace('/[_\-]+/', '_', $sanitized);
|
||||||
|
// Remove leading/trailing underscores, dashes, or dots
|
||||||
|
$sanitized = trim($sanitized, '_-.');
|
||||||
|
|
||||||
|
return $sanitized;
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------
|
// -------------------------
|
||||||
// CORS HEADERS
|
// CORS HEADERS
|
||||||
// -------------------------
|
// -------------------------
|
||||||
@@ -271,7 +335,12 @@ if ($request_method === 'POST') {
|
|||||||
// Sanitize original filename (remove extension first)
|
// Sanitize original filename (remove extension first)
|
||||||
$ext = pathinfo($originalName, PATHINFO_EXTENSION);
|
$ext = pathinfo($originalName, PATHINFO_EXTENSION);
|
||||||
$nameWithoutExt = pathinfo($originalName, PATHINFO_FILENAME);
|
$nameWithoutExt = pathinfo($originalName, PATHINFO_FILENAME);
|
||||||
|
$nameWithoutExt = remove_datetime_from_filename($nameWithoutExt);
|
||||||
|
$nameWithoutExt = remove_preposition_words($nameWithoutExt);
|
||||||
$nameWithoutExt = preg_replace('/[^A-Za-z0-9_\-]/', '_', $nameWithoutExt);
|
$nameWithoutExt = preg_replace('/[^A-Za-z0-9_\-]/', '_', $nameWithoutExt);
|
||||||
|
// Remove multiple consecutive underscores and dashes
|
||||||
|
$nameWithoutExt = preg_replace('/[_\-]+/', '_', $nameWithoutExt);
|
||||||
|
$nameWithoutExt = trim($nameWithoutExt, '_-');
|
||||||
|
|
||||||
// Generate random string and append
|
// Generate random string and append
|
||||||
do {
|
do {
|
||||||
|
|||||||
Reference in New Issue
Block a user