diff --git a/.github/workflows/PR-Demo-Comment-with-react.yml b/.github/workflows/PR-Demo-Comment-with-react.yml index adb3e33cf..15287f6ad 100644 --- a/.github/workflows/PR-Demo-Comment-with-react.yml +++ b/.github/workflows/PR-Demo-Comment-with-react.yml @@ -84,7 +84,7 @@ jobs: core.setOutput('repository', repository); core.setOutput('ref', pr.head.ref); - + - name: Check for security/login flag id: check-security-flag env: @@ -156,9 +156,9 @@ jobs: - name: Run Gradle Command run: | if [ "${{ needs.check-comment.outputs.enable_security }}" == "true" ]; then - export DOCKER_ENABLE_SECURITY=true + export ADDITIONAL_FEATURES=true else - export DOCKER_ENABLE_SECURITY=false + export ADDITIONAL_FEATURES=false fi ./gradlew clean build env: @@ -223,7 +223,7 @@ jobs: - /stirling/PR-${{ needs.check-comment.outputs.pr_number }}/config:/configs:rw - /stirling/PR-${{ needs.check-comment.outputs.pr_number }}/logs:/logs:rw environment: - DOCKER_ENABLE_SECURITY: "${DOCKER_SECURITY}" + ADDITIONAL_FEATURES: "${DOCKER_SECURITY}" SECURITY_ENABLELOGIN: "${LOGIN_SECURITY}" SYSTEM_DEFAULTLOCALE: en-GB UI_APPNAME: "Stirling-PDF PR#${{ needs.check-comment.outputs.pr_number }}" @@ -250,7 +250,7 @@ jobs: docker-compose pull docker-compose up -d ENDSSH - + # Set output for use in PR comment echo "security_status=${SECURITY_STATUS}" >> $GITHUB_ENV diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1d5016ca8..83e071d5e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,12 +40,12 @@ jobs: - name: Build with Gradle and no spring security run: ./gradlew clean build env: - DOCKER_ENABLE_SECURITY: false + ADDITIONAL_FEATURES: false - name: Build with Gradle and with spring security run: ./gradlew clean build env: - DOCKER_ENABLE_SECURITY: true + ADDITIONAL_FEATURES: true - name: Upload Test Reports if: always() diff --git a/.github/workflows/multiOSReleases.yml b/.github/workflows/multiOSReleases.yml index b078e4015..8211a8aa8 100644 --- a/.github/workflows/multiOSReleases.yml +++ b/.github/workflows/multiOSReleases.yml @@ -75,7 +75,7 @@ jobs: - name: Generate jar (With Security=${{ matrix.enable_security }}) run: ./gradlew clean createExe env: - DOCKER_ENABLE_SECURITY: ${{ matrix.enable_security }} + ADDITIONAL_FEATURES: ${{ matrix.enable_security }} STIRLING_PDF_DESKTOP_UI: false - name: Rename binaries @@ -171,7 +171,7 @@ jobs: - name: Build Installer run: ./gradlew build jpackage -x test --info env: - DOCKER_ENABLE_SECURITY: false + ADDITIONAL_FEATURES: false STIRLING_PDF_DESKTOP_UI: true BROWSER_OPEN: true diff --git a/.github/workflows/push-docker.yml b/.github/workflows/push-docker.yml index e4532ff59..b8ea9a1ff 100644 --- a/.github/workflows/push-docker.yml +++ b/.github/workflows/push-docker.yml @@ -37,7 +37,7 @@ jobs: - name: Run Gradle Command run: ./gradlew clean build env: - DOCKER_ENABLE_SECURITY: false + ADDITIONAL_FEATURES: false STIRLING_PDF_DESKTOP_UI: false - name: Install cosign diff --git a/.github/workflows/releaseArtifacts.yml b/.github/workflows/releaseArtifacts.yml index c0d23ce19..e0d09457e 100644 --- a/.github/workflows/releaseArtifacts.yml +++ b/.github/workflows/releaseArtifacts.yml @@ -42,7 +42,7 @@ jobs: - name: Generate jar (With Security=${{ matrix.enable_security }}) run: ./gradlew clean createExe env: - DOCKER_ENABLE_SECURITY: ${{ matrix.enable_security }} + ADDITIONAL_FEATURES: ${{ matrix.enable_security }} STIRLING_PDF_DESKTOP_UI: false - name: Get version number diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml index ddf0980ab..46ddc61e4 100644 --- a/.github/workflows/sonarqube.yml +++ b/.github/workflows/sonarqube.yml @@ -33,7 +33,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - DOCKER_ENABLE_SECURITY: true + ADDITIONAL_FEATURES: true STIRLING_PDF_DESKTOP_UI: true run: | ./gradlew clean build sonar \ diff --git a/.github/workflows/testdriver.yml b/.github/workflows/testdriver.yml index 68c4fabb2..884531959 100644 --- a/.github/workflows/testdriver.yml +++ b/.github/workflows/testdriver.yml @@ -28,7 +28,7 @@ jobs: - name: Build with Gradle run: ./gradlew clean build env: - DOCKER_ENABLE_SECURITY: false + ADDITIONAL_FEATURES: false - name: Set up Docker Buildx uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 @@ -76,7 +76,7 @@ jobs: - /stirling/test-${{ github.sha }}/config:/configs:rw - /stirling/test-${{ github.sha }}/logs:/logs:rw environment: - DOCKER_ENABLE_SECURITY: "false" + ADDITIONAL_FEATURES: "false" SECURITY_ENABLELOGIN: "false" SYSTEM_DEFAULTLOCALE: en-GB UI_APPNAME: "Stirling-PDF Test" diff --git a/DeveloperGuide.md b/DeveloperGuide.md index 32d480f5c..efc72a15c 100644 --- a/DeveloperGuide.md +++ b/DeveloperGuide.md @@ -55,7 +55,7 @@ Stirling-PDF uses Lombok to reduce boilerplate code. Some IDEs, like Eclipse, do Visit the [Lombok website](https://projectlombok.org/setup/) for installation instructions specific to your IDE. 5. Add environment variable -For local testing, you should generally be testing the full 'Security' version of Stirling-PDF. To do this, you must add the environment flag DOCKER_ENABLE_SECURITY=true to your system and/or IDE build/run step. +For local testing, you should generally be testing the full 'Security' version of Stirling-PDF. To do this, you must add the environment flag ADDITIONAL_FEATURES=true to your system and/or IDE build/run step. ## 4. Project Structure @@ -141,7 +141,7 @@ services: - /stirling/latest/config:/configs:rw - /stirling/latest/logs:/logs:rw environment: - DOCKER_ENABLE_SECURITY: "true" + ADDITIONAL_FEATURES: "true" SECURITY_ENABLELOGIN: "true" PUID: 1002 PGID: 1002 @@ -170,7 +170,7 @@ Stirling-PDF uses different Docker images for various configurations. The build 1. Set the security environment variable: ```bash - export DOCKER_ENABLE_SECURITY=false # or true for security-enabled builds + export ADDITIONAL_FEATURES=false # or true for security-enabled builds ``` 2. Build the project with Gradle: @@ -196,7 +196,7 @@ Stirling-PDF uses different Docker images for various configurations. The build For the fat version (with security enabled): ```bash - export DOCKER_ENABLE_SECURITY=true + export ADDITIONAL_FEATURES=true docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest-fat -f ./Dockerfile.fat . ``` diff --git a/Dockerfile b/Dockerfile index 6a854f35e..c045ed0e7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,7 +23,7 @@ LABEL org.opencontainers.image.version="${VERSION_TAG}" LABEL org.opencontainers.image.keywords="PDF, manipulation, merge, split, convert, OCR, watermark" # Set Environment Variables -ENV DOCKER_ENABLE_SECURITY=false \ +ENV ADDITIONAL_FEATURES=false \ VERSION_TAG=$VERSION_TAG \ JAVA_BASE_OPTS="-XX:+UnlockExperimentalVMOptions -XX:MaxRAMPercentage=75 -XX:InitiatingHeapOccupancyPercent=20 -XX:+G1PeriodicGCInvokesConcurrent -XX:G1PeriodicGCInterval=10000 -XX:+UseStringDeduplication -XX:G1PeriodicGCSystemLoadThreshold=70" \ JAVA_CUSTOM_OPTS="" \ diff --git a/Dockerfile.fat b/Dockerfile.fat index ef19ebde7..77352967c 100644 --- a/Dockerfile.fat +++ b/Dockerfile.fat @@ -13,8 +13,8 @@ WORKDIR /app # Copy the entire project to the working directory COPY . . -# Build the application with DOCKER_ENABLE_SECURITY=false -RUN DOCKER_ENABLE_SECURITY=true \ +# Build the application with ADDITIONAL_FEATURES=false +RUN ADDITIONAL_FEATURES=true \ STIRLING_PDF_DESKTOP_UI=false \ ./gradlew clean build -x spotlessApply -x spotlessCheck -x test -x sonarqube @@ -30,7 +30,7 @@ COPY --from=build /app/build/libs/*.jar app.jar ARG VERSION_TAG # Set Environment Variables -ENV DOCKER_ENABLE_SECURITY=false \ +ENV ADDITIONAL_FEATURES=false \ VERSION_TAG=$VERSION_TAG \ JAVA_BASE_OPTS="-XX:+UnlockExperimentalVMOptions -XX:MaxRAMPercentage=75 -XX:InitiatingHeapOccupancyPercent=20 -XX:+G1PeriodicGCInvokesConcurrent -XX:G1PeriodicGCInterval=10000 -XX:+UseStringDeduplication -XX:G1PeriodicGCSystemLoadThreshold=70" \ JAVA_CUSTOM_OPTS="" \ diff --git a/Dockerfile.ultra-lite b/Dockerfile.ultra-lite index 0ea37f704..7e9718f6e 100644 --- a/Dockerfile.ultra-lite +++ b/Dockerfile.ultra-lite @@ -4,7 +4,7 @@ FROM alpine:3.21.3@sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff45 ARG VERSION_TAG # Set Environment Variables -ENV DOCKER_ENABLE_SECURITY=false \ +ENV ADDITIONAL_FEATURES=false \ HOME=/home/stirlingpdfuser \ VERSION_TAG=$VERSION_TAG \ JAVA_BASE_OPTS="-XX:+UnlockExperimentalVMOptions -XX:MaxRAMPercentage=75 -XX:InitiatingHeapOccupancyPercent=20 -XX:+G1PeriodicGCInvokesConcurrent -XX:G1PeriodicGCInterval=10000 -XX:+UseStringDeduplication -XX:G1PeriodicGCSystemLoadThreshold=70" \ diff --git a/build.gradle b/build.gradle index 329cc0364..b48f3b4b2 100644 --- a/build.gradle +++ b/build.gradle @@ -50,7 +50,7 @@ licenseReport { sourceSets { main { java { - if (System.getenv("DOCKER_ENABLE_SECURITY") == "false") { + if (System.getenv("ADDITIONAL_FEATURES") == "false") { exclude "stirling/software/SPDF/config/interfaces/DatabaseInterface.java" exclude "stirling/software/SPDF/config/security/**" exclude "stirling/software/SPDF/controller/api/DatabaseController.java" @@ -70,15 +70,15 @@ sourceSets { exclude "stirling/software/SPDF/model/User.java" exclude "stirling/software/SPDF/repository/**" - exclude 'stirling/software/enterprise/security/controller/**' - 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/enterprise/security/database/repository/**' + 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") { @@ -438,8 +438,8 @@ dependencies { exclude group: 'org.bouncycastle', module: 'bcmail-jdk15on' } - if (System.getenv("DOCKER_ENABLE_SECURITY") == "true") { - implementation project(':enterprise') + if (System.getenv("ADDITIONAL_FEATURES") == "true") { + implementation project(':proprietary') } if (System.getenv("STIRLING_PDF_DESKTOP_UI") != "false") { @@ -505,13 +505,12 @@ dependencies { implementation "org.bouncycastle:bcprov-jdk18on:$bouncycastleVersion" implementation "org.bouncycastle:bcpkix-jdk18on:$bouncycastleVersion" implementation "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion" - implementation "io.micrometer:micrometer-core:1.14.7" - implementation group: "com.google.zxing", name: "core", version: "3.5.3" - // https://mvnrepository.com/artifact/org.commonmark/commonmark - implementation "org.commonmark:commonmark:0.24.0" - implementation "org.commonmark:commonmark-ext-gfm-tables:0.24.0" + implementation 'io.micrometer:micrometer-core:1.14.7' + implementation 'com.google.zxing:core:3.5.3' + implementation 'org.commonmark:commonmark:0.24.0' // https://mvnrepository.com/artifact/org.commonmark/commonmark + implementation 'org.commonmark:commonmark-ext-gfm-tables:0.24.0' - developmentOnly("org.springframework.boot:spring-boot-devtools:$springBootVersion") + developmentOnly "org.springframework.boot:spring-boot-devtools:$springBootVersion" compileOnly "org.projectlombok:lombok:$lombokVersion" annotationProcessor "org.projectlombok:lombok:$lombokVersion" diff --git a/common/build.gradle b/common/build.gradle index 55eb54eaa..edba163ad 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -6,10 +6,6 @@ plugins { group = 'stirling.software' version = '0.45.6' -ext { - lombokVersion = "1.18.38" -} - java { sourceCompatibility = JavaVersion.VERSION_17 } @@ -48,10 +44,9 @@ dependencies { testImplementation platform('org.junit:junit-bom:5.10.0') testImplementation "org.springframework.boot:spring-boot-starter-test" - testRuntimeOnly 'org.springframework.boot:spring-boot-starter-data-jpa' - testRuntimeOnly 'com.h2database:h2:2.3.232' - testRuntimeOnly 'org.postgresql:postgresql:42.7.5' testImplementation 'org.junit.jupiter:junit-jupiter' + testRuntimeOnly 'org.springframework.boot:spring-boot-starter-data-jpa' + testRuntimeOnly 'org.mockito:mockito-inline:5.2.0' } test { diff --git a/common/src/main/java/stirling/software/common/configuration/AppConfig.java b/common/src/main/java/stirling/software/common/configuration/AppConfig.java index 5fb024623..bd1e84be0 100644 --- a/common/src/main/java/stirling/software/common/configuration/AppConfig.java +++ b/common/src/main/java/stirling/software/common/configuration/AppConfig.java @@ -1,7 +1,5 @@ package stirling.software.common.configuration; -import io.github.pixee.security.SystemCommand; -import jakarta.annotation.PostConstruct; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -10,8 +8,9 @@ import java.util.List; import java.util.Locale; import java.util.Properties; import java.util.function.Predicate; - import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -24,9 +23,6 @@ import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.thymeleaf.spring6.SpringTemplateEngine; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; import stirling.software.common.model.ApplicationProperties; @Lazy @@ -154,7 +150,7 @@ public class AppConfig { } @Bean(name = "missingActiveSecurity") - @ConditionalOnMissingClass("stirling.software.enterprise.security.SecurityConfiguration") + @ConditionalOnMissingClass("stirling.software.proprietary.security.SecurityConfiguration") public boolean missingActiveSecurity() { return true; } diff --git a/common/src/main/java/stirling/software/common/util/GeneralUtils.java b/common/src/main/java/stirling/software/common/util/GeneralUtil.java similarity index 99% rename from common/src/main/java/stirling/software/common/util/GeneralUtils.java rename to common/src/main/java/stirling/software/common/util/GeneralUtil.java index 3353cdfeb..f716dcee8 100644 --- a/common/src/main/java/stirling/software/common/util/GeneralUtils.java +++ b/common/src/main/java/stirling/software/common/util/GeneralUtil.java @@ -30,7 +30,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.common.configuration.InstallationPathConfig; @Slf4j -public class GeneralUtils { +public class GeneralUtil { public static File convertMultipartFileToFile(MultipartFile multipartFile) throws IOException { File tempFile = Files.createTempFile("temp", null).toFile(); diff --git a/common/src/main/java/stirling/software/common/util/PdfUtils.java b/common/src/main/java/stirling/software/common/util/PdfUtils.java index bee180f70..acfbe0ce4 100644 --- a/common/src/main/java/stirling/software/common/util/PdfUtils.java +++ b/common/src/main/java/stirling/software/common/util/PdfUtils.java @@ -84,7 +84,7 @@ public class PdfUtils { public static boolean hasImages(PDDocument document, String pagesToCheck) throws IOException { String[] pageOrderArr = pagesToCheck.split(","); List pageList = - GeneralUtils.parsePageList(pageOrderArr, document.getNumberOfPages()); + GeneralUtil.parsePageList(pageOrderArr, document.getNumberOfPages()); for (int pageNumber : pageList) { PDPage page = document.getPage(pageNumber); @@ -100,7 +100,7 @@ public class PdfUtils { throws IOException { String[] pageOrderArr = pageNumbersToCheck.split(","); List pageList = - GeneralUtils.parsePageList(pageOrderArr, document.getNumberOfPages()); + GeneralUtil.parsePageList(pageOrderArr, document.getNumberOfPages()); for (int pageNumber : pageList) { PDPage page = document.getPage(pageNumber); diff --git a/common/src/test/java/stirling/software/common/util/GeneralUtilsTest.java b/common/src/test/java/stirling/software/common/util/GeneralUtilTest.java similarity index 60% rename from common/src/test/java/stirling/software/common/util/GeneralUtilsTest.java rename to common/src/test/java/stirling/software/common/util/GeneralUtilTest.java index a73cd332b..b2a1c8c79 100644 --- a/common/src/test/java/stirling/software/common/util/GeneralUtilsTest.java +++ b/common/src/test/java/stirling/software/common/util/GeneralUtilTest.java @@ -6,152 +6,152 @@ import java.util.List; import org.junit.jupiter.api.Test; -public class GeneralUtilsTest { +public class GeneralUtilTest { @Test void testParsePageListWithAll() { - List result = GeneralUtils.parsePageList(new String[] {"all"}, 5, false); + List result = GeneralUtil.parsePageList(new String[] {"all"}, 5, false); assertEquals(List.of(0, 1, 2, 3, 4), result, "'All' keyword should return all pages."); } @Test void testParsePageListWithAllOneBased() { - List result = GeneralUtils.parsePageList(new String[] {"all"}, 5, true); + List result = GeneralUtil.parsePageList(new String[] {"all"}, 5, true); assertEquals(List.of(1, 2, 3, 4, 5), result, "'All' keyword should return all pages."); } @Test void nFunc() { - List result = GeneralUtils.parsePageList(new String[] {"n"}, 5, true); + List result = GeneralUtil.parsePageList(new String[] {"n"}, 5, true); assertEquals(List.of(1, 2, 3, 4, 5), result, "'n' keyword should return all pages."); } @Test void nFuncAdvanced() { - List result = GeneralUtils.parsePageList(new String[] {"4n"}, 9, true); + List result = GeneralUtil.parsePageList(new String[] {"4n"}, 9, true); // skip 0 as not valid assertEquals(List.of(4, 8), result, "'All' keyword should return all pages."); } @Test void nFuncAdvancedZero() { - List result = GeneralUtils.parsePageList(new String[] {"4n"}, 9, false); + List result = GeneralUtil.parsePageList(new String[] {"4n"}, 9, false); // skip 0 as not valid assertEquals(List.of(3, 7), result, "'All' keyword should return all pages."); } @Test void nFuncAdvanced2() { - List result = GeneralUtils.parsePageList(new String[] {"4n-1"}, 9, true); + List result = GeneralUtil.parsePageList(new String[] {"4n-1"}, 9, true); // skip -1 as not valid assertEquals(List.of(3, 7), result, "4n-1 should do (0-1), (4-1), (8-1)"); } @Test void nFuncAdvanced3() { - List result = GeneralUtils.parsePageList(new String[] {"4n+1"}, 9, true); + List result = GeneralUtil.parsePageList(new String[] {"4n+1"}, 9, true); assertEquals(List.of(5, 9), result, "'All' keyword should return all pages."); } @Test void nFunc_spaces() { - List result = GeneralUtils.parsePageList(new String[] {"n + 1"}, 9, true); + List result = GeneralUtil.parsePageList(new String[] {"n + 1"}, 9, true); assertEquals(List.of(2, 3, 4, 5, 6, 7, 8, 9), result); } @Test void nFunc_consecutive_Ns_nnn() { - List result = GeneralUtils.parsePageList(new String[] {"nnn"}, 9, true); + List result = GeneralUtil.parsePageList(new String[] {"nnn"}, 9, true); assertEquals(List.of(1, 8), result); } @Test void nFunc_consecutive_Ns_nn() { - List result = GeneralUtils.parsePageList(new String[] {"nn"}, 9, true); + List result = GeneralUtil.parsePageList(new String[] {"nn"}, 9, true); assertEquals(List.of(1, 4, 9), result); } @Test void nFunc_opening_closing_round_brackets() { - List result = GeneralUtils.parsePageList(new String[] {"(n-1)(n-2)"}, 9, true); + List result = GeneralUtil.parsePageList(new String[] {"(n-1)(n-2)"}, 9, true); assertEquals(List.of(2, 6), result); } @Test void nFunc_opening_round_brackets() { - List result = GeneralUtils.parsePageList(new String[] {"2(n-1)"}, 9, true); + List result = GeneralUtil.parsePageList(new String[] {"2(n-1)"}, 9, true); assertEquals(List.of(2, 4, 6, 8), result); } @Test void nFunc_opening_round_brackets_n() { - List result = GeneralUtils.parsePageList(new String[] {"n(n-1)"}, 9, true); + List result = GeneralUtil.parsePageList(new String[] {"n(n-1)"}, 9, true); assertEquals(List.of(2, 6), result); } @Test void nFunc_closing_round_brackets() { - List result = GeneralUtils.parsePageList(new String[] {"(n-1)2"}, 9, true); + List result = GeneralUtil.parsePageList(new String[] {"(n-1)2"}, 9, true); assertEquals(List.of(2, 4, 6, 8), result); } @Test void nFunc_closing_round_brackets_n() { - List result = GeneralUtils.parsePageList(new String[] {"(n-1)n"}, 9, true); + List result = GeneralUtil.parsePageList(new String[] {"(n-1)n"}, 9, true); assertEquals(List.of(2, 6), result); } @Test void nFunc_function_surrounded_with_brackets() { - List result = GeneralUtils.parsePageList(new String[] {"(n-1)"}, 9, true); + List result = GeneralUtil.parsePageList(new String[] {"(n-1)"}, 9, true); assertEquals(List.of(1, 2, 3, 4, 5, 6, 7, 8), result); } @Test void nFuncAdvanced4() { - List result = GeneralUtils.parsePageList(new String[] {"3+2n"}, 9, true); + List result = GeneralUtil.parsePageList(new String[] {"3+2n"}, 9, true); assertEquals(List.of(5, 7, 9), result, "'All' keyword should return all pages."); } @Test void nFuncAdvancedZerobased() { - List result = GeneralUtils.parsePageList(new String[] {"4n"}, 9, false); + List result = GeneralUtil.parsePageList(new String[] {"4n"}, 9, false); assertEquals(List.of(3, 7), result, "'All' keyword should return all pages."); } @Test void nFuncAdvanced2Zerobased() { - List result = GeneralUtils.parsePageList(new String[] {"4n-1"}, 9, false); + List result = GeneralUtil.parsePageList(new String[] {"4n-1"}, 9, false); assertEquals(List.of(2, 6), result, "'All' keyword should return all pages."); } @Test void testParsePageListWithRangeOneBasedOutput() { - List result = GeneralUtils.parsePageList(new String[] {"1-3"}, 5, true); + List result = GeneralUtil.parsePageList(new String[] {"1-3"}, 5, true); assertEquals(List.of(1, 2, 3), result, "Range should be parsed correctly."); } @Test void testParsePageListWithRangeZeroBaseOutput() { - List result = GeneralUtils.parsePageList(new String[] {"1-3"}, 5, false); + List result = GeneralUtil.parsePageList(new String[] {"1-3"}, 5, false); assertEquals(List.of(0, 1, 2), result, "Range should be parsed correctly."); } @Test void testParsePageListWithRangeOneBasedOutputFull() { - List result = GeneralUtils.parsePageList(new String[] {"1,3,7-8"}, 8, true); + List result = GeneralUtil.parsePageList(new String[] {"1,3,7-8"}, 8, true); assertEquals(List.of(1, 3, 7, 8), result, "Range should be parsed correctly."); } @Test void testParsePageListWithRangeOneBasedOutputFullOutOfRange() { - List result = GeneralUtils.parsePageList(new String[] {"1,3,7-8"}, 5, true); + List result = GeneralUtil.parsePageList(new String[] {"1,3,7-8"}, 5, true); assertEquals(List.of(1, 3), result, "Range should be parsed correctly."); } @Test void testParsePageListWithRangeZeroBaseOutputFull() { - List result = GeneralUtils.parsePageList(new String[] {"1,3,7-8"}, 8, false); + List result = GeneralUtil.parsePageList(new String[] {"1,3,7-8"}, 8, false); assertEquals(List.of(0, 2, 6, 7), result, "Range should be parsed correctly."); } } diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/model/AuthenticationType.java b/enterprise/src/main/java/stirling/software/enterprise/security/model/AuthenticationType.java deleted file mode 100644 index c755387fb..000000000 --- a/enterprise/src/main/java/stirling/software/enterprise/security/model/AuthenticationType.java +++ /dev/null @@ -1,6 +0,0 @@ -package stirling.software.enterprise.security.model; - -public enum AuthenticationType { - WEB, - SSO -} diff --git a/exampleYmlFiles/docker-compose-latest-fat-endpoints-disabled.yml b/exampleYmlFiles/docker-compose-latest-fat-endpoints-disabled.yml index f36cd5bc7..7cf739ae6 100644 --- a/exampleYmlFiles/docker-compose-latest-fat-endpoints-disabled.yml +++ b/exampleYmlFiles/docker-compose-latest-fat-endpoints-disabled.yml @@ -20,7 +20,7 @@ services: - ./stirling/latest/logs:/logs:rw - ../testing/allEndpointsRemovedSettings.yml:/configs/settings.yml:rw environment: - DOCKER_ENABLE_SECURITY: "true" + ADDITIONAL_FEATURES: "true" SECURITY_ENABLELOGIN: "false" PUID: 1002 PGID: 1002 diff --git a/exampleYmlFiles/docker-compose-latest-fat-security-postgres.yml b/exampleYmlFiles/docker-compose-latest-fat-security-postgres.yml index c04da1912..954a106d4 100644 --- a/exampleYmlFiles/docker-compose-latest-fat-security-postgres.yml +++ b/exampleYmlFiles/docker-compose-latest-fat-security-postgres.yml @@ -20,7 +20,7 @@ services: - ./stirling/latest/config:/configs:rw - ./stirling/latest/logs:/logs:rw environment: - DOCKER_ENABLE_SECURITY: "true" + ADDITIONAL_FEATURES: "true" SECURITY_ENABLELOGIN: "false" PUID: 1002 PGID: 1002 diff --git a/exampleYmlFiles/docker-compose-latest-fat-security.yml b/exampleYmlFiles/docker-compose-latest-fat-security.yml index d9e4fa5a9..ce4cbfa1b 100644 --- a/exampleYmlFiles/docker-compose-latest-fat-security.yml +++ b/exampleYmlFiles/docker-compose-latest-fat-security.yml @@ -18,7 +18,7 @@ services: - ./stirling/latest/config:/configs:rw - ./stirling/latest/logs:/logs:rw environment: - DOCKER_ENABLE_SECURITY: "true" + ADDITIONAL_FEATURES: "true" SECURITY_ENABLELOGIN: "false" PUID: 1002 PGID: 1002 diff --git a/exampleYmlFiles/docker-compose-latest-security-with-sso.yml b/exampleYmlFiles/docker-compose-latest-security-with-sso.yml index 1514dd7d8..b889e90fb 100644 --- a/exampleYmlFiles/docker-compose-latest-security-with-sso.yml +++ b/exampleYmlFiles/docker-compose-latest-security-with-sso.yml @@ -18,7 +18,7 @@ services: - /stirling/latest/config:/configs:rw - /stirling/latest/logs:/logs:rw environment: - DOCKER_ENABLE_SECURITY: "true" + ADDITIONAL_FEATURES: "true" SECURITY_ENABLELOGIN: "true" SECURITY_OAUTH2_ENABLED: "true" SECURITY_OAUTH2_AUTOCREATEUSER: "true" # This is set to true to allow auto-creation of non-existing users in Stirling-PDF diff --git a/exampleYmlFiles/docker-compose-latest-security.yml b/exampleYmlFiles/docker-compose-latest-security.yml index ccd3a41c6..347e30633 100644 --- a/exampleYmlFiles/docker-compose-latest-security.yml +++ b/exampleYmlFiles/docker-compose-latest-security.yml @@ -18,7 +18,7 @@ services: - ./stirling/latest/config:/configs:rw - ./stirling/latest/logs:/logs:rw environment: - DOCKER_ENABLE_SECURITY: "true" + ADDITIONAL_FEATURES: "true" SECURITY_ENABLELOGIN: "true" PUID: 1002 PGID: 1002 diff --git a/exampleYmlFiles/docker-compose-latest-ultra-lite-security.yml b/exampleYmlFiles/docker-compose-latest-ultra-lite-security.yml index c59713b71..2133fb9c9 100644 --- a/exampleYmlFiles/docker-compose-latest-ultra-lite-security.yml +++ b/exampleYmlFiles/docker-compose-latest-ultra-lite-security.yml @@ -18,7 +18,7 @@ services: - /stirling/latest/config:/configs:rw - /stirling/latest/logs:/logs:rw environment: - DOCKER_ENABLE_SECURITY: "true" + ADDITIONAL_FEATURES: "true" SECURITY_ENABLELOGIN: "true" SYSTEM_DEFAULTLOCALE: en-US UI_APPNAME: Stirling-PDF-Lite diff --git a/exampleYmlFiles/docker-compose-latest-ultra-lite.yml b/exampleYmlFiles/docker-compose-latest-ultra-lite.yml index 6148f7251..968ac99a3 100644 --- a/exampleYmlFiles/docker-compose-latest-ultra-lite.yml +++ b/exampleYmlFiles/docker-compose-latest-ultra-lite.yml @@ -17,7 +17,7 @@ services: - /stirling/latest/config:/configs:rw - /stirling/latest/logs:/logs:rw environment: - DOCKER_ENABLE_SECURITY: "false" + ADDITIONAL_FEATURES: "false" SECURITY_ENABLELOGIN: "false" SYSTEM_DEFAULTLOCALE: en-US UI_APPNAME: Stirling-PDF-Ultra-lite diff --git a/exampleYmlFiles/docker-compose-latest.yml b/exampleYmlFiles/docker-compose-latest.yml index 51266ee8b..5676a2e8b 100644 --- a/exampleYmlFiles/docker-compose-latest.yml +++ b/exampleYmlFiles/docker-compose-latest.yml @@ -18,7 +18,7 @@ services: - /stirling/latest/config:/configs:rw - /stirling/latest/logs:/logs:rw environment: - DOCKER_ENABLE_SECURITY: "false" + ADDITIONAL_FEATURES: "false" SECURITY_ENABLELOGIN: "false" LANGS: "en_GB,en_US,ar_AR,de_DE,fr_FR,es_ES,zh_CN,zh_TW,ca_CA,it_IT,sv_SE,pl_PL,ro_RO,ko_KR,pt_BR,ru_RU,el_GR,hi_IN,hu_HU,tr_TR,id_ID" SYSTEM_DEFAULTLOCALE: en-US diff --git a/exampleYmlFiles/test_cicd.yml b/exampleYmlFiles/test_cicd.yml index eebb50f2a..3a1f72697 100644 --- a/exampleYmlFiles/test_cicd.yml +++ b/exampleYmlFiles/test_cicd.yml @@ -18,7 +18,7 @@ services: - /stirling/latest/config:/configs:rw - /stirling/latest/logs:/logs:rw environment: - DOCKER_ENABLE_SECURITY: "true" + ADDITIONAL_FEATURES: "true" SECURITY_ENABLELOGIN: "true" PUID: 1002 PGID: 1002 diff --git a/enterprise/.gitignore b/proprietary/.gitignore similarity index 100% rename from enterprise/.gitignore rename to proprietary/.gitignore diff --git a/enterprise/LICENSE b/proprietary/LICENSE similarity index 100% rename from enterprise/LICENSE rename to proprietary/LICENSE diff --git a/enterprise/build.gradle b/proprietary/build.gradle similarity index 87% rename from enterprise/build.gradle rename to proprietary/build.gradle index ec5020477..b29f85b41 100644 --- a/enterprise/build.gradle +++ b/proprietary/build.gradle @@ -13,18 +13,13 @@ repositories { } java { - // 17 is lowest but we support and recommend 21 sourceCompatibility = JavaVersion.VERSION_17 } -ext { - lombokVersion = "1.18.38" -} - sourceSets { main { java { - if (System.getenv("DOCKER_ENABLE_SECURITY") == "false") { + 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' @@ -53,7 +48,7 @@ sourceSets { test { java { - if (System.getenv("DOCKER_ENABLE_SECURITY") == "false") { + if (System.getenv("ADDITIONAL_FEATURES") == "false") { exclude 'stirling/software/enterprise/security/**' } } @@ -80,33 +75,29 @@ dependencies { implementation 'org.springframework:spring-webmvc:6.2.6' implementation 'com.posthog.java:posthog:1.2.0' - // https://mvnrepository.com/artifact/com.bucket4j/bucket4j_jdk17 - implementation 'com.bucket4j:bucket4j_jdk17-core:8.14.0' + implementation 'com.bucket4j:bucket4j_jdk17-core:8.14.0' // https://mvnrepository.com/artifact/com.bucket4j/bucket4j_jdk17 implementation 'io.github.pixee:java-security-toolkit:1.2.1' implementation 'org.bouncycastle:bcprov-jdk18on:1.80' - if (System.getenv('DOCKER_ENABLE_SECURITY') != 'false') { - implementation 'io.micrometer:micrometer-registry-prometheus' - + if (System.getenv('ADDITIONAL_FEATURES') != 'false') { + implementation "org.springframework:spring-jdbc:6.2.6" implementation 'org.springframework.boot:spring-boot-starter-security' - implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE' 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.springframework:spring-jdbc:6.2.6" + 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' - // Don't upgrade h2database - runtimeOnly "com.h2database:h2:2.3.232" + 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 "org.springframework.security:spring-security-saml2-service-provider:$springSecuritySamlVersion" - // implementation 'org.springframework.security:spring-security-core:$springSecuritySamlVersion' implementation 'com.coveo:saml-client:5.0.0' } @@ -117,7 +108,7 @@ dependencies { testImplementation platform('org.junit:junit-bom:5.10.0') testImplementation 'org.junit.jupiter:junit-jupiter' testImplementation 'org.springframework.boot:spring-boot-starter-test' -// testRuntimeOnly 'org.mockito:mockito-inline:5.2.0' + testRuntimeOnly 'org.mockito:mockito-inline:5.2.0' } test { diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/CustomAuthenticationFailureHandler.java b/proprietary/src/main/java/stirling/software/proprietary/security/CustomAuthenticationFailureHandler.java similarity index 93% rename from enterprise/src/main/java/stirling/software/enterprise/security/CustomAuthenticationFailureHandler.java rename to proprietary/src/main/java/stirling/software/proprietary/security/CustomAuthenticationFailureHandler.java index cae4282b4..ee726b9fb 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/CustomAuthenticationFailureHandler.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/CustomAuthenticationFailureHandler.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security; +package stirling.software.proprietary.security; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; @@ -13,9 +13,9 @@ import org.springframework.security.authentication.LockedException; import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; -import stirling.software.enterprise.security.model.User; -import stirling.software.enterprise.security.service.LoginAttemptService; -import stirling.software.enterprise.security.service.UserService; +import stirling.software.proprietary.security.model.User; +import stirling.software.proprietary.security.service.LoginAttemptService; +import stirling.software.proprietary.security.service.UserService; @Slf4j public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler { diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/CustomAuthenticationSuccessHandler.java b/proprietary/src/main/java/stirling/software/proprietary/security/CustomAuthenticationSuccessHandler.java similarity index 92% rename from enterprise/src/main/java/stirling/software/enterprise/security/CustomAuthenticationSuccessHandler.java rename to proprietary/src/main/java/stirling/software/proprietary/security/CustomAuthenticationSuccessHandler.java index 946bf2540..ea9dbb42b 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/CustomAuthenticationSuccessHandler.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/CustomAuthenticationSuccessHandler.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security; +package stirling.software.proprietary.security; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; @@ -10,8 +10,8 @@ import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; import org.springframework.security.web.savedrequest.SavedRequest; import stirling.software.common.util.RequestUriUtil; -import stirling.software.enterprise.security.service.LoginAttemptService; -import stirling.software.enterprise.security.service.UserService; +import stirling.software.proprietary.security.service.LoginAttemptService; +import stirling.software.proprietary.security.service.UserService; @Slf4j public class CustomAuthenticationSuccessHandler diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/CustomLogoutSuccessHandler.java b/proprietary/src/main/java/stirling/software/proprietary/security/CustomLogoutSuccessHandler.java similarity index 98% rename from enterprise/src/main/java/stirling/software/enterprise/security/CustomLogoutSuccessHandler.java rename to proprietary/src/main/java/stirling/software/proprietary/security/CustomLogoutSuccessHandler.java index 7e300cd9a..0c15f1cd0 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/CustomLogoutSuccessHandler.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/CustomLogoutSuccessHandler.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security; +package stirling.software.proprietary.security; import com.coveo.saml.SamlClient; import com.coveo.saml.SamlException; @@ -23,8 +23,8 @@ 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.util.UrlUtils; -import stirling.software.enterprise.security.saml2.CertificateUtils; -import stirling.software.enterprise.security.saml2.CustomSaml2AuthenticatedPrincipal; +import stirling.software.proprietary.security.saml2.CertificateUtils; +import stirling.software.proprietary.security.saml2.CustomSaml2AuthenticatedPrincipal; @Slf4j @RequiredArgsConstructor diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/InitialSecuritySetup.java b/proprietary/src/main/java/stirling/software/proprietary/security/InitialSecuritySetup.java similarity index 94% rename from enterprise/src/main/java/stirling/software/enterprise/security/InitialSecuritySetup.java rename to proprietary/src/main/java/stirling/software/proprietary/security/InitialSecuritySetup.java index 437b4d023..1353f2151 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/InitialSecuritySetup.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/InitialSecuritySetup.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security; +package stirling.software.proprietary.security; import jakarta.annotation.PostConstruct; import java.sql.SQLException; @@ -9,8 +9,8 @@ import org.springframework.stereotype.Component; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.exception.UnsupportedProviderException; import stirling.software.common.model.enumeration.Role; -import stirling.software.enterprise.security.service.DatabaseServiceInterface; -import stirling.software.enterprise.security.service.UserService; +import stirling.software.proprietary.security.service.DatabaseServiceInterface; +import stirling.software.proprietary.security.service.UserService; @Slf4j @Component diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/RateLimitResetScheduler.java b/proprietary/src/main/java/stirling/software/proprietary/security/RateLimitResetScheduler.java similarity index 78% rename from enterprise/src/main/java/stirling/software/enterprise/security/RateLimitResetScheduler.java rename to proprietary/src/main/java/stirling/software/proprietary/security/RateLimitResetScheduler.java index e522f87b3..4faeb9041 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/RateLimitResetScheduler.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/RateLimitResetScheduler.java @@ -1,9 +1,9 @@ -package stirling.software.enterprise.security; +package stirling.software.proprietary.security; import lombok.RequiredArgsConstructor; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import stirling.software.enterprise.security.filter.IPRateLimitingFilter; +import stirling.software.proprietary.security.filter.IPRateLimitingFilter; @Component @RequiredArgsConstructor diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/configuration/DatabaseConfig.java b/proprietary/src/main/java/stirling/software/proprietary/security/configuration/DatabaseConfig.java similarity index 96% rename from enterprise/src/main/java/stirling/software/enterprise/security/configuration/DatabaseConfig.java rename to proprietary/src/main/java/stirling/software/proprietary/security/configuration/DatabaseConfig.java index 9ac97f919..8d686e4d7 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/configuration/DatabaseConfig.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/configuration/DatabaseConfig.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.configuration; +package stirling.software.proprietary.security.configuration; import javax.sql.DataSource; import lombok.Getter; @@ -17,8 +17,8 @@ import stirling.software.common.model.exception.UnsupportedProviderException; @Slf4j @Getter @Configuration -@EnableJpaRepositories(basePackages = "stirling.software.enterprise.security.database.repository") -@EntityScan({"stirling.software.enterprise.security.model"}) +@EnableJpaRepositories(basePackages = "stirling.software.proprietary.security.database.repository") +@EntityScan({"stirling.software.proprietary.security.model"}) public class DatabaseConfig { public final String DATASOURCE_DEFAULT_URL; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/configuration/SecurityConfiguration.java b/proprietary/src/main/java/stirling/software/proprietary/security/configuration/SecurityConfiguration.java similarity index 90% rename from enterprise/src/main/java/stirling/software/enterprise/security/configuration/SecurityConfiguration.java rename to proprietary/src/main/java/stirling/software/proprietary/security/configuration/SecurityConfiguration.java index ae4c54b5c..1fba9da42 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/configuration/SecurityConfiguration.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/configuration/SecurityConfiguration.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.configuration; +package stirling.software.proprietary.security.configuration; import java.util.Optional; import lombok.extern.slf4j.Slf4j; @@ -29,25 +29,24 @@ import org.springframework.security.web.savedrequest.NullRequestCache; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; import stirling.software.common.configuration.AppConfig; import stirling.software.common.model.ApplicationProperties; -import stirling.software.enterprise.security.CustomAuthenticationFailureHandler; -import stirling.software.enterprise.security.CustomAuthenticationSuccessHandler; -import stirling.software.enterprise.security.CustomLogoutSuccessHandler; -import stirling.software.enterprise.security.filter.FirstLoginFilter; -import stirling.software.enterprise.security.filter.IPRateLimitingFilter; -import stirling.software.enterprise.security.filter.UserAuthenticationFilter; -import stirling.software.enterprise.security.database.repository.JPATokenRepositoryImpl; -import stirling.software.enterprise.security.database.repository.PersistentLoginRepository; -import stirling.software.enterprise.security.model.User; -import stirling.software.enterprise.security.oauth2.CustomOAuth2AuthenticationFailureHandler; -import stirling.software.enterprise.security.oauth2.CustomOAuth2AuthenticationSuccessHandler; -import stirling.software.enterprise.security.saml2.CustomSaml2AuthenticationFailureHandler; -import stirling.software.enterprise.security.saml2.CustomSaml2AuthenticationSuccessHandler; -import stirling.software.enterprise.security.saml2.CustomSaml2ResponseAuthenticationConverter; -import stirling.software.enterprise.security.service.CustomOAuth2UserService; -import stirling.software.enterprise.security.service.CustomUserDetailsService; -import stirling.software.enterprise.security.service.LoginAttemptService; -import stirling.software.enterprise.security.service.UserService; -import stirling.software.enterprise.security.session.SessionPersistentRegistry; +import stirling.software.proprietary.security.CustomAuthenticationFailureHandler; +import stirling.software.proprietary.security.CustomAuthenticationSuccessHandler; +import stirling.software.proprietary.security.database.repository.JPATokenRepositoryImpl; +import stirling.software.proprietary.security.database.repository.PersistentLoginRepository; +import stirling.software.proprietary.security.filter.FirstLoginFilter; +import stirling.software.proprietary.security.filter.IPRateLimitingFilter; +import stirling.software.proprietary.security.filter.UserAuthenticationFilter; +import stirling.software.proprietary.security.model.User; +import stirling.software.proprietary.security.oauth2.CustomOAuth2AuthenticationFailureHandler; +import stirling.software.proprietary.security.oauth2.CustomOAuth2AuthenticationSuccessHandler; +import stirling.software.proprietary.security.saml2.CustomSaml2AuthenticationFailureHandler; +import stirling.software.proprietary.security.saml2.CustomSaml2AuthenticationSuccessHandler; +import stirling.software.proprietary.security.saml2.CustomSaml2ResponseAuthenticationConverter; +import stirling.software.proprietary.security.service.CustomOAuth2UserService; +import stirling.software.proprietary.security.service.CustomUserDetailsService; +import stirling.software.proprietary.security.service.LoginAttemptService; +import stirling.software.proprietary.security.service.UserService; +import stirling.software.proprietary.security.session.SessionPersistentRegistry; @Configuration @EnableWebSecurity @@ -169,7 +168,7 @@ public class SecurityConfiguration { logout -> logout.logoutRequestMatcher(new AntPathRequestMatcher("/logout")) .logoutSuccessHandler( - new CustomLogoutSuccessHandler(applicationProperties, appConfig)) + new stirling.software.proprietary.security.CustomLogoutSuccessHandler(applicationProperties, appConfig)) .clearAuthentication(true) .invalidateHttpSession(true) .deleteCookies("JSESSIONID", "remember-me")); diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/controller/api/DatabaseController.java b/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/DatabaseController.java similarity index 97% rename from enterprise/src/main/java/stirling/software/enterprise/security/controller/api/DatabaseController.java rename to proprietary/src/main/java/stirling/software/proprietary/security/controller/api/DatabaseController.java index 27e4c0bea..bbc84821f 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/controller/api/DatabaseController.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/DatabaseController.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.controller.api; +package stirling.software.proprietary.security.controller.api; import java.io.IOException; import java.io.InputStream; @@ -26,8 +26,8 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import stirling.software.enterprise.security.database.H2SQLCondition; -import stirling.software.enterprise.security.service.DatabaseService; +import stirling.software.proprietary.security.database.H2SQLCondition; +import stirling.software.proprietary.security.service.DatabaseService; @Slf4j @Controller diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/controller/api/UserController.java b/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/UserController.java similarity index 97% rename from enterprise/src/main/java/stirling/software/enterprise/security/controller/api/UserController.java rename to proprietary/src/main/java/stirling/software/proprietary/security/controller/api/UserController.java index 115dcce0c..682102941 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/controller/api/UserController.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/UserController.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.controller.api; +package stirling.software.proprietary.security.controller.api; import java.io.IOException; import java.security.Principal; @@ -30,15 +30,15 @@ import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import stirling.software.enterprise.security.model.AuthenticationType; +import stirling.software.proprietary.security.model.AuthenticationType; import stirling.software.common.model.enumeration.Role; -import stirling.software.enterprise.security.model.User; +import stirling.software.proprietary.security.model.User; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.exception.UnsupportedProviderException; -import stirling.software.enterprise.security.model.api.user.UsernameAndPass; -import stirling.software.enterprise.security.saml2.CustomSaml2AuthenticatedPrincipal; -import stirling.software.enterprise.security.service.UserService; -import stirling.software.enterprise.security.session.SessionPersistentRegistry; +import stirling.software.proprietary.security.model.api.user.UsernameAndPass; +import stirling.software.proprietary.security.saml2.CustomSaml2AuthenticatedPrincipal; +import stirling.software.proprietary.security.service.UserService; +import stirling.software.proprietary.security.session.SessionPersistentRegistry; @Controller @Tag(name = "User", description = "User APIs") diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/controller/web/AccountWebController.java b/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/AccountWebController.java similarity index 97% rename from enterprise/src/main/java/stirling/software/enterprise/security/controller/web/AccountWebController.java rename to proprietary/src/main/java/stirling/software/proprietary/security/controller/web/AccountWebController.java index 3a58f4817..4fbf8a052 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/controller/web/AccountWebController.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/AccountWebController.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.controller.web; +package stirling.software.proprietary.security.controller.web; import static stirling.software.common.util.ProviderUtil.validateProvider; @@ -29,11 +29,7 @@ import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; -import stirling.software.enterprise.security.model.Authority; import stirling.software.common.model.enumeration.Role; -import stirling.software.enterprise.security.model.SessionEntity; -import stirling.software.enterprise.security.model.User; -import stirling.software.enterprise.security.database.repository.UserRepository; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.ApplicationProperties.Security; import stirling.software.common.model.ApplicationProperties.Security.OAUTH2; @@ -42,8 +38,12 @@ 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.enterprise.security.saml2.CustomSaml2AuthenticatedPrincipal; -import stirling.software.enterprise.security.session.SessionPersistentRegistry; +import stirling.software.proprietary.security.database.repository.UserRepository; +import stirling.software.proprietary.security.model.Authority; +import stirling.software.proprietary.security.model.SessionEntity; +import stirling.software.proprietary.security.model.User; +import stirling.software.proprietary.security.saml2.CustomSaml2AuthenticatedPrincipal; +import stirling.software.proprietary.security.session.SessionPersistentRegistry; @Controller @Slf4j diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/controller/web/DatabaseWebController.java b/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/DatabaseWebController.java similarity index 92% rename from enterprise/src/main/java/stirling/software/enterprise/security/controller/web/DatabaseWebController.java rename to proprietary/src/main/java/stirling/software/proprietary/security/controller/web/DatabaseWebController.java index f6889d2bd..940c0c13f 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/controller/web/DatabaseWebController.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/DatabaseWebController.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.controller.web; +package stirling.software.proprietary.security.controller.web; import java.util.List; @@ -15,7 +15,7 @@ import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import stirling.software.common.model.FileInfo; -import stirling.software.enterprise.security.service.DatabaseService; +import stirling.software.proprietary.security.service.DatabaseService; @Controller @Tag(name = "Database Management", description = "Database management and security APIs") diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/database/H2SQLCondition.java b/proprietary/src/main/java/stirling/software/proprietary/security/database/H2SQLCondition.java similarity index 93% rename from enterprise/src/main/java/stirling/software/enterprise/security/database/H2SQLCondition.java rename to proprietary/src/main/java/stirling/software/proprietary/security/database/H2SQLCondition.java index 60311363c..4e259e49b 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/database/H2SQLCondition.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/database/H2SQLCondition.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.database; +package stirling.software.proprietary.security.database; import org.springframework.context.annotation.Condition; import org.springframework.context.annotation.ConditionContext; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/database/ScheduledTasks.java b/proprietary/src/main/java/stirling/software/proprietary/security/database/ScheduledTasks.java similarity index 82% rename from enterprise/src/main/java/stirling/software/enterprise/security/database/ScheduledTasks.java rename to proprietary/src/main/java/stirling/software/proprietary/security/database/ScheduledTasks.java index 825ac74b3..835dc1917 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/database/ScheduledTasks.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/database/ScheduledTasks.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.database; +package stirling.software.proprietary.security.database; import java.sql.SQLException; import lombok.RequiredArgsConstructor; @@ -6,7 +6,7 @@ import org.springframework.context.annotation.Conditional; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import stirling.software.common.model.exception.UnsupportedProviderException; -import stirling.software.enterprise.security.service.DatabaseServiceInterface; +import stirling.software.proprietary.security.service.DatabaseServiceInterface; @Component @Conditional(H2SQLCondition.class) diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/database/repository/AuthorityRepository.java b/proprietary/src/main/java/stirling/software/proprietary/security/database/repository/AuthorityRepository.java similarity index 74% rename from enterprise/src/main/java/stirling/software/enterprise/security/database/repository/AuthorityRepository.java rename to proprietary/src/main/java/stirling/software/proprietary/security/database/repository/AuthorityRepository.java index f7cdbb829..a7773d859 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/database/repository/AuthorityRepository.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/database/repository/AuthorityRepository.java @@ -1,11 +1,10 @@ -package stirling.software.enterprise.security.database.repository; +package stirling.software.proprietary.security.database.repository; import java.util.Set; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; - -import stirling.software.enterprise.security.model.Authority; +import stirling.software.proprietary.security.model.Authority; @Repository public interface AuthorityRepository extends JpaRepository { diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/database/repository/JPATokenRepositoryImpl.java b/proprietary/src/main/java/stirling/software/proprietary/security/database/repository/JPATokenRepositoryImpl.java similarity index 93% rename from enterprise/src/main/java/stirling/software/enterprise/security/database/repository/JPATokenRepositoryImpl.java rename to proprietary/src/main/java/stirling/software/proprietary/security/database/repository/JPATokenRepositoryImpl.java index 67cd5f46b..b98a8094f 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/database/repository/JPATokenRepositoryImpl.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/database/repository/JPATokenRepositoryImpl.java @@ -1,12 +1,11 @@ -package stirling.software.enterprise.security.database.repository; +package stirling.software.proprietary.security.database.repository; import java.util.Date; import org.springframework.security.web.authentication.rememberme.PersistentRememberMeToken; import org.springframework.security.web.authentication.rememberme.PersistentTokenRepository; import org.springframework.transaction.annotation.Transactional; - -import stirling.software.enterprise.security.model.PersistentLogin; +import stirling.software.proprietary.security.model.PersistentLogin; public class JPATokenRepositoryImpl implements PersistentTokenRepository { diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/database/repository/PersistentLoginRepository.java b/proprietary/src/main/java/stirling/software/proprietary/security/database/repository/PersistentLoginRepository.java similarity index 65% rename from enterprise/src/main/java/stirling/software/enterprise/security/database/repository/PersistentLoginRepository.java rename to proprietary/src/main/java/stirling/software/proprietary/security/database/repository/PersistentLoginRepository.java index ea438f34f..a9ddf8a37 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/database/repository/PersistentLoginRepository.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/database/repository/PersistentLoginRepository.java @@ -1,9 +1,8 @@ -package stirling.software.enterprise.security.database.repository; +package stirling.software.proprietary.security.database.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; - -import stirling.software.enterprise.security.model.PersistentLogin; +import stirling.software.proprietary.security.model.PersistentLogin; @Repository public interface PersistentLoginRepository extends JpaRepository { diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/database/repository/SessionRepository.java b/proprietary/src/main/java/stirling/software/proprietary/security/database/repository/SessionRepository.java similarity index 88% rename from enterprise/src/main/java/stirling/software/enterprise/security/database/repository/SessionRepository.java rename to proprietary/src/main/java/stirling/software/proprietary/security/database/repository/SessionRepository.java index 1c8d028e5..b7a7d7a84 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/database/repository/SessionRepository.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/database/repository/SessionRepository.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.database.repository; +package stirling.software.proprietary.security.database.repository; import jakarta.transaction.Transactional; import java.util.Date; @@ -8,7 +8,7 @@ import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import stirling.software.enterprise.security.model.SessionEntity; +import stirling.software.proprietary.security.model.SessionEntity; @Repository public interface SessionRepository extends JpaRepository { diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/database/repository/UserRepository.java b/proprietary/src/main/java/stirling/software/proprietary/security/database/repository/UserRepository.java similarity index 86% rename from enterprise/src/main/java/stirling/software/enterprise/security/database/repository/UserRepository.java rename to proprietary/src/main/java/stirling/software/proprietary/security/database/repository/UserRepository.java index 780f3787c..dcf84ee19 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/database/repository/UserRepository.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/database/repository/UserRepository.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.database.repository; +package stirling.software.proprietary.security.database.repository; import java.util.List; import java.util.Optional; @@ -7,8 +7,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; - -import stirling.software.enterprise.security.model.User; +import stirling.software.proprietary.security.model.User; @Repository public interface UserRepository extends JpaRepository { diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/filter/EnterpriseEndpointFilter.java b/proprietary/src/main/java/stirling/software/proprietary/security/filter/EnterpriseEndpointFilter.java similarity index 95% rename from enterprise/src/main/java/stirling/software/enterprise/security/filter/EnterpriseEndpointFilter.java rename to proprietary/src/main/java/stirling/software/proprietary/security/filter/EnterpriseEndpointFilter.java index 6c215d3b9..5ee61f8ff 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/filter/EnterpriseEndpointFilter.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/filter/EnterpriseEndpointFilter.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.filter; +package stirling.software.proprietary.security.filter; import java.io.IOException; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/filter/FirstLoginFilter.java b/proprietary/src/main/java/stirling/software/proprietary/security/filter/FirstLoginFilter.java similarity index 94% rename from enterprise/src/main/java/stirling/software/enterprise/security/filter/FirstLoginFilter.java rename to proprietary/src/main/java/stirling/software/proprietary/security/filter/FirstLoginFilter.java index 12f09cd81..1d0127d4f 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/filter/FirstLoginFilter.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/filter/FirstLoginFilter.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.filter; +package stirling.software.proprietary.security.filter; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; @@ -16,8 +16,8 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; import stirling.software.common.util.RequestUriUtil; -import stirling.software.enterprise.security.model.User; -import stirling.software.enterprise.security.service.UserService; +import stirling.software.proprietary.security.model.User; +import stirling.software.proprietary.security.service.UserService; @Slf4j @Component diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/filter/IPRateLimitingFilter.java b/proprietary/src/main/java/stirling/software/proprietary/security/filter/IPRateLimitingFilter.java similarity index 97% rename from enterprise/src/main/java/stirling/software/enterprise/security/filter/IPRateLimitingFilter.java rename to proprietary/src/main/java/stirling/software/proprietary/security/filter/IPRateLimitingFilter.java index 31b81581d..db4ff9199 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/filter/IPRateLimitingFilter.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/filter/IPRateLimitingFilter.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.filter; +package stirling.software.proprietary.security.filter; import jakarta.servlet.Filter; import jakarta.servlet.FilterChain; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/filter/UserAuthenticationFilter.java b/proprietary/src/main/java/stirling/software/proprietary/security/filter/UserAuthenticationFilter.java similarity index 96% rename from enterprise/src/main/java/stirling/software/enterprise/security/filter/UserAuthenticationFilter.java rename to proprietary/src/main/java/stirling/software/proprietary/security/filter/UserAuthenticationFilter.java index 500df33a0..de97ec785 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/filter/UserAuthenticationFilter.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/filter/UserAuthenticationFilter.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.filter; +package stirling.software.proprietary.security.filter; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; @@ -23,11 +23,11 @@ import org.springframework.web.filter.OncePerRequestFilter; 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.enterprise.security.model.ApiKeyAuthenticationToken; -import stirling.software.enterprise.security.model.User; -import stirling.software.enterprise.security.saml2.CustomSaml2AuthenticatedPrincipal; -import stirling.software.enterprise.security.service.UserService; -import stirling.software.enterprise.security.session.SessionPersistentRegistry; +import stirling.software.proprietary.security.model.ApiKeyAuthenticationToken; +import stirling.software.proprietary.security.model.User; +import stirling.software.proprietary.security.saml2.CustomSaml2AuthenticatedPrincipal; +import stirling.software.proprietary.security.service.UserService; +import stirling.software.proprietary.security.session.SessionPersistentRegistry; @Slf4j @Component diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/filter/UserBasedRateLimitingFilter.java b/proprietary/src/main/java/stirling/software/proprietary/security/filter/UserBasedRateLimitingFilter.java similarity index 99% rename from enterprise/src/main/java/stirling/software/enterprise/security/filter/UserBasedRateLimitingFilter.java rename to proprietary/src/main/java/stirling/software/proprietary/security/filter/UserBasedRateLimitingFilter.java index 061f6ffe4..31db979b0 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/filter/UserBasedRateLimitingFilter.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/filter/UserBasedRateLimitingFilter.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.filter; +package stirling.software.proprietary.security.filter; import io.github.bucket4j.Bandwidth; import io.github.bucket4j.Bucket; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/model/ApiKeyAuthenticationToken.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/ApiKeyAuthenticationToken.java similarity index 96% rename from enterprise/src/main/java/stirling/software/enterprise/security/model/ApiKeyAuthenticationToken.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/ApiKeyAuthenticationToken.java index 61f5fb70c..1db14aaaf 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/model/ApiKeyAuthenticationToken.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/ApiKeyAuthenticationToken.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.model; +package stirling.software.proprietary.security.model; import java.util.Collection; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/model/AttemptCounter.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/AttemptCounter.java similarity index 93% rename from enterprise/src/main/java/stirling/software/enterprise/security/model/AttemptCounter.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/AttemptCounter.java index 75f468f29..18ca598ae 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/model/AttemptCounter.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/AttemptCounter.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.model; +package stirling.software.proprietary.security.model; public class AttemptCounter { private int attemptCount; diff --git a/proprietary/src/main/java/stirling/software/proprietary/security/model/AuthenticationType.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/AuthenticationType.java new file mode 100644 index 000000000..ca8140bca --- /dev/null +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/AuthenticationType.java @@ -0,0 +1,6 @@ +package stirling.software.proprietary.security.model; + +public enum AuthenticationType { + WEB, + SSO +} diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/model/Authority.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/Authority.java similarity index 94% rename from enterprise/src/main/java/stirling/software/enterprise/security/model/Authority.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/Authority.java index aed494f6a..382d3a71e 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/model/Authority.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/Authority.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.model; +package stirling.software.proprietary.security.model; import java.io.Serializable; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/model/PersistentLogin.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/PersistentLogin.java similarity index 91% rename from enterprise/src/main/java/stirling/software/enterprise/security/model/PersistentLogin.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/PersistentLogin.java index cfd20c238..ef096f7fb 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/model/PersistentLogin.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/PersistentLogin.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.model; +package stirling.software.proprietary.security.model; import java.util.Date; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/model/SessionEntity.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/SessionEntity.java similarity index 88% rename from enterprise/src/main/java/stirling/software/enterprise/security/model/SessionEntity.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/SessionEntity.java index af815a095..db94eae6f 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/model/SessionEntity.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/SessionEntity.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.model; +package stirling.software.proprietary.security.model; import java.io.Serializable; import java.util.Date; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/model/User.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/User.java similarity index 98% rename from enterprise/src/main/java/stirling/software/enterprise/security/model/User.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/User.java index 129a823ed..6dc32a85d 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/model/User.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/User.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.model; +package stirling.software.proprietary.security.model; import java.io.Serializable; import java.util.HashMap; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/model/api/user/UpdateUserDetails.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/api/user/UpdateUserDetails.java similarity index 82% rename from enterprise/src/main/java/stirling/software/enterprise/security/model/api/user/UpdateUserDetails.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/api/user/UpdateUserDetails.java index 80148754b..225297a29 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/model/api/user/UpdateUserDetails.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/api/user/UpdateUserDetails.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.model.api.user; +package stirling.software.proprietary.security.model.api.user; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/model/api/user/UpdateUserUsername.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/api/user/UpdateUserUsername.java similarity index 82% rename from enterprise/src/main/java/stirling/software/enterprise/security/model/api/user/UpdateUserUsername.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/api/user/UpdateUserUsername.java index 32ed51359..8e52ef04e 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/model/api/user/UpdateUserUsername.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/api/user/UpdateUserUsername.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.model.api.user; +package stirling.software.proprietary.security.model.api.user; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/model/api/user/Username.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/api/user/Username.java similarity index 78% rename from enterprise/src/main/java/stirling/software/enterprise/security/model/api/user/Username.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/api/user/Username.java index 5a8d9d071..df63d0dfb 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/model/api/user/Username.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/api/user/Username.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.model.api.user; +package stirling.software.proprietary.security.model.api.user; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/model/api/user/UsernameAndPass.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/api/user/UsernameAndPass.java similarity index 81% rename from enterprise/src/main/java/stirling/software/enterprise/security/model/api/user/UsernameAndPass.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/api/user/UsernameAndPass.java index 5c26b4981..b7bc912d1 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/model/api/user/UsernameAndPass.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/api/user/UsernameAndPass.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.model.api.user; +package stirling.software.proprietary.security.model.api.user; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/oauth2/CustomOAuth2AuthenticationFailureHandler.java b/proprietary/src/main/java/stirling/software/proprietary/security/oauth2/CustomOAuth2AuthenticationFailureHandler.java similarity index 97% rename from enterprise/src/main/java/stirling/software/enterprise/security/oauth2/CustomOAuth2AuthenticationFailureHandler.java rename to proprietary/src/main/java/stirling/software/proprietary/security/oauth2/CustomOAuth2AuthenticationFailureHandler.java index 472af7f86..92b053b8a 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/oauth2/CustomOAuth2AuthenticationFailureHandler.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/oauth2/CustomOAuth2AuthenticationFailureHandler.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.oauth2; +package stirling.software.proprietary.security.oauth2; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java b/proprietary/src/main/java/stirling/software/proprietary/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java similarity index 93% rename from enterprise/src/main/java/stirling/software/enterprise/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java rename to proprietary/src/main/java/stirling/software/proprietary/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java index 8b8f2f6c4..8660a5dae 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.oauth2; +package stirling.software.proprietary.security.oauth2; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; @@ -17,9 +17,9 @@ import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.ApplicationProperties.Security.OAUTH2; import stirling.software.common.model.exception.UnsupportedProviderException; import stirling.software.common.util.RequestUriUtil; -import stirling.software.enterprise.security.model.AuthenticationType; -import stirling.software.enterprise.security.service.LoginAttemptService; -import stirling.software.enterprise.security.service.UserService; +import stirling.software.proprietary.security.model.AuthenticationType; +import stirling.software.proprietary.security.service.LoginAttemptService; +import stirling.software.proprietary.security.service.UserService; @RequiredArgsConstructor public class CustomOAuth2AuthenticationSuccessHandler diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/oauth2/OAuth2Configuration.java b/proprietary/src/main/java/stirling/software/proprietary/security/oauth2/OAuth2Configuration.java similarity index 98% rename from enterprise/src/main/java/stirling/software/enterprise/security/oauth2/OAuth2Configuration.java rename to proprietary/src/main/java/stirling/software/proprietary/security/oauth2/OAuth2Configuration.java index d6680b95e..af587af3e 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/oauth2/OAuth2Configuration.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/oauth2/OAuth2Configuration.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.oauth2; +package stirling.software.proprietary.security.oauth2; import java.util.ArrayList; import java.util.HashSet; @@ -28,8 +28,8 @@ 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.enterprise.security.model.User; -import stirling.software.enterprise.security.service.UserService; +import stirling.software.proprietary.security.model.User; +import stirling.software.proprietary.security.service.UserService; import static org.springframework.security.oauth2.core.AuthorizationGrantType.AUTHORIZATION_CODE; import static stirling.software.common.util.ProviderUtil.validateProvider; import static stirling.software.common.util.ValidationUtil.isStringEmpty; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/saml2/CertificateUtils.java b/proprietary/src/main/java/stirling/software/proprietary/security/saml2/CertificateUtils.java similarity index 97% rename from enterprise/src/main/java/stirling/software/enterprise/security/saml2/CertificateUtils.java rename to proprietary/src/main/java/stirling/software/proprietary/security/saml2/CertificateUtils.java index f37a2de0f..c2957e241 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/saml2/CertificateUtils.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/saml2/CertificateUtils.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.saml2; +package stirling.software.proprietary.security.saml2; import java.io.ByteArrayInputStream; import java.io.InputStreamReader; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/saml2/CustomSaml2AuthenticatedPrincipal.java b/proprietary/src/main/java/stirling/software/proprietary/security/saml2/CustomSaml2AuthenticatedPrincipal.java similarity index 93% rename from enterprise/src/main/java/stirling/software/enterprise/security/saml2/CustomSaml2AuthenticatedPrincipal.java rename to proprietary/src/main/java/stirling/software/proprietary/security/saml2/CustomSaml2AuthenticatedPrincipal.java index 341b137ed..055ac8f4e 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/saml2/CustomSaml2AuthenticatedPrincipal.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/saml2/CustomSaml2AuthenticatedPrincipal.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.saml2; +package stirling.software.proprietary.security.saml2; import java.io.Serializable; import java.util.List; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/saml2/CustomSaml2AuthenticationFailureHandler.java b/proprietary/src/main/java/stirling/software/proprietary/security/saml2/CustomSaml2AuthenticationFailureHandler.java similarity index 96% rename from enterprise/src/main/java/stirling/software/enterprise/security/saml2/CustomSaml2AuthenticationFailureHandler.java rename to proprietary/src/main/java/stirling/software/proprietary/security/saml2/CustomSaml2AuthenticationFailureHandler.java index a44ab18ce..a7e663aac 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/saml2/CustomSaml2AuthenticationFailureHandler.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/saml2/CustomSaml2AuthenticationFailureHandler.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.saml2; +package stirling.software.proprietary.security.saml2; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/saml2/CustomSaml2AuthenticationSuccessHandler.java b/proprietary/src/main/java/stirling/software/proprietary/security/saml2/CustomSaml2AuthenticationSuccessHandler.java similarity index 95% rename from enterprise/src/main/java/stirling/software/enterprise/security/saml2/CustomSaml2AuthenticationSuccessHandler.java rename to proprietary/src/main/java/stirling/software/proprietary/security/saml2/CustomSaml2AuthenticationSuccessHandler.java index efd85be08..bfd908040 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/saml2/CustomSaml2AuthenticationSuccessHandler.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/saml2/CustomSaml2AuthenticationSuccessHandler.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.saml2; +package stirling.software.proprietary.security.saml2; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; @@ -16,9 +16,9 @@ import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.ApplicationProperties.Security.SAML2; import stirling.software.common.model.exception.UnsupportedProviderException; import stirling.software.common.util.RequestUriUtil; -import stirling.software.enterprise.security.model.AuthenticationType; -import stirling.software.enterprise.security.service.LoginAttemptService; -import stirling.software.enterprise.security.service.UserService; +import stirling.software.proprietary.security.model.AuthenticationType; +import stirling.software.proprietary.security.service.LoginAttemptService; +import stirling.software.proprietary.security.service.UserService; @AllArgsConstructor @Slf4j diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/saml2/CustomSaml2ResponseAuthenticationConverter.java b/proprietary/src/main/java/stirling/software/proprietary/security/saml2/CustomSaml2ResponseAuthenticationConverter.java similarity index 96% rename from enterprise/src/main/java/stirling/software/enterprise/security/saml2/CustomSaml2ResponseAuthenticationConverter.java rename to proprietary/src/main/java/stirling/software/proprietary/security/saml2/CustomSaml2ResponseAuthenticationConverter.java index e41baff90..d1c24b420 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/saml2/CustomSaml2ResponseAuthenticationConverter.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/saml2/CustomSaml2ResponseAuthenticationConverter.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.saml2; +package stirling.software.proprietary.security.saml2; import java.util.ArrayList; import java.util.HashMap; @@ -17,8 +17,8 @@ import org.springframework.core.convert.converter.Converter; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.saml2.provider.service.authentication.OpenSaml4AuthenticationProvider.ResponseToken; import org.springframework.security.saml2.provider.service.authentication.Saml2Authentication; -import stirling.software.enterprise.security.model.User; -import stirling.software.enterprise.security.service.UserService; +import stirling.software.proprietary.security.model.User; +import stirling.software.proprietary.security.service.UserService; @Slf4j @ConditionalOnProperty(name = "security.saml2.enabled", havingValue = "true") diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/saml2/SAML2Configuration.java b/proprietary/src/main/java/stirling/software/proprietary/security/saml2/SAML2Configuration.java similarity index 99% rename from enterprise/src/main/java/stirling/software/enterprise/security/saml2/SAML2Configuration.java rename to proprietary/src/main/java/stirling/software/proprietary/security/saml2/SAML2Configuration.java index af5fa80f0..8482b8753 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/saml2/SAML2Configuration.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/saml2/SAML2Configuration.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.saml2; +package stirling.software.proprietary.security.saml2; import jakarta.servlet.http.HttpServletRequest; import java.security.cert.X509Certificate; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/service/AppUpdateAuthService.java b/proprietary/src/main/java/stirling/software/proprietary/security/service/AppUpdateAuthService.java similarity index 88% rename from enterprise/src/main/java/stirling/software/enterprise/security/service/AppUpdateAuthService.java rename to proprietary/src/main/java/stirling/software/proprietary/security/service/AppUpdateAuthService.java index 817271228..5687a3b92 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/service/AppUpdateAuthService.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/service/AppUpdateAuthService.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.service; +package stirling.software.proprietary.security.service; import java.util.Optional; import lombok.RequiredArgsConstructor; @@ -7,8 +7,8 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; import stirling.software.common.configuration.interfaces.ShowAdminInterface; import stirling.software.common.model.ApplicationProperties; -import stirling.software.enterprise.security.database.repository.UserRepository; -import stirling.software.enterprise.security.model.User; +import stirling.software.proprietary.security.database.repository.UserRepository; +import stirling.software.proprietary.security.model.User; @Service @RequiredArgsConstructor diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/service/CustomOAuth2UserService.java b/proprietary/src/main/java/stirling/software/proprietary/security/service/CustomOAuth2UserService.java similarity index 96% rename from enterprise/src/main/java/stirling/software/enterprise/security/service/CustomOAuth2UserService.java rename to proprietary/src/main/java/stirling/software/proprietary/security/service/CustomOAuth2UserService.java index 954063ebb..b889a06e5 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/service/CustomOAuth2UserService.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/service/CustomOAuth2UserService.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.service; +package stirling.software.proprietary.security.service; import java.util.Optional; import lombok.extern.slf4j.Slf4j; @@ -13,7 +13,7 @@ import org.springframework.security.oauth2.core.oidc.user.OidcUser; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.ApplicationProperties.Security.OAUTH2; import stirling.software.common.model.enumeration.UsernameAttribute; -import stirling.software.enterprise.security.model.User; +import stirling.software.proprietary.security.model.User; @Slf4j public class CustomOAuth2UserService implements OAuth2UserService { diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/service/CustomUserDetailsService.java b/proprietary/src/main/java/stirling/software/proprietary/security/service/CustomUserDetailsService.java similarity index 89% rename from enterprise/src/main/java/stirling/software/enterprise/security/service/CustomUserDetailsService.java rename to proprietary/src/main/java/stirling/software/proprietary/security/service/CustomUserDetailsService.java index faeb941aa..014666971 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/service/CustomUserDetailsService.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/service/CustomUserDetailsService.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.service; +package stirling.software.proprietary.security.service; import java.util.Collection; import java.util.Set; @@ -10,9 +10,9 @@ import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; -import stirling.software.enterprise.security.database.repository.UserRepository; -import stirling.software.enterprise.security.model.Authority; -import stirling.software.enterprise.security.model.User; +import stirling.software.proprietary.security.database.repository.UserRepository; +import stirling.software.proprietary.security.model.Authority; +import stirling.software.proprietary.security.model.User; @Service @RequiredArgsConstructor diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/service/DatabaseService.java b/proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseService.java similarity index 99% rename from enterprise/src/main/java/stirling/software/enterprise/security/service/DatabaseService.java rename to proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseService.java index e878f9e15..e93275819 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/service/DatabaseService.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseService.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.service; +package stirling.software.proprietary.security.service; import java.io.IOException; import java.nio.file.DirectoryStream; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/service/DatabaseServiceInterface.java b/proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseServiceInterface.java similarity index 87% rename from enterprise/src/main/java/stirling/software/enterprise/security/service/DatabaseServiceInterface.java rename to proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseServiceInterface.java index 004b1a6e4..613432f0a 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/service/DatabaseServiceInterface.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseServiceInterface.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.service; +package stirling.software.proprietary.security.service; import java.sql.SQLException; import java.util.List; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/service/LoginAttemptService.java b/proprietary/src/main/java/stirling/software/proprietary/security/service/LoginAttemptService.java similarity index 95% rename from enterprise/src/main/java/stirling/software/enterprise/security/service/LoginAttemptService.java rename to proprietary/src/main/java/stirling/software/proprietary/security/service/LoginAttemptService.java index 5114fe8ce..852fc8ab9 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/service/LoginAttemptService.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/service/LoginAttemptService.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.service; +package stirling.software.proprietary.security.service; import jakarta.annotation.PostConstruct; import java.util.concurrent.ConcurrentHashMap; @@ -7,7 +7,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import stirling.software.common.model.ApplicationProperties; -import stirling.software.enterprise.security.model.AttemptCounter; +import stirling.software.proprietary.security.model.AttemptCounter; @Service @Slf4j diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/service/UserService.java b/proprietary/src/main/java/stirling/software/proprietary/security/service/UserService.java similarity index 96% rename from enterprise/src/main/java/stirling/software/enterprise/security/service/UserService.java rename to proprietary/src/main/java/stirling/software/proprietary/security/service/UserService.java index 4c39eb5c8..7bf3e2643 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/service/UserService.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/service/UserService.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.service; +package stirling.software.proprietary.security.service; import java.io.IOException; import java.sql.SQLException; @@ -28,14 +28,14 @@ import org.springframework.transaction.annotation.Transactional; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.exception.UnsupportedProviderException; import stirling.software.common.service.UserServiceInterface; -import stirling.software.enterprise.security.database.repository.AuthorityRepository; -import stirling.software.enterprise.security.database.repository.UserRepository; -import stirling.software.enterprise.security.model.AuthenticationType; -import stirling.software.enterprise.security.model.Authority; import stirling.software.common.model.enumeration.Role; -import stirling.software.enterprise.security.model.User; -import stirling.software.enterprise.security.saml2.CustomSaml2AuthenticatedPrincipal; -import stirling.software.enterprise.security.session.SessionPersistentRegistry; +import stirling.software.proprietary.security.database.repository.AuthorityRepository; +import stirling.software.proprietary.security.database.repository.UserRepository; +import stirling.software.proprietary.security.model.AuthenticationType; +import stirling.software.proprietary.security.model.Authority; +import stirling.software.proprietary.security.model.User; +import stirling.software.proprietary.security.saml2.CustomSaml2AuthenticatedPrincipal; +import stirling.software.proprietary.security.session.SessionPersistentRegistry; @Service @Slf4j @@ -302,7 +302,6 @@ public class UserService implements UserServiceInterface { public void changeUsername(User user, String newUsername) throws IllegalArgumentException, - IOException, SQLException, UnsupportedProviderException { if (!isUsernameValid(newUsername)) { @@ -414,7 +413,7 @@ public class UserService implements UserServiceInterface { if (principal instanceof UserDetails detailsUser) { return detailsUser.getUsername(); - } else if (principal instanceof stirling.software.enterprise.security.model.User domainUser) { + } else if (principal instanceof User domainUser) { return domainUser.getUsername(); } else if (principal instanceof OAuth2User oAuth2User) { return oAuth2User.getAttribute(oAuth2.getUseAsUsername()); diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/session/CustomHttpSessionListener.java b/proprietary/src/main/java/stirling/software/proprietary/security/session/CustomHttpSessionListener.java similarity index 92% rename from enterprise/src/main/java/stirling/software/enterprise/security/session/CustomHttpSessionListener.java rename to proprietary/src/main/java/stirling/software/proprietary/security/session/CustomHttpSessionListener.java index 17d72f6c0..7ed0f6506 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/session/CustomHttpSessionListener.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/session/CustomHttpSessionListener.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.session; +package stirling.software.proprietary.security.session; import jakarta.servlet.http.HttpSessionEvent; import jakarta.servlet.http.HttpSessionListener; diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/session/SessionPersistentRegistry.java b/proprietary/src/main/java/stirling/software/proprietary/security/session/SessionPersistentRegistry.java similarity index 96% rename from enterprise/src/main/java/stirling/software/enterprise/security/session/SessionPersistentRegistry.java rename to proprietary/src/main/java/stirling/software/proprietary/security/session/SessionPersistentRegistry.java index a51b66dc8..5d482e94d 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/session/SessionPersistentRegistry.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/session/SessionPersistentRegistry.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.session; +package stirling.software.proprietary.security.session; import jakarta.transaction.Transactional; import java.time.Duration; @@ -15,9 +15,9 @@ import org.springframework.security.core.session.SessionRegistry; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.oauth2.core.user.OAuth2User; import org.springframework.stereotype.Component; -import stirling.software.enterprise.security.database.repository.SessionRepository; -import stirling.software.enterprise.security.model.SessionEntity; -import stirling.software.enterprise.security.saml2.CustomSaml2AuthenticatedPrincipal; +import stirling.software.proprietary.security.database.repository.SessionRepository; +import stirling.software.proprietary.security.model.SessionEntity; +import stirling.software.proprietary.security.saml2.CustomSaml2AuthenticatedPrincipal; @Component @RequiredArgsConstructor diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/session/SessionRegistryConfig.java b/proprietary/src/main/java/stirling/software/proprietary/security/session/SessionRegistryConfig.java similarity index 79% rename from enterprise/src/main/java/stirling/software/enterprise/security/session/SessionRegistryConfig.java rename to proprietary/src/main/java/stirling/software/proprietary/security/session/SessionRegistryConfig.java index c9efb9309..75afbea9b 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/session/SessionRegistryConfig.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/session/SessionRegistryConfig.java @@ -1,9 +1,9 @@ -package stirling.software.enterprise.security.session; +package stirling.software.proprietary.security.session; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.core.session.SessionRegistryImpl; -import stirling.software.enterprise.security.database.repository.SessionRepository; +import stirling.software.proprietary.security.database.repository.SessionRepository; @Configuration public class SessionRegistryConfig { diff --git a/enterprise/src/main/java/stirling/software/enterprise/security/session/SessionScheduled.java b/proprietary/src/main/java/stirling/software/proprietary/security/session/SessionScheduled.java similarity index 96% rename from enterprise/src/main/java/stirling/software/enterprise/security/session/SessionScheduled.java rename to proprietary/src/main/java/stirling/software/proprietary/security/session/SessionScheduled.java index 7dd54f358..83403f9f7 100644 --- a/enterprise/src/main/java/stirling/software/enterprise/security/session/SessionScheduled.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/session/SessionScheduled.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.session; +package stirling.software.proprietary.security.session; import java.time.Instant; import java.time.temporal.ChronoUnit; diff --git a/enterprise/src/test/java/stirling/software/enterprise/security/CustomLogoutSuccessHandlerTest.java b/proprietary/src/test/java/stirling/software/proprietary/security/CustomLogoutSuccessHandlerTest.java similarity index 99% rename from enterprise/src/test/java/stirling/software/enterprise/security/CustomLogoutSuccessHandlerTest.java rename to proprietary/src/test/java/stirling/software/proprietary/security/CustomLogoutSuccessHandlerTest.java index 1bc968b27..a5abd6be5 100644 --- a/enterprise/src/test/java/stirling/software/enterprise/security/CustomLogoutSuccessHandlerTest.java +++ b/proprietary/src/test/java/stirling/software/proprietary/security/CustomLogoutSuccessHandlerTest.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security; +package stirling.software.proprietary.security; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; diff --git a/enterprise/src/test/java/stirling/software/enterprise/security/configuration/DatabaseConfigTest.java b/proprietary/src/test/java/stirling/software/proprietary/security/configuration/DatabaseConfigTest.java similarity index 98% rename from enterprise/src/test/java/stirling/software/enterprise/security/configuration/DatabaseConfigTest.java rename to proprietary/src/test/java/stirling/software/proprietary/security/configuration/DatabaseConfigTest.java index 02a49f9ad..54bc01991 100644 --- a/enterprise/src/test/java/stirling/software/enterprise/security/configuration/DatabaseConfigTest.java +++ b/proprietary/src/test/java/stirling/software/proprietary/security/configuration/DatabaseConfigTest.java @@ -1,4 +1,4 @@ -package stirling.software.enterprise.security.configuration; +package stirling.software.proprietary.security.configuration; import javax.sql.DataSource; import org.junit.jupiter.api.BeforeEach; diff --git a/scripts/download-security-jar.sh b/scripts/download-security-jar.sh index df03bf1d0..8c5c9122b 100644 --- a/scripts/download-security-jar.sh +++ b/scripts/download-security-jar.sh @@ -1,6 +1,6 @@ -echo "Running Stirling PDF with DOCKER_ENABLE_SECURITY=${DOCKER_ENABLE_SECURITY} and VERSION_TAG=${VERSION_TAG}" -# Check for DOCKER_ENABLE_SECURITY and download the appropriate JAR if required -if [ "$DOCKER_ENABLE_SECURITY" = "true" ] && [ "$VERSION_TAG" != "alpha" ]; then +echo "Running Stirling PDF with ADDITIONAL_FEATURES=${ADDITIONAL_FEATURES} and VERSION_TAG=${VERSION_TAG}" +# Check for ADDITIONAL_FEATURES and download the appropriate JAR if required +if [ "$ADDITIONAL_FEATURES" = "true" ] && [ "$VERSION_TAG" != "alpha" ]; then if [ ! -f app-security.jar ]; then echo "Trying to download from: https://files.stirlingpdf.com/v$VERSION_TAG/Stirling-PDF-with-login.jar" curl -L -o app-security.jar https://files.stirlingpdf.com/v$VERSION_TAG/Stirling-PDF-with-login.jar diff --git a/settings.gradle b/settings.gradle index 4c2ec534d..15b78c826 100644 --- a/settings.gradle +++ b/settings.gradle @@ -4,8 +4,8 @@ plugins { } rootProject.name = 'Stirling-PDF' -include 'common', 'enterprise' +include 'common' -//if (System.getenv('DOCKER_ENABLE_SECURITY') == 'true') { -// include 'enterprise' -//} +if (System.getenv('ADDITIONAL_FEATURES') == 'true') { + include 'proprietary' +} diff --git a/src/main/java/stirling/software/SPDF/EE/configuration/KeygenLicenseVerifier.java b/src/main/java/stirling/software/SPDF/EE/configuration/KeygenLicenseVerifier.java index 361e62780..1928d5657 100644 --- a/src/main/java/stirling/software/SPDF/EE/configuration/KeygenLicenseVerifier.java +++ b/src/main/java/stirling/software/SPDF/EE/configuration/KeygenLicenseVerifier.java @@ -20,7 +20,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.common.model.ApplicationProperties; -import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.GeneralUtil; @Service @Slf4j @@ -586,6 +586,6 @@ public class KeygenLicenseVerifier { } private String generateMachineFingerprint() { - return GeneralUtils.generateMachineFingerprint(); + return GeneralUtil.generateMachineFingerprint(); } } diff --git a/src/main/java/stirling/software/SPDF/EE/configuration/LicenseKeyChecker.java b/src/main/java/stirling/software/SPDF/EE/configuration/LicenseKeyChecker.java index 0ff94fbe8..c90373411 100644 --- a/src/main/java/stirling/software/SPDF/EE/configuration/LicenseKeyChecker.java +++ b/src/main/java/stirling/software/SPDF/EE/configuration/LicenseKeyChecker.java @@ -12,7 +12,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.EE.configuration.KeygenLicenseVerifier.License; import stirling.software.common.model.ApplicationProperties; -import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.GeneralUtil; @Slf4j @Component @@ -88,7 +88,7 @@ public class LicenseKeyChecker { public void updateLicenseKey(String newKey) throws IOException { applicationProperties.getPremium().setKey(newKey); - GeneralUtils.saveKeyToSettings("EnterpriseEdition.key", newKey); + GeneralUtil.saveKeyToSettings("EnterpriseEdition.key", newKey); checkLicense(); } diff --git a/src/main/java/stirling/software/SPDF/SPDFApplication.java b/src/main/java/stirling/software/SPDF/SPDFApplication.java index bf155724f..dd7a7a3bc 100644 --- a/src/main/java/stirling/software/SPDF/SPDFApplication.java +++ b/src/main/java/stirling/software/SPDF/SPDFApplication.java @@ -38,8 +38,8 @@ import stirling.software.common.util.UrlUtils; scanBasePackages = { "stirling.software.SPDF", "stirling.software.common", - "stirling.software.enterprise", - "stirling.software.enterprise.configuration" + "stirling.software.proprietary", + "stirling.software.proprietary.configuration" }, exclude = { DataSourceAutoConfiguration.class, diff --git a/src/main/java/stirling/software/SPDF/config/InitialSetup.java b/src/main/java/stirling/software/SPDF/config/InitialSetup.java index d61e2ca6c..8722a2c5f 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.common.model.ApplicationProperties; -import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.GeneralUtil; @Component @Slf4j @@ -39,31 +39,31 @@ public class InitialSetup { public void initUUIDKey() throws IOException { String uuid = applicationProperties.getAutomaticallyGenerated().getUUID(); - if (!GeneralUtils.isValidUUID(uuid)) { + if (!GeneralUtil.isValidUUID(uuid)) { // Generating a random UUID as the secret key uuid = UUID.randomUUID().toString(); - GeneralUtils.saveKeyToSettings("AutomaticallyGenerated.UUID", uuid); + GeneralUtil.saveKeyToSettings("AutomaticallyGenerated.UUID", uuid); applicationProperties.getAutomaticallyGenerated().setUUID(uuid); } } public void initSecretKey() throws IOException { String secretKey = applicationProperties.getAutomaticallyGenerated().getKey(); - if (!GeneralUtils.isValidUUID(secretKey)) { + if (!GeneralUtil.isValidUUID(secretKey)) { // Generating a random UUID as the secret key secretKey = UUID.randomUUID().toString(); - GeneralUtils.saveKeyToSettings("AutomaticallyGenerated.key", secretKey); + GeneralUtil.saveKeyToSettings("AutomaticallyGenerated.key", secretKey); applicationProperties.getAutomaticallyGenerated().setKey(secretKey); } } public void initEnableCSRFSecurity() throws IOException { - if (GeneralUtils.isVersionHigher( + if (GeneralUtil.isVersionHigher( "0.36.0", applicationProperties.getAutomaticallyGenerated().getAppVersion())) { Boolean csrf = applicationProperties.getSecurity().getCsrfDisabled(); if (!csrf) { - GeneralUtils.saveKeyToSettings("security.csrfDisabled", false); - GeneralUtils.saveKeyToSettings("system.enableAnalytics", true); + GeneralUtil.saveKeyToSettings("security.csrfDisabled", false); + GeneralUtil.saveKeyToSettings("system.enableAnalytics", true); applicationProperties.getSecurity().setCsrfDisabled(false); } } @@ -74,14 +74,14 @@ public class InitialSetup { String termsUrl = applicationProperties.getLegal().getTermsAndConditions(); if (StringUtils.isEmpty(termsUrl)) { String defaultTermsUrl = "https://www.stirlingpdf.com/terms"; - GeneralUtils.saveKeyToSettings("legal.termsAndConditions", defaultTermsUrl); + GeneralUtil.saveKeyToSettings("legal.termsAndConditions", defaultTermsUrl); applicationProperties.getLegal().setTermsAndConditions(defaultTermsUrl); } // Initialize Privacy Policy String privacyUrl = applicationProperties.getLegal().getPrivacyPolicy(); if (StringUtils.isEmpty(privacyUrl)) { String defaultPrivacyUrl = "https://www.stirlingpdf.com/privacy-policy"; - GeneralUtils.saveKeyToSettings("legal.privacyPolicy", defaultPrivacyUrl); + GeneralUtil.saveKeyToSettings("legal.privacyPolicy", defaultPrivacyUrl); applicationProperties.getLegal().setPrivacyPolicy(defaultPrivacyUrl); } } @@ -95,7 +95,7 @@ public class InitialSetup { appVersion = props.getProperty("version"); } catch (Exception e) { } - GeneralUtils.saveKeyToSettings("AutomaticallyGenerated.appVersion", appVersion); + GeneralUtil.saveKeyToSettings("AutomaticallyGenerated.appVersion", appVersion); applicationProperties.getAutomaticallyGenerated().setAppVersion(appVersion); } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/MergeController.java b/src/main/java/stirling/software/SPDF/controller/api/MergeController.java index 4e554bec6..a2c0dfb71 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/MergeController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/MergeController.java @@ -33,7 +33,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.general.MergePdfsRequest; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.GeneralUtil; import stirling.software.common.util.WebResponseUtils; @RestController @@ -137,7 +137,7 @@ public class MergeController { for (MultipartFile multipartFile : files) { totalSize += multipartFile.getSize(); File tempFile = - GeneralUtils.convertMultipartFileToFile( + GeneralUtil.convertMultipartFileToFile( multipartFile); // Convert MultipartFile to File filesToDelete.add(tempFile); // Add temp file to the list for later deletion mergerUtility.addSource(tempFile); // Add source file to the merger utility diff --git a/src/main/java/stirling/software/SPDF/controller/api/PdfOverlayController.java b/src/main/java/stirling/software/SPDF/controller/api/PdfOverlayController.java index e6fc2c561..c725563b3 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/PdfOverlayController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/PdfOverlayController.java @@ -28,7 +28,7 @@ import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.general.OverlayPdfsRequest; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.GeneralUtil; import stirling.software.common.util.WebResponseUtils; @RestController @@ -56,7 +56,7 @@ public class PdfOverlayController { try { for (int i = 0; i < overlayFiles.length; i++) { - overlayPdfFiles[i] = GeneralUtils.multipartToFile(overlayFiles[i]); + overlayPdfFiles[i] = GeneralUtil.multipartToFile(overlayFiles[i]); } String mode = request.getOverlayMode(); // "SequentialOverlay", "InterleavedOverlay", diff --git a/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java b/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java index 3bf2ec802..356a8490f 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java @@ -25,7 +25,7 @@ import stirling.software.SPDF.model.SortTypes; import stirling.software.SPDF.model.api.PDFWithPageNums; import stirling.software.SPDF.model.api.general.RearrangePagesRequest; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.GeneralUtil; import stirling.software.common.util.WebResponseUtils; @RestController @@ -56,7 +56,7 @@ public class RearrangePagesPDFController { String[] pageOrderArr = pagesToDelete.split(","); List pagesToRemove = - GeneralUtils.parsePageList(pageOrderArr, document.getNumberOfPages(), false); + GeneralUtil.parsePageList(pageOrderArr, document.getNumberOfPages(), false); Collections.sort(pagesToRemove); @@ -262,7 +262,7 @@ public class RearrangePagesPDFController { && !"custom".equals(sortType.toLowerCase())) { newPageOrder = processSortTypes(sortType, totalPages, pageOrder); } else { - newPageOrder = GeneralUtils.parsePageList(pageOrderArr, totalPages, false); + newPageOrder = GeneralUtil.parsePageList(pageOrderArr, totalPages, false); } log.info("newPageOrder = " + newPageOrder); log.info("totalPages = " + totalPages); 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 0e9cd96dc..13ee8545f 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java @@ -19,7 +19,7 @@ import lombok.RequiredArgsConstructor; import stirling.software.SPDF.config.EndpointConfiguration; import stirling.software.common.configuration.InstallationPathConfig; import stirling.software.common.model.ApplicationProperties; -import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.GeneralUtil; @Controller @Tag(name = "Settings", description = "Settings APIs") @@ -40,7 +40,7 @@ public class SettingsController { "Setting has already been set, To adjust please edit " + InstallationPathConfig.getSettingsPath()); } - GeneralUtils.saveKeyToSettings("system.enableAnalytics", enabled); + GeneralUtil.saveKeyToSettings("system.enableAnalytics", enabled); applicationProperties.getSystem().setEnableAnalytics(enabled); return ResponseEntity.ok("Updated"); } diff --git a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java index 3df62816f..2b1ffa6e3 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java @@ -26,7 +26,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.general.SplitPdfBySizeOrCountRequest; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.GeneralUtil; import stirling.software.common.util.WebResponseUtils; @RestController @@ -81,7 +81,7 @@ public class SplitPdfBySizeController { if (type == 0) { log.debug("Processing split by size"); - long maxBytes = GeneralUtils.convertSizeToBytes(value); + long maxBytes = GeneralUtil.convertSizeToBytes(value); log.debug("Max bytes per document: {}", maxBytes); handleSplitBySize(sourceDocument, maxBytes, zipOut, filename); } else if (type == 1) { diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java index 3bdcd81e4..2918669a7 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java @@ -34,7 +34,7 @@ import stirling.software.SPDF.model.api.converters.ConvertToImageRequest; import stirling.software.SPDF.model.api.converters.ConvertToPdfRequest; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.CheckProgramInstall; -import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.GeneralUtil; import stirling.software.common.util.PdfUtils; import stirling.software.common.util.ProcessExecutor; import stirling.software.common.util.ProcessExecutor.ProcessExecutorResult; @@ -251,7 +251,7 @@ public class ConvertImgPDFController { // Load the input PDF PDDocument document = pdfDocumentFactory.load(pdfFile); int totalPages = document.getNumberOfPages(); - List newPageOrder = GeneralUtils.parsePageList(pageOrderArr, totalPages, false); + List newPageOrder = GeneralUtil.parsePageList(pageOrderArr, totalPages, false); // Create a new list to hold the pages in the new order List newPages = new ArrayList<>(); 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 b16cc01d9..c57bf4213 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 @@ -23,7 +23,7 @@ import stirling.software.SPDF.model.api.converters.UrlToPdfRequest; import stirling.software.common.configuration.RuntimePathConfig; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.GeneralUtil; import stirling.software.common.util.ProcessExecutor; import stirling.software.common.util.ProcessExecutor.ProcessExecutorResult; import stirling.software.common.util.WebResponseUtils; @@ -53,12 +53,12 @@ public class ConvertWebsiteToPDF { throw new IllegalArgumentException("This endpoint has been disabled by the admin."); } // Validate the URL format - if (!URL.matches("^https?://.*") || !GeneralUtils.isValidURL(URL)) { + if (!URL.matches("^https?://.*") || !GeneralUtil.isValidURL(URL)) { throw new IllegalArgumentException("Invalid URL format provided."); } // validate the URL is reachable - if (!GeneralUtils.isURLReachable(URL)) { + if (!GeneralUtil.isURLReachable(URL)) { throw new IllegalArgumentException("URL is not reachable, please provide a valid URL."); } diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java index ead5933f6..c5f61ec1a 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java @@ -52,7 +52,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.EndpointConfiguration; import stirling.software.SPDF.model.api.misc.OptimizePdfRequest; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.GeneralUtil; import stirling.software.common.util.ProcessExecutor; import stirling.software.common.util.ProcessExecutor.ProcessExecutorResult; import stirling.software.common.util.WebResponseUtils; @@ -111,7 +111,7 @@ public class CompressController { scaleFactor, jpegQuality, convertToGrayscale, - GeneralUtils.formatBytes(originalFileSize)); + GeneralUtil.formatBytes(originalFileSize)); try (PDDocument doc = pdfDocumentFactory.load(pdfFile)) { // Find all unique images in the document @@ -145,8 +145,8 @@ public class CompressController { double overallReduction = 100.0 - ((compressedFileSize * 100.0) / originalFileSize); log.info( "Overall PDF compression: {} → {} (reduced by {}%)", - GeneralUtils.formatBytes(originalFileSize), - GeneralUtils.formatBytes(compressedFileSize), + GeneralUtil.formatBytes(originalFileSize), + GeneralUtil.formatBytes(compressedFileSize), String.format("%.1f", overallReduction)); return newCompressedPDF; } @@ -316,8 +316,8 @@ public class CompressController { log.info( "Image hash {}: Compressed from {} to {} (reduced by {}%)", imageHash, - GeneralUtils.formatBytes(originalSize), - GeneralUtils.formatBytes(compressedSize), + GeneralUtil.formatBytes(originalSize), + GeneralUtil.formatBytes(compressedSize), String.format("%.1f", reductionPercentage)); } else { log.info("Image hash {}: Not suitable for compression, skipping", imageHash); @@ -456,8 +456,8 @@ public class CompressController { stats.nestedImages); log.info( "Total original image size: {}, compressed: {} (reduced by {}%)", - GeneralUtils.formatBytes(stats.totalOriginalBytes), - GeneralUtils.formatBytes(stats.totalCompressedBytes), + GeneralUtil.formatBytes(stats.totalOriginalBytes), + GeneralUtil.formatBytes(stats.totalCompressedBytes), String.format("%.1f", overallImageReduction)); } @@ -673,7 +673,7 @@ public class CompressController { Long expectedOutputSize = 0L; boolean autoMode = false; if (expectedOutputSizeString != null && expectedOutputSizeString.length() > 1) { - expectedOutputSize = GeneralUtils.convertSizeToBytes(expectedOutputSizeString); + expectedOutputSize = GeneralUtil.convertSizeToBytes(expectedOutputSizeString); autoMode = true; } @@ -794,7 +794,7 @@ public class CompressController { throws IOException { long preQpdfSize = Files.size(currentFile); - log.info("Pre-QPDF file size: {}", GeneralUtils.formatBytes(preQpdfSize)); + log.info("Pre-QPDF file size: {}", GeneralUtil.formatBytes(preQpdfSize)); // Map optimization levels to QPDF compression levels int qpdfCompressionLevel; @@ -839,7 +839,7 @@ public class CompressController { double qpdfReduction = 100.0 - ((postQpdfSize * 100.0) / preQpdfSize); log.info( "Post-QPDF file size: {} (reduced by {}%)", - GeneralUtils.formatBytes(postQpdfSize), String.format("%.1f", qpdfReduction)); + GeneralUtil.formatBytes(postQpdfSize), String.format("%.1f", qpdfReduction)); } catch (Exception e) { if (returnCode != null && returnCode.getRc() != 3) { diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java index e3c19b1ac..6026a6b60 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java @@ -26,7 +26,7 @@ import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.misc.AddPageNumbersRequest; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.GeneralUtil; import stirling.software.common.util.WebResponseUtils; @RestController @@ -83,7 +83,7 @@ public class PageNumbersController { customText = "{n}"; } List pagesToNumberList = - GeneralUtils.parsePageList(pagesToNumber.split(","), document.getNumberOfPages()); + GeneralUtil.parsePageList(pagesToNumber.split(","), document.getNumberOfPages()); for (int i : pagesToNumberList) { PDPage page = document.getPage(i); diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java b/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java index 3281b3276..d34027a60 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java @@ -36,7 +36,7 @@ import stirling.software.SPDF.model.api.security.RedactPdfRequest; import stirling.software.SPDF.pdf.TextFinder; import stirling.software.common.model.api.security.RedactionArea; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.GeneralUtil; import stirling.software.common.util.PdfUtils; import stirling.software.common.util.WebResponseUtils; import stirling.software.common.util.propertyeditor.StringToArrayListPropertyEditor; @@ -185,8 +185,7 @@ public class RedactController { String pageNumbersInput = request.getPageNumbers(); String[] parsedPageNumbers = pageNumbersInput != null ? pageNumbersInput.split(",") : new String[0]; - List pageNumbers = - GeneralUtils.parsePageList(parsedPageNumbers, pagesCount, false); + List pageNumbers = GeneralUtil.parsePageList(parsedPageNumbers, pagesCount, false); Collections.sort(pageNumbers); return pageNumbers; } diff --git a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java index eb51d721a..139ff0b97 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java @@ -29,7 +29,7 @@ import stirling.software.SPDF.service.SignatureService; import stirling.software.common.configuration.InstallationPathConfig; import stirling.software.common.configuration.RuntimePathConfig; import stirling.software.common.service.UserServiceInterface; -import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.GeneralUtil; @Controller @Tag(name = "General", description = "General APIs") @@ -240,7 +240,7 @@ public class GeneralWebController { private List getFontNamesFromLocation(String locationPattern) { try { Resource[] resources = - GeneralUtils.getResourcesFromLocationPattern(locationPattern, resourceLoader); + GeneralUtil.getResourcesFromLocationPattern(locationPattern, resourceLoader); return Arrays.stream(resources) .map( resource -> { diff --git a/src/main/java/stirling/software/SPDF/model/api/PDFWithPageNums.java b/src/main/java/stirling/software/SPDF/model/api/PDFWithPageNums.java index 51f7da37e..273505a4e 100644 --- a/src/main/java/stirling/software/SPDF/model/api/PDFWithPageNums.java +++ b/src/main/java/stirling/software/SPDF/model/api/PDFWithPageNums.java @@ -12,7 +12,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import stirling.software.common.model.api.PDFFile; -import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.GeneralUtil; @Data @EqualsAndHashCode(callSuper = true) @@ -30,6 +30,6 @@ public class PDFWithPageNums extends PDFFile { @Hidden public List getPageNumbersList(PDDocument doc, boolean oneBased) { int pageCount = doc.getNumberOfPages(); - return GeneralUtils.parsePageList(pageNumbers, pageCount, oneBased); + return GeneralUtil.parsePageList(pageNumbers, pageCount, oneBased); } } diff --git a/src/main/java/stirling/software/SPDF/service/PostHogService.java b/src/main/java/stirling/software/SPDF/service/PostHogService.java index 647ed9a08..bfe2726c2 100644 --- a/src/main/java/stirling/software/SPDF/service/PostHogService.java +++ b/src/main/java/stirling/software/SPDF/service/PostHogService.java @@ -209,7 +209,7 @@ public class PostHogService { // New environment variables dockerMetrics.put("version_tag", System.getenv("VERSION_TAG")); - dockerMetrics.put("docker_enable_security", System.getenv("DOCKER_ENABLE_SECURITY")); + dockerMetrics.put("additional_features", System.getenv("ADDITIONAL_FEATURES")); dockerMetrics.put("fat_docker", System.getenv("FAT_DOCKER")); return dockerMetrics; diff --git a/testing/test.sh b/testing/test.sh index 5c4455dc2..62ba2aa7c 100644 --- a/testing/test.sh +++ b/testing/test.sh @@ -43,7 +43,7 @@ check_health() { capture_file_list() { local container_name=$1 local output_file=$2 - + echo "Capturing file list from $container_name..." # Get all files in one command, output directly from Docker to avoid path issues # Skip proc, sys, dev, and the specified LibreOffice config directory @@ -60,12 +60,12 @@ capture_file_list() { -not -path '*/tmp/lu*' \ -not -path '*/tmp/tmp*' \ 2>/dev/null | xargs -I{} sh -c 'stat -c \"%n %s %Y\" \"{}\" 2>/dev/null || true' | sort" > "$output_file" - + # Check if the output file has content if [ ! -s "$output_file" ]; then echo "WARNING: Failed to capture file list or container returned empty list" echo "Trying alternative approach..." - + # Alternative simpler approach - just get paths as a fallback docker exec $container_name sh -c "find / -type f \ -not -path '*/proc/*' \ @@ -79,14 +79,14 @@ capture_file_list() { -not -path '*/tmp/lu*' \ -not -path '*/tmp/tmp*' \ 2>/dev/null | sort" > "$output_file" - + if [ ! -s "$output_file" ]; then echo "ERROR: All attempts to capture file list failed" # Create a dummy entry to prevent diff errors echo "NO_FILES_FOUND 0 0" > "$output_file" fi fi - + echo "File list captured to $output_file" } @@ -96,24 +96,24 @@ compare_file_lists() { local after_file=$2 local diff_file=$3 local container_name=$4 # Added container_name parameter - + echo "Comparing file lists..." - + # Check if files exist and have content if [ ! -s "$before_file" ] || [ ! -s "$after_file" ]; then echo "WARNING: One or both file lists are empty." - + if [ ! -s "$before_file" ]; then echo "Before file is empty: $before_file" fi - + if [ ! -s "$after_file" ]; then echo "After file is empty: $after_file" fi - + # Create empty diff file > "$diff_file" - + # Check if we at least have the after file to look for temp files if [ -s "$after_file" ]; then echo "Checking for temp files in the after snapshot..." @@ -128,23 +128,23 @@ compare_file_lists() { echo "No temporary files found in the after snapshot." fi fi - + return 0 fi - + # Both files exist and have content, proceed with diff diff "$before_file" "$after_file" > "$diff_file" - + if [ -s "$diff_file" ]; then echo "Detected changes in files:" cat "$diff_file" - + # Extract only added files (lines starting with ">") grep "^>" "$diff_file" > "${diff_file}.added" || true if [ -s "${diff_file}.added" ]; then echo "New files created during test:" cat "${diff_file}.added" | sed 's/^> //' - + # Check for tmp files grep -i "tmp\|temp" "${diff_file}.added" > "${diff_file}.tmp" || true if [ -s "${diff_file}.tmp" ]; then @@ -155,7 +155,7 @@ compare_file_lists() { return 1 fi fi - + # Extract only removed files (lines starting with "<") grep "^<" "$diff_file" > "${diff_file}.removed" || true if [ -s "${diff_file}.removed" ]; then @@ -165,7 +165,7 @@ compare_file_lists() { else echo "No file changes detected during test." fi - + return 0 } @@ -214,7 +214,7 @@ main() { export DOCKER_CLI_EXPERIMENTAL=enabled export COMPOSE_DOCKER_CLI_BUILD=0 - export DOCKER_ENABLE_SECURITY=false + export ADDITIONAL_FEATURES=false # Run the gradlew build command and check if it fails if ! ./gradlew clean build; then echo "Gradle build failed with security disabled, exiting script." @@ -242,7 +242,7 @@ main() { # run_tests "Stirling-PDF" "./exampleYmlFiles/docker-compose-latest.yml" # docker-compose -f "./exampleYmlFiles/docker-compose-latest.yml" down - export DOCKER_ENABLE_SECURITY=true + export ADDITIONAL_FEATURES=true # Run the gradlew build command and check if it fails if ! ./gradlew clean build; then echo "Gradle build failed with security enabled, exiting script." @@ -282,27 +282,27 @@ main() { # Create directory for file snapshots if it doesn't exist SNAPSHOT_DIR="$PROJECT_ROOT/testing/file_snapshots" mkdir -p "$SNAPSHOT_DIR" - + # Capture file list before running behave tests BEFORE_FILE="$SNAPSHOT_DIR/files_before_behave.txt" AFTER_FILE="$SNAPSHOT_DIR/files_after_behave.txt" DIFF_FILE="$SNAPSHOT_DIR/files_diff.txt" - + # Define container name variable for consistency CONTAINER_NAME="Stirling-PDF-Security-Fat-with-login" - + capture_file_list "$CONTAINER_NAME" "$BEFORE_FILE" - + cd "testing/cucumber" if python -m behave; then # Wait 10 seconds before capturing the file list after tests echo "Waiting 5 seconds for any file operations to complete..." sleep 5 - + # Capture file list after running behave tests cd "$PROJECT_ROOT" capture_file_list "$CONTAINER_NAME" "$AFTER_FILE" - + # Compare file lists if compare_file_lists "$BEFORE_FILE" "$AFTER_FILE" "$DIFF_FILE" "$CONTAINER_NAME"; then echo "No unexpected temporary files found." @@ -311,19 +311,19 @@ main() { echo "WARNING: Unexpected temporary files detected after behave tests!" failed_tests+=("Stirling-PDF-Regression-Temp-Files") fi - + passed_tests+=("Stirling-PDF-Regression") else failed_tests+=("Stirling-PDF-Regression") echo "Printing docker logs of failed regression" docker logs "$CONTAINER_NAME" echo "Printed docker logs of failed regression" - + # Still capture file list after failure for analysis # Wait 10 seconds before capturing the file list echo "Waiting 5 seconds before capturing file list..." sleep 10 - + cd "$PROJECT_ROOT" capture_file_list "$CONTAINER_NAME" "$AFTER_FILE" compare_file_lists "$BEFORE_FILE" "$AFTER_FILE" "$DIFF_FILE" "$CONTAINER_NAME" @@ -372,4 +372,4 @@ main() { fi } -main \ No newline at end of file +main