summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2025-06-08 03:05:14 +0400
committerilotterytea <iltsu@alright.party>2025-06-08 03:05:14 +0400
commit2e6a74c3fea5ee7c18d97e19dfade945295b851f (patch)
tree9f1f7a1cc4bb4046509e65ee230868d2618505bd
parent3985f082a08cbfa917f9f6376d04d1910100fb90 (diff)
feat: strip exif data
-rw-r--r--lib/file.php7
-rw-r--r--public/index.php6
-rw-r--r--public/upload.php5
3 files changed, 18 insertions, 0 deletions
diff --git a/lib/file.php b/lib/file.php
index d8f740e..fe7dae1 100644
--- a/lib/file.php
+++ b/lib/file.php
@@ -34,4 +34,11 @@ function delete_file(string $file_id, string $file_extension): bool
}
return true;
+}
+
+function strip_exif(string $file_path)
+{
+ $file_path = escapeshellarg($file_path);
+ $output = shell_exec("exiftool -q -EXIF= $file_path $file_path");
+ return empty($output);
} \ No newline at end of file
diff --git a/public/index.php b/public/index.php
index 7c23b88..6f58fe8 100644
--- a/public/index.php
+++ b/public/index.php
@@ -299,6 +299,12 @@ $privacy_exists = is_file($_SERVER['DOCUMENT_ROOT'] . '/static/PRIVACY.txt');
<th>Preserve original filename:</th>
<td><input type="checkbox" name="preserve_original_name" value="1"></td>
</tr>
+ <?php if (FILE_STRIP_EXIF): ?>
+ <tr>
+ <th>Strip EXIF data:</th>
+ <td><input type="checkbox" name="strip_exif_data" value="1" checked></td>
+ </tr>
+ <?php endif; ?>
</table>
<button type="submit">Upload</button>
</form>
diff --git a/public/upload.php b/public/upload.php
index a0810ef..11c0f15 100644
--- a/public/upload.php
+++ b/public/upload.php
@@ -108,6 +108,11 @@ try {
throw new RuntimeException('Invalid file format.');
}
+ // striping exif data
+ if (FILE_STRIP_EXIF && $is_media && !strip_exif($file['tmp_name'])) {
+ throw new RuntimeException('Failed to strip EXIF tags.');
+ }
+
$file_data = [
'size' => $file['size'],
'mime' => $file_mime,