51 lines
1.3 KiB
TypeScript
51 lines
1.3 KiB
TypeScript
|
// Copyright 2019-2022 Signal Messenger, LLC
|
||
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||
|
|
||
|
import type { StrictOptions as GotOptions } from 'got';
|
||
|
import config from 'config';
|
||
|
import ProxyAgent from 'proxy-agent';
|
||
|
|
||
|
import * as packageJson from '../../package.json';
|
||
|
import { getUserAgent } from '../util/getUserAgent';
|
||
|
|
||
|
export const GOT_CONNECT_TIMEOUT = 2 * 60 * 1000;
|
||
|
export const GOT_LOOKUP_TIMEOUT = 2 * 60 * 1000;
|
||
|
export const GOT_SOCKET_TIMEOUT = 2 * 60 * 1000;
|
||
|
|
||
|
export function getProxyUrl(): string | undefined {
|
||
|
return process.env.HTTPS_PROXY || process.env.https_proxy;
|
||
|
}
|
||
|
|
||
|
export function getCertificateAuthority(): string {
|
||
|
return config.get('certificateAuthority');
|
||
|
}
|
||
|
|
||
|
export function getGotOptions(): GotOptions {
|
||
|
const certificateAuthority = getCertificateAuthority();
|
||
|
const proxyUrl = getProxyUrl();
|
||
|
const agent = proxyUrl
|
||
|
? {
|
||
|
http: new ProxyAgent(proxyUrl),
|
||
|
https: new ProxyAgent(proxyUrl),
|
||
|
}
|
||
|
: undefined;
|
||
|
|
||
|
return {
|
||
|
agent,
|
||
|
https: {
|
||
|
certificateAuthority,
|
||
|
},
|
||
|
headers: {
|
||
|
'Cache-Control': 'no-cache',
|
||
|
'User-Agent': getUserAgent(packageJson.version),
|
||
|
},
|
||
|
timeout: {
|
||
|
connect: GOT_CONNECT_TIMEOUT,
|
||
|
lookup: GOT_LOOKUP_TIMEOUT,
|
||
|
|
||
|
// This timeout is reset whenever we get new data on the socket
|
||
|
socket: GOT_SOCKET_TIMEOUT,
|
||
|
},
|
||
|
};
|
||
|
}
|