UNPKG

balena-cli

Version:

The official balena Command Line Interface

70 lines 2.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupGlobalHttpProxy = setupGlobalHttpProxy; exports.makeUrlFromTunnelNgConfig = makeUrlFromTunnelNgConfig; async function setupGlobalHttpProxy(settings) { const { env } = process; if (env.http_proxy) { env.HTTP_PROXY = env.http_proxy; } if (env.https_proxy) { env.HTTPS_PROXY = env.https_proxy; } delete env.http_proxy; delete env.https_proxy; const proxy = settings.getCatch('proxy'); if (proxy || env.HTTPS_PROXY || env.HTTP_PROXY) { const semver = await Promise.resolve().then(() => require('semver')); if (semver.lt(process.version, '10.16.0')) { await setupGlobalTunnelNgProxy(proxy); } else { await setupGlobalAgentProxy(settings, proxy); } } } async function setupGlobalTunnelNgProxy(proxy) { const globalTunnel = await Promise.resolve().then(() => require('global-tunnel-ng')); globalTunnel.initialize(proxy); global.PROXY_CONFIG = globalTunnel.proxyConfig; } async function setupGlobalAgentProxy(settings, proxy) { const noProxy = settings.getCatch('noProxy'); const requiredNoProxy = ['localhost', '127.0.0.1']; const privateNoProxy = ['*.local', '10.*', '192.168.*']; for (let i = 16; i <= 31; i++) { privateNoProxy.push(`172.${i}.*`); } const doProxy = (process.env.BALENARC_DO_PROXY || '').split(','); const env = process.env; env.GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE = ''; env.NO_PROXY = [ ...requiredNoProxy, ...(noProxy ? noProxy.split(',').filter((v) => v) : privateNoProxy), ] .filter((i) => !doProxy.includes(i)) .join(','); if (proxy) { const proxyUrl = typeof proxy === 'string' ? proxy : makeUrlFromTunnelNgConfig(proxy); env.HTTPS_PROXY = env.HTTP_PROXY = proxyUrl; } const { bootstrap } = await Promise.resolve().then(() => require('global-agent')); bootstrap(); } function makeUrlFromTunnelNgConfig(cfg) { let url = cfg.host; if (cfg.proxyAuth) { url = `${cfg.proxyAuth}@${url}`; } if (cfg.protocol) { const match = cfg.protocol.match(/^[^:/]+/); if (match) { url = `${match[0].toLowerCase()}://${url}`; } } if (cfg.port) { url = `${url}:${cfg.port}`; } return url; } //# sourceMappingURL=proxy.js.map