From 7c6c8f16e517dcc76a8881fa3bafc2a67ed77826 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emrik=20=C3=96stling?= Date: Sun, 8 Nov 2026 14:56:36 +0100 Subject: [PATCH] Merge commit from fork --- src/converters/main.ts | 4 ++++ src/pages/convert.tsx | 5 +++-- tests/pages/convert.test.ts | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/converters/main.ts b/src/converters/main.ts index d87ecd18..a82adadd 100644 --- a/src/converters/main.ts +++ b/src/converters/main.ts @@ -361,6 +361,10 @@ for (const converterName in properties) { } } +export const getTargetsForConverter = (converter: string): string[] => { + return allTargets[converter] || []; +}; + export const getAllTargets = () => { return allTargets; }; diff --git a/src/pages/convert.tsx b/src/pages/convert.tsx index de4f7337..556a9825 100644 --- a/src/pages/convert.tsx +++ b/src/pages/convert.tsx @@ -4,7 +4,7 @@ import { Elysia, t } from "elysia"; import sanitize from "sanitize-filename"; import { outputDir, uploadsDir } from ".."; -import { handleConvert } from "../converters/main"; +import { getTargetsForConverter, handleConvert } from "../converters/main"; import db from "../db/db"; import { Jobs } from "../db/types"; import { WEBROOT } from "../helpers/env"; @@ -53,7 +53,8 @@ export const convert = new Elysia().use(userService).post( !converterName || convertTo.includes("/") || convertTo.includes("\\") || - convertTo.includes("..") + convertTo.includes("..") || + !getTargetsForConverter(converterName)?.includes(convertTo) ) { return redirect(`${WEBROOT}/`, 302); } diff --git a/tests/pages/convert.test.ts b/tests/pages/convert.test.ts index 0983183d..3696f011 100644 --- a/tests/pages/convert.test.ts +++ b/tests/pages/convert.test.ts @@ -127,13 +127,13 @@ describe("POST /convert", () => { await convertRequest( { auth: user.token, jobId: job }, - { convert_to: "JPG,doesnotexist", file_names: '["photo.png"]' }, + { convert_to: "JPG,vips", file_names: '["photo.png"]' }, ); await waitFor(() => jobRow(job).status === "completed"); // jpg is normalized to jpeg, whose files get the .jpg extension expect(fileRows(job)).toEqual([ - { file_name: "photo.png", output_file_name: "photo.jpg", status: "File type not supported" }, + { file_name: "photo.png", output_file_name: "photo.jpg", status: "Failed, check logs" }, ]); });