diff --git a/server/lib/blueprints/proxyResources.ts b/server/lib/blueprints/proxyResources.ts index 178991962..6fac02122 100644 --- a/server/lib/blueprints/proxyResources.ts +++ b/server/lib/blueprints/proxyResources.ts @@ -210,8 +210,16 @@ export async function updateProxyResources( ? true : resourceData.ssl; let headers = ""; - if (resourceData.headers) { - headers = JSON.stringify(resourceData.headers); + const requestHeadersData = [ + ...(resourceData.headers ?? []), + ...(resourceData.requestHeaders ?? []) + ]; + if (requestHeadersData.length > 0) { + headers = JSON.stringify(requestHeadersData); + } + let responseHeaders = ""; + if (resourceData.responseHeaders) { + responseHeaders = JSON.stringify(resourceData.responseHeaders); } if (existingResource) { @@ -265,7 +273,8 @@ export async function updateProxyResources( ] ? resourceData.auth["whitelist-users"].length > 0 : false, - headers: headers || null, + requestHeaders: headers || null, + responseHeaders: responseHeaders || null, applyRules: resourceData.rules && resourceData.rules.length > 0, maintenanceModeEnabled: @@ -724,7 +733,8 @@ export async function updateProxyResources( setHostHeader: resourceData["host-header"] || null, tlsServerName: resourceData["tls-server-name"] || null, ssl: resourceSsl, - headers: headers || null, + requestHeaders: headers || null, + responseHeaders: responseHeaders || null, applyRules: resourceData.rules && resourceData.rules.length > 0, maintenanceModeEnabled: resourceData.maintenance?.enabled, diff --git a/server/lib/blueprints/types.ts b/server/lib/blueprints/types.ts index 13f4caa8f..2bff77d10 100644 --- a/server/lib/blueprints/types.ts +++ b/server/lib/blueprints/types.ts @@ -175,7 +175,9 @@ export const ResourceSchema = z auth: AuthSchema.optional(), "host-header": z.string().optional(), "tls-server-name": z.string().optional(), - headers: z.array(HeaderSchema).optional(), + headers: z.array(HeaderSchema).optional(), // deprecated alias for requestHeaders + requestHeaders: z.array(HeaderSchema).optional(), + responseHeaders: z.array(HeaderSchema).optional(), rules: z.array(RuleSchema).optional(), maintenance: MaintenanceSchema.optional() }) diff --git a/server/routers/resource/getResource.ts b/server/routers/resource/getResource.ts index bbd58320c..d63012f18 100644 --- a/server/routers/resource/getResource.ts +++ b/server/routers/resource/getResource.ts @@ -43,9 +43,10 @@ async function query(resourceId?: number, niceId?: string, orgId?: string) { export type GetResourceResponse = Omit< NonNullable>>, - "headers" + "requestHeaders" | "responseHeaders" > & { - headers: { name: string; value: string }[] | null; + requestHeaders: { name: string; value: string }[] | null; + responseHeaders: { name: string; value: string }[] | null; }; registry.registerPath({