Respect resolver's trust options

This commit is contained in:
Alexandru Dima 2021-04-16 17:14:53 +02:00
parent 78872ce611
commit 30ae7bde85
No known key found for this signature in database
GPG key ID: 6E58D7B045760DA0
5 changed files with 21 additions and 9 deletions

View file

@ -203,7 +203,8 @@ export function activate(context: vscode.ExtensionContext) {
proxyServer.listen(0, () => {
const port = (<net.AddressInfo>proxyServer.address()).port;
outputChannel.appendLine(`Going through proxy at port ${port}`);
res(new vscode.ResolvedAuthority('127.0.0.1', port));
const r: vscode.ResolverResult = new vscode.ResolvedAuthority('127.0.0.1', port);
res(r);
});
context.subscriptions.push({
dispose: () => {

View file

@ -18,12 +18,12 @@ export interface ResolvedAuthority {
export enum RemoteTrustOption {
Unknown = 0,
DisableTrust = 1,
MachineTrusted = 2,
MachineUntrusted = 3
MachineTrusted = 2
}
export interface ResolvedOptions {
readonly extensionHostEnv?: { [key: string]: string | null };
readonly trust?: RemoteTrustOption;
}
export interface TunnelDescription {

View file

@ -83,8 +83,7 @@ declare module 'vscode' {
export enum RemoteTrustOption {
Unknown = 0,
DisableTrust = 1,
MachineTrusted = 2,
MachineUntrusted = 3
MachineTrusted = 2
}
export interface ResolvedOptions {

View file

@ -668,7 +668,8 @@ export abstract class AbstractExtHostExtensionService extends Disposable impleme
connectionToken: result.connectionToken
};
const options: ResolvedOptions = {
extensionHostEnv: result.extensionHostEnv
extensionHostEnv: result.extensionHostEnv,
trust: result.trust
};
return {

View file

@ -15,7 +15,7 @@ import { IWorkbenchExtensionEnablementService, EnablementState, IWebExtensionsSc
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IRemoteExtensionHostDataProvider, RemoteExtensionHost, IRemoteExtensionHostInitData } from 'vs/workbench/services/extensions/common/remoteExtensionHost';
import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService';
import { IRemoteAuthorityResolverService, RemoteAuthorityResolverError, ResolverResult } from 'vs/platform/remote/common/remoteAuthorityResolver';
import { IRemoteAuthorityResolverService, RemoteAuthorityResolverError, RemoteTrustOption, ResolverResult } from 'vs/platform/remote/common/remoteAuthorityResolver';
import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
import { ILifecycleService, LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle';
import { INotificationService, Severity } from 'vs/platform/notification/common/notification';
@ -44,6 +44,7 @@ import { updateProxyConfigurationsScope } from 'vs/platform/request/common/reque
import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry';
import { Codicon } from 'vs/base/common/codicons';
import { IDialogService } from 'vs/platform/dialogs/common/dialogs';
import { IWorkspaceTrustManagementService } from 'vs/platform/workspace/common/workspaceTrust';
const MACHINE_PROMPT = false;
@ -74,6 +75,7 @@ export class ExtensionService extends AbstractExtensionService implements IExten
@IExtensionGalleryService private readonly _extensionGalleryService: IExtensionGalleryService,
@ILogService private readonly _logService: ILogService,
@IDialogService private readonly _dialogService: IDialogService,
@IWorkspaceTrustManagementService private readonly _workspaceTrustManagementService: IWorkspaceTrustManagementService,
) {
super(
new ExtensionRunningLocationClassifier(
@ -363,11 +365,20 @@ export class ExtensionService extends AbstractExtensionService implements IExten
return;
}
if (MACHINE_PROMPT) {
let promptForMachineTrust = MACHINE_PROMPT;
if (resolverResult.options?.trust === RemoteTrustOption.DisableTrust) {
promptForMachineTrust = false;
this._workspaceTrustManagementService.setWorkspaceTrust(true);
} else if (resolverResult.options?.trust === RemoteTrustOption.MachineTrusted) {
promptForMachineTrust = false;
}
if (promptForMachineTrust) {
const dialogResult = await this._dialogService.show(
Severity.Info,
nls.localize('machineTrustQuestion', "Do you trust the machine you're connecting to?"),
[nls.localize('yes', "Yes, connect."), nls.localize('no', "No, disconnect.")],
[nls.localize('yes', "Yes, connect."), nls.localize('no', "No, do not connect.")],
{
cancelId: 1,
custom: {