edit-meta: fail fast for forbidden mimes

Signed-off-by: Varun Patil <radialapps@gmail.com>
pull/900/head
Varun Patil 2023-10-30 12:50:11 -07:00
parent 32e910561d
commit 3be478b8ce
3 changed files with 15 additions and 3 deletions

View File

@ -10,7 +10,7 @@ use OCP\Files\File;
class Exif class Exif
{ {
private const FORBIDDEN_EDIT_MIMES = ['image/bmp', 'image/x-dcraw', 'video/MP2T']; private const FORBIDDEN_EDIT_MIMES = ['image/bmp', 'image/x-dcraw', 'video/MP2T']; // also update const.ts
private const EXIFTOOL_TIMEOUT = 30000; private const EXIFTOOL_TIMEOUT = 30000;
private const EXIFTOOL_ARGS = ['-api', 'QuickTimeUTC=1', '-n', '-json']; private const EXIFTOOL_ARGS = ['-api', 'QuickTimeUTC=1', '-n', '-json'];

View File

@ -124,6 +124,18 @@ export default defineComponent({
let done = 0; let done = 0;
this.progress = 0; this.progress = 0;
// Filter out forbidden MIME types
photos = photos.filter((p) => {
if (this.c.FORBIDDEN_EDIT_MIMES.includes(p.mimetype ?? String())) {
showWarning(
this.t('memories', 'Cannot edit {name} of type {type}', { name: p.basename!, type: p.mimetype! }),
);
return false;
}
return true;
});
// Load metadata for all photos // Load metadata for all photos
const calls = photos.map((p) => async () => { const calls = photos.map((p) => async () => {
try { try {

View File

@ -3,7 +3,6 @@ import type { IPhoto } from '@typings';
/** Global constants */ /** Global constants */
export const constants = Object.freeze({ export const constants = Object.freeze({
// Flags for photos
FLAG_PLACEHOLDER: 1 << 0, FLAG_PLACEHOLDER: 1 << 0,
FLAG_LOAD_FAIL: 1 << 1, FLAG_LOAD_FAIL: 1 << 1,
FLAG_IS_VIDEO: 1 << 2, FLAG_IS_VIDEO: 1 << 2,
@ -12,9 +11,10 @@ export const constants = Object.freeze({
FLAG_LEAVING: 1 << 5, FLAG_LEAVING: 1 << 5,
FLAG_IS_LOCAL: 1 << 6, FLAG_IS_LOCAL: 1 << 6,
// Special strings
FACE_NULL: 'NULL', FACE_NULL: 'NULL',
MIME_RAW: 'image/x-dcraw', MIME_RAW: 'image/x-dcraw',
FORBIDDEN_EDIT_MIMES: ['image/bmp', 'image/x-dcraw', 'video/MP2T'], // Exif.php
}); });
/** /**