Skip to content

Commit eeb87b3

Browse files
committed
Load certificates in net.connect (microsoft#185098)
1 parent b717c5a commit eeb87b3

File tree

5 files changed

+39
-19
lines changed

5 files changed

+39
-19
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
"@parcel/watcher": "2.1.0",
6969
"@vscode/iconv-lite-umd": "0.7.0",
7070
"@vscode/policy-watcher": "^1.1.4",
71-
"@vscode/proxy-agent": "^0.13.2",
71+
"@vscode/proxy-agent": "^0.14.1",
7272
"@vscode/ripgrep": "^1.15.4",
7373
"@vscode/spdlog": "^0.13.10",
7474
"@vscode/sqlite3": "5.1.5-vscode",

remote/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"@microsoft/1ds-post-js": "^3.2.2",
88
"@parcel/watcher": "2.1.0",
99
"@vscode/iconv-lite-umd": "0.7.0",
10-
"@vscode/proxy-agent": "^0.13.2",
10+
"@vscode/proxy-agent": "^0.14.1",
1111
"@vscode/ripgrep": "^1.15.4",
1212
"@vscode/spdlog": "^0.13.10",
1313
"@vscode/vscode-languagedetection": "1.0.21",

remote/yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,10 @@
5858
resolved "https://registry.yarnpkg.com/@vscode/iconv-lite-umd/-/iconv-lite-umd-0.7.0.tgz#d2f1e0664ee6036408f9743fee264ea0699b0e48"
5959
integrity sha512-bRRFxLfg5dtAyl5XyiVWz/ZBPahpOpPrNYnnHpOpUZvam4tKH35wdhP4Kj6PbM0+KdliOsPzbGWpkxcdpNB/sg==
6060

61-
"@vscode/proxy-agent@^0.13.2":
62-
version "0.13.2"
63-
resolved "https://registry.yarnpkg.com/@vscode/proxy-agent/-/proxy-agent-0.13.2.tgz#0d289826c07faecc4ca07de80a8e5a9459d06119"
64-
integrity sha512-BSUd0NTj44WvG4O9A6N+4R1XhxtPqCYltWeHyNkquX9T//a1US+cd8fxzcZCPd3z7dygdYIPkZAKM+CrefWWOA==
61+
"@vscode/proxy-agent@^0.14.1":
62+
version "0.14.1"
63+
resolved "https://registry.yarnpkg.com/@vscode/proxy-agent/-/proxy-agent-0.14.1.tgz#61866221a8fbd5143f73a14c29deccdf85f13113"
64+
integrity sha512-bJxCO9E6zDpy90TiViAZgFjAgo83gS0Lh5CUIu/JZ8p5UwwQ37Y6LZH2f2l6kBr2RGdNSRbORTFrfmLtr1faRA==
6565
dependencies:
6666
"@tootallnate/once" "^1.1.2"
6767
agent-base "^6.0.2"

src/vs/workbench/api/node/proxyResolver.ts

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import * as http from 'http';
77
import * as https from 'https';
88
import * as tls from 'tls';
9+
import * as net from 'net';
910

1011
import { IExtHostWorkspaceProvider } from 'vs/workbench/api/common/extHostWorkspace';
1112
import { ExtHostConfigProvider } from 'vs/workbench/api/common/extHostConfiguration';
@@ -15,7 +16,7 @@ import { ExtHostExtensionService } from 'vs/workbench/api/node/extHostExtensionS
1516
import { URI } from 'vs/base/common/uri';
1617
import { ILogService } from 'vs/platform/log/common/log';
1718
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
18-
import { LogLevel, createHttpPatch, createProxyResolver, createTlsPatch, ProxySupportSetting } from '@vscode/proxy-agent';
19+
import { LogLevel, createHttpPatch, createProxyResolver, createTlsPatch, ProxySupportSetting, ProxyAgentParams, createNetPatch } from '@vscode/proxy-agent';
1920

2021
export function connectProxyResolver(
2122
extHostWorkspace: IExtHostWorkspaceProvider,
@@ -27,7 +28,7 @@ export function connectProxyResolver(
2728
) {
2829
const useHostProxy = initData.environment.useHostProxy;
2930
const doUseHostProxy = typeof useHostProxy === 'boolean' ? useHostProxy : !initData.remote.isRemote;
30-
const resolveProxy = createProxyResolver({
31+
const params: ProxyAgentParams = {
3132
resolveProxy: url => extHostWorkspace.resolveProxy(url),
3233
getHttpProxySetting: () => configProvider.getConfiguration('http').get('proxy'),
3334
log: (level, message, ...args) => {
@@ -50,13 +51,19 @@ export function connectProxyResolver(
5051
// TODO @chrmarti Remove this from proxy agent
5152
proxyResolveTelemetry: () => { },
5253
useHostProxy: doUseHostProxy,
54+
useSystemCertificatesV2: certSettingV2(configProvider),
55+
addCertificates: [],
5356
env: process.env,
57+
};
58+
configProvider.onDidChangeConfiguration(e => {
59+
params.useSystemCertificatesV2 = certSettingV2(configProvider);
5460
});
55-
const lookup = createPatchedModules(configProvider, resolveProxy);
61+
const resolveProxy = createProxyResolver(params);
62+
const lookup = createPatchedModules(params, configProvider, resolveProxy);
5663
return configureModuleLoading(extensionService, lookup);
5764
}
5865

59-
function createPatchedModules(configProvider: ExtHostConfigProvider, resolveProxy: ReturnType<typeof createProxyResolver>) {
66+
function createPatchedModules(params: ProxyAgentParams, configProvider: ExtHostConfigProvider, resolveProxy: ReturnType<typeof createProxyResolver>) {
6067
const proxySetting = {
6168
config: configProvider.getConfiguration('http')
6269
.get<ProxySupportSetting>('proxySupport') || 'off'
@@ -66,12 +73,10 @@ function createPatchedModules(configProvider: ExtHostConfigProvider, resolveProx
6673
.get<ProxySupportSetting>('proxySupport') || 'off';
6774
});
6875
const certSetting = {
69-
config: !!configProvider.getConfiguration('http')
70-
.get<boolean>('systemCertificates')
76+
config: certSettingV1(configProvider)
7177
};
7278
configProvider.onDidChangeConfiguration(e => {
73-
certSetting.config = !!configProvider.getConfiguration('http')
74-
.get<boolean>('systemCertificates');
79+
certSetting.config = certSettingV1(configProvider);
7580
});
7681

7782
return {
@@ -89,17 +94,32 @@ function createPatchedModules(configProvider: ExtHostConfigProvider, resolveProx
8994
onRequest: Object.assign({}, https, createHttpPatch(https, resolveProxy, proxySetting, certSetting, true)),
9095
default: Object.assign(https, createHttpPatch(https, resolveProxy, proxySetting, certSetting, false)) // run last
9196
} as Record<string, typeof https>,
92-
tls: Object.assign(tls, createTlsPatch(tls))
97+
net: Object.assign(net, createNetPatch(params, net)),
98+
tls: Object.assign(tls, createTlsPatch(params, tls))
9399
};
94100
}
95101

102+
function certSettingV1(configProvider: ExtHostConfigProvider) {
103+
const http = configProvider.getConfiguration('http');
104+
return !http.get<boolean>('experimental.systemCertificatesV2') && !!http.get<boolean>('systemCertificates');
105+
}
106+
107+
function certSettingV2(configProvider: ExtHostConfigProvider) {
108+
const http = configProvider.getConfiguration('http');
109+
return !!http.get<boolean>('experimental.systemCertificatesV2') && !!http.get<boolean>('systemCertificates');
110+
}
111+
96112
const modulesCache = new Map<IExtensionDescription | undefined, { http?: typeof http; https?: typeof https }>();
97113
function configureModuleLoading(extensionService: ExtHostExtensionService, lookup: ReturnType<typeof createPatchedModules>): Promise<void> {
98114
return extensionService.getExtensionPathIndex()
99115
.then(extensionPaths => {
100116
const node_module = <any>globalThis._VSCODE_NODE_MODULES.module;
101117
const original = node_module._load;
102118
node_module._load = function load(request: string, parent: { filename: string }, isMain: boolean) {
119+
if (request === 'net') {
120+
return lookup.net;
121+
}
122+
103123
if (request === 'tls') {
104124
return lookup.tls;
105125
}

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1287,10 +1287,10 @@
12871287
bindings "^1.5.0"
12881288
node-addon-api "^6.0.0"
12891289

1290-
"@vscode/proxy-agent@^0.13.2":
1291-
version "0.13.2"
1292-
resolved "https://registry.yarnpkg.com/@vscode/proxy-agent/-/proxy-agent-0.13.2.tgz#0d289826c07faecc4ca07de80a8e5a9459d06119"
1293-
integrity sha512-BSUd0NTj44WvG4O9A6N+4R1XhxtPqCYltWeHyNkquX9T//a1US+cd8fxzcZCPd3z7dygdYIPkZAKM+CrefWWOA==
1290+
"@vscode/proxy-agent@^0.14.1":
1291+
version "0.14.1"
1292+
resolved "https://registry.yarnpkg.com/@vscode/proxy-agent/-/proxy-agent-0.14.1.tgz#61866221a8fbd5143f73a14c29deccdf85f13113"
1293+
integrity sha512-bJxCO9E6zDpy90TiViAZgFjAgo83gS0Lh5CUIu/JZ8p5UwwQ37Y6LZH2f2l6kBr2RGdNSRbORTFrfmLtr1faRA==
12941294
dependencies:
12951295
"@tootallnate/once" "^1.1.2"
12961296
agent-base "^6.0.2"

0 commit comments

Comments
 (0)