From 55f4f7ad51ac6a23b80bf7627923d74d6f4d9099 Mon Sep 17 00:00:00 2001 From: Ainur Date: Tue, 5 May 2026 10:19:25 +0200 Subject: [PATCH 1/6] dbeaver/pro#9096 add ability for restricting ssh connections --- .../bundles/io.cloudbeaver.model/plugin.xml | 5 +++ .../cloudbeaver/model/WebConnectionInfo.java | 32 ++++++++++++++++++- .../io/cloudbeaver/server/CBConstants.java | 2 ++ .../service/core/impl/WebServiceCore.java | 2 +- 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/server/bundles/io.cloudbeaver.model/plugin.xml b/server/bundles/io.cloudbeaver.model/plugin.xml index de60a463385..f3c606fd062 100644 --- a/server/bundles/io.cloudbeaver.model/plugin.xml +++ b/server/bundles/io.cloudbeaver.model/plugin.xml @@ -25,6 +25,11 @@ label="Default secret controller" description="Default void secret controller"/> + + + + + diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/WebConnectionInfo.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/WebConnectionInfo.java index 9f4f1d69861..93ca8466907 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/WebConnectionInfo.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/WebConnectionInfo.java @@ -16,6 +16,7 @@ */ package io.cloudbeaver.model; +import io.cloudbeaver.DBWConstants; import io.cloudbeaver.DBWebException; import io.cloudbeaver.WebProjectImpl; import io.cloudbeaver.model.app.BaseWebAppConfiguration; @@ -40,6 +41,8 @@ import org.jkiss.dbeaver.model.meta.Property; import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings; import org.jkiss.dbeaver.model.navigator.DBNDataSource; +import org.jkiss.dbeaver.model.net.DBWHandlerConfiguration; +import org.jkiss.dbeaver.model.net.DBWHandlerType; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor; import org.jkiss.dbeaver.model.preferences.DBPPropertySource; @@ -343,8 +346,35 @@ public boolean isAuthNeeded() throws DBException { !dataSourceContainer.getDriver().isAnonymousAccess(); } - public void validateConnection() throws DBWebException { + public void validateConnection(@Nullable List networkHandlerConfigInput) throws DBWebException { + if (session.hasPermission(DBWConstants.PERMISSION_ADMIN)) { + // we do not restrict ssh for admins + return; + } + if (ServletAppUtils.getServletApplication().getAppConfiguration().isFeatureEnabled(CBConstants.SERVER_FEATURE_SSH)) { + return; + } + boolean usesTunnelConfig = dataSourceContainer.getConnectionConfiguration().getHandlers() + .stream() + .filter(DBWHandlerConfiguration::isEnabled) + .anyMatch(cfg -> cfg.getType() == DBWHandlerType.TUNNEL); + + if (!usesTunnelConfig && networkHandlerConfigInput != null) { + for (WebNetworkHandlerConfigInput input : networkHandlerConfigInput) { + if (!CommonUtils.getBoolean(input.isEnabled(), false)) { + continue; + } + DBWHandlerConfiguration configuration = dataSourceContainer.getConnectionConfiguration().getHandler(input.getId()); + if (configuration != null && configuration.getType() == DBWHandlerType.TUNNEL) { + usesTunnelConfig = true; + } + } + } + if (usesTunnelConfig) { + throw new DBWebException( + "SSH tunneling is required for this connection, but it is currently disabled. Please contact your administrator."); + } } // we don't show non-secured properties in FE when connecting to DB without saved credentials diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/server/CBConstants.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/server/CBConstants.java index da3a20b90fa..03fdf64bf27 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/server/CBConstants.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/server/CBConstants.java @@ -82,4 +82,6 @@ public class CBConstants { public static final String DEFAULT_CLOUD_PROJECT_NAME = "GlobalConfiguration"; public static final String SECURED_VALUE = "******"; + + public static final String SERVER_FEATURE_SSH = "ssh"; } diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java index 9c41c5ac47e..8001ad2a10d 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java @@ -309,7 +309,7 @@ public WebConnectionInfo initConnection( @Nullable String selectedSecretId ) throws DBWebException { WebConnectionInfo connectionInfo = WebDataSourceUtils.getWebConnectionInfo(webSession, projectId, connectionId); - connectionInfo.validateConnection(); + connectionInfo.validateConnection(networkCredentials); connectionInfo.setSavedCredentials(authProperties, networkCredentials); var dataSourceContainer = connectionInfo.getDataSourceContainer(); From 8c2c96249fc1e2798f6a60493841e445c36957ad Mon Sep 17 00:00:00 2001 From: Ainur Date: Wed, 6 May 2026 15:33:31 +0200 Subject: [PATCH 2/6] dbeaver/pro#9096 validate ssh tunnelling for te desktop --- .../cloudbeaver/model/WebConnectionInfo.java | 32 +------------------ .../model/session/WebSessionWorkspace.java | 8 +++-- .../service/core/impl/WebServiceCore.java | 2 +- 3 files changed, 8 insertions(+), 34 deletions(-) diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/WebConnectionInfo.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/WebConnectionInfo.java index 93ca8466907..9f4f1d69861 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/WebConnectionInfo.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/WebConnectionInfo.java @@ -16,7 +16,6 @@ */ package io.cloudbeaver.model; -import io.cloudbeaver.DBWConstants; import io.cloudbeaver.DBWebException; import io.cloudbeaver.WebProjectImpl; import io.cloudbeaver.model.app.BaseWebAppConfiguration; @@ -41,8 +40,6 @@ import org.jkiss.dbeaver.model.meta.Property; import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings; import org.jkiss.dbeaver.model.navigator.DBNDataSource; -import org.jkiss.dbeaver.model.net.DBWHandlerConfiguration; -import org.jkiss.dbeaver.model.net.DBWHandlerType; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor; import org.jkiss.dbeaver.model.preferences.DBPPropertySource; @@ -346,35 +343,8 @@ public boolean isAuthNeeded() throws DBException { !dataSourceContainer.getDriver().isAnonymousAccess(); } - public void validateConnection(@Nullable List networkHandlerConfigInput) throws DBWebException { - if (session.hasPermission(DBWConstants.PERMISSION_ADMIN)) { - // we do not restrict ssh for admins - return; - } - if (ServletAppUtils.getServletApplication().getAppConfiguration().isFeatureEnabled(CBConstants.SERVER_FEATURE_SSH)) { - return; - } + public void validateConnection() throws DBWebException { - boolean usesTunnelConfig = dataSourceContainer.getConnectionConfiguration().getHandlers() - .stream() - .filter(DBWHandlerConfiguration::isEnabled) - .anyMatch(cfg -> cfg.getType() == DBWHandlerType.TUNNEL); - - if (!usesTunnelConfig && networkHandlerConfigInput != null) { - for (WebNetworkHandlerConfigInput input : networkHandlerConfigInput) { - if (!CommonUtils.getBoolean(input.isEnabled(), false)) { - continue; - } - DBWHandlerConfiguration configuration = dataSourceContainer.getConnectionConfiguration().getHandler(input.getId()); - if (configuration != null && configuration.getType() == DBWHandlerType.TUNNEL) { - usesTunnelConfig = true; - } - } - } - if (usesTunnelConfig) { - throw new DBWebException( - "SSH tunneling is required for this connection, but it is currently disabled. Please contact your administrator."); - } } // we don't show non-secured properties in FE when connecting to DB without saved credentials diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSessionWorkspace.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSessionWorkspace.java index 0905de50a9e..4a6545dac3e 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSessionWorkspace.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSessionWorkspace.java @@ -1,6 +1,6 @@ /* * DBeaver - Universal Database Manager - * Copyright (C) 2010-2024 DBeaver Corp and others + * Copyright (C) 2010-2026 DBeaver Corp and others * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ package io.cloudbeaver.model.session; import io.cloudbeaver.WebSessionProjectImpl; +import io.cloudbeaver.utils.ServletAppUtils; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; @@ -199,12 +200,15 @@ void clearProjects() { @Override public boolean hasRealmPermission(@NotNull String permission) { + if (getWebSession() instanceof WebSession webSession) { + return webSession.getSessionPermissions().contains(permission); + } return false; } @Override public boolean supportsRealmFeature(@NotNull String feature) { - return false; + return ServletAppUtils.getServletApplication().getAppConfiguration().isFeatureEnabled(feature); } } diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java index 8001ad2a10d..9c41c5ac47e 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java @@ -309,7 +309,7 @@ public WebConnectionInfo initConnection( @Nullable String selectedSecretId ) throws DBWebException { WebConnectionInfo connectionInfo = WebDataSourceUtils.getWebConnectionInfo(webSession, projectId, connectionId); - connectionInfo.validateConnection(networkCredentials); + connectionInfo.validateConnection(); connectionInfo.setSavedCredentials(authProperties, networkCredentials); var dataSourceContainer = connectionInfo.getDataSourceContainer(); From a2292399a2586e3b1963e4aaf323ddd07529f949 Mon Sep 17 00:00:00 2001 From: Ainur Date: Thu, 7 May 2026 10:35:03 +0200 Subject: [PATCH 3/6] dbeaver/pro#9096 remove unused constant --- .../src/io/cloudbeaver/server/CBConstants.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/server/CBConstants.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/server/CBConstants.java index 03fdf64bf27..da3a20b90fa 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/server/CBConstants.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/server/CBConstants.java @@ -82,6 +82,4 @@ public class CBConstants { public static final String DEFAULT_CLOUD_PROJECT_NAME = "GlobalConfiguration"; public static final String SECURED_VALUE = "******"; - - public static final String SERVER_FEATURE_SSH = "ssh"; } From cce94063b07b0eb8f5c3dab4f2b3e4645a07363e Mon Sep 17 00:00:00 2001 From: naumov Date: Thu, 7 May 2026 20:16:36 +0200 Subject: [PATCH 4/6] dbeaver/pro#9096 show alert if ssh is disabled --- .../src/ConnectionForm/SSH/SSH.tsx | 12 +++++++++++- webapp/packages/plugin-connections/src/locales/en.ts | 1 + webapp/packages/plugin-connections/src/locales/fr.ts | 1 + webapp/packages/plugin-connections/src/locales/it.ts | 1 + webapp/packages/plugin-connections/src/locales/ru.ts | 1 + webapp/packages/plugin-connections/src/locales/vi.ts | 1 + webapp/packages/plugin-connections/src/locales/zh.ts | 1 + 7 files changed, 17 insertions(+), 1 deletion(-) diff --git a/webapp/packages/plugin-connections/src/ConnectionForm/SSH/SSH.tsx b/webapp/packages/plugin-connections/src/ConnectionForm/SSH/SSH.tsx index fa52d2ce0b6..38a02790260 100644 --- a/webapp/packages/plugin-connections/src/ConnectionForm/SSH/SSH.tsx +++ b/webapp/packages/plugin-connections/src/ConnectionForm/SSH/SSH.tsx @@ -26,6 +26,7 @@ import { useResource, useS, useTranslate, + Alert, } from '@cloudbeaver/core-blocks'; import { NetworkHandlerResource, SSH_TUNNEL_ID } from '@cloudbeaver/core-connections'; import { useService } from '@cloudbeaver/core-di'; @@ -46,6 +47,9 @@ interface Props { formState: IFormState; } +const FEATURE_SSH_ID = 'ssh'; + + export const SSH: TabContainerPanelComponent = observer(function SSH({ formState, handlerState, tabId }) { const { selected } = useTab(tabId); const [loading, setLoading] = useState(false); @@ -65,8 +69,9 @@ export const SSH: TabContainerPanelComponent = observer(function SSH({ fo const style = useS(styles); const translate = useTranslate(); - const disabled = formState.isDisabled || loading || formState.isReadOnly; const enabled = handlerState.enabled || false; + const locked = !serverConfigResource.resource.isFeatureEnabled(FEATURE_SSH_ID) && !enabled; + const disabled = formState.isDisabled || loading || formState.isReadOnly || locked; const keyAuth = handlerState.authType === NetworkHandlerAuthType.PublicKey; const passwordFilled = (SSHPart.initialState?.password === null && handlerState.password !== '') || !!handlerState.password?.length; const testAvailable = keyAuth ? !!handlerState.key?.length : passwordFilled; @@ -90,6 +95,11 @@ export const SSH: TabContainerPanelComponent = observer(function SSH({ fo
+ {!serverConfigResource.resource.isFeatureEnabled(FEATURE_SSH_ID) && ( + + {translate('plugin_connections_connection_network_handler_ssh_tunnel_unsupported')} + + )} {translate('connections_network_handler_ssh_tunnel_enable')} diff --git a/webapp/packages/plugin-connections/src/locales/en.ts b/webapp/packages/plugin-connections/src/locales/en.ts index 36ab316989e..7241615591c 100644 --- a/webapp/packages/plugin-connections/src/locales/en.ts +++ b/webapp/packages/plugin-connections/src/locales/en.ts @@ -56,4 +56,5 @@ export default [ ['plugin_connections_connection_client_version', 'Client version: {arg:version} \n'], ['plugin_connections_connection_server_version', 'Server version: {arg:version} \n'], ['plugin_connections_connection_connection_time', 'Connection time: {arg:time} \n'], + ['plugin_connections_connection_network_handler_ssh_tunnel_unsupported', 'SSH tunnel is disabled on the administration level.'] ]; diff --git a/webapp/packages/plugin-connections/src/locales/fr.ts b/webapp/packages/plugin-connections/src/locales/fr.ts index 9fb4773222d..b9942dc5fa8 100644 --- a/webapp/packages/plugin-connections/src/locales/fr.ts +++ b/webapp/packages/plugin-connections/src/locales/fr.ts @@ -63,4 +63,5 @@ export default [ ['plugin_connections_connection_client_version', 'Client version: {arg:version} \n'], ['plugin_connections_connection_server_version', 'Server version: {arg:version} \n'], ['plugin_connections_connection_connection_time', 'Connection time: {arg:time} \n'], + ['plugin_connections_connection_network_handler_ssh_tunnel_unsupported', "Le tunnel SSH est désactivé au niveau de l'administration."], ]; diff --git a/webapp/packages/plugin-connections/src/locales/it.ts b/webapp/packages/plugin-connections/src/locales/it.ts index 6310b20107e..156dc24e976 100644 --- a/webapp/packages/plugin-connections/src/locales/it.ts +++ b/webapp/packages/plugin-connections/src/locales/it.ts @@ -58,4 +58,5 @@ export default [ ['plugin_connections_connection_client_version', 'Client version: {arg:version} \n'], ['plugin_connections_connection_server_version', 'Server version: {arg:version} \n'], ['plugin_connections_connection_connection_time', 'Connection time: {arg:time} \n'], + ['plugin_connections_connection_network_handler_ssh_tunnel_unsupported', "Il tunnel SSH è disabilitato a livello di amministrazione."], ]; diff --git a/webapp/packages/plugin-connections/src/locales/ru.ts b/webapp/packages/plugin-connections/src/locales/ru.ts index 1d736bbac73..84a9ba89096 100644 --- a/webapp/packages/plugin-connections/src/locales/ru.ts +++ b/webapp/packages/plugin-connections/src/locales/ru.ts @@ -59,4 +59,5 @@ export default [ ['plugin_connections_connection_client_version', 'Версия клиента: {arg:version} \n'], ['plugin_connections_connection_server_version', 'Версия сервера: {arg:version} \n'], ['plugin_connections_connection_connection_time', 'Время подключения: {arg:time} \n'], + ['plugin_connections_connection_network_handler_ssh_tunnel_unsupported', 'SSH туннель отключен на уровне администрирования.'], ]; diff --git a/webapp/packages/plugin-connections/src/locales/vi.ts b/webapp/packages/plugin-connections/src/locales/vi.ts index 62e8cbe371f..84104c54e16 100644 --- a/webapp/packages/plugin-connections/src/locales/vi.ts +++ b/webapp/packages/plugin-connections/src/locales/vi.ts @@ -59,4 +59,5 @@ export default [ ['plugin_connections_connection_client_version', 'Phiên bản máy khách: {arg:version} \n'], ['plugin_connections_connection_server_version', 'Phiên bản máy chủ: {arg:version} \n'], ['plugin_connections_connection_connection_time', 'Thời gian kết nối: {arg:time} \n'], + ['plugin_connections_connection_network_handler_ssh_tunnel_unsupported', 'Đường hầm SSH bị vô hiệu hóa ở cấp quản trị.'], ]; diff --git a/webapp/packages/plugin-connections/src/locales/zh.ts b/webapp/packages/plugin-connections/src/locales/zh.ts index 636f0f72895..4b56862456d 100644 --- a/webapp/packages/plugin-connections/src/locales/zh.ts +++ b/webapp/packages/plugin-connections/src/locales/zh.ts @@ -52,4 +52,5 @@ export default [ ['plugin_connections_connection_client_version', 'Client version: {arg:version} \n'], ['plugin_connections_connection_server_version', 'Server version: {arg:version} \n'], ['plugin_connections_connection_connection_time', 'Connection time: {arg:time} \n'], + ['plugin_connections_connection_network_handler_ssh_tunnel_unsupported', 'SSH 隧道在管理级别已被禁用。'], ]; From f701359c93b8641a56240a6d9cc5396f492ccf1e Mon Sep 17 00:00:00 2001 From: naumov Date: Fri, 8 May 2026 13:20:23 +0200 Subject: [PATCH 5/6] Revert "dbeaver/pro#9096 show alert if ssh is disabled" This reverts commit cce94063b07b0eb8f5c3dab4f2b3e4645a07363e. --- .../src/ConnectionForm/SSH/SSH.tsx | 12 +----------- webapp/packages/plugin-connections/src/locales/en.ts | 1 - webapp/packages/plugin-connections/src/locales/fr.ts | 1 - webapp/packages/plugin-connections/src/locales/it.ts | 1 - webapp/packages/plugin-connections/src/locales/ru.ts | 1 - webapp/packages/plugin-connections/src/locales/vi.ts | 1 - webapp/packages/plugin-connections/src/locales/zh.ts | 1 - 7 files changed, 1 insertion(+), 17 deletions(-) diff --git a/webapp/packages/plugin-connections/src/ConnectionForm/SSH/SSH.tsx b/webapp/packages/plugin-connections/src/ConnectionForm/SSH/SSH.tsx index 38a02790260..fa52d2ce0b6 100644 --- a/webapp/packages/plugin-connections/src/ConnectionForm/SSH/SSH.tsx +++ b/webapp/packages/plugin-connections/src/ConnectionForm/SSH/SSH.tsx @@ -26,7 +26,6 @@ import { useResource, useS, useTranslate, - Alert, } from '@cloudbeaver/core-blocks'; import { NetworkHandlerResource, SSH_TUNNEL_ID } from '@cloudbeaver/core-connections'; import { useService } from '@cloudbeaver/core-di'; @@ -47,9 +46,6 @@ interface Props { formState: IFormState; } -const FEATURE_SSH_ID = 'ssh'; - - export const SSH: TabContainerPanelComponent = observer(function SSH({ formState, handlerState, tabId }) { const { selected } = useTab(tabId); const [loading, setLoading] = useState(false); @@ -69,9 +65,8 @@ export const SSH: TabContainerPanelComponent = observer(function SSH({ fo const style = useS(styles); const translate = useTranslate(); + const disabled = formState.isDisabled || loading || formState.isReadOnly; const enabled = handlerState.enabled || false; - const locked = !serverConfigResource.resource.isFeatureEnabled(FEATURE_SSH_ID) && !enabled; - const disabled = formState.isDisabled || loading || formState.isReadOnly || locked; const keyAuth = handlerState.authType === NetworkHandlerAuthType.PublicKey; const passwordFilled = (SSHPart.initialState?.password === null && handlerState.password !== '') || !!handlerState.password?.length; const testAvailable = keyAuth ? !!handlerState.key?.length : passwordFilled; @@ -95,11 +90,6 @@ export const SSH: TabContainerPanelComponent = observer(function SSH({ fo - {!serverConfigResource.resource.isFeatureEnabled(FEATURE_SSH_ID) && ( - - {translate('plugin_connections_connection_network_handler_ssh_tunnel_unsupported')} - - )} {translate('connections_network_handler_ssh_tunnel_enable')} diff --git a/webapp/packages/plugin-connections/src/locales/en.ts b/webapp/packages/plugin-connections/src/locales/en.ts index 7241615591c..36ab316989e 100644 --- a/webapp/packages/plugin-connections/src/locales/en.ts +++ b/webapp/packages/plugin-connections/src/locales/en.ts @@ -56,5 +56,4 @@ export default [ ['plugin_connections_connection_client_version', 'Client version: {arg:version} \n'], ['plugin_connections_connection_server_version', 'Server version: {arg:version} \n'], ['plugin_connections_connection_connection_time', 'Connection time: {arg:time} \n'], - ['plugin_connections_connection_network_handler_ssh_tunnel_unsupported', 'SSH tunnel is disabled on the administration level.'] ]; diff --git a/webapp/packages/plugin-connections/src/locales/fr.ts b/webapp/packages/plugin-connections/src/locales/fr.ts index b9942dc5fa8..9fb4773222d 100644 --- a/webapp/packages/plugin-connections/src/locales/fr.ts +++ b/webapp/packages/plugin-connections/src/locales/fr.ts @@ -63,5 +63,4 @@ export default [ ['plugin_connections_connection_client_version', 'Client version: {arg:version} \n'], ['plugin_connections_connection_server_version', 'Server version: {arg:version} \n'], ['plugin_connections_connection_connection_time', 'Connection time: {arg:time} \n'], - ['plugin_connections_connection_network_handler_ssh_tunnel_unsupported', "Le tunnel SSH est désactivé au niveau de l'administration."], ]; diff --git a/webapp/packages/plugin-connections/src/locales/it.ts b/webapp/packages/plugin-connections/src/locales/it.ts index 156dc24e976..6310b20107e 100644 --- a/webapp/packages/plugin-connections/src/locales/it.ts +++ b/webapp/packages/plugin-connections/src/locales/it.ts @@ -58,5 +58,4 @@ export default [ ['plugin_connections_connection_client_version', 'Client version: {arg:version} \n'], ['plugin_connections_connection_server_version', 'Server version: {arg:version} \n'], ['plugin_connections_connection_connection_time', 'Connection time: {arg:time} \n'], - ['plugin_connections_connection_network_handler_ssh_tunnel_unsupported', "Il tunnel SSH è disabilitato a livello di amministrazione."], ]; diff --git a/webapp/packages/plugin-connections/src/locales/ru.ts b/webapp/packages/plugin-connections/src/locales/ru.ts index 84a9ba89096..1d736bbac73 100644 --- a/webapp/packages/plugin-connections/src/locales/ru.ts +++ b/webapp/packages/plugin-connections/src/locales/ru.ts @@ -59,5 +59,4 @@ export default [ ['plugin_connections_connection_client_version', 'Версия клиента: {arg:version} \n'], ['plugin_connections_connection_server_version', 'Версия сервера: {arg:version} \n'], ['plugin_connections_connection_connection_time', 'Время подключения: {arg:time} \n'], - ['plugin_connections_connection_network_handler_ssh_tunnel_unsupported', 'SSH туннель отключен на уровне администрирования.'], ]; diff --git a/webapp/packages/plugin-connections/src/locales/vi.ts b/webapp/packages/plugin-connections/src/locales/vi.ts index 84104c54e16..62e8cbe371f 100644 --- a/webapp/packages/plugin-connections/src/locales/vi.ts +++ b/webapp/packages/plugin-connections/src/locales/vi.ts @@ -59,5 +59,4 @@ export default [ ['plugin_connections_connection_client_version', 'Phiên bản máy khách: {arg:version} \n'], ['plugin_connections_connection_server_version', 'Phiên bản máy chủ: {arg:version} \n'], ['plugin_connections_connection_connection_time', 'Thời gian kết nối: {arg:time} \n'], - ['plugin_connections_connection_network_handler_ssh_tunnel_unsupported', 'Đường hầm SSH bị vô hiệu hóa ở cấp quản trị.'], ]; diff --git a/webapp/packages/plugin-connections/src/locales/zh.ts b/webapp/packages/plugin-connections/src/locales/zh.ts index 4b56862456d..636f0f72895 100644 --- a/webapp/packages/plugin-connections/src/locales/zh.ts +++ b/webapp/packages/plugin-connections/src/locales/zh.ts @@ -52,5 +52,4 @@ export default [ ['plugin_connections_connection_client_version', 'Client version: {arg:version} \n'], ['plugin_connections_connection_server_version', 'Server version: {arg:version} \n'], ['plugin_connections_connection_connection_time', 'Connection time: {arg:time} \n'], - ['plugin_connections_connection_network_handler_ssh_tunnel_unsupported', 'SSH 隧道在管理级别已被禁用。'], ]; From 0a0724f2d1a3ab79845447bc16c235a31ca2d014 Mon Sep 17 00:00:00 2001 From: Ainur Date: Fri, 8 May 2026 15:17:04 +0200 Subject: [PATCH 6/6] dbeaver/pro#9096 do not show ssh for TE product --- .../src/io/cloudbeaver/server/ServerGlobalWorkspace.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/server/ServerGlobalWorkspace.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/server/ServerGlobalWorkspace.java index faa896cfe83..07382c5b674 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/server/ServerGlobalWorkspace.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/server/ServerGlobalWorkspace.java @@ -115,4 +115,9 @@ public BaseProjectImpl getProject(@NotNull String projectName) { } return null; } + + @Override + public boolean supportsRealmFeature(@NotNull String feature) { + return application.getAppConfiguration().isFeatureEnabled(feature); + } } \ No newline at end of file