プロキシの除外ホスト (#6244)
* プロキシの除外ホスト * オブジェクトストレージとの通信にProxyを使うかを選択できるように * fix lint * コメント Co-authored-by: rinsuki <428rinsuki+git@gmail.com>
This commit is contained in:
parent
e7da10ae58
commit
36b9a0d42f
12 changed files with 89 additions and 16 deletions
|
@ -2,7 +2,7 @@ import * as fs from 'fs';
|
|||
import * as stream from 'stream';
|
||||
import * as util from 'util';
|
||||
import fetch from 'node-fetch';
|
||||
import { httpAgent, httpsAgent } from './fetch';
|
||||
import { getAgentByUrl } from './fetch';
|
||||
import { AbortController } from 'abort-controller';
|
||||
import config from '../config';
|
||||
import * as chalk from 'chalk';
|
||||
|
@ -25,7 +25,7 @@ export async function downloadUrl(url: string, path: string) {
|
|||
},
|
||||
timeout: 10 * 1000,
|
||||
signal: controller.signal,
|
||||
agent: u => u.protocol == 'http:' ? httpAgent : httpsAgent,
|
||||
agent: getAgentByUrl,
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
|
|
|
@ -13,7 +13,7 @@ export async function getJson(url: string, accept = 'application/json, */*', tim
|
|||
Accept: accept
|
||||
}, headers || {}),
|
||||
timeout,
|
||||
agent: u => u.protocol == 'http:' ? httpAgent : httpsAgent,
|
||||
agent: getAgentByUrl,
|
||||
});
|
||||
|
||||
if (!res.ok) {
|
||||
|
@ -27,17 +27,46 @@ export async function getJson(url: string, accept = 'application/json, */*', tim
|
|||
return await res.json();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get http non-proxy agent
|
||||
*/
|
||||
const _http = new http.Agent({
|
||||
keepAlive: true,
|
||||
keepAliveMsecs: 30 * 1000,
|
||||
});
|
||||
|
||||
/**
|
||||
* Get https non-proxy agent
|
||||
*/
|
||||
const _https = new https.Agent({
|
||||
keepAlive: true,
|
||||
keepAliveMsecs: 30 * 1000,
|
||||
lookup: cache.lookup,
|
||||
});
|
||||
|
||||
/**
|
||||
* Get http proxy or non-proxy agent
|
||||
*/
|
||||
export const httpAgent = config.proxy
|
||||
? new HttpProxyAgent(config.proxy)
|
||||
: new http.Agent({
|
||||
keepAlive: true,
|
||||
keepAliveMsecs: 30 * 1000,
|
||||
});
|
||||
: _http;
|
||||
|
||||
/**
|
||||
* Get https proxy or non-proxy agent
|
||||
*/
|
||||
export const httpsAgent = config.proxy
|
||||
? new HttpsProxyAgent(config.proxy)
|
||||
: new https.Agent({
|
||||
keepAlive: true,
|
||||
keepAliveMsecs: 30 * 1000,
|
||||
lookup: cache.lookup,
|
||||
});
|
||||
: _https;
|
||||
|
||||
/**
|
||||
* Get agent by URL
|
||||
* @param url URL
|
||||
* @param bypassProxy Allways bypass proxy
|
||||
*/
|
||||
export function getAgentByUrl(url: URL, bypassProxy = false) {
|
||||
if (bypassProxy || (config.proxyBypassHosts || []).includes(url.hostname)) {
|
||||
return url.protocol == 'http:' ? _http : _https;
|
||||
} else {
|
||||
return url.protocol == 'http:' ? httpAgent : httpsAgent;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue