mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-03 01:25:38 -05:00
49 lines
1.7 KiB
TypeScript
49 lines
1.7 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
'use strict';
|
|
|
|
import { Url, parse as parseUrl } from 'url';
|
|
const HttpProxyAgent = require('http-proxy-agent');
|
|
const HttpsProxyAgent = require('https-proxy-agent');
|
|
|
|
function getSystemProxyURL(requestURL: Url): string {
|
|
if (requestURL.protocol === 'http:') {
|
|
return process.env.HTTP_PROXY || process.env.http_proxy || undefined;
|
|
} else if (requestURL.protocol === 'https:') {
|
|
return process.env.HTTPS_PROXY || process.env.https_proxy || process.env.HTTP_PROXY || process.env.http_proxy || undefined;
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
/*
|
|
* Returns the proxy agent using the proxy url in the parameters or the system proxy. Returns null if no proxy found
|
|
*/
|
|
export function getProxyAgent(requestURL: Url, proxy?: string, strictSSL?: boolean): any {
|
|
const proxyURL = proxy || getSystemProxyURL(requestURL);
|
|
|
|
if (!proxyURL) {
|
|
return undefined;
|
|
}
|
|
|
|
const proxyEndpoint = parseUrl(proxyURL);
|
|
|
|
if (!/^https?:$/.test(proxyEndpoint.protocol)) {
|
|
return undefined;
|
|
}
|
|
|
|
strictSSL = strictSSL || true;
|
|
|
|
const opts = {
|
|
host: proxyEndpoint.hostname,
|
|
port: Number(proxyEndpoint.port),
|
|
auth: proxyEndpoint.auth,
|
|
rejectUnauthorized: strictSSL
|
|
};
|
|
|
|
return requestURL.protocol === 'http:' ? new HttpProxyAgent(opts) : new HttpsProxyAgent(opts);
|
|
}
|