Add ResolvedOptions.isTrusted

This commit is contained in:
Alex Dima 2021-05-21 14:56:17 +02:00
parent 49e96be2fc
commit c650993dd3
No known key found for this signature in database
GPG key ID: 6E58D7B045760DA0
5 changed files with 5 additions and 52 deletions

View file

@ -15,15 +15,9 @@ export interface ResolvedAuthority {
readonly connectionToken: string | undefined;
}
export enum RemoteTrustOption {
Unknown = 0,
DisableTrust = 1,
MachineTrusted = 2
}
export interface ResolvedOptions {
readonly extensionHostEnv?: { [key: string]: string | null };
readonly trust?: RemoteTrustOption;
readonly isTrusted?: boolean;
}
export interface TunnelDescription {

View file

@ -80,16 +80,10 @@ declare module 'vscode' {
constructor(host: string, port: number, connectionToken?: string);
}
export enum RemoteTrustOption {
Unknown = 0,
DisableTrust = 1,
MachineTrusted = 2
}
export interface ResolvedOptions {
extensionHostEnv?: { [key: string]: string | null; };
trust?: RemoteTrustOption;
isTrusted?: boolean;
}
export interface TunnelOptions {

View file

@ -84,7 +84,6 @@ import { IExtHostSecretState } from 'vs/workbench/api/common/exHostSecretState';
import { IExtHostEditorTabs } from 'vs/workbench/api/common/extHostEditorTabs';
import { IExtHostTelemetry } from 'vs/workbench/api/common/extHostTelemetry';
import { ExtHostNotebookKernels } from 'vs/workbench/api/common/extHostNotebookKernels';
import { RemoteTrustOption } from 'vs/platform/remote/common/remoteAuthorityResolver';
import { TextSearchCompleteMessageType } from 'vs/workbench/services/search/common/searchExtTypes';
import { ExtHostNotebookRenderers } from 'vs/workbench/api/common/extHostNotebookRenderers';
import { Schemas } from 'vs/base/common/network';
@ -1250,7 +1249,6 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
InlayHint: extHostTypes.InlayHint,
InlayHintKind: extHostTypes.InlayHintKind,
RemoteAuthorityResolverError: extHostTypes.RemoteAuthorityResolverError,
RemoteTrustOption: RemoteTrustOption,
ResolvedAuthority: extHostTypes.ResolvedAuthority,
SourceControlInputBoxValidationType: extHostTypes.SourceControlInputBoxValidationType,
ExtensionRuntime: extHostTypes.ExtensionRuntime,

View file

@ -668,7 +668,7 @@ export abstract class AbstractExtHostExtensionService extends Disposable impleme
};
const options: ResolvedOptions = {
extensionHostEnv: result.extensionHostEnv,
trust: result.trust
isTrusted: result.isTrusted
};
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, RemoteTrustOption, ResolverResult } from 'vs/platform/remote/common/remoteAuthorityResolver';
import { IRemoteAuthorityResolverService, RemoteAuthorityResolverError, 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';
@ -42,13 +42,9 @@ import { Schemas } from 'vs/base/common/network';
import { ExtensionHostExitCode } from 'vs/workbench/services/extensions/common/extensionHostProtocol';
import { updateProxyConfigurationsScope } from 'vs/platform/request/common/request';
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';
import { IExtensionManifestPropertiesService } from 'vs/workbench/services/extensions/common/extensionManifestPropertiesService';
const MACHINE_PROMPT = false;
export class ExtensionService extends AbstractExtensionService implements IExtensionService {
private readonly _enableLocalWebWorker: boolean;
@ -75,7 +71,6 @@ export class ExtensionService extends AbstractExtensionService implements IExten
@IRemoteExplorerService private readonly _remoteExplorerService: IRemoteExplorerService,
@IExtensionGalleryService private readonly _extensionGalleryService: IExtensionGalleryService,
@ILogService private readonly _logService: ILogService,
@IDialogService private readonly _dialogService: IDialogService,
@IWorkspaceTrustManagementService private readonly _workspaceTrustManagementService: IWorkspaceTrustManagementService,
@IExtensionManifestPropertiesService extensionManifestPropertiesService: IExtensionManifestPropertiesService,
) {
@ -368,36 +363,8 @@ export class ExtensionService extends AbstractExtensionService implements IExten
return;
}
let promptForMachineTrust = MACHINE_PROMPT;
if (resolverResult.options?.trust === RemoteTrustOption.DisableTrust) {
promptForMachineTrust = false;
if (resolverResult.options?.isTrusted) {
await 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, do not connect.")],
{
cancelId: 1,
custom: {
icon: Codicon.remoteExplorer
},
// checkbox: { label: nls.localize('remember', "Remember my choice"), checked: true }
}
);
if (dialogResult.choice !== 0) {
// Did not confirm trust
this._notificationService.notify({ severity: Severity.Warning, message: nls.localize('trustFailure', "Refused to connect to untrusted machine.") });
// Proceed with the local extension host
await this._startLocalExtensionHost(localExtensions);
return;
}
}
// set the resolved authority