Compare commits

..

1 Commits

Author SHA1 Message Date
gauthier-th
79951e1c20 fix(proxy): apply authentication
This PR applies the authentication to the HTTP Proxy inside the default Agent used by Axios.
2025-06-21 15:43:58 +02:00
4 changed files with 9 additions and 15 deletions

View File

@@ -37,8 +37,6 @@ class ExternalAPI {
...options.headers, ...options.headers,
}, },
}); });
this.axios.interceptors.request = axios.interceptors.request;
this.axios.interceptors.response = axios.interceptors.response;
if (options.rateLimit) { if (options.rateLimit) {
this.axios = rateLimit(this.axios, { this.axios = rateLimit(this.axios, {

View File

@@ -123,8 +123,6 @@ class TautulliAPI {
}${settings.urlBase ?? ''}`, }${settings.urlBase ?? ''}`,
params: { apikey: settings.apiKey }, params: { apikey: settings.apiKey },
}); });
this.axios.interceptors.request = axios.interceptors.request;
this.axios.interceptors.response = axios.interceptors.response;
} }
public async getInfo(): Promise<TautulliInfo> { public async getInfo(): Promise<TautulliInfo> {

View File

@@ -150,8 +150,6 @@ class ImageProxy {
baseURL: baseUrl, baseURL: baseUrl,
headers: options.headers, headers: options.headers,
}); });
this.axios.interceptors.request = axios.interceptors.request;
this.axios.interceptors.response = axios.interceptors.response;
if (options.rateLimitOptions) { if (options.rateLimitOptions) {
this.axios = rateLimit(this.axios, options.rateLimitOptions); this.axios = rateLimit(this.axios, options.rateLimitOptions);

View File

@@ -56,9 +56,12 @@ export default async function createCustomProxyAgent(
: undefined; : undefined;
try { try {
const proxyUrl = `${proxySettings.useSsl ? 'https' : 'http'}://${ const proxyUrl =
proxySettings.hostname (proxySettings.useSsl ? 'https://' : 'http://') +
}:${proxySettings.port}`; proxySettings.hostname +
':' +
proxySettings.port;
const proxyAgent = new ProxyAgent({ const proxyAgent = new ProxyAgent({
uri: proxyUrl, uri: proxyUrl,
token, token,
@@ -68,16 +71,13 @@ export default async function createCustomProxyAgent(
setGlobalDispatcher(proxyAgent.compose(noProxyInterceptor)); setGlobalDispatcher(proxyAgent.compose(noProxyInterceptor));
axios.defaults.httpAgent = new HttpProxyAgent(proxyUrl, { axios.defaults.httpAgent = new HttpProxyAgent(proxyUrl, {
headers: token ? { 'proxy-authorization': token } : undefined, headers: { 'proxy-authorization': token },
}); });
axios.defaults.httpsAgent = new HttpsProxyAgent(proxyUrl, { axios.defaults.httpsAgent = new HttpsProxyAgent(proxyUrl, {
headers: token ? { 'proxy-authorization': token } : undefined, headers: { 'proxy-authorization': token },
}); });
axios.interceptors.request.use((config) => { axios.interceptors.request.use((config) => {
const url = config.baseURL if (config.url && skipUrl(config.url)) {
? new URL(config.baseURL + (config.url || ''))
: config.url;
if (url && skipUrl(url)) {
config.httpAgent = false; config.httpAgent = false;
config.httpsAgent = false; config.httpsAgent = false;
} }