diff --git a/.github/labeler-config.yml b/.github/labeler-config.yml index 4815497c5..60ef1c3b3 100644 --- a/.github/labeler-config.yml +++ b/.github/labeler-config.yml @@ -1,65 +1,60 @@ Translation: - changed-files: - - any-glob-to-any-file: 'src/main/resources/messages_*_*.properties' + - any-glob-to-any-file: 'stirling-pdf/src/main/resources/messages_*_*.properties' - any-glob-to-any-file: 'scripts/ignore_translation.toml' - - any-glob-to-any-file: 'src/main/resources/templates/fragments/languages.html' + - any-glob-to-any-file: 'stirling-pdf/src/main/resources/templates/fragments/languages.html' Front End: - changed-files: - - any-glob-to-any-file: 'src/main/resources/templates/**/*' - - any-glob-to-any-file: 'src/main/resources/static/**/*' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/web/**' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/UI/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/main/resources/templates/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/main/resources/static/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/controller/web/**' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/UI/**/*' Java: - changed-files: - - any-glob-to-any-file: 'src/main/java/**/*.java' + - any-glob-to-any-file: 'common/src/main/java/**/*.java' + - any-glob-to-any-file: 'proprietary/src/main/java/**/*.java' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/**/*.java' Back End: - changed-files: - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/config/**/*' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/**/*' - - any-glob-to-any-file: 'src/main/resources/settings.yml.template' - - any-glob-to-any-file: 'src/main/resources/application.properties' - - any-glob-to-any-file: 'src/main/resources/banner.txt' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/config/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/controller/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/main/resources/settings.yml.template' + - any-glob-to-any-file: 'stirling-pdf/src/main/resources/application.properties' + - any-glob-to-any-file: 'stirling-pdf/src/main/resources/banner.txt' - any-glob-to-any-file: 'scripts/png_to_webp.py' - any-glob-to-any-file: 'split_photos.py' Security: - changed-files: # todo: fix these - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/config/interfaces/DatabaseInterface.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/config/security/**/*' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/api/DatabaseController.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/api/EmailController.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/api/H2SQLController.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/web/AccountWebController.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/web/DatabaseWebController.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/api/UserController.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/api/Email.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/exception/BackupNotFoundException.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/exception/NoProviderFoundExceptionjava' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/provider/**/*' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/AuthenticationType.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/ApiKeyAuthenticationToken.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/AttemptCounter.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/Authority.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/PersistentLogin.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/SessionEntity.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/config/security/**/*' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/provider/**/*' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/AuthenticationType.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/BackupNotFoundException.java' + - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/config/security/**/*' # fixme + # todo: check if correct + - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/**/*' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/exception/**/*' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/controller/**/*' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/oauth2/provider/**/*' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseServiceInterface.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseService.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/api/Email.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/AuthenticationType.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/ApiKeyAuthenticationToken.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/AttemptCounter.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/Authority.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/PersistentLogin.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/SessionEntity.java' - any-glob-to-any-file: 'scripts/download-security-jar.sh' - any-glob-to-any-file: '.github/workflows/dependency-review.yml' - any-glob-to-any-file: '.github/workflows/scorecards.yml' API: - changed-files: - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/config/OpenApiConfig.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/web/MetricsController.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/api/**/*' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/api/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/config/OpenApiConfig.java' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/controller/web/MetricsController.java' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/controller/api/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/model/api/**/*' - any-glob-to-any-file: 'scripts/png_to_webp.py' - any-glob-to-any-file: 'split_photos.py' - any-glob-to-any-file: '.github/workflows/swagger.yml' @@ -93,7 +88,9 @@ Devtools: Test: - changed-files: - any-glob-to-any-file: 'cucumber/**/*' - - any-glob-to-any-file: 'src/test/**/*' + - any-glob-to-any-file: 'common/src/test/**/*' + - any-glob-to-any-file: 'proprietary/src/test/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/test/**/*' - any-glob-to-any-file: 'src/testing/**/*' - any-glob-to-any-file: '.pre-commit-config' - any-glob-to-any-file: '.github/workflows/pre_commit.yml' diff --git a/build.gradle b/build.gradle index 22b6ef624..bf1157ba0 100644 --- a/build.gradle +++ b/build.gradle @@ -42,9 +42,35 @@ bootJar { enabled = false } +sourceSets { + main { + java { + if (System.getenv('ADDITIONAL_FEATURES') == 'false') { + exclude 'stirling/software/proprietary/security/**' + } + + if (System.getenv('STIRLING_PDF_DESKTOP_UI') == 'false') { + exclude 'stirling/software/spdf/UI/impl/**' + } + } + } + + test { + java { + if (System.getenv('DOCKER_ENABLE_SECURITY') == 'false') { + exclude 'stirling/software/proprietary/security/**' + } + + if (System.getenv('STIRLING_PDF_DESKTOP_UI') == 'false') { + exclude 'stirling/software/spdf/UI/impl/**' + } + } + } +} + allprojects { - group = "stirling.software" - version = "0.46.1" + group = 'stirling.software' + version = '0.46.1' afterEvaluate { if (project == rootProject) return @@ -61,8 +87,6 @@ subprojects { apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' - - java { // 17 is lowest but we support and recommend 21 sourceCompatibility = JavaVersion.VERSION_17 @@ -74,7 +98,7 @@ subprojects { configurations.configureEach { exclude group: 'commons-logging', module: 'commons-logging' - exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat" + exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' // Exclude vulnerable BouncyCastle version used in tableau exclude group: 'org.bouncycastle', module: 'bcpkix-jdk15on' exclude group: 'org.bouncycastle', module: 'bcutil-jdk15on' @@ -121,45 +145,6 @@ licenseReport { allowedLicensesFile = new File("$projectDir/allowed-licenses.json") } -// todo: test if needed here -sourceSets { - main { - java { - if (System.getenv("ADDITIONAL_FEATURES") == "false") { - exclude 'stirling/software/proprietary/security/controller/**' - exclude 'stirling/software/proprietary/security/model/ApiKeyAuthenticationToken.java' - exclude 'stirling/software/proprietary/security/model/AttemptCounter.java' - exclude 'stirling/software/proprietary/security/model/Authority.java' - exclude 'stirling/software/proprietary/security/model/BackupNotFoundException.java' - exclude 'stirling/software/proprietary/security/model/PersistentLogin.java' - exclude 'stirling/software/proprietary/security/model/SessionEntity.java' - exclude 'stirling/software/proprietary/security/model/User.java' - exclude 'stirling/software/proprietary/security/database/repository/**' - } - - if (System.getenv("STIRLING_PDF_DESKTOP_UI") == "false") { - exclude "stirling/software/spdf/UI/impl/**" - } - - } - } - - test { - java { - if (System.getenv("DOCKER_ENABLE_SECURITY") == "false") { - exclude "stirling/software/spdf/config/security/**" - exclude "stirling/software/spdf/model/ApiKeyAuthenticationTokenTest.java" - exclude "stirling/software/spdf/controller/api/EmailControllerTest.java" - exclude "stirling/software/spdf/repository/**" - } - - if (System.getenv("STIRLING_PDF_DESKTOP_UI") == "false") { - exclude "stirling/software/spdf/UI/impl/**" - } - } - } -} - openApi { apiDocsUrl = "http://localhost:8080/v1/api-docs" outputDir = file("$projectDir") @@ -370,18 +355,18 @@ tasks.register('downloadTempJre') { def jreArchive = new File(tmpDir, 'jre.tar.gz') def jreDir = new File(tmpDir, 'jre') - println "🔽 Downloading JRE to $jreArchive..." + println "Downloading JRE to $jreArchive" jreArchive.withOutputStream { out -> new URI(jreUrl).toURL().withInputStream { from -> out << from } } - println "📦 Extracting JRE to $jreDir..." + println "Extracting JRE to $jreDir" jreDir.mkdirs() providers.exec { commandLine 'tar', '-xzf', jreArchive.absolutePath, '-C', jreDir.absolutePath, '--strip-components=1' }.result.get() - println "✅ JRE ready at: $jreDir" + println "JRE ready at: $jreDir" ext.tempJrePath = jreDir.absolutePath project.ext.tempJrePath = jreDir.absolutePath } catch (Exception e) { diff --git a/common/src/main/java/stirling/software/common/model/ApplicationProperties.java b/common/src/main/java/stirling/software/common/model/ApplicationProperties.java index d72b0107a..2e453806e 100644 --- a/common/src/main/java/stirling/software/common/model/ApplicationProperties.java +++ b/common/src/main/java/stirling/software/common/model/ApplicationProperties.java @@ -22,11 +22,11 @@ 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; -import stirling.software.common.model.provider.KeycloakProvider; -import stirling.software.common.model.provider.Provider; import stirling.software.common.util.ValidationUtil; +import stirling.software.common.model.oauth2.provider.GitHubProvider; +import stirling.software.common.model.oauth2.provider.GoogleProvider; +import stirling.software.common.model.oauth2.provider.KeycloakProvider; +import stirling.software.common.model.oauth2.provider.Provider; @Data @Component diff --git a/stirling-pdf/src/main/java/stirling/software/spdf/model/api/GeneralFile.java b/common/src/main/java/stirling/software/common/model/api/GeneralFile.java similarity index 87% rename from stirling-pdf/src/main/java/stirling/software/spdf/model/api/GeneralFile.java rename to common/src/main/java/stirling/software/common/model/api/GeneralFile.java index eaec1f02f..ad6cb155d 100644 --- a/stirling-pdf/src/main/java/stirling/software/spdf/model/api/GeneralFile.java +++ b/common/src/main/java/stirling/software/common/model/api/GeneralFile.java @@ -1,4 +1,4 @@ -package stirling.software.spdf.model.api; +package stirling.software.common.model.api; import org.springframework.web.multipart.MultipartFile; diff --git a/common/src/main/java/stirling/software/common/model/exception/UnsupportedClaimException.java b/common/src/main/java/stirling/software/common/model/exception/UnsupportedClaimException.java new file mode 100644 index 000000000..37dcc2fbc --- /dev/null +++ b/common/src/main/java/stirling/software/common/model/exception/UnsupportedClaimException.java @@ -0,0 +1,7 @@ +package stirling.software.common.model.exception; + +public class UnsupportedClaimException extends RuntimeException { + public UnsupportedClaimException(String message) { + super(message); + } +} diff --git a/common/src/main/java/stirling/software/common/model/exception/UnsupportedUsernameAttribute.java b/common/src/main/java/stirling/software/common/model/exception/UnsupportedUsernameAttribute.java deleted file mode 100644 index c639dda60..000000000 --- a/common/src/main/java/stirling/software/common/model/exception/UnsupportedUsernameAttribute.java +++ /dev/null @@ -1,7 +0,0 @@ -package stirling.software.common.model.exception; - -public class UnsupportedUsernameAttribute extends RuntimeException { - public UnsupportedUsernameAttribute(String message) { - super(message); - } -} diff --git a/common/src/main/java/stirling/software/common/model/provider/GitHubProvider.java b/common/src/main/java/stirling/software/common/model/oauth2/provider/GitHubProvider.java similarity index 97% rename from common/src/main/java/stirling/software/common/model/provider/GitHubProvider.java rename to common/src/main/java/stirling/software/common/model/oauth2/provider/GitHubProvider.java index 35fe9c1f1..e1d781736 100644 --- a/common/src/main/java/stirling/software/common/model/provider/GitHubProvider.java +++ b/common/src/main/java/stirling/software/common/model/oauth2/provider/GitHubProvider.java @@ -1,4 +1,4 @@ -package stirling.software.common.model.provider; +package stirling.software.common.model.oauth2.provider; import java.util.ArrayList; import java.util.Collection; diff --git a/common/src/main/java/stirling/software/common/model/provider/GoogleProvider.java b/common/src/main/java/stirling/software/common/model/oauth2/provider/GoogleProvider.java similarity index 97% rename from common/src/main/java/stirling/software/common/model/provider/GoogleProvider.java rename to common/src/main/java/stirling/software/common/model/oauth2/provider/GoogleProvider.java index b3e5b0c8b..69a79310f 100644 --- a/common/src/main/java/stirling/software/common/model/provider/GoogleProvider.java +++ b/common/src/main/java/stirling/software/common/model/oauth2/provider/GoogleProvider.java @@ -1,4 +1,4 @@ -package stirling.software.common.model.provider; +package stirling.software.common.model.oauth2.provider; import java.util.ArrayList; import java.util.Collection; diff --git a/common/src/main/java/stirling/software/common/model/provider/KeycloakProvider.java b/common/src/main/java/stirling/software/common/model/oauth2/provider/KeycloakProvider.java similarity index 96% rename from common/src/main/java/stirling/software/common/model/provider/KeycloakProvider.java rename to common/src/main/java/stirling/software/common/model/oauth2/provider/KeycloakProvider.java index 8b483b4a4..873b6e350 100644 --- a/common/src/main/java/stirling/software/common/model/provider/KeycloakProvider.java +++ b/common/src/main/java/stirling/software/common/model/oauth2/provider/KeycloakProvider.java @@ -1,4 +1,4 @@ -package stirling.software.common.model.provider; +package stirling.software.common.model.oauth2.provider; import java.util.ArrayList; import java.util.Collection; diff --git a/common/src/main/java/stirling/software/common/model/provider/Provider.java b/common/src/main/java/stirling/software/common/model/oauth2/provider/Provider.java similarity index 93% rename from common/src/main/java/stirling/software/common/model/provider/Provider.java rename to common/src/main/java/stirling/software/common/model/oauth2/provider/Provider.java index 280939be9..66a5bc7b6 100644 --- a/common/src/main/java/stirling/software/common/model/provider/Provider.java +++ b/common/src/main/java/stirling/software/common/model/oauth2/provider/Provider.java @@ -1,4 +1,4 @@ -package stirling.software.common.model.provider; +package stirling.software.common.model.oauth2.provider; import java.util.ArrayList; import java.util.Arrays; @@ -6,7 +6,7 @@ import java.util.Collection; import lombok.Data; import lombok.NoArgsConstructor; import stirling.software.common.model.enumeration.UsernameAttribute; -import stirling.software.common.model.exception.UnsupportedUsernameAttribute; +import stirling.software.common.model.exception.UnsupportedClaimException; import static stirling.software.common.model.enumeration.UsernameAttribute.EMAIL; @Data @@ -80,7 +80,7 @@ public class Provider { return usernameAttribute; } default -> - throw new UnsupportedUsernameAttribute( + throw new UnsupportedClaimException( String.format(EXCEPTION_MESSAGE, usernameAttribute, clientName)); } } @@ -91,7 +91,7 @@ public class Provider { return usernameAttribute; } default -> - throw new UnsupportedUsernameAttribute( + throw new UnsupportedClaimException( String.format(EXCEPTION_MESSAGE, usernameAttribute, clientName)); } } @@ -102,7 +102,7 @@ public class Provider { return usernameAttribute; } default -> - throw new UnsupportedUsernameAttribute( + throw new UnsupportedClaimException( String.format(EXCEPTION_MESSAGE, usernameAttribute, clientName)); } } diff --git a/common/src/main/java/stirling/software/common/util/ProviderUtil.java b/common/src/main/java/stirling/software/common/util/ProviderUtil.java index 2035ba2f9..2d1784925 100644 --- a/common/src/main/java/stirling/software/common/util/ProviderUtil.java +++ b/common/src/main/java/stirling/software/common/util/ProviderUtil.java @@ -1,6 +1,6 @@ package stirling.software.common.util; -import stirling.software.common.model.provider.Provider; +import stirling.software.common.model.oauth2.provider.Provider; import static stirling.software.common.util.ValidationUtil.isCollectionEmpty; import static stirling.software.common.util.ValidationUtil.isStringEmpty; diff --git a/common/src/main/java/stirling/software/common/util/RequestUriUtil.java b/common/src/main/java/stirling/software/common/util/RequestUriUtil.java index b72ad413f..4cf6d6034 100644 --- a/common/src/main/java/stirling/software/common/util/RequestUriUtil.java +++ b/common/src/main/java/stirling/software/common/util/RequestUriUtil.java @@ -3,12 +3,10 @@ package stirling.software.common.util; public class RequestUriUtil { public static boolean isStaticResource(String requestURI) { - return isStaticResource("", requestURI); } public static boolean isStaticResource(String contextPath, String requestURI) { - return requestURI.startsWith(contextPath + "/css/") || requestURI.startsWith(contextPath + "/fonts/") || requestURI.startsWith(contextPath + "/js/") diff --git a/common/src/main/java/stirling/software/common/util/ValidationUtil.java b/common/src/main/java/stirling/software/common/util/ValidationUtil.java index 3393ca437..8646f3bb6 100644 --- a/common/src/main/java/stirling/software/common/util/ValidationUtil.java +++ b/common/src/main/java/stirling/software/common/util/ValidationUtil.java @@ -1,7 +1,6 @@ package stirling.software.common.util; import java.util.Collection; -import stirling.software.common.model.provider.Provider; public class ValidationUtil { diff --git a/common/src/test/java/stirling/software/common/util/ProviderUtilTest.java b/common/src/test/java/stirling/software/common/util/ProviderUtilTest.java index d5f3e3c2a..1ae9d0801 100644 --- a/common/src/test/java/stirling/software/common/util/ProviderUtilTest.java +++ b/common/src/test/java/stirling/software/common/util/ProviderUtilTest.java @@ -2,6 +2,7 @@ package stirling.software.common.util; import java.util.List; import java.util.stream.Stream; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; @@ -9,11 +10,9 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.mockito.junit.jupiter.MockitoExtension; import stirling.software.common.model.enumeration.UsernameAttribute; -import stirling.software.common.model.provider.GitHubProvider; -import stirling.software.common.model.provider.GoogleProvider; -import stirling.software.common.model.provider.Provider; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; +import stirling.software.common.model.oauth2.provider.GitHubProvider; +import stirling.software.common.model.oauth2.provider.GoogleProvider; +import stirling.software.common.model.oauth2.provider.Provider; import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) @@ -27,13 +26,13 @@ class ProviderUtilTest { when(provider.getClientSecret()).thenReturn("clientSecret"); when(provider.getScopes()).thenReturn(List.of("read:user")); - assertTrue(ProviderUtil.validateProvider(provider)); + Assertions.assertTrue(ProviderUtil.validateProvider(provider)); } @ParameterizedTest @MethodSource("providerParams") void testUnsuccessfulValidation(Provider provider) { - assertFalse(ProviderUtil.validateProvider(provider)); + Assertions.assertFalse(ProviderUtil.validateProvider(provider)); } public static Stream providerParams() { diff --git a/proprietary/build.gradle b/proprietary/build.gradle index ded00d9e6..43e4e982f 100644 --- a/proprietary/build.gradle +++ b/proprietary/build.gradle @@ -14,40 +14,27 @@ bootJar { enabled = false } +// todo: check if needed here sourceSets { main { java { if (System.getenv('ADDITIONAL_FEATURES') == 'false') { - exclude 'stirling/software/enterprise/security/UserAuthenticationFilter.java' - exclude 'stirling/software/enterprise/security/UserBasedRateLimitingFilter.java' - exclude 'stirling/software/enterprise/security/CustomAuthenticationSuccessHandler.java' - exclude 'stirling/software/enterprise/security/CustomLogoutSuccessHandler.java' - exclude 'stirling/software/enterprise/security/FirstLoginFilter.java' - exclude 'stirling/software/enterprise/security/IPRateLimitingFilter.java' - exclude 'stirling/software/enterprise/security/RateLimitResetScheduler.java' - exclude 'stirling/software/enterprise/security/CustomAuthenticationFailureHandler.java' - exclude 'stirling/software/enterprise/security/InitialSecuritySetup.java' - exclude 'stirling/software/enterprise/security/configuration/**' - exclude 'stirling/software/enterprise/security/controller/**' - exclude 'stirling/software/enterprise/security/database/**' - exclude 'stirling/software/enterprise/security/oauth2/**' - exclude 'stirling/software/enterprise/security/saml2/**' - exclude 'stirling/software/enterprise/security/service/**' - exclude 'stirling/software/enterprise/security/session/**' - exclude 'stirling/software/enterprise/security/model/ApiKeyAuthenticationToken.java' - exclude 'stirling/software/enterprise/security/model/AttemptCounter.java' - exclude 'stirling/software/enterprise/security/model/Authority.java' - exclude 'stirling/software/enterprise/security/model/BackupNotFoundException.java' - exclude 'stirling/software/enterprise/security/model/PersistentLogin.java' - exclude 'stirling/software/enterprise/security/model/SessionEntity.java' - exclude 'stirling/software/enterprise/security/model/User.java' + exclude 'stirling/software/proprietary/security/**' + } + + if (System.getenv('STIRLING_PDF_DESKTOP_UI') == 'false') { + exclude 'stirling/software/spdf/UI/impl/**' } } test { java { - if (System.getenv('ADDITIONAL_FEATURES') == 'false') { - exclude 'stirling/software/enterprise/security/**' + if (System.getenv('DOCKER_ENABLE_SECURITY') == 'false') { + exclude 'stirling/software/proprietary/security/**' + } + + if (System.getenv('STIRLING_PDF_DESKTOP_UI') == 'false') { + exclude 'stirling/software/spdf/UI/impl/**' } } } @@ -60,31 +47,31 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-jetty' implementation 'io.swagger.core.v3:swagger-core-jakarta:2.2.30' - implementation 'com.bucket4j:bucket4j_jdk17-core:8.14.0' // https://mvnrepository.com/artifact/com.bucket4j/bucket4j_jdk17 + implementation 'com.bucket4j:bucket4j_jdk17-core:8.14.0' + + // https://mvnrepository.com/artifact/com.bucket4j/bucket4j_jdk17 implementation 'org.bouncycastle:bcprov-jdk18on:1.80' - if (System.getenv('ADDITIONAL_FEATURES') == 'true') { - implementation 'org.springframework:spring-jdbc:6.2.6' - implementation 'org.springframework.boot:spring-boot-starter-security' - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' - implementation "org.springframework.security:spring-security-core:$springSecuritySamlVersion" - implementation "org.springframework.security:spring-security-saml2-service-provider:$springSecuritySamlVersion" - implementation 'org.springframework.session:spring-session-core:3.4.3' - - implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE' - implementation 'io.micrometer:micrometer-registry-prometheus' - implementation 'com.unboundid.product.scim2:scim2-sdk-client:2.3.5' - runtimeOnly 'com.h2database:h2:2.3.232' // Don't upgrade h2database - runtimeOnly 'org.postgresql:postgresql:42.7.5' - constraints { - implementation "org.opensaml:opensaml-core:$openSamlVersion" - implementation "org.opensaml:opensaml-saml-api:$openSamlVersion" - implementation "org.opensaml:opensaml-saml-impl:$openSamlVersion" - } - implementation 'com.coveo:saml-client:5.0.0' + implementation 'org.springframework:spring-jdbc:6.2.6' + implementation 'org.springframework.boot:spring-boot-starter-security' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' + implementation 'org.springframework.boot:spring-boot-starter-mail' + implementation "org.springframework.security:spring-security-core:$springSecuritySamlVersion" + implementation "org.springframework.security:spring-security-saml2-service-provider:$springSecuritySamlVersion" + implementation 'org.springframework.session:spring-session-core:3.4.3' + implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE' + implementation 'io.micrometer:micrometer-registry-prometheus' + implementation 'com.unboundid.product.scim2:scim2-sdk-client:2.3.5' + runtimeOnly 'com.h2database:h2:2.3.232' // Don't upgrade h2database + runtimeOnly 'org.postgresql:postgresql:42.7.5' + constraints { + implementation "org.opensaml:opensaml-core:$openSamlVersion" + implementation "org.opensaml:opensaml-saml-api:$openSamlVersion" + implementation "org.opensaml:opensaml-saml-impl:$openSamlVersion" } + implementation 'com.coveo:saml-client:5.0.0' compileOnly "org.projectlombok:lombok:$lombokVersion" annotationProcessor "org.projectlombok:lombok:$lombokVersion" diff --git a/proprietary/src/main/java/stirling/software/proprietary/security/CustomLogoutSuccessHandler.java b/proprietary/src/main/java/stirling/software/proprietary/security/CustomLogoutSuccessHandler.java index 0c15f1cd0..96b66095b 100644 --- a/proprietary/src/main/java/stirling/software/proprietary/security/CustomLogoutSuccessHandler.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/CustomLogoutSuccessHandler.java @@ -21,7 +21,7 @@ import stirling.software.common.configuration.AppConfig; 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; +import stirling.software.common.model.oauth2.provider.KeycloakProvider; import stirling.software.common.util.UrlUtils; import stirling.software.proprietary.security.saml2.CertificateUtils; import stirling.software.proprietary.security.saml2.CustomSaml2AuthenticatedPrincipal; diff --git a/src/main/java/stirling/software/SPDF/config/security/mail/MailConfig.java b/proprietary/src/main/java/stirling/software/proprietary/security/configuration/MailConfig.java similarity index 94% rename from src/main/java/stirling/software/SPDF/config/security/mail/MailConfig.java rename to proprietary/src/main/java/stirling/software/proprietary/security/configuration/MailConfig.java index 68c2fe35d..82d794d6e 100644 --- a/src/main/java/stirling/software/SPDF/config/security/mail/MailConfig.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/configuration/MailConfig.java @@ -1,4 +1,4 @@ -package stirling.software.SPDF.config.security.mail; +package stirling.software.proprietary.security.configuration; import java.util.Properties; @@ -10,8 +10,7 @@ import org.springframework.mail.javamail.JavaMailSenderImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; - -import stirling.software.SPDF.model.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; /** * This configuration class provides the JavaMailSender bean, which is used to send emails. It reads diff --git a/stirling-pdf/src/main/java/stirling/software/spdf/controller/api/EmailController.java b/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/EmailController.java similarity index 92% rename from stirling-pdf/src/main/java/stirling/software/spdf/controller/api/EmailController.java rename to proprietary/src/main/java/stirling/software/proprietary/security/controller/api/EmailController.java index 3b91368ef..084af2c8d 100644 --- a/stirling-pdf/src/main/java/stirling/software/spdf/controller/api/EmailController.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/EmailController.java @@ -1,4 +1,4 @@ -package stirling.software.SPDF.controller.api; +package stirling.software.proprietary.security.controller.api; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.http.HttpStatus; @@ -16,8 +16,8 @@ import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import stirling.software.SPDF.config.security.mail.EmailService; -import stirling.software.SPDF.model.api.Email; +import stirling.software.proprietary.security.model.api.Email; +import stirling.software.proprietary.security.service.EmailService; /** * Controller for handling email-related API requests. This controller exposes an endpoint for diff --git a/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/AccountWebController.java b/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/AccountWebController.java index 4fbf8a052..69616eacc 100644 --- a/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/AccountWebController.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/AccountWebController.java @@ -35,9 +35,9 @@ 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; +import stirling.software.common.model.oauth2.provider.GitHubProvider; +import stirling.software.common.model.oauth2.provider.GoogleProvider; +import stirling.software.common.model.oauth2.provider.KeycloakProvider; import stirling.software.proprietary.security.database.repository.UserRepository; import stirling.software.proprietary.security.model.Authority; import stirling.software.proprietary.security.model.SessionEntity; diff --git a/stirling-pdf/src/main/java/stirling/software/spdf/model/api/Email.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/api/Email.java similarity index 92% rename from stirling-pdf/src/main/java/stirling/software/spdf/model/api/Email.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/api/Email.java index 21b5152e5..c25756fce 100644 --- a/stirling-pdf/src/main/java/stirling/software/spdf/model/api/Email.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/api/Email.java @@ -1,4 +1,4 @@ -package stirling.software.SPDF.model.api; +package stirling.software.proprietary.security.model.api; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -8,6 +8,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import stirling.software.common.model.api.GeneralFile; @Data @NoArgsConstructor diff --git a/common/src/main/java/stirling/software/common/model/exception/BackupNotFoundException.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/exception/BackupNotFoundException.java similarity index 70% rename from common/src/main/java/stirling/software/common/model/exception/BackupNotFoundException.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/exception/BackupNotFoundException.java index 588e89199..3aeb0096b 100644 --- a/common/src/main/java/stirling/software/common/model/exception/BackupNotFoundException.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/exception/BackupNotFoundException.java @@ -1,4 +1,4 @@ -package stirling.software.common.model.exception; +package stirling.software.proprietary.security.model.exception; public class BackupNotFoundException extends RuntimeException { public BackupNotFoundException(String message) { diff --git a/common/src/main/java/stirling/software/common/model/exception/NoProviderFoundException.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/exception/NoProviderFoundException.java similarity index 79% rename from common/src/main/java/stirling/software/common/model/exception/NoProviderFoundException.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/exception/NoProviderFoundException.java index def079678..310821253 100644 --- a/common/src/main/java/stirling/software/common/model/exception/NoProviderFoundException.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/exception/NoProviderFoundException.java @@ -1,4 +1,4 @@ -package stirling.software.common.model.exception; +package stirling.software.proprietary.security.model.exception; public class NoProviderFoundException extends Exception { public NoProviderFoundException(String message) { diff --git a/proprietary/src/main/java/stirling/software/proprietary/security/oauth2/OAuth2Configuration.java b/proprietary/src/main/java/stirling/software/proprietary/security/oauth2/OAuth2Configuration.java index af587af3e..e6fcf006b 100644 --- a/proprietary/src/main/java/stirling/software/proprietary/security/oauth2/OAuth2Configuration.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/oauth2/OAuth2Configuration.java @@ -23,11 +23,11 @@ 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.exception.NoProviderFoundException; -import stirling.software.common.model.provider.GitHubProvider; -import stirling.software.common.model.provider.GoogleProvider; -import stirling.software.common.model.provider.KeycloakProvider; -import stirling.software.common.model.provider.Provider; +import stirling.software.proprietary.security.model.exception.NoProviderFoundException; +import stirling.software.common.model.oauth2.provider.GitHubProvider; +import stirling.software.common.model.oauth2.provider.GoogleProvider; +import stirling.software.common.model.oauth2.provider.KeycloakProvider; +import stirling.software.common.model.oauth2.provider.Provider; import stirling.software.proprietary.security.model.User; import stirling.software.proprietary.security.service.UserService; import static org.springframework.security.oauth2.core.AuthorizationGrantType.AUTHORIZATION_CODE; diff --git a/proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseService.java b/proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseService.java index e93275819..37de87cf4 100644 --- a/proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseService.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseService.java @@ -26,7 +26,7 @@ import org.springframework.stereotype.Service; import stirling.software.common.configuration.InstallationPathConfig; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.FileInfo; -import stirling.software.common.model.exception.BackupNotFoundException; +import stirling.software.proprietary.security.model.exception.BackupNotFoundException; @Slf4j @Service diff --git a/src/main/java/stirling/software/SPDF/config/security/mail/EmailService.java b/proprietary/src/main/java/stirling/software/proprietary/security/service/EmailService.java similarity index 92% rename from src/main/java/stirling/software/SPDF/config/security/mail/EmailService.java rename to proprietary/src/main/java/stirling/software/proprietary/security/service/EmailService.java index 8939fbab6..8b56e9aef 100644 --- a/src/main/java/stirling/software/SPDF/config/security/mail/EmailService.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/service/EmailService.java @@ -1,4 +1,4 @@ -package stirling.software.SPDF.config.security.mail; +package stirling.software.proprietary.security.service; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.mail.javamail.JavaMailSender; @@ -12,8 +12,8 @@ import jakarta.mail.internet.MimeMessage; import lombok.RequiredArgsConstructor; -import stirling.software.SPDF.model.ApplicationProperties; -import stirling.software.SPDF.model.api.Email; +import stirling.software.common.model.ApplicationProperties; +import stirling.software.proprietary.security.model.api.Email; /** * Service class responsible for sending emails, including those with attachments. It uses diff --git a/stirling-pdf/src/test/java/stirling/software/spdf/controller/api/EmailControllerTest.java b/proprietary/src/test/java/stirling/software/proprietary/security/controller/api/EmailControllerTest.java similarity index 94% rename from stirling-pdf/src/test/java/stirling/software/spdf/controller/api/EmailControllerTest.java rename to proprietary/src/test/java/stirling/software/proprietary/security/controller/api/EmailControllerTest.java index 25aa89479..527088e4d 100644 --- a/stirling-pdf/src/test/java/stirling/software/spdf/controller/api/EmailControllerTest.java +++ b/proprietary/src/test/java/stirling/software/proprietary/security/controller/api/EmailControllerTest.java @@ -1,4 +1,4 @@ -package stirling.software.SPDF.controller.api; +package stirling.software.proprietary.security.controller.api; import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; @@ -14,8 +14,8 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.multipart.MultipartFile; -import stirling.software.SPDF.config.security.mail.EmailService; -import stirling.software.SPDF.model.api.Email; +import stirling.software.proprietary.security.model.api.Email; +import stirling.software.proprietary.security.service.EmailService; @ExtendWith(MockitoExtension.class) public class EmailControllerTest { diff --git a/src/test/java/stirling/software/SPDF/config/security/mail/EmailServiceTest.java b/proprietary/src/test/java/stirling/software/proprietary/security/service/EmailServiceTest.java similarity index 85% rename from src/test/java/stirling/software/SPDF/config/security/mail/EmailServiceTest.java rename to proprietary/src/test/java/stirling/software/proprietary/security/service/EmailServiceTest.java index 63c38e9c3..34c118dca 100644 --- a/src/test/java/stirling/software/SPDF/config/security/mail/EmailServiceTest.java +++ b/proprietary/src/test/java/stirling/software/proprietary/security/service/EmailServiceTest.java @@ -1,6 +1,4 @@ -package stirling.software.SPDF.config.security.mail; - -import static org.mockito.Mockito.*; +package stirling.software.proprietary.security.service; import jakarta.mail.MessagingException; import jakarta.mail.internet.MimeMessage; @@ -10,10 +8,12 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.mail.javamail.JavaMailSender; -import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.web.multipart.MultipartFile; -import stirling.software.SPDF.model.ApplicationProperties; -import stirling.software.SPDF.model.api.Email; +import stirling.software.common.model.ApplicationProperties; +import stirling.software.proprietary.security.model.api.Email; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) public class EmailServiceTest { diff --git a/src/main/java/stirling/software/SPDF/model/api/security/RedactPdfRequest.java b/src/main/java/stirling/software/SPDF/model/api/security/RedactPdfRequest.java deleted file mode 100644 index 45070c5f6..000000000 --- a/src/main/java/stirling/software/SPDF/model/api/security/RedactPdfRequest.java +++ /dev/null @@ -1,34 +0,0 @@ -package stirling.software.SPDF.model.api.security; - -import io.swagger.v3.oas.annotations.media.Schema; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -import stirling.software.common.model.api.PDFFile; - -@Data -@EqualsAndHashCode(callSuper = true) -public class RedactPdfRequest extends PDFFile { - - @Schema( - description = "List of text to redact from the PDF", - type = "string", - requiredMode = Schema.RequiredMode.REQUIRED) - private String listOfText; - - @Schema(description = "Whether to use regex for the listOfText", defaultValue = "false") - private boolean useRegex; - - @Schema(description = "Whether to use whole word search", defaultValue = "false") - private boolean wholeWordSearch; - - @Schema(description = "Hexadecimal color code for redaction, e.g. #FF0000 or 000000", defaultValue = "#000000") - private String redactColor = "#000000"; - - @Schema(description = "Custom padding for redaction", type = "number") - private float customPadding; - - @Schema(description = "Convert the redacted PDF to an image", defaultValue = "false") - private boolean convertPDFToImage; -} diff --git a/stirling-pdf/.gitignore b/stirling-pdf/.gitignore new file mode 100644 index 000000000..90d48ccea --- /dev/null +++ b/stirling-pdf/.gitignore @@ -0,0 +1,196 @@ +### Eclipse ### +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.exe +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders +.classpath +.project +version.properties + +#### Stirling-PDF Files ### +pipeline/watchedFolders/ +pipeline/finishedFolders/ +customFiles/ +configs/ +watchedFolders/ +clientWebUI/ +!cucumber/ +!cucumber/exampleFiles/ +!cucumber/exampleFiles/example_html.zip +exampleYmlFiles/stirling/ +/testing/file_snapshots +SwaggerDoc.json + +# Gradle +.gradle +.lock + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ +.apt_generated_test/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +# Uncomment this line if you wish to ignore the project description file. +# Typically, this file would be tracked if it contains build/dependency configurations: +#.project + +### Eclipse Patch ### +# Spring Boot Tooling +.sts4-cache/ + +### Git ### +# Created by git for backups. To disable backups in Git: +# $ git config --global mergetool.keepBackup false +*.orig + +# Created by git when using merge tools for conflicts +*.BACKUP.* +*.BASE.* +*.LOCAL.* +*.REMOTE.* +*_BACKUP_*.txt +*_BASE_*.txt +*_LOCAL_*.txt +*_REMOTE_*.txt + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar +*.db +/build + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*.pyo + +# Virtual environments +.env* +.venv* +env*/ +venv*/ +ENV/ +env.bak/ +venv.bak/ + +# VS Code +/.vscode/**/* +!/.vscode/settings.json +!/.vscode/extensions.json + +# IntelliJ IDEA +.idea/ +*.iml +out/ + +# Ignore Mac DS_Store files +.DS_Store +**/.DS_Store + +# cucumber +/cucumber/reports/** + +# Certs and Security Files +*.p12 +*.pk8 +*.pem +*.crt +*.cer +*.cert +*.der +*.key +*.csr +*.kdbx +*.jks +*.asc + +# SSH Keys +*.pub +*.priv +id_rsa +id_rsa.pub +id_ecdsa +id_ecdsa.pub +id_ed25519 +id_ed25519.pub +.ssh/ +*ssh + +# cache +.cache +.ruff_cache +.mypy_cache +.pytest_cache +.ipynb_checkpoints + +**/jcef-bundle/ + +# node_modules +node_modules/ +*.mjs diff --git a/stirling-pdf/build/resources/main/logback.xml b/stirling-pdf/build/resources/main/logback.xml index e844e1f86..5bae1484b 100644 --- a/stirling-pdf/build/resources/main/logback.xml +++ b/stirling-pdf/build/resources/main/logback.xml @@ -40,7 +40,7 @@ - diff --git a/stirling-pdf/build/resources/main/settings.yml.template b/stirling-pdf/build/resources/main/settings.yml.template index 0226776c5..e786b9080 100644 --- a/stirling-pdf/build/resources/main/settings.yml.template +++ b/stirling-pdf/build/resources/main/settings.yml.template @@ -86,7 +86,7 @@ mail: from: '' # sender email address legal: - termsAndConditions: https://www.stirlingpdf.com/terms # URL to the terms and conditions of your application (e.g. https://example.com/terms). Empty string to disable or filename to load from local file in static folder + termsAndConditions: https://www.stirlingpdf.com/terms-and-conditions # URL to the terms and conditions of your application (e.g. https://example.com/terms). Empty string to disable or filename to load from local file in static folder privacyPolicy: https://www.stirlingpdf.com/privacy-policy # URL to the privacy policy of your application (e.g. https://example.com/privacy). Empty string to disable or filename to load from local file in static folder accessibilityStatement: '' # URL to the accessibility statement of your application (e.g. https://example.com/accessibility). Empty string to disable or filename to load from local file in static folder cookiePolicy: '' # URL to the cookie policy of your application (e.g. https://example.com/cookie). Empty string to disable or filename to load from local file in static folder @@ -114,11 +114,11 @@ system: name: postgres # set the name of your database. Should match the name of the database you create customPaths: pipeline: - watchedFoldersDir: '' # Defaults to /pipeline/watchedFolders - finishedFoldersDir: '' # Defaults to /pipeline/finishedFolders + watchedFoldersDir: '' #Defaults to /pipeline/watchedFolders + finishedFoldersDir: '' #Defaults to /pipeline/finishedFolders operations: - weasyprint: '' # Defaults to /opt/venv/bin/weasyprint - unoconvert: '' # Defaults to /opt/venv/bin/unoconvert + weasyprint: '' #Defaults to /opt/venv/bin/weasyprint + unoconvert: '' #Defaults to /opt/venv/bin/unoconvert fileUploadLimit: '' # Defaults to "". No limit when string is empty. Set a number, between 0 and 999, followed by one of the following strings to set a limit. "KB", "MB", "GB". ui: diff --git a/stirling-pdf/build/resources/main/templates/home.html b/stirling-pdf/build/resources/main/templates/home.html index a7cbbbd80..4ead72974 100644 --- a/stirling-pdf/build/resources/main/templates/home.html +++ b/stirling-pdf/build/resources/main/templates/home.html @@ -1,241 +1,241 @@ + xmlns:th="https://www.thymeleaf.org"> -
- -
-
- - -
+ +
+
+ + +
-
-
-
-
-
-
-
-

-

+ > +
+
+
+
+
+
+
+

+

+
+
+
-
-
+
+
-
-
-
-
-
-
-
+
+
+
-
- + +
+ search - + -
-
- - -
-
-
+
+
+ + +
+
+
+ style="font-size: 2rem; margin-left: 0.2rem;"> star -
-
+
+
+ style="font-size: 2rem; margin-left: 0.2rem;"> visibility -
- +
+ + style="font-size: 2rem; margin-left: 0.2rem;"> home - - + + + style="font-size: 2rem; margin-left: 0.2rem;"> update - -
- +
+
-
-
-
-
-
-
-
- +
+
+
+
+ -
- +
- + +
+ + +
+
+
+ + + + - -
diff --git a/stirling-pdf/src/main/resources/templates/fragments/card.html b/stirling-pdf/src/main/resources/templates/fragments/card.html index b2ab67eec..dfdcc2ade 100644 --- a/stirling-pdf/src/main/resources/templates/fragments/card.html +++ b/stirling-pdf/src/main/resources/templates/fragments/card.html @@ -1,4 +1,4 @@ -