Added PROXY_TRUST_CA

This commit is contained in:
WardPearce
2026-04-30 03:22:03 +12:00
parent c18d50de12
commit ab2a2a2083
2 changed files with 19 additions and 5 deletions
-4
View File
@@ -42,13 +42,9 @@ export const fetchProxied = async (
const nonProxiedUrl =
requestInput instanceof Request ? requestInput.url : requestInput.toString();
console.log('nonProxiedUrl', nonProxiedUrl);
if (needsProxying(nonProxiedUrl)) {
const proxiedUrl = corsProxyUrl + encodeUrl(nonProxiedUrl);
console.log('proxiedUrl', proxiedUrl);
if (requestInput instanceof Request) {
requestInput = new Request(proxiedUrl, {
method: requestInput.method,
@@ -1,6 +1,9 @@
import { isOwnBackend } from '$lib/shared';
import { env } from '$env/dynamic/public';
import { env as privateEnv } from '$env/dynamic/private';
import { Agent } from 'undici';
import fs from 'fs';
import tls from 'tls';
import { error } from '@sveltejs/kit';
import { parse as tldParse } from 'tldts';
@@ -59,6 +62,19 @@ for (const dynamicDomain of dynamicAllowDomainsEnvVars) {
}
}
let dispatcher: Agent;
const certPath = privateEnv.PROXY_TRUST_CA;
if (certPath && fs.existsSync(certPath)) {
dispatcher = new Agent({
connect: {
ca: [fs.readFileSync(certPath), ...tls.rootCertificates]
}
});
} else {
dispatcher = new Agent();
}
async function proxyRequest(
request: Request,
urlToProxy: string,
@@ -145,7 +161,9 @@ async function proxyRequest(
response = await fetch(urlToProxyObj.toString(), {
...requestOptions,
body,
signal: AbortSignal.timeout(10000)
signal: AbortSignal.timeout(10000),
// @ts-expect-error Node-specific option
dispatcher
});
} catch (err) {
errorMsg = (err as any).toString();