diff --git a/server/bundles/io.cloudbeaver.model/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.model/META-INF/MANIFEST.MF index b29e0cb554..15ebdd0991 100644 --- a/server/bundles/io.cloudbeaver.model/META-INF/MANIFEST.MF +++ b/server/bundles/io.cloudbeaver.model/META-INF/MANIFEST.MF @@ -33,6 +33,7 @@ Export-Package: io.cloudbeaver, io.cloudbeaver.model.rm.lock, io.cloudbeaver.model.session, io.cloudbeaver.model.user, + io.cloudbeaver.model.utils, io.cloudbeaver.registry, io.cloudbeaver.server, io.cloudbeaver.service, diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/BaseDatasourceAccessCheckHandler.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/BaseDatasourceAccessCheckHandler.java new file mode 100644 index 0000000000..ff9cb43e9e --- /dev/null +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/BaseDatasourceAccessCheckHandler.java @@ -0,0 +1,30 @@ +package io.cloudbeaver.model; + +import org.jkiss.code.NotNull; +import org.jkiss.dbeaver.DBException; +import org.jkiss.dbeaver.model.DBPDataSourceContainer; +import org.jkiss.dbeaver.model.DBPDataSourceHandler; +import org.jkiss.dbeaver.model.connection.DBPDriver; +import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; + +public abstract class BaseDatasourceAccessCheckHandler implements DBPDataSourceHandler { + @Override + public void beforeConnect( + DBRProgressMonitor monitor, + @NotNull DBPDataSourceContainer dataSourceContainer + ) throws DBException { + if (isDriverDisabled(dataSourceContainer.getDriver())) { + throw new DBException("Driver disabled"); + } + } + + @Override + public void beforeDisconnect( + DBRProgressMonitor monitor, + @NotNull DBPDataSourceContainer dataSourceContainer + ) throws DBException { + + } + + protected abstract boolean isDriverDisabled(DBPDriver driver); +} diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/ConfigurationUtils.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/utils/ConfigurationUtils.java similarity index 77% rename from server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/ConfigurationUtils.java rename to server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/utils/ConfigurationUtils.java index a157c01e24..7005553709 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/ConfigurationUtils.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/utils/ConfigurationUtils.java @@ -14,9 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.cloudbeaver.server; +package io.cloudbeaver.model.utils; import org.jkiss.code.NotNull; +import org.jkiss.code.Nullable; import org.jkiss.dbeaver.model.connection.DBPDriver; import org.jkiss.utils.ArrayUtils; @@ -24,12 +25,14 @@ public class ConfigurationUtils { private ConfigurationUtils() { } - public static boolean isDriverEnabled(@NotNull DBPDriver driver) { - String[] enabledDrivers = CBApplication.getInstance().getAppConfiguration().getEnabledDrivers(); + public static boolean isDriverEnabled( + @NotNull DBPDriver driver, + @Nullable String[] enabledDrivers, + @Nullable String[] disabledDrivers + ) { if (ArrayUtils.contains(enabledDrivers, driver.getFullId())) { return true; } - String[] disabledDrivers = CBApplication.getInstance().getAppConfiguration().getDisabledDrivers(); if (ArrayUtils.contains(disabledDrivers, driver.getFullId())) { return false; } diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatabaseDriverInfo.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatabaseDriverInfo.java index 17c9414e0e..cad29b16b1 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatabaseDriverInfo.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatabaseDriverInfo.java @@ -19,7 +19,9 @@ package io.cloudbeaver.model; import io.cloudbeaver.DBWebException; import io.cloudbeaver.WebServiceUtils; import io.cloudbeaver.model.session.WebSession; -import io.cloudbeaver.server.ConfigurationUtils; +import io.cloudbeaver.model.utils.ConfigurationUtils; +import io.cloudbeaver.server.CBAppConfig; +import io.cloudbeaver.server.CBApplication; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.model.DBConstants; @@ -236,7 +238,12 @@ public class WebDatabaseDriverInfo { @Property public boolean isEnabled() { - return ConfigurationUtils.isDriverEnabled(driver); + CBAppConfig config = CBApplication.getInstance().getAppConfiguration(); + return ConfigurationUtils.isDriverEnabled( + driver, + config.getEnabledDrivers(), + config.getDisabledDrivers() + ); } @Property diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatasourceAccessCheckHandler.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatasourceAccessCheckHandler.java index 50cb70beb5..22b90a8dea 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatasourceAccessCheckHandler.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatasourceAccessCheckHandler.java @@ -17,23 +17,18 @@ package io.cloudbeaver.model; -import io.cloudbeaver.server.ConfigurationUtils; -import org.jkiss.code.NotNull; -import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.model.DBPDataSourceContainer; -import org.jkiss.dbeaver.model.DBPDataSourceHandler; -import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; +import io.cloudbeaver.model.utils.ConfigurationUtils; +import io.cloudbeaver.server.CBAppConfig; +import io.cloudbeaver.server.CBApplication; +import org.jkiss.dbeaver.model.connection.DBPDriver; -public class WebDatasourceAccessCheckHandler implements DBPDataSourceHandler { +public class WebDatasourceAccessCheckHandler extends BaseDatasourceAccessCheckHandler { @Override - public void beforeConnect(DBRProgressMonitor monitor, @NotNull DBPDataSourceContainer dataSourceContainer) throws DBException { - if (!ConfigurationUtils.isDriverEnabled(dataSourceContainer.getDriver())) { - throw new DBException("Driver disabled"); - } - } - - @Override - public void beforeDisconnect(DBRProgressMonitor monitor, @NotNull DBPDataSourceContainer dataSourceContainer) throws DBException { - + protected boolean isDriverDisabled(DBPDriver driver) { + CBAppConfig config = CBApplication.getInstance().getAppConfiguration(); + return !ConfigurationUtils.isDriverEnabled( + driver, + config.getEnabledDrivers(), + config.getDisabledDrivers()); } } diff --git a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/ConnectionSearcher.java b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/ConnectionSearcher.java index 9eaa454101..018902eebd 100644 --- a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/ConnectionSearcher.java +++ b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/ConnectionSearcher.java @@ -17,8 +17,10 @@ package io.cloudbeaver.service.admin.impl; import io.cloudbeaver.model.session.WebSession; +import io.cloudbeaver.model.utils.ConfigurationUtils; +import io.cloudbeaver.server.CBAppConfig; +import io.cloudbeaver.server.CBApplication; import io.cloudbeaver.server.CBPlatform; -import io.cloudbeaver.server.ConfigurationUtils; import io.cloudbeaver.service.admin.AdminConnectionSearchInfo; import org.jkiss.dbeaver.model.connection.DBPDriver; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; @@ -124,7 +126,12 @@ public class ConnectionSearcher implements DBRRunnableWithProgress { } private void updatePortInfo(Map portCache, String hostName, String displayName, DBPDriver driver, int timeout) { - if (!ConfigurationUtils.isDriverEnabled(driver)) { + CBAppConfig config = CBApplication.getInstance().getAppConfiguration(); + if (!ConfigurationUtils.isDriverEnabled( + driver, + config.getEnabledDrivers(), + config.getDisabledDrivers()) + ) { return; } int driverPort = CommonUtils.toInt(driver.getDefaultPort());