From 5ddafd148762ece2f4f443da837c0f10d2850a5b Mon Sep 17 00:00:00 2001 From: yagudin10 Date: Tue, 16 Aug 2022 16:31:29 +0300 Subject: [PATCH] CB-2343 empty config configureServer fix --- .../service/admin/DBWServiceAdmin.java | 2 +- .../service/admin/WebServiceBindingAdmin.java | 2 +- .../service/admin/impl/WebServiceAdmin.java | 60 +++++++++++-------- 3 files changed, 38 insertions(+), 26 deletions(-) diff --git a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/DBWServiceAdmin.java b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/DBWServiceAdmin.java index 682267a66e..5c2eb5fc34 100644 --- a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/DBWServiceAdmin.java +++ b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/DBWServiceAdmin.java @@ -142,7 +142,7 @@ public interface DBWServiceAdmin extends DBWService { // Server configuration @WebAction(requirePermissions = DBWConstants.PERMISSION_ADMIN) - boolean configureServer(WebSession webSession, AdminServerConfig config) throws DBWebException; + boolean configureServer(WebSession webSession, Map params) throws DBWebException; @WebAction(requirePermissions = DBWConstants.PERMISSION_ADMIN) boolean setDefaultNavigatorSettings(WebSession webSession, DBNBrowseSettings settings) throws DBWebException; diff --git a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java index ac85918aef..661b571481 100644 --- a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java +++ b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java @@ -161,7 +161,7 @@ public class WebServiceBindingAdmin extends WebServiceBindingBase getService(env).configureServer(getWebSession(env), new AdminServerConfig(env.getArgument("configuration")))) + env -> getService(env).configureServer(getWebSession(env), env.getArgument("configuration"))) .dataFetcher("setDefaultNavigatorSettings", env -> getService(env).setDefaultNavigatorSettings(getWebSession(env), WebServiceUtils.parseNavigatorSettings(env.getArgument("settings")))) ; diff --git a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/WebServiceAdmin.java b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/WebServiceAdmin.java index 3152d14daf..d781168a26 100644 --- a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/WebServiceAdmin.java +++ b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/WebServiceAdmin.java @@ -550,38 +550,50 @@ public class WebServiceAdmin implements DBWServiceAdmin { @Override - public boolean configureServer(WebSession webSession, AdminServerConfig config) throws DBWebException { + public boolean configureServer(WebSession webSession, Map params) throws DBWebException { try { CBAppConfig appConfig = new CBAppConfig(CBApplication.getInstance().getAppConfiguration()); - appConfig.setAnonymousAccessEnabled(config.isAnonymousAccessEnabled()); - appConfig.setSupportsCustomConnections(config.isCustomConnectionsEnabled()); - appConfig.setPublicCredentialsSaveEnabled(config.isPublicCredentialsSaveEnabled()); - appConfig.setAdminCredentialsSaveEnabled(config.isAdminCredentialsSaveEnabled()); - appConfig.setEnabledFeatures(config.getEnabledFeatures().toArray(new String[0])); - appConfig.setEnabledDrivers(config.getEnabledDrivers()); - appConfig.setDisabledDrivers(config.getDisabledDrivers()); - appConfig.setResourceManagerEnabled(config.isResourceManagerEnabled()); + String adminName = null; + String adminPassword = null; + String serverName = CBApplication.getInstance().getServerName(); + String serverURL = CBApplication.getInstance().getServerURL(); + long sessionExpireTime = CBApplication.getInstance().getMaxSessionIdleTime(); - if (CommonUtils.isEmpty(config.getEnabledAuthProviders())) { - // All of them - appConfig.setEnabledAuthProviders(new String[0]); - } else { - appConfig.setEnabledAuthProviders(config.getEnabledAuthProviders().toArray(new String[0])); + if (!params.isEmpty()) { // FE can send an empty configuration + var config = new AdminServerConfig(params); + appConfig.setAnonymousAccessEnabled(config.isAnonymousAccessEnabled()); + appConfig.setSupportsCustomConnections(config.isCustomConnectionsEnabled()); + appConfig.setPublicCredentialsSaveEnabled(config.isPublicCredentialsSaveEnabled()); + appConfig.setAdminCredentialsSaveEnabled(config.isAdminCredentialsSaveEnabled()); + appConfig.setEnabledFeatures(config.getEnabledFeatures().toArray(new String[0])); + appConfig.setEnabledDrivers(config.getEnabledDrivers()); + appConfig.setDisabledDrivers(config.getDisabledDrivers()); + appConfig.setResourceManagerEnabled(config.isResourceManagerEnabled()); + + if (CommonUtils.isEmpty(config.getEnabledAuthProviders())) { + // All of them + appConfig.setEnabledAuthProviders(new String[0]); + } else { + appConfig.setEnabledAuthProviders(config.getEnabledAuthProviders().toArray(new String[0])); + } + + appConfig.setDefaultNavigatorSettings( + CBApplication.getInstance().getAppConfiguration().getDefaultNavigatorSettings()); + + adminName = config.getAdminName(); + adminPassword = config.getAdminPassword(); + serverName = config.getServerName(); + serverURL = config.getServerURL(); + sessionExpireTime = config.getSessionExpireTime(); } - appConfig.setDefaultNavigatorSettings( - CBApplication.getInstance().getAppConfiguration().getDefaultNavigatorSettings()); - - List authInfoList = webSession.getAllAuthInfo(); - - String adminName = config.getAdminName(); - String adminPassword = config.getAdminPassword(); if (CommonUtils.isEmpty(adminName)) { // Grant admin permissions to the current user WebUser curUser = webSession.getUser(); adminName = curUser == null ? null : curUser.getUserId(); adminPassword = null; } + List authInfoList = webSession.getAllAuthInfo(); if (CommonUtils.isEmpty(adminName)) { // Try to get admin name from existing authentications (first one) if (!authInfoList.isEmpty()) { @@ -604,12 +616,12 @@ public class WebServiceAdmin implements DBWServiceAdmin { boolean configurationMode = CBApplication.getInstance().isConfigurationMode(); CBApplication.getInstance().finishConfiguration( - config.getServerName(), - config.getServerURL(), + serverName, + serverURL, adminName, adminPassword, authInfoList, - config.getSessionExpireTime(), + sessionExpireTime, appConfig); // Refresh active session