From b9695650acfb1dc03c0c75b5a8541154153eb692 Mon Sep 17 00:00:00 2001 From: Dario Ghunney Ware Date: Tue, 29 Apr 2025 12:54:11 +0100 Subject: [PATCH] adding more config to common module --- .../software/SPDF/EE/EEAppConfig.java | 8 +-- .../SPDF/EE/KeygenLicenseVerifier.java | 2 +- .../software/SPDF/EE/LicenseKeyChecker.java | 2 +- .../software/SPDF/SPDFApplication.java | 2 +- .../SPDF/config/AppUpdateService.java | 2 +- .../SPDF/config/EndpointConfiguration.java | 2 +- .../software/SPDF/config/InitialSetup.java | 2 +- .../SPDF/config/LocaleConfiguration.java | 2 +- .../software/SPDF/config/OpenApiConfig.java | 2 +- .../SPDF/config/RuntimePathConfig.java | 6 +- .../config/security/AppUpdateAuthService.java | 2 +- .../security/CustomLogoutSuccessHandler.java | 6 +- .../config/security/InitialSecuritySetup.java | 2 +- .../config/security/LoginAttemptService.java | 2 +- .../security/SecurityConfiguration.java | 2 +- .../security/UserAuthenticationFilter.java | 16 ++---- .../SPDF/config/security/UserService.java | 7 +-- .../security/database/DatabaseService.java | 36 ++++++------ ...tomOAuth2AuthenticationSuccessHandler.java | 4 +- .../oauth2/CustomOAuth2UserService.java | 4 +- .../security/oauth2/OAuth2Configuration.java | 6 +- ...stomSaml2AuthenticationSuccessHandler.java | 4 +- .../security/saml2/SAML2Configuration.java | 4 +- .../session/SessionRegistryConfig.java | 2 - .../security/session/SessionRepository.java | 2 - .../controller/api/SettingsController.java | 2 +- .../SPDF/controller/api/UserController.java | 2 +- .../api/converters/ConvertHtmlToPDF.java | 2 +- .../api/converters/ConvertMarkdownToPdf.java | 2 +- .../api/converters/ConvertWebsiteToPDF.java | 2 +- .../controller/api/misc/OCRController.java | 2 +- .../controller/web/AccountWebController.java | 10 ++-- .../controller/web/HomeWebController.java | 2 +- .../controller/web/MetricsController.java | 2 +- .../controller/web/OtherWebController.java | 2 +- .../controller/web/UploadLimitService.java | 2 +- .../SPDF/service/LanguageService.java | 2 +- .../SPDF/service/PdfMetadataService.java | 2 +- .../software/SPDF/service/PostHogService.java | 2 +- .../software/SPDF/utils/ProcessExecutor.java | 2 +- src/main/resources/settings.yml.template | 5 +- .../software/SPDF/SPDFApplicationTest.java | 2 +- .../CustomLogoutSuccessHandlerTest.java | 2 +- .../security/database/DatabaseConfigTest.java | 30 ++-------- .../converters/ConvertWebsiteToPdfTest.java | 2 +- .../common/configuration/AppConfig.java | 28 ++++++++- .../common/configuration}/DatabaseConfig.java | 25 +++----- .../common/configuration/YamlConfig.java | 45 +++++++++++++++ .../ApplicationProperties.java | 57 ++++--------------- 49 files changed, 177 insertions(+), 186 deletions(-) rename {src/main/java/stirling/software/SPDF/config/security/database => stirling-common/src/main/java/stirling/software/common/configuration}/DatabaseConfig.java (87%) create mode 100644 stirling-common/src/main/java/stirling/software/common/configuration/YamlConfig.java rename stirling-common/src/main/java/stirling/software/common/{configuration => model}/ApplicationProperties.java (92%) diff --git a/src/main/java/stirling/software/SPDF/EE/EEAppConfig.java b/src/main/java/stirling/software/SPDF/EE/EEAppConfig.java index ea92b183e..2683e2e4d 100644 --- a/src/main/java/stirling/software/SPDF/EE/EEAppConfig.java +++ b/src/main/java/stirling/software/SPDF/EE/EEAppConfig.java @@ -8,10 +8,10 @@ import org.springframework.core.annotation.Order; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.EE.KeygenLicenseVerifier.License; -import stirling.software.common.configuration.ApplicationProperties; -import stirling.software.common.configuration.ApplicationProperties.EnterpriseEdition; -import stirling.software.common.configuration.ApplicationProperties.Premium; -import stirling.software.common.configuration.ApplicationProperties.Premium.ProFeatures.GoogleDrive; +import stirling.software.common.model.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties.EnterpriseEdition; +import stirling.software.common.model.ApplicationProperties.Premium; +import stirling.software.common.model.ApplicationProperties.Premium.ProFeatures.GoogleDrive; @Configuration @Order(Ordered.HIGHEST_PRECEDENCE) diff --git a/src/main/java/stirling/software/SPDF/EE/KeygenLicenseVerifier.java b/src/main/java/stirling/software/SPDF/EE/KeygenLicenseVerifier.java index 62913be90..11e034629 100644 --- a/src/main/java/stirling/software/SPDF/EE/KeygenLicenseVerifier.java +++ b/src/main/java/stirling/software/SPDF/EE/KeygenLicenseVerifier.java @@ -20,7 +20,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.utils.GeneralUtils; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Service @Slf4j diff --git a/src/main/java/stirling/software/SPDF/EE/LicenseKeyChecker.java b/src/main/java/stirling/software/SPDF/EE/LicenseKeyChecker.java index b9014bd3d..e00dfc133 100644 --- a/src/main/java/stirling/software/SPDF/EE/LicenseKeyChecker.java +++ b/src/main/java/stirling/software/SPDF/EE/LicenseKeyChecker.java @@ -12,7 +12,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.EE.KeygenLicenseVerifier.License; import stirling.software.SPDF.utils.GeneralUtils; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Component @Slf4j diff --git a/src/main/java/stirling/software/SPDF/SPDFApplication.java b/src/main/java/stirling/software/SPDF/SPDFApplication.java index 73a89d4fb..d2e7ab703 100644 --- a/src/main/java/stirling/software/SPDF/SPDFApplication.java +++ b/src/main/java/stirling/software/SPDF/SPDFApplication.java @@ -29,8 +29,8 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.UI.WebBrowser; import stirling.software.SPDF.config.ConfigInitializer; import stirling.software.SPDF.utils.UrlUtils; -import stirling.software.common.configuration.ApplicationProperties; import stirling.software.common.configuration.InstallationPathConfig; +import stirling.software.common.model.ApplicationProperties; @Slf4j @EnableScheduling diff --git a/src/main/java/stirling/software/SPDF/config/AppUpdateService.java b/src/main/java/stirling/software/SPDF/config/AppUpdateService.java index 6a851ec81..f89c9aed3 100644 --- a/src/main/java/stirling/software/SPDF/config/AppUpdateService.java +++ b/src/main/java/stirling/software/SPDF/config/AppUpdateService.java @@ -6,7 +6,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Scope; import stirling.software.SPDF.config.interfaces.ShowAdminInterface; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Configuration class AppUpdateService { diff --git a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java index 6daddfa67..c9872992a 100644 --- a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java +++ b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java @@ -11,7 +11,7 @@ import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Service @Slf4j diff --git a/src/main/java/stirling/software/SPDF/config/InitialSetup.java b/src/main/java/stirling/software/SPDF/config/InitialSetup.java index 96585400a..5a22c5525 100644 --- a/src/main/java/stirling/software/SPDF/config/InitialSetup.java +++ b/src/main/java/stirling/software/SPDF/config/InitialSetup.java @@ -18,7 +18,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.utils.GeneralUtils; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Component @Slf4j diff --git a/src/main/java/stirling/software/SPDF/config/LocaleConfiguration.java b/src/main/java/stirling/software/SPDF/config/LocaleConfiguration.java index 9067e5bf9..97fbb4d21 100644 --- a/src/main/java/stirling/software/SPDF/config/LocaleConfiguration.java +++ b/src/main/java/stirling/software/SPDF/config/LocaleConfiguration.java @@ -12,7 +12,7 @@ import org.springframework.web.servlet.i18n.SessionLocaleResolver; import lombok.RequiredArgsConstructor; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Configuration @RequiredArgsConstructor diff --git a/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java b/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java index b55d60868..78d2a3d2b 100644 --- a/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java +++ b/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java @@ -13,7 +13,7 @@ import io.swagger.v3.oas.models.security.SecurityScheme; import lombok.RequiredArgsConstructor; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Configuration @RequiredArgsConstructor diff --git a/src/main/java/stirling/software/SPDF/config/RuntimePathConfig.java b/src/main/java/stirling/software/SPDF/config/RuntimePathConfig.java index 8d35c42d1..1ceabb7b6 100644 --- a/src/main/java/stirling/software/SPDF/config/RuntimePathConfig.java +++ b/src/main/java/stirling/software/SPDF/config/RuntimePathConfig.java @@ -9,10 +9,10 @@ import org.springframework.context.annotation.Configuration; import lombok.Getter; import lombok.extern.slf4j.Slf4j; -import stirling.software.common.configuration.ApplicationProperties; -import stirling.software.common.configuration.ApplicationProperties.CustomPaths.Operations; -import stirling.software.common.configuration.ApplicationProperties.CustomPaths.Pipeline; import stirling.software.common.configuration.InstallationPathConfig; +import stirling.software.common.model.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties.CustomPaths.Operations; +import stirling.software.common.model.ApplicationProperties.CustomPaths.Pipeline; @Slf4j @Configuration diff --git a/src/main/java/stirling/software/SPDF/config/security/AppUpdateAuthService.java b/src/main/java/stirling/software/SPDF/config/security/AppUpdateAuthService.java index c8b6e15ea..7139fc686 100644 --- a/src/main/java/stirling/software/SPDF/config/security/AppUpdateAuthService.java +++ b/src/main/java/stirling/software/SPDF/config/security/AppUpdateAuthService.java @@ -11,7 +11,7 @@ import lombok.RequiredArgsConstructor; import stirling.software.SPDF.config.interfaces.ShowAdminInterface; import stirling.software.SPDF.model.User; import stirling.software.SPDF.repository.UserRepository; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Service @RequiredArgsConstructor diff --git a/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java b/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java index 8ca881308..be400aeff 100644 --- a/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java +++ b/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java @@ -26,9 +26,9 @@ import stirling.software.SPDF.SPDFApplication; import stirling.software.SPDF.config.security.saml2.CertificateUtils; import stirling.software.SPDF.config.security.saml2.CustomSaml2AuthenticatedPrincipal; import stirling.software.SPDF.utils.UrlUtils; -import stirling.software.common.configuration.ApplicationProperties; -import stirling.software.common.configuration.ApplicationProperties.Security.OAUTH2; -import stirling.software.common.configuration.ApplicationProperties.Security.SAML2; +import stirling.software.common.model.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties.Security.OAUTH2; +import stirling.software.common.model.ApplicationProperties.Security.SAML2; import stirling.software.common.model.provider.KeycloakProvider; @Slf4j diff --git a/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java b/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java index f345bb658..3b1a8d5fb 100644 --- a/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java +++ b/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java @@ -12,7 +12,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.interfaces.DatabaseInterface; import stirling.software.SPDF.model.Role; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.exception.UnsupportedProviderException; @Slf4j diff --git a/src/main/java/stirling/software/SPDF/config/security/LoginAttemptService.java b/src/main/java/stirling/software/SPDF/config/security/LoginAttemptService.java index 2f8c0ac7f..9beba4760 100644 --- a/src/main/java/stirling/software/SPDF/config/security/LoginAttemptService.java +++ b/src/main/java/stirling/software/SPDF/config/security/LoginAttemptService.java @@ -11,7 +11,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.AttemptCounter; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Service @Slf4j diff --git a/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java b/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java index e665e83a4..db2fc6c8d 100644 --- a/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java +++ b/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java @@ -40,7 +40,7 @@ import stirling.software.SPDF.config.security.session.SessionPersistentRegistry; import stirling.software.SPDF.model.User; import stirling.software.SPDF.repository.JPATokenRepositoryImpl; import stirling.software.SPDF.repository.PersistentLoginRepository; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Configuration @EnableWebSecurity diff --git a/src/main/java/stirling/software/SPDF/config/security/UserAuthenticationFilter.java b/src/main/java/stirling/software/SPDF/config/security/UserAuthenticationFilter.java index 4c3fd8e1c..70e65e23b 100644 --- a/src/main/java/stirling/software/SPDF/config/security/UserAuthenticationFilter.java +++ b/src/main/java/stirling/software/SPDF/config/security/UserAuthenticationFilter.java @@ -5,7 +5,6 @@ import java.util.List; import java.util.Optional; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Lazy; import org.springframework.http.HttpStatus; import org.springframework.security.core.Authentication; @@ -29,27 +28,25 @@ import stirling.software.SPDF.config.security.saml2.CustomSaml2AuthenticatedPrin import stirling.software.SPDF.config.security.session.SessionPersistentRegistry; import stirling.software.SPDF.model.ApiKeyAuthenticationToken; import stirling.software.SPDF.model.User; -import stirling.software.common.configuration.ApplicationProperties; -import stirling.software.common.configuration.ApplicationProperties.Security; -import stirling.software.common.configuration.ApplicationProperties.Security.OAUTH2; -import stirling.software.common.configuration.ApplicationProperties.Security.SAML2; +import stirling.software.common.model.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties.Security.OAUTH2; +import stirling.software.common.model.ApplicationProperties.Security.SAML2; @Slf4j @Component -@ConditionalOnProperty(name = "premium.enabled", havingValue = "true") public class UserAuthenticationFilter extends OncePerRequestFilter { - private final ApplicationProperties applicationProperties; + private final ApplicationProperties.Security securityProp; private final UserService userService; private final SessionPersistentRegistry sessionPersistentRegistry; private final boolean loginEnabledValue; public UserAuthenticationFilter( - @Lazy ApplicationProperties applicationProperties, + @Lazy ApplicationProperties.Security securityProp, @Lazy UserService userService, SessionPersistentRegistry sessionPersistentRegistry, @Qualifier("loginEnabled") boolean loginEnabledValue) { - this.applicationProperties = applicationProperties; + this.securityProp = securityProp; this.userService = userService; this.sessionPersistentRegistry = sessionPersistentRegistry; this.loginEnabledValue = loginEnabledValue; @@ -136,7 +133,6 @@ public class UserAuthenticationFilter extends OncePerRequestFilter { // Check if the authenticated user is disabled and invalidate their session if so if (authentication != null && authentication.isAuthenticated()) { - Security securityProp = applicationProperties.getSecurity(); LoginMethod loginMethod = LoginMethod.UNKNOWN; boolean blockRegistration = false; diff --git a/src/main/java/stirling/software/SPDF/config/security/UserService.java b/src/main/java/stirling/software/SPDF/config/security/UserService.java index d34ca153d..c7a6e363a 100644 --- a/src/main/java/stirling/software/SPDF/config/security/UserService.java +++ b/src/main/java/stirling/software/SPDF/config/security/UserService.java @@ -30,7 +30,7 @@ import stirling.software.SPDF.controller.api.pipeline.UserServiceInterface; import stirling.software.SPDF.model.*; import stirling.software.SPDF.repository.AuthorityRepository; import stirling.software.SPDF.repository.UserRepository; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.exception.UnsupportedProviderException; @Service @@ -50,7 +50,7 @@ public class UserService implements UserServiceInterface { @Lazy private final DatabaseInterface databaseService; - private final ApplicationProperties applicationProperties; + private final ApplicationProperties.Security.OAUTH2 oAuth2; @Transactional public void migrateOauth2ToSSO() { @@ -413,8 +413,7 @@ public class UserService implements UserServiceInterface { } else if (principal instanceof stirling.software.SPDF.model.User domainUser) { return domainUser.getUsername(); } else if (principal instanceof OAuth2User oAuth2User) { - return oAuth2User.getAttribute( - applicationProperties.getSecurity().getOauth2().getUseAsUsername()); + return oAuth2User.getAttribute(oAuth2.getUseAsUsername()); } else if (principal instanceof CustomSaml2AuthenticatedPrincipal saml2User) { return saml2User.name(); } else if (principal instanceof String stringUser) { diff --git a/src/main/java/stirling/software/SPDF/config/security/database/DatabaseService.java b/src/main/java/stirling/software/SPDF/config/security/database/DatabaseService.java index 98da09bb4..9ae427ca0 100644 --- a/src/main/java/stirling/software/SPDF/config/security/database/DatabaseService.java +++ b/src/main/java/stirling/software/SPDF/config/security/database/DatabaseService.java @@ -31,8 +31,8 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.interfaces.DatabaseInterface; import stirling.software.SPDF.model.exception.BackupNotFoundException; import stirling.software.SPDF.utils.FileInfo; -import stirling.software.common.configuration.ApplicationProperties; import stirling.software.common.configuration.InstallationPathConfig; +import stirling.software.common.model.ApplicationProperties; @Lazy @Slf4j @@ -43,13 +43,14 @@ public class DatabaseService implements DatabaseInterface { public static final String SQL_SUFFIX = ".sql"; private final Path BACKUP_DIR; - private final ApplicationProperties applicationProperties; + private final ApplicationProperties.Datasource datasourceProps; @Lazy private final DataSource dataSource; - public DatabaseService(ApplicationProperties applicationProperties, DataSource dataSource) { + public DatabaseService( + ApplicationProperties.Datasource datasourceProps, DataSource dataSource) { this.BACKUP_DIR = Paths.get(InstallationPathConfig.getConfigPath(), "db", "backup").normalize(); - this.applicationProperties = applicationProperties; + this.datasourceProps = datasourceProps; this.dataSource = dataSource; } @@ -240,31 +241,28 @@ public class DatabaseService implements DatabaseInterface { } private boolean isH2Database() { - ApplicationProperties.Datasource datasource = - applicationProperties.getSystem().getDatasource(); - boolean isTypeH2 = - datasource.getType().equalsIgnoreCase(ApplicationProperties.Driver.H2.name()); + datasourceProps.getType().equalsIgnoreCase(ApplicationProperties.Driver.H2.name()); boolean isDBUrlH2 = - datasource.getCustomDatabaseUrl().contains("h2") - || datasource.getCustomDatabaseUrl().contains("H2"); - boolean isCustomDatabase = datasource.isEnableCustomDatabase(); + datasourceProps.getCustomDatabaseUrl().contains("h2") + || datasourceProps.getCustomDatabaseUrl().contains("H2"); + boolean isCustomDatabase = datasourceProps.isEnableCustomDatabase(); if (isCustomDatabase) { if (isTypeH2 && !isDBUrlH2) { log.warn( - "Datasource type is H2, but the URL does not contain 'h2'. " - + "Please check your configuration."); + "Datasource type is H2, but the URL does not contain 'h2'. " + + "Please check your configuration."); throw new IllegalStateException( - "Datasource type is H2, but the URL does not contain 'h2'. Please check" - + " your configuration."); + "Datasource type is H2, but the URL does not contain 'h2'. Please check" + + " your configuration."); } else if (!isTypeH2 && isDBUrlH2) { log.warn( - "Datasource URL contains 'h2', but the type is not H2. " - + "Please check your configuration."); + "Datasource URL contains 'h2', but the type is not H2. " + + "Please check your configuration."); throw new IllegalStateException( - "Datasource URL contains 'h2', but the type is not H2. Please check your" - + " configuration."); + "Datasource URL contains 'h2', but the type is not H2. Please check your" + + " configuration."); } } boolean isH2 = isTypeH2 && isDBUrlH2; diff --git a/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java b/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java index c9efa5c22..bfe4d71fe 100644 --- a/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java +++ b/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java @@ -21,8 +21,8 @@ import stirling.software.SPDF.config.security.LoginAttemptService; import stirling.software.SPDF.config.security.UserService; import stirling.software.SPDF.model.AuthenticationType; import stirling.software.SPDF.utils.RequestUriUtils; -import stirling.software.common.configuration.ApplicationProperties; -import stirling.software.common.configuration.ApplicationProperties.Security.OAUTH2; +import stirling.software.common.model.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties.Security.OAUTH2; import stirling.software.common.model.exception.UnsupportedProviderException; @RequiredArgsConstructor diff --git a/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2UserService.java b/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2UserService.java index 79c35201e..458dd3477 100644 --- a/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2UserService.java +++ b/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2UserService.java @@ -16,8 +16,8 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.security.LoginAttemptService; import stirling.software.SPDF.config.security.UserService; import stirling.software.SPDF.model.User; -import stirling.software.common.configuration.ApplicationProperties; -import stirling.software.common.configuration.ApplicationProperties.Security.OAUTH2; +import stirling.software.common.model.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties.Security.OAUTH2; import stirling.software.common.model.enumeration.UsernameAttribute; @Slf4j diff --git a/src/main/java/stirling/software/SPDF/config/security/oauth2/OAuth2Configuration.java b/src/main/java/stirling/software/SPDF/config/security/oauth2/OAuth2Configuration.java index 61786c96d..0cb6bf3c6 100644 --- a/src/main/java/stirling/software/SPDF/config/security/oauth2/OAuth2Configuration.java +++ b/src/main/java/stirling/software/SPDF/config/security/oauth2/OAuth2Configuration.java @@ -28,9 +28,9 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.security.UserService; import stirling.software.SPDF.model.User; import stirling.software.SPDF.model.exception.NoProviderFoundException; -import stirling.software.common.configuration.ApplicationProperties; -import stirling.software.common.configuration.ApplicationProperties.Security.OAUTH2; -import stirling.software.common.configuration.ApplicationProperties.Security.OAUTH2.Client; +import stirling.software.common.model.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties.Security.OAUTH2; +import stirling.software.common.model.ApplicationProperties.Security.OAUTH2.Client; import stirling.software.common.model.enumeration.UsernameAttribute; import stirling.software.common.model.provider.GitHubProvider; import stirling.software.common.model.provider.GoogleProvider; diff --git a/src/main/java/stirling/software/SPDF/config/security/saml2/CustomSaml2AuthenticationSuccessHandler.java b/src/main/java/stirling/software/SPDF/config/security/saml2/CustomSaml2AuthenticationSuccessHandler.java index 0e92b822c..b1acff1ae 100644 --- a/src/main/java/stirling/software/SPDF/config/security/saml2/CustomSaml2AuthenticationSuccessHandler.java +++ b/src/main/java/stirling/software/SPDF/config/security/saml2/CustomSaml2AuthenticationSuccessHandler.java @@ -20,8 +20,8 @@ import stirling.software.SPDF.config.security.LoginAttemptService; import stirling.software.SPDF.config.security.UserService; import stirling.software.SPDF.model.AuthenticationType; import stirling.software.SPDF.utils.RequestUriUtils; -import stirling.software.common.configuration.ApplicationProperties; -import stirling.software.common.configuration.ApplicationProperties.Security.SAML2; +import stirling.software.common.model.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties.Security.SAML2; import stirling.software.common.model.exception.UnsupportedProviderException; @AllArgsConstructor diff --git a/src/main/java/stirling/software/SPDF/config/security/saml2/SAML2Configuration.java b/src/main/java/stirling/software/SPDF/config/security/saml2/SAML2Configuration.java index a19dd8edb..8a6ff10cc 100644 --- a/src/main/java/stirling/software/SPDF/config/security/saml2/SAML2Configuration.java +++ b/src/main/java/stirling/software/SPDF/config/security/saml2/SAML2Configuration.java @@ -24,8 +24,8 @@ import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import stirling.software.common.configuration.ApplicationProperties; -import stirling.software.common.configuration.ApplicationProperties.Security.SAML2; +import stirling.software.common.model.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties.Security.SAML2; @Configuration @Slf4j diff --git a/src/main/java/stirling/software/SPDF/config/security/session/SessionRegistryConfig.java b/src/main/java/stirling/software/SPDF/config/security/session/SessionRegistryConfig.java index 18a84279c..8fa24e95a 100644 --- a/src/main/java/stirling/software/SPDF/config/security/session/SessionRegistryConfig.java +++ b/src/main/java/stirling/software/SPDF/config/security/session/SessionRegistryConfig.java @@ -1,12 +1,10 @@ package stirling.software.SPDF.config.security.session; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.core.session.SessionRegistryImpl; @Configuration -@ConditionalOnProperty(name = "premium.enabled", havingValue = "true") public class SessionRegistryConfig { @Bean diff --git a/src/main/java/stirling/software/SPDF/config/security/session/SessionRepository.java b/src/main/java/stirling/software/SPDF/config/security/session/SessionRepository.java index d4f2f4bcc..b7f0133f3 100644 --- a/src/main/java/stirling/software/SPDF/config/security/session/SessionRepository.java +++ b/src/main/java/stirling/software/SPDF/config/security/session/SessionRepository.java @@ -3,7 +3,6 @@ package stirling.software.SPDF.config.security.session; import java.util.Date; import java.util.List; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -15,7 +14,6 @@ import jakarta.transaction.Transactional; import stirling.software.SPDF.model.SessionEntity; @Repository -@ConditionalOnProperty(name = "premium.enabled", havingValue = "true") public interface SessionRepository extends JpaRepository { List findByPrincipalName(String principalName); diff --git a/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java b/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java index f75530e06..11b14e338 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java @@ -18,8 +18,8 @@ import lombok.RequiredArgsConstructor; import stirling.software.SPDF.config.EndpointConfiguration; import stirling.software.SPDF.utils.GeneralUtils; -import stirling.software.common.configuration.ApplicationProperties; import stirling.software.common.configuration.InstallationPathConfig; +import stirling.software.common.model.ApplicationProperties; @Controller @Tag(name = "Settings", description = "Settings APIs") diff --git a/src/main/java/stirling/software/SPDF/controller/api/UserController.java b/src/main/java/stirling/software/SPDF/controller/api/UserController.java index 67a6b9361..bdd7adb14 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/UserController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/UserController.java @@ -37,7 +37,7 @@ import stirling.software.SPDF.model.AuthenticationType; import stirling.software.SPDF.model.Role; import stirling.software.SPDF.model.User; import stirling.software.SPDF.model.api.user.UsernameAndPass; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.exception.UnsupportedProviderException; @Controller diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java index 03fbea071..b19f69272 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java @@ -18,7 +18,7 @@ import stirling.software.SPDF.model.api.converters.HTMLToPdfRequest; import stirling.software.SPDF.service.CustomPDFDocumentFactory; import stirling.software.SPDF.utils.FileToPdf; import stirling.software.SPDF.utils.WebResponseUtils; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @RestController @Tag(name = "Convert", description = "Convert APIs") diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertMarkdownToPdf.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertMarkdownToPdf.java index 3da91d945..665fa4232 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertMarkdownToPdf.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertMarkdownToPdf.java @@ -28,7 +28,7 @@ import stirling.software.SPDF.model.api.GeneralFile; import stirling.software.SPDF.service.CustomPDFDocumentFactory; import stirling.software.SPDF.utils.FileToPdf; import stirling.software.SPDF.utils.WebResponseUtils; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @RestController @Tag(name = "Convert", description = "Convert APIs") diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java index f26b4cf6b..491b89d6c 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java @@ -26,7 +26,7 @@ import stirling.software.SPDF.utils.GeneralUtils; import stirling.software.SPDF.utils.ProcessExecutor; import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult; import stirling.software.SPDF.utils.WebResponseUtils; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @RestController @Tag(name = "Convert", description = "Convert APIs") diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java index 61682d37d..90809df87 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java @@ -33,7 +33,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.ProcessPdfWithOcrRequest; import stirling.software.SPDF.service.CustomPDFDocumentFactory; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @RestController @RequestMapping("/api/v1/misc") diff --git a/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java b/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java index cfc17e157..42a3f2da9 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java @@ -36,11 +36,11 @@ import stirling.software.SPDF.model.Role; import stirling.software.SPDF.model.SessionEntity; import stirling.software.SPDF.model.User; import stirling.software.SPDF.repository.UserRepository; -import stirling.software.common.configuration.ApplicationProperties; -import stirling.software.common.configuration.ApplicationProperties.Security; -import stirling.software.common.configuration.ApplicationProperties.Security.OAUTH2; -import stirling.software.common.configuration.ApplicationProperties.Security.OAUTH2.Client; -import stirling.software.common.configuration.ApplicationProperties.Security.SAML2; +import stirling.software.common.model.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties.Security; +import stirling.software.common.model.ApplicationProperties.Security.OAUTH2; +import stirling.software.common.model.ApplicationProperties.Security.OAUTH2.Client; +import stirling.software.common.model.ApplicationProperties.Security.SAML2; import stirling.software.common.model.provider.GitHubProvider; import stirling.software.common.model.provider.GoogleProvider; import stirling.software.common.model.provider.KeycloakProvider; diff --git a/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java b/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java index f0551d8c8..6e0104520 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java @@ -23,7 +23,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.Dependency; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Controller @Slf4j diff --git a/src/main/java/stirling/software/SPDF/controller/web/MetricsController.java b/src/main/java/stirling/software/SPDF/controller/web/MetricsController.java index cd2bd7197..e82acaffa 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/MetricsController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/MetricsController.java @@ -24,7 +24,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.EndpointInspector; import stirling.software.SPDF.config.StartupApplicationListener; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @RestController @RequestMapping("/api/v1/info") diff --git a/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java b/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java index 125b03b40..b31389d95 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java @@ -16,7 +16,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import stirling.software.SPDF.utils.CheckProgramInstall; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Controller @Tag(name = "Misc", description = "Miscellaneous APIs") diff --git a/src/main/java/stirling/software/SPDF/controller/web/UploadLimitService.java b/src/main/java/stirling/software/SPDF/controller/web/UploadLimitService.java index 62ef0e354..28f3126cc 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/UploadLimitService.java +++ b/src/main/java/stirling/software/SPDF/controller/web/UploadLimitService.java @@ -7,7 +7,7 @@ import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Service @Slf4j diff --git a/src/main/java/stirling/software/SPDF/service/LanguageService.java b/src/main/java/stirling/software/SPDF/service/LanguageService.java index 971f9dcca..fb5553879 100644 --- a/src/main/java/stirling/software/SPDF/service/LanguageService.java +++ b/src/main/java/stirling/software/SPDF/service/LanguageService.java @@ -12,7 +12,7 @@ import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Service @Slf4j diff --git a/src/main/java/stirling/software/SPDF/service/PdfMetadataService.java b/src/main/java/stirling/software/SPDF/service/PdfMetadataService.java index db3d105da..3bbb938bf 100644 --- a/src/main/java/stirling/software/SPDF/service/PdfMetadataService.java +++ b/src/main/java/stirling/software/SPDF/service/PdfMetadataService.java @@ -9,7 +9,7 @@ import org.springframework.stereotype.Service; import stirling.software.SPDF.controller.api.pipeline.UserServiceInterface; import stirling.software.SPDF.model.PdfMetadata; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Service public class PdfMetadataService { diff --git a/src/main/java/stirling/software/SPDF/service/PostHogService.java b/src/main/java/stirling/software/SPDF/service/PostHogService.java index 06164ef4f..6b9b2eaef 100644 --- a/src/main/java/stirling/software/SPDF/service/PostHogService.java +++ b/src/main/java/stirling/software/SPDF/service/PostHogService.java @@ -17,7 +17,7 @@ import org.springframework.stereotype.Service; import com.posthog.java.PostHog; import stirling.software.SPDF.controller.api.pipeline.UserServiceInterface; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Service public class PostHogService { diff --git a/src/main/java/stirling/software/SPDF/utils/ProcessExecutor.java b/src/main/java/stirling/software/SPDF/utils/ProcessExecutor.java index 7c2fa915a..c95c5676e 100644 --- a/src/main/java/stirling/software/SPDF/utils/ProcessExecutor.java +++ b/src/main/java/stirling/software/SPDF/utils/ProcessExecutor.java @@ -17,7 +17,7 @@ import io.github.pixee.security.BoundedLineReader; import lombok.extern.slf4j.Slf4j; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @Slf4j public class ProcessExecutor { diff --git a/src/main/resources/settings.yml.template b/src/main/resources/settings.yml.template index 3f9adffaf..0226776c5 100644 --- a/src/main/resources/settings.yml.template +++ b/src/main/resources/settings.yml.template @@ -62,9 +62,9 @@ security: premium: key: 00000000-0000-0000-0000-000000000000 - enabled: false # Enable license key checks for pro/enterprise features + enabled: true # Enable license key checks for pro/enterprise features proFeatures: - database: false # Enable database features + database: true # Enable database features SSOAutoLogin: false CustomMetadata: autoUpdateMetadata: false @@ -104,7 +104,6 @@ system: enableUrlToPDF: false # Set to 'true' to enable URL to PDF, INTERNAL ONLY, known security issues, should not be used externally disableSanitize: false # set to true to disable Sanitize HTML; (can lead to injections in HTML) datasource: - enabled: true # set to 'true' to enable the database connection enableCustomDatabase: false # Enterprise users ONLY, set this property to 'true' if you would like to use your own custom database configuration customDatabaseUrl: '' # eg jdbc:postgresql://localhost:5432/postgres, set the url for your own custom database connection. If provided, the type, hostName, port and name are not necessary and will not be used username: postgres # set the database username diff --git a/src/test/java/stirling/software/SPDF/SPDFApplicationTest.java b/src/test/java/stirling/software/SPDF/SPDFApplicationTest.java index 028557505..087475c85 100644 --- a/src/test/java/stirling/software/SPDF/SPDFApplicationTest.java +++ b/src/test/java/stirling/software/SPDF/SPDFApplicationTest.java @@ -10,7 +10,7 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.core.env.Environment; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @ExtendWith(MockitoExtension.class) public class SPDFApplicationTest { diff --git a/src/test/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandlerTest.java b/src/test/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandlerTest.java index 5b3315cc2..79638cafe 100644 --- a/src/test/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandlerTest.java +++ b/src/test/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandlerTest.java @@ -16,7 +16,7 @@ import org.springframework.security.oauth2.client.authentication.OAuth2Authentic import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; @ExtendWith(MockitoExtension.class) class CustomLogoutSuccessHandlerTest { diff --git a/src/test/java/stirling/software/SPDF/config/security/database/DatabaseConfigTest.java b/src/test/java/stirling/software/SPDF/config/security/database/DatabaseConfigTest.java index eda93d67a..c734a8b7e 100644 --- a/src/test/java/stirling/software/SPDF/config/security/database/DatabaseConfigTest.java +++ b/src/test/java/stirling/software/SPDF/config/security/database/DatabaseConfigTest.java @@ -2,7 +2,6 @@ package stirling.software.SPDF.config.security.database; import static org.junit.jupiter.api.Assertions.assertInstanceOf; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import javax.sql.DataSource; @@ -15,24 +14,25 @@ import org.junit.jupiter.params.provider.ValueSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.configuration.DatabaseConfig; +import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.exception.UnsupportedProviderException; @ExtendWith(MockitoExtension.class) class DatabaseConfigTest { - @Mock private ApplicationProperties applicationProperties; + @Mock private ApplicationProperties.Datasource datasource; private DatabaseConfig databaseConfig; @BeforeEach void setUp() { - databaseConfig = new DatabaseConfig(applicationProperties, true); + databaseConfig = new DatabaseConfig(datasource, true); } @Test void testDataSource_whenRunningEEIsFalse() throws UnsupportedProviderException { - databaseConfig = new DatabaseConfig(applicationProperties, false); + databaseConfig = new DatabaseConfig(datasource, false); var result = databaseConfig.dataSource(); @@ -41,11 +41,6 @@ class DatabaseConfigTest { @Test void testDefaultConfigurationForDataSource() throws UnsupportedProviderException { - var system = mock(ApplicationProperties.System.class); - var datasource = mock(ApplicationProperties.Datasource.class); - - when(applicationProperties.getSystem()).thenReturn(system); - when(system.getDatasource()).thenReturn(datasource); when(datasource.isEnableCustomDatabase()).thenReturn(false); var result = databaseConfig.dataSource(); @@ -55,11 +50,6 @@ class DatabaseConfigTest { @Test void testCustomUrlForDataSource() throws UnsupportedProviderException { - var system = mock(ApplicationProperties.System.class); - var datasource = mock(ApplicationProperties.Datasource.class); - - when(applicationProperties.getSystem()).thenReturn(system); - when(system.getDatasource()).thenReturn(datasource); when(datasource.isEnableCustomDatabase()).thenReturn(true); when(datasource.getCustomDatabaseUrl()).thenReturn("jdbc:postgresql://mockUrl"); when(datasource.getUsername()).thenReturn("test"); @@ -72,11 +62,6 @@ class DatabaseConfigTest { @Test void testCustomConfigurationForDataSource() throws UnsupportedProviderException { - var system = mock(ApplicationProperties.System.class); - var datasource = mock(ApplicationProperties.Datasource.class); - - when(applicationProperties.getSystem()).thenReturn(system); - when(system.getDatasource()).thenReturn(datasource); when(datasource.isEnableCustomDatabase()).thenReturn(true); when(datasource.getCustomDatabaseUrl()).thenReturn(""); when(datasource.getType()).thenReturn("postgresql"); @@ -94,11 +79,6 @@ class DatabaseConfigTest { @ParameterizedTest(name = "Exception thrown when the DB type [{arguments}] is not supported") @ValueSource(strings = {"oracle", "mysql", "mongoDb"}) void exceptionThrown_whenDBTypeIsUnsupported(String datasourceType) { - var system = mock(ApplicationProperties.System.class); - var datasource = mock(ApplicationProperties.Datasource.class); - - when(applicationProperties.getSystem()).thenReturn(system); - when(system.getDatasource()).thenReturn(datasource); when(datasource.isEnableCustomDatabase()).thenReturn(true); when(datasource.getCustomDatabaseUrl()).thenReturn(""); when(datasource.getType()).thenReturn(datasourceType); diff --git a/src/test/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPdfTest.java b/src/test/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPdfTest.java index 092a13918..2c2b0f217 100644 --- a/src/test/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPdfTest.java +++ b/src/test/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPdfTest.java @@ -11,7 +11,7 @@ import org.mockito.MockitoAnnotations; import stirling.software.SPDF.config.RuntimePathConfig; import stirling.software.SPDF.model.api.converters.UrlToPdfRequest; import stirling.software.SPDF.service.CustomPDFDocumentFactory; -import stirling.software.common.configuration.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; public class ConvertWebsiteToPdfTest { diff --git a/stirling-common/src/main/java/stirling/software/common/configuration/AppConfig.java b/stirling-common/src/main/java/stirling/software/common/configuration/AppConfig.java index 195bc9fd3..22c7105d4 100644 --- a/stirling-common/src/main/java/stirling/software/common/configuration/AppConfig.java +++ b/stirling-common/src/main/java/stirling/software/common/configuration/AppConfig.java @@ -24,10 +24,11 @@ import org.thymeleaf.spring6.SpringTemplateEngine; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import stirling.software.common.model.ApplicationProperties; -@Configuration @Lazy @Slf4j +@Configuration @RequiredArgsConstructor public class AppConfig { @@ -196,6 +197,31 @@ public class AppConfig { return applicationProperties.getAutomaticallyGenerated().getUUID(); } + @Bean + public ApplicationProperties.Security security() { + return applicationProperties.getSecurity(); + } + + @Bean + public ApplicationProperties.Security.OAUTH2 oAuth2() { + return applicationProperties.getSecurity().getOauth2(); + } + + @Bean + public ApplicationProperties.Premium premium() { + return applicationProperties.getPremium(); + } + + @Bean + public ApplicationProperties.System system() { + return applicationProperties.getSystem(); + } + + @Bean + public ApplicationProperties.Datasource datasource() { + return applicationProperties.getSystem().getDatasource(); + } + @Bean(name = "disablePixel") public boolean disablePixel() { return Boolean.getBoolean(env.getProperty("DISABLE_PIXEL")); diff --git a/src/main/java/stirling/software/SPDF/config/security/database/DatabaseConfig.java b/stirling-common/src/main/java/stirling/software/common/configuration/DatabaseConfig.java similarity index 87% rename from src/main/java/stirling/software/SPDF/config/security/database/DatabaseConfig.java rename to stirling-common/src/main/java/stirling/software/common/configuration/DatabaseConfig.java index 0e00299e6..2445a9c84 100644 --- a/src/main/java/stirling/software/SPDF/config/security/database/DatabaseConfig.java +++ b/stirling-common/src/main/java/stirling/software/common/configuration/DatabaseConfig.java @@ -1,26 +1,18 @@ -package stirling.software.SPDF.config.security.database; +package stirling.software.common.configuration; import javax.sql.DataSource; - +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Lazy; - -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; - -import stirling.software.common.configuration.ApplicationProperties; -import stirling.software.common.configuration.InstallationPathConfig; +import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.exception.UnsupportedProviderException; @Slf4j @Getter -@Lazy @Configuration -@ConditionalOnProperty(name = "premium.proFeatures.database", havingValue = "true") public class DatabaseConfig { public final String DATASOURCE_DEFAULT_URL; @@ -30,18 +22,18 @@ public class DatabaseConfig { public static final String DEFAULT_USERNAME = "sa"; public static final String POSTGRES_DRIVER = "org.postgresql.Driver"; - private final ApplicationProperties applicationProperties; + private final ApplicationProperties.Datasource datasource; private final boolean runningProOrHigher; public DatabaseConfig( - ApplicationProperties applicationProperties, + ApplicationProperties.Datasource datasource, @Qualifier("runningProOrHigher") boolean runningProOrHigher) { DATASOURCE_DEFAULT_URL = "jdbc:h2:file:" + InstallationPathConfig.getConfigPath() + "stirling-pdf-DB-2.3.232;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=PostgreSQL"; log.debug("Database URL: {}", DATASOURCE_DEFAULT_URL); - this.applicationProperties = applicationProperties; + this.datasource = datasource; this.runningProOrHigher = runningProOrHigher; } @@ -62,9 +54,6 @@ public class DatabaseConfig { return useDefaultDataSource(dataSourceBuilder); } - ApplicationProperties.System system = applicationProperties.getSystem(); - ApplicationProperties.Datasource datasource = system.getDatasource(); - if (!datasource.isEnableCustomDatabase()) { return useDefaultDataSource(dataSourceBuilder); } diff --git a/stirling-common/src/main/java/stirling/software/common/configuration/YamlConfig.java b/stirling-common/src/main/java/stirling/software/common/configuration/YamlConfig.java new file mode 100644 index 000000000..b03b184ca --- /dev/null +++ b/stirling-common/src/main/java/stirling/software/common/configuration/YamlConfig.java @@ -0,0 +1,45 @@ +package stirling.software.common.configuration; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.core.env.PropertySource; +import org.springframework.core.io.FileSystemResource; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.EncodedResource; + +@Slf4j +@Configuration +public class YamlConfig { + + @Bean + public PropertySource dynamicYamlPropertySource(ConfigurableEnvironment environment) + throws IOException { + String configPath = InstallationPathConfig.getSettingsPath(); + log.debug("Attempting to load settings from: {}", configPath); + + File file = new File(configPath); + if (!file.exists()) { + log.error("Warning: Settings file does not exist at: {}", configPath); + } + + Resource resource = new FileSystemResource(configPath); + if (!resource.exists()) { + throw new FileNotFoundException("Settings file not found at: " + configPath); + } + + EncodedResource encodedResource = new EncodedResource(resource); + PropertySource propertySource = + new YamlPropertySourceFactory().createPropertySource(null, encodedResource); + environment.getPropertySources().addFirst(propertySource); + + log.debug("Loaded properties: {}", propertySource.getSource()); + + return propertySource; + } + +} diff --git a/stirling-common/src/main/java/stirling/software/common/configuration/ApplicationProperties.java b/stirling-common/src/main/java/stirling/software/common/model/ApplicationProperties.java similarity index 92% rename from stirling-common/src/main/java/stirling/software/common/configuration/ApplicationProperties.java rename to stirling-common/src/main/java/stirling/software/common/model/ApplicationProperties.java index 23df62218..ce5a57c71 100644 --- a/stirling-common/src/main/java/stirling/software/common/configuration/ApplicationProperties.java +++ b/stirling-common/src/main/java/stirling/software/common/model/ApplicationProperties.java @@ -1,7 +1,5 @@ -package stirling.software.common.configuration; +package stirling.software.common.model; -import java.io.File; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; @@ -12,25 +10,17 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.core.env.PropertySource; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.FileSystemResource; -import org.springframework.core.io.Resource; -import org.springframework.core.io.support.EncodedResource; - import lombok.Data; import lombok.Getter; import lombok.Setter; import lombok.ToString; -import lombok.extern.slf4j.Slf4j; - +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.FileSystemResource; +import org.springframework.core.io.Resource; +import org.springframework.stereotype.Component; import stirling.software.common.model.exception.UnsupportedProviderException; import stirling.software.common.model.provider.GitHubProvider; import stirling.software.common.model.provider.GoogleProvider; @@ -38,39 +28,12 @@ import stirling.software.common.model.provider.KeycloakProvider; import stirling.software.common.model.provider.Provider; import stirling.software.common.util.Validator; -@Configuration -@ConfigurationProperties(prefix = "") @Data +@Component @Order(Ordered.HIGHEST_PRECEDENCE) -@Slf4j +@ConfigurationProperties(prefix = "") public class ApplicationProperties { - @Bean - public PropertySource dynamicYamlPropertySource(ConfigurableEnvironment environment) - throws IOException { - String configPath = InstallationPathConfig.getSettingsPath(); - log.debug("Attempting to load settings from: " + configPath); - - File file = new File(configPath); - if (!file.exists()) { - log.error("Warning: Settings file does not exist at: " + configPath); - } - - Resource resource = new FileSystemResource(configPath); - if (!resource.exists()) { - throw new FileNotFoundException("Settings file not found at: " + configPath); - } - - EncodedResource encodedResource = new EncodedResource(resource); - PropertySource propertySource = - new YamlPropertySourceFactory().createPropertySource(null, encodedResource); - environment.getPropertySources().addFirst(propertySource); - - log.debug("Loaded properties: " + propertySource.getSource()); - - return propertySource; - } - private Legal legal = new Legal(); private Security security = new Security(); private System system = new System();