diff --git a/src/app/elements/connect/connect-dialog/connect-dialog.component.ts b/src/app/elements/connect/connect-dialog/connect-dialog.component.ts index 76aba0ec..216d567c 100644 --- a/src/app/elements/connect/connect-dialog/connect-dialog.component.ts +++ b/src/app/elements/connect/connect-dialog/connect-dialog.component.ts @@ -38,13 +38,18 @@ export class ElementConnectDialogComponent implements OnInit { this.accounts = this.data.accounts; this.asset = this.data.asset; this.preConnectData = this.data.preConnectData; - this.protocols = this.asset.protocols || []; + this.protocols = this.getProtocols(); if (this.protocols.length === 0) { - this.protocols = [{name: 'ssh', port: 22}]; + this.protocols = [{name: 'ssh', port: 22, public: true, setting: {sftp_enabled: true}}]; } this.setDefaults(); } + getProtocols() { + const protocols = this.asset.protocols.filter((item) => item.public); + return protocols || []; + } + setDefaults() { if (this.preConnectData) { this.protocol = this.protocols.find(p => p.name === this.preConnectData.protocol.name); diff --git a/src/app/elements/connect/connect-dialog/connect-method/connect-method.component.ts b/src/app/elements/connect/connect-dialog/connect-method/connect-method.component.ts index d49ff0b2..f56dbc53 100644 --- a/src/app/elements/connect/connect-dialog/connect-method/connect-method.component.ts +++ b/src/app/elements/connect/connect-dialog/connect-method/connect-method.component.ts @@ -61,6 +61,9 @@ export class ElementConnectMethodComponent implements OnInit { if (this.protocol.name === 'oracle') { this.oracleFilterConnectMethods(); } + if (this.protocol.name === 'ssh') { + this.sshFilterConnectMethods(); + } this.groupConnectMethods(); if (!this.connectMethod || !this.connectMethod.value) { this.connectMethod = this.connectMethods[0]; @@ -72,6 +75,12 @@ export class ElementConnectMethodComponent implements OnInit { this.connectMethod = this.connectMethods[0]; } + sshFilterConnectMethods() { + if (!this.protocol.setting.sftp_enabled) { + this.connectMethods = this.connectMethods.filter((item) => (item.value !== 'web_sftp')); + } + } + groupConnectMethods() { const connectMethodTypes = [ {value: 'web', label: 'Web', fa: 'fa-globe', methods: []}, diff --git a/src/app/elements/connect/connect.component.ts b/src/app/elements/connect/connect.component.ts index c626f927..271af29f 100644 --- a/src/app/elements/connect/connect.component.ts +++ b/src/app/elements/connect/connect.component.ts @@ -96,7 +96,11 @@ export class ElementConnectComponent implements OnInit, OnDestroy { connectInfo.account = account; connectInfo.protocol = { 'name': type, - 'port': undefined + 'port': undefined, + 'public': true, + 'setting': { + sftp_enabled: true + } }; connectInfo.manualAuthInfo = { alias: account.alias, diff --git a/src/app/model.ts b/src/app/model.ts index d0055e04..f0033060 100644 --- a/src/app/model.ts +++ b/src/app/model.ts @@ -389,6 +389,10 @@ export class ConnectionToken { export class Protocol { name: string; port: number; + public: boolean; + setting: { + sftp_enabled: boolean + }; } export class Endpoint {