api/core: use EnvHttpProxyAgent for proxy requests

This commit is contained in:
wukko 2025-07-19 18:59:45 +06:00
parent 95efd71eac
commit e83baa9138
No known key found for this signature in database
GPG Key ID: 3E30B3F26C7B4AA2
3 changed files with 11 additions and 9 deletions

View File

@ -1,7 +1,7 @@
import cors from "cors";
import http from "node:http";
import rateLimit from "express-rate-limit";
import { setGlobalDispatcher, ProxyAgent } from "undici";
import { setGlobalDispatcher, EnvHttpProxyAgent } from "undici";
import { getCommit, getBranch, getRemote, getVersion } from "@imput/version-info";
import jwt from "../security/jwt.js";
@ -337,9 +337,10 @@ export const runAPI = async (express, app, __dirname, isPrimary = true) => {
randomizeCiphers();
setInterval(randomizeCiphers, 1000 * 60 * 30); // shuffle ciphers every 30 minutes
if (env.externalProxy) {
setGlobalDispatcher(new ProxyAgent(env.externalProxy))
}
// TODO: remove env.externalProxy in a future version
setGlobalDispatcher(
new EnvHttpProxyAgent({ httpProxy: env.externalProxy || undefined })
);
http.createServer(app).listen({
port: env.apiPort,

View File

@ -4,7 +4,7 @@ import { env } from "../config.js";
import { runTest } from "../misc/run-test.js";
import { loadJSON } from "../misc/load-from-fs.js";
import { Red, Bright } from "../misc/console-text.js";
import { setGlobalDispatcher, ProxyAgent } from "undici";
import { setGlobalDispatcher, EnvHttpProxyAgent, ProxyAgent } from "undici";
import { randomizeCiphers } from "../misc/randomize-ciphers.js";
import { services } from "../processing/service-config.js";
@ -69,9 +69,10 @@ const printHeader = (service, padLen) => {
console.log(service + '='.repeat(50));
}
if (env.externalProxy) {
setGlobalDispatcher(new ProxyAgent(env.externalProxy));
}
// TODO: remove env.externalProxy in a future version
setGlobalDispatcher(
new EnvHttpProxyAgent({ httpProxy: env.externalProxy || undefined })
);
env.streamLifespan = 10000;
env.apiURL = 'http://x/';

View File

@ -124,7 +124,7 @@ defines the local address for the api instance. if you are using a docker contai
the value is a local IP address.
### API_EXTERNAL_PROXY
URL of the proxy that will be passed to [`ProxyAgent`](https://undici.nodejs.org/#/docs/api/ProxyAgent) and used for all external requests. HTTP(S) only.
URL of the proxy that will be passed to [`EnvHttpProxyAgent`](https://undici.nodejs.org/#/docs/api/EnvHttpProxyAgent) and used for all external requests. HTTP(S) only.
if some feature breaks when using a proxy, please make a new issue about it!