From 8977a05cbdbda25c331cfd70544cb2eba21f929d Mon Sep 17 00:00:00 2001 From: Serge Rider Date: Thu, 28 Jan 2021 15:40:20 +0300 Subject: [PATCH] CB-686 Network handlers web API --- .../schema/service.core.graphqls | 44 ++++++++++++++++--- .../service/core/DBWServiceCore.java | 4 ++ .../service/core/impl/WebServiceCore.java | 7 +++ 3 files changed, 50 insertions(+), 5 deletions(-) diff --git a/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls b/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls index 587d652473..6b366b9157 100644 --- a/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls +++ b/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls @@ -162,6 +162,8 @@ type DriverInfo { anonymousAccess: Boolean defaultAuthModel: ID! applicableAuthModel: [ID!]! + + applicableNetworkHandlers: [ID]! } enum ResultDataFormat { @@ -171,6 +173,32 @@ enum ResultDataFormat { timeseries } +## Network handler config + +enum NetworkHandlerType { + TUNNEL, + PROXY, + CONFIG +} + +type NetworkHandlerDescriptor { + id: ID! + codeName: String! + label: String + description: String + secured: Boolean + type: NetworkHandlerType +} + +type NetworkHandlerConfig { + id: ID! + enabled: Boolean + userName: String + password: String + savePassword: Boolean + properties: Object +} + # Connection instance type ConnectionInfo { id: ID! @@ -204,6 +232,8 @@ type ConnectionInfo { authModel: ID authProperties: [ObjectPropertyInfo!]! + networkHandlersConfig: [NetworkHandlerConfig!]! + # Supported features (provided etc) features: [ String! ]! navigatorSettings: NavigatorSettings! @@ -252,14 +282,18 @@ input ConnectionConfig { authModelId: ID credentials: Object + # Networki handlers + + networkHandlersConfig: [Object!]! + #### deprecated fields # ID of predefined datasource - dataSourceId: ID + dataSourceId: ID @deprecated # Direct user credentials - userName: String # @deprecated - userPassword: String # deprecated + userName: String @deprecated + userPassword: String @deprecated } type NavigatorSettings { @@ -305,12 +339,12 @@ extend type Query { # Get driver info driverList( id: ID ): [ DriverInfo! ]! + authModels: [DatabaseAuthModel!]! + networkHandlers: [NetworkHandlerDescriptor!]! # List of template connections. templateConnections: [ ConnectionInfo! ]! - authModels: [DatabaseAuthModel!]! - # Return connection state connectionState( id: ID! ): ConnectionInfo! @deprecated diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/DBWServiceCore.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/DBWServiceCore.java index c68a0ba645..763ec0d2f5 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/DBWServiceCore.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/DBWServiceCore.java @@ -23,6 +23,7 @@ import io.cloudbeaver.model.*; import io.cloudbeaver.model.session.WebSession; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings; +import org.jkiss.dbeaver.model.net.DBWHandlerDescriptor; import javax.servlet.http.HttpServletRequest; import java.util.List; @@ -42,6 +43,9 @@ public interface DBWServiceCore extends DBWService { @WebAction List getAuthModels(WebSession webSession); + @WebAction + List getNetworkHandlers(WebSession webSession); + @Deprecated @WebAction List getTemplateDataSources() throws DBWebException; 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 170473f5a7..a9515edbe8 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 @@ -38,8 +38,10 @@ import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings; import org.jkiss.dbeaver.model.navigator.DBNDataSource; import org.jkiss.dbeaver.model.navigator.DBNModel; import org.jkiss.dbeaver.model.navigator.DBNNode; +import org.jkiss.dbeaver.model.net.DBWHandlerDescriptor; import org.jkiss.dbeaver.registry.DataSourceDescriptor; import org.jkiss.dbeaver.registry.DataSourceProviderRegistry; +import org.jkiss.dbeaver.registry.network.NetworkHandlerRegistry; import org.jkiss.dbeaver.runtime.jobs.ConnectionTestJob; import org.jkiss.dbeaver.utils.RuntimeUtils; import org.jkiss.utils.CommonUtils; @@ -79,6 +81,11 @@ public class WebServiceCore implements DBWServiceCore { .map(am -> new WebDatabaseAuthModel(webSession, am)).collect(Collectors.toList()); } + @Override + public List getNetworkHandlers(WebSession webSession) { + return NetworkHandlerRegistry.getInstance().getDescriptors(); + } + @Deprecated @Override public List getTemplateDataSources() throws DBWebException {