From 89bd30b6039ef2acc968680967a438d712b6fd24 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Sat, 10 Oct 2020 18:01:20 +0300 Subject: [PATCH] CB-346 Session expire time config parameter --- .../schema/service.core.graphqls | 1 + .../src/io/cloudbeaver/model/WebServerConfig.java | 5 +++++ .../src/io/cloudbeaver/server/CBApplication.java | 10 +++++++--- .../schema/service.admin.graphqls | 2 ++ .../cloudbeaver/service/admin/AdminServerConfig.java | 12 ++++++++++++ .../service/admin/impl/WebServiceAdmin.java | 1 + 6 files changed, 28 insertions(+), 3 deletions(-) diff --git a/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls b/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls index ce65580fb3..3ff35f9e1d 100644 --- a/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls +++ b/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls @@ -82,6 +82,7 @@ type ServerConfig { supportsCustomConnections: Boolean supportsConnectionBrowser: Boolean supportsWorkspaces: Boolean + sessionExpireTime: Int configurationMode: Boolean developmentMode: Boolean diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebServerConfig.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebServerConfig.java index 9ac617edaf..375241166e 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebServerConfig.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebServerConfig.java @@ -87,6 +87,11 @@ public class WebServerConfig { return application.isDevelMode(); } + @Property + public long getSessionExpireTime() { + return application.getMaxSessionIdleTime(); + } + @Property public WebServerLanguage[] getSupportedLanguages() { List langs = PlatformLanguageRegistry.getInstance().getLanguages(); diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBApplication.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBApplication.java index fad6142d11..d4e3b79fcc 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBApplication.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBApplication.java @@ -407,6 +407,7 @@ public class CBApplication extends BaseApplicationImpl { String newServerName, String adminName, String adminPassword, + long sessionExpireTime, CBAppConfig appConfig) throws DBException { if (!RECONFIGURATION_ALLOWED && !isConfigurationMode()) { @@ -417,7 +418,7 @@ public class CBApplication extends BaseApplicationImpl { // Save runtime configuration log.debug("Saving runtime configuration"); - saveRuntimeConfig(newServerName, appConfig); + saveRuntimeConfig(newServerName, sessionExpireTime, appConfig); // Grant permissions to predefined connections if (appConfig.isAnonymousAccessEnabled()) { @@ -457,7 +458,7 @@ public class CBApplication extends BaseApplicationImpl { } } - private void saveRuntimeConfig(String newServerName, CBAppConfig appConfig) throws DBException { + private void saveRuntimeConfig(String newServerName, long sessionExpireTime, CBAppConfig appConfig) throws DBException { File runtimeConfigFile = getRuntimeConfigFile(); try (Writer out = new OutputStreamWriter(new FileOutputStream(runtimeConfigFile), StandardCharsets.UTF_8)) { @@ -471,7 +472,10 @@ public class CBApplication extends BaseApplicationImpl { json.name("server"); json.beginObject(); if (!CommonUtils.isEmpty(newServerName)) { - JSONUtils.field(json, "serverName", newServerName); + JSONUtils.field(json, CBConstants.PARAM_SERVER_NAME, newServerName); + } + if (sessionExpireTime > 0) { + JSONUtils.field(json, CBConstants.PARAM_SESSION_EXPIRE_PERIOD, sessionExpireTime); } json.endObject(); } diff --git a/server/bundles/io.cloudbeaver.service.admin/schema/service.admin.graphqls b/server/bundles/io.cloudbeaver.service.admin/schema/service.admin.graphqls index 6f98556454..c7cf9a1bd8 100644 --- a/server/bundles/io.cloudbeaver.service.admin/schema/service.admin.graphqls +++ b/server/bundles/io.cloudbeaver.service.admin/schema/service.admin.graphqls @@ -51,6 +51,8 @@ input ServerConfigInput { anonymousAccessEnabled: Boolean authenticationEnabled: Boolean customConnectionsEnabled: Boolean + + sessionExpireTime: Int } extend type Query { diff --git a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/AdminServerConfig.java b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/AdminServerConfig.java index d609f3d91f..f6f6af45cb 100644 --- a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/AdminServerConfig.java +++ b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/AdminServerConfig.java @@ -34,6 +34,8 @@ public class AdminServerConfig { private boolean authenticationEnabled; private boolean customConnectionsEnabled; + private long sessionExpireTime; + public AdminServerConfig(Map params) { this.serverName = JSONUtils.getString(params, "serverName"); this.adminName = JSONUtils.getString(params, "adminName"); @@ -42,6 +44,8 @@ public class AdminServerConfig { this.anonymousAccessEnabled = JSONUtils.getBoolean(params, "anonymousAccessEnabled"); this.authenticationEnabled = JSONUtils.getBoolean(params, "authenticationEnabled"); this.customConnectionsEnabled = JSONUtils.getBoolean(params, "customConnectionsEnabled"); + + this.sessionExpireTime = JSONUtils.getLong(params, "sessionExpireTime", -1); } public String getServerName() { @@ -91,4 +95,12 @@ public class AdminServerConfig { public void setCustomConnectionsEnabled(boolean customConnectionsEnabled) { this.customConnectionsEnabled = customConnectionsEnabled; } + + public long getSessionExpireTime() { + return sessionExpireTime; + } + + public void setSessionExpireTime(long sessionExpireTime) { + this.sessionExpireTime = sessionExpireTime; + } } 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 e6c90310f9..0f2b54e36d 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 @@ -307,6 +307,7 @@ public class WebServiceAdmin implements DBWServiceAdmin { config.getServerName(), config.getAdminName(), config.getAdminPassword(), + config.getSessionExpireTime(), appConfig); // Refresh active session webSession.forceUserRefresh(null);