diff --git a/package.json b/package.json index 8604f8a..497264d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "trackarr", - "version": "0.5.4", + "version": "0.5.5", "type": "module", "private": true, "scripts": { diff --git a/server/api/torznab/index.head.ts b/server/api/torznab/index.head.ts new file mode 100644 index 0000000..5fc6db9 --- /dev/null +++ b/server/api/torznab/index.head.ts @@ -0,0 +1,26 @@ +/** + * Torznab API - HEAD handler + * HEAD /api/torznab + * + * Returns proper headers for HEAD requests (used by Prowlarr/Sonarr/Radarr to test connection) + * Without this, Nuxt SSR middleware intercepts HEAD requests and redirects to login + */ + +import { getTorznabEnabled } from '../../utils/torznabSettings'; + +export default defineEventHandler(async (event) => { + // Check if Torznab API is enabled + const enabled = await getTorznabEnabled(); + + if (!enabled) { + setHeader(event, 'Content-Type', 'application/xml; charset=utf-8'); + setResponseStatus(event, 503); + return ''; + } + + // Return headers that indicate this is a valid Torznab endpoint + setHeader(event, 'Content-Type', 'application/xml; charset=utf-8'); + setHeader(event, 'Cache-Control', 'public, max-age=3600'); + setResponseStatus(event, 200); + return ''; +});