From 884944527e81d987375f34f9c68ea75aac58bf79 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Sun, 12 Oct 2025 21:13:01 +0100 Subject: [PATCH] conflict fix again --- .../workflows/PR-Demo-Comment-with-react.yml | 12 ------------ .../common/model/ApplicationProperties.java | 7 ------- .../model/InputStreamTemplateResource.java | 2 -- .../model/ApplicationPropertiesLogicTest.java | 4 ++-- .../model/InputStreamTemplateResourceTest.java | 12 +++--------- .../stirling/software/SPDF/SPDFApplication.java | 1 + .../SPDF/controller/api/AnalysisController.java | 4 +++- .../api/BookletImpositionController.java | 5 ++++- .../api/EditTableOfContentsController.java | 10 ++++++---- .../SPDF/controller/api/MergeController.java | 17 ----------------- .../api/MultiPageLayoutController.java | 4 +++- .../api/SplitPdfByChaptersController.java | 4 +++- .../api/SplitPdfBySectionsController.java | 4 +++- .../api/SplitPdfBySizeController.java | 4 +++- .../controller/api/ToSinglePageController.java | 4 +++- .../api/converters/ConvertImgPDFController.java | 5 ++--- .../api/converters/ConvertOfficeController.java | 3 --- .../api/converters/ConvertPDFToHtml.java | 5 +---- .../api/converters/ConvertWebsiteToPDF.java | 3 --- .../api/filters/FilterController.java | 16 ++++++++++++---- .../api/misc/AutoSplitPdfController.java | 3 +-- .../api/misc/BlankPageController.java | 5 +---- .../api/misc/ExtractImageScansController.java | 9 ++++----- .../controller/api/misc/FlattenController.java | 5 +---- .../misc/ReplaceAndInvertColorController.java | 11 +++++------ .../api/misc/ScannerEffectController.java | 5 +---- .../api/security/CertSignController.java | 1 - .../api/security/RedactController.java | 3 --- .../api/security/SanitizeController.java | 2 -- .../controller/web/ConverterWebController.java | 9 --------- .../api/converters/ConvertPDFToMarkdown.java | 8 +------- .../api/ProprietaryUIDataController.java | 10 +++++----- .../security/InitialSecuritySetup.java | 4 ++-- .../security/config/AccountWebController.java | 7 +------ .../proprietary/security/model/Authority.java | 2 +- .../service/CustomUserDetailsService.java | 3 ++- 36 files changed, 74 insertions(+), 139 deletions(-) diff --git a/.github/workflows/PR-Demo-Comment-with-react.yml b/.github/workflows/PR-Demo-Comment-with-react.yml index 0f92abbcb..82f1e0140 100644 --- a/.github/workflows/PR-Demo-Comment-with-react.yml +++ b/.github/workflows/PR-Demo-Comment-with-react.yml @@ -45,11 +45,7 @@ jobs: egress-policy: audit - name: Checkout PR -<<<<<<< HEAD uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 -======= - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 ->>>>>>> refs/remotes/origin/V2 - name: Setup GitHub App Bot if: github.actor != 'dependabot[bot]' @@ -137,11 +133,7 @@ jobs: egress-policy: audit - name: Checkout PR -<<<<<<< HEAD uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 -======= - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 ->>>>>>> refs/remotes/origin/V2 - name: Setup GitHub App Bot if: github.actor != 'dependabot[bot]' @@ -153,11 +145,7 @@ jobs: private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} - name: Checkout PR -<<<<<<< HEAD uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 -======= - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 ->>>>>>> refs/remotes/origin/V2 with: ref: refs/pull/${{ needs.check-comment.outputs.pr_number }}/merge token: ${{ steps.setup-bot.outputs.token }} diff --git a/app/common/src/main/java/stirling/software/common/model/ApplicationProperties.java b/app/common/src/main/java/stirling/software/common/model/ApplicationProperties.java index 9830ccb7a..72af6dea5 100644 --- a/app/common/src/main/java/stirling/software/common/model/ApplicationProperties.java +++ b/app/common/src/main/java/stirling/software/common/model/ApplicationProperties.java @@ -303,18 +303,11 @@ public class ApplicationProperties { @Data public static class Jwt { -<<<<<<< HEAD - private boolean enabled = true; - private boolean keyCleanup = true; - private int keyRetentionDays = 7; - private Boolean secureCookie; -======= private boolean enableKeystore = true; private boolean enableKeyRotation = false; private boolean enableKeyCleanup = true; private int keyRetentionDays = 7; private boolean secureCookie; ->>>>>>> refs/remotes/origin/V2 } } diff --git a/app/common/src/main/java/stirling/software/common/model/InputStreamTemplateResource.java b/app/common/src/main/java/stirling/software/common/model/InputStreamTemplateResource.java index bc31f1d89..92d7418ea 100644 --- a/app/common/src/main/java/stirling/software/common/model/InputStreamTemplateResource.java +++ b/app/common/src/main/java/stirling/software/common/model/InputStreamTemplateResource.java @@ -4,8 +4,6 @@ package stirling.software.common.model; * This class will be removed when frontend migration to React is complete -import lombok.Getter; -import lombok.RequiredArgsConstructor; @RequiredArgsConstructor @Getter diff --git a/app/common/src/test/java/stirling/software/common/model/ApplicationPropertiesLogicTest.java b/app/common/src/test/java/stirling/software/common/model/ApplicationPropertiesLogicTest.java index d1dbd81c6..afd89489e 100644 --- a/app/common/src/test/java/stirling/software/common/model/ApplicationPropertiesLogicTest.java +++ b/app/common/src/test/java/stirling/software/common/model/ApplicationPropertiesLogicTest.java @@ -46,10 +46,10 @@ class ApplicationPropertiesLogicTest { assertEquals(expectedLibre, tfm.getLibreofficeDir()); tfm.setBaseTmpDir("/custom/base"); - assertEquals("/custom/base", normalize.apply(tfm.getBaseTmpDir())); + assertEquals(normalize.apply("/custom/base"), normalize.apply(tfm.getBaseTmpDir())); tfm.setLibreofficeDir("/opt/libre"); - assertEquals("/opt/libre", normalize.apply(tfm.getLibreofficeDir())); + assertEquals(normalize.apply("/opt/libre"), normalize.apply(tfm.getLibreofficeDir())); } @Test diff --git a/app/common/src/test/java/stirling/software/common/model/InputStreamTemplateResourceTest.java b/app/common/src/test/java/stirling/software/common/model/InputStreamTemplateResourceTest.java index 2ceabd2e0..6543c1763 100644 --- a/app/common/src/test/java/stirling/software/common/model/InputStreamTemplateResourceTest.java +++ b/app/common/src/test/java/stirling/software/common/model/InputStreamTemplateResourceTest.java @@ -1,15 +1,8 @@ package stirling.software.common.model; -import static org.junit.jupiter.api.Assertions.*; +/* Commented out - InputStreamTemplateResource class removed with Thymeleaf migration + * This test will be removed when frontend migration to React is complete -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.io.Reader; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.Arrays; - -import org.junit.jupiter.api.Test; public class InputStreamTemplateResourceTest { @@ -92,3 +85,4 @@ public class InputStreamTemplateResourceTest { assertFalse(resource.exists()); } } +*/ diff --git a/app/core/src/main/java/stirling/software/SPDF/SPDFApplication.java b/app/core/src/main/java/stirling/software/SPDF/SPDFApplication.java index 21771199a..4a05b4f15 100644 --- a/app/core/src/main/java/stirling/software/SPDF/SPDFApplication.java +++ b/app/core/src/main/java/stirling/software/SPDF/SPDFApplication.java @@ -25,6 +25,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.common.configuration.AppConfig; import stirling.software.common.configuration.ConfigInitializer; import stirling.software.common.configuration.InstallationPathConfig; +import stirling.software.common.model.ApplicationProperties; import stirling.software.common.util.UrlUtils; @Slf4j diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/AnalysisController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/AnalysisController.java index 34fa2955b..13f830b30 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/AnalysisController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/AnalysisController.java @@ -56,7 +56,9 @@ public class AnalysisController { } } - @AutoJobPostMapping(value = "/document-properties", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @AutoJobPostMapping( + value = "/document-properties", + consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @JsonDataResponse @Operation( summary = "Get PDF document properties", diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/BookletImpositionController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/BookletImpositionController.java index 49a065772..12bcdf411 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/BookletImpositionController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/BookletImpositionController.java @@ -13,6 +13,7 @@ import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject; import org.apache.pdfbox.util.Matrix; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; @@ -38,7 +39,9 @@ public class BookletImpositionController { private final CustomPDFDocumentFactory pdfDocumentFactory; - @AutoJobPostMapping(value = "/booklet-imposition", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @AutoJobPostMapping( + value = "/booklet-imposition", + consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @Operation( summary = "Create a booklet with proper page imposition", description = diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/EditTableOfContentsController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/EditTableOfContentsController.java index 8fe8ddb55..481ca16d6 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/EditTableOfContentsController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/EditTableOfContentsController.java @@ -14,11 +14,9 @@ import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlin import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; - import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; - import org.springframework.web.multipart.MultipartFile; import com.fasterxml.jackson.core.type.TypeReference; @@ -48,7 +46,9 @@ public class EditTableOfContentsController { private final CustomPDFDocumentFactory pdfDocumentFactory; private final ObjectMapper objectMapper; - @AutoJobPostMapping(value = "/extract-bookmarks", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @AutoJobPostMapping( + value = "/extract-bookmarks", + consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @JsonDataResponse @Operation( summary = "Extract PDF Bookmarks", @@ -157,7 +157,9 @@ public class EditTableOfContentsController { return bookmark; } - @AutoJobPostMapping(value = "/edit-table-of-contents", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @AutoJobPostMapping( + value = "/edit-table-of-contents", + consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @StandardPdfResponse @Operation( summary = "Edit Table of Contents", diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/MergeController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/MergeController.java index 847b3fe5b..89f1e6912 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/MergeController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/MergeController.java @@ -2,14 +2,7 @@ package stirling.software.SPDF.controller.api; import java.io.File; import java.io.IOException; -<<<<<<< HEAD import java.io.InputStream; -======= -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.nio.file.attribute.BasicFileAttributes; ->>>>>>> refs/remotes/origin/V2 import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; @@ -26,23 +19,13 @@ import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlin import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm; import org.apache.pdfbox.pdmodel.interactive.form.PDField; import org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField; -<<<<<<< HEAD import org.apache.xmpbox.XMPMetadata; import org.apache.xmpbox.schema.XMPBasicSchema; import org.apache.xmpbox.xml.DomXmpParser; -======= -import org.springframework.http.HttpStatus; ->>>>>>> refs/remotes/origin/V2 import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -<<<<<<< HEAD -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; -======= ->>>>>>> refs/remotes/origin/V2 import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/MultiPageLayoutController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/MultiPageLayoutController.java index 3e268b2e1..40301c63e 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/MultiPageLayoutController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/MultiPageLayoutController.java @@ -37,7 +37,9 @@ public class MultiPageLayoutController { private final CustomPDFDocumentFactory pdfDocumentFactory; - @AutoJobPostMapping(value = "/multi-page-layout", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @AutoJobPostMapping( + value = "/multi-page-layout", + consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @StandardPdfResponse @Operation( summary = "Merge multiple pages of a PDF document into a single page", diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java index 7f8ec2074..c17d6dcf1 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java @@ -114,7 +114,9 @@ public class SplitPdfByChaptersController { return bookmarks; } - @AutoJobPostMapping(value = "/split-pdf-by-chapters", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @AutoJobPostMapping( + value = "/split-pdf-by-chapters", + consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @MultiFileResponse @Operation( summary = "Split PDFs by Chapters", diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java index 18cbd5dd8..2b2253f86 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java @@ -46,7 +46,9 @@ public class SplitPdfBySectionsController { private final TempFileManager tempFileManager; private final PDFService pdfService; - @AutoJobPostMapping(value = "/split-pdf-by-sections", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @AutoJobPostMapping( + value = "/split-pdf-by-sections", + consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @MultiFileResponse @Operation( summary = "Split PDF pages into smaller sections", diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java index e60fa9f9b..8de9dac0d 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java @@ -38,7 +38,9 @@ public class SplitPdfBySizeController { private final CustomPDFDocumentFactory pdfDocumentFactory; private final TempFileManager tempFileManager; - @AutoJobPostMapping(value = "/split-by-size-or-count", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @AutoJobPostMapping( + value = "/split-by-size-or-count", + consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @MultiFileResponse @Operation( summary = "Auto split PDF pages into separate documents based on size or count", diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/ToSinglePageController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/ToSinglePageController.java index cdd41997d..fcf858f67 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/ToSinglePageController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/ToSinglePageController.java @@ -32,7 +32,9 @@ public class ToSinglePageController { private final CustomPDFDocumentFactory pdfDocumentFactory; - @AutoJobPostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE, value = "/pdf-to-single-page") + @AutoJobPostMapping( + consumes = MediaType.MULTIPART_FORM_DATA_VALUE, + value = "/pdf-to-single-page") @StandardPdfResponse @Operation( summary = "Convert a multi-page PDF into a single long page PDF", diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java index a5654f4b3..1174ff259 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java @@ -30,12 +30,12 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.EndpointConfiguration; +import stirling.software.SPDF.config.swagger.MultiFileResponse; +import stirling.software.SPDF.config.swagger.StandardPdfResponse; import stirling.software.SPDF.model.api.converters.ConvertCbrToPdfRequest; import stirling.software.SPDF.model.api.converters.ConvertCbzToPdfRequest; import stirling.software.SPDF.model.api.converters.ConvertPdfToCbrRequest; import stirling.software.SPDF.model.api.converters.ConvertPdfToCbzRequest; -import stirling.software.SPDF.config.swagger.MultiFileResponse; -import stirling.software.SPDF.config.swagger.StandardPdfResponse; import stirling.software.SPDF.model.api.converters.ConvertToImageRequest; import stirling.software.SPDF.model.api.converters.ConvertToPdfRequest; import stirling.software.common.annotations.AutoJobPostMapping; @@ -71,7 +71,6 @@ public class ConvertImgPDFController { return endpointConfiguration.isGroupEnabled("Ghostscript"); } - @AutoJobPostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE, value = "/pdf/img") @MultiFileResponse @Operation( diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java index d97bccf80..46ad437b3 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java @@ -23,12 +23,9 @@ import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -<<<<<<< HEAD import stirling.software.SPDF.config.EndpointConfiguration; -======= import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.annotations.api.ConvertApi; ->>>>>>> refs/remotes/origin/V2 import stirling.software.common.configuration.RuntimePathConfig; import stirling.software.common.model.api.GeneralFile; import stirling.software.common.service.CustomPDFDocumentFactory; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToHtml.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToHtml.java index 33735ab98..f6406ff25 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToHtml.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToHtml.java @@ -7,22 +7,19 @@ import org.springframework.web.multipart.MultipartFile; import io.swagger.v3.oas.annotations.Operation; -<<<<<<< HEAD import lombok.RequiredArgsConstructor; -======= import stirling.software.SPDF.config.swagger.HtmlConversionResponse; import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.annotations.api.ConvertApi; ->>>>>>> refs/remotes/origin/V2 import stirling.software.common.model.api.PDFFile; import stirling.software.common.util.PDFToFile; import stirling.software.common.util.TempFileManager; @ConvertApi +@RequiredArgsConstructor public class ConvertPDFToHtml { - private final TempFileManager tempFileManager; @AutoJobPostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE, value = "/pdf/html") diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java index 56f568661..76aa4afef 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java @@ -12,9 +12,6 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.support.ServletUriComponentsBuilder; import org.springframework.web.util.UriComponentsBuilder; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java index d609bba10..551d3121d 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java @@ -35,7 +35,9 @@ public class FilterController { private final CustomPDFDocumentFactory pdfDocumentFactory; - @AutoJobPostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE, value = "/filter-contains-text") + @AutoJobPostMapping( + consumes = MediaType.MULTIPART_FORM_DATA_VALUE, + value = "/filter-contains-text") @FilterResponse @Operation( summary = "Checks if a PDF contains set text, returns true if does", @@ -56,7 +58,9 @@ public class FilterController { } // TODO - @AutoJobPostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE, value = "/filter-contains-image") + @AutoJobPostMapping( + consumes = MediaType.MULTIPART_FORM_DATA_VALUE, + value = "/filter-contains-image") @FilterResponse @Operation( summary = "Checks if a PDF contains an image", @@ -73,7 +77,9 @@ public class FilterController { return null; } - @AutoJobPostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE, value = "/filter-page-count") + @AutoJobPostMapping( + consumes = MediaType.MULTIPART_FORM_DATA_VALUE, + value = "/filter-page-count") @FilterResponse @Operation( summary = "Checks if a PDF is greater, less or equal to a setPageCount", @@ -169,7 +175,9 @@ public class FilterController { return null; } - @AutoJobPostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE, value = "/filter-page-rotation") + @AutoJobPostMapping( + consumes = MediaType.MULTIPART_FORM_DATA_VALUE, + value = "/filter-page-rotation") @FilterResponse @Operation( summary = "Checks if a PDF is of a certain rotation", diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AutoSplitPdfController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AutoSplitPdfController.java index 250b2e543..0c1b1cc2e 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AutoSplitPdfController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AutoSplitPdfController.java @@ -31,10 +31,9 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.swagger.MultiFileResponse; import stirling.software.SPDF.model.api.misc.AutoSplitPdfRequest; -import stirling.software.common.model.ApplicationProperties; - import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.annotations.api.MiscApi; +import stirling.software.common.model.ApplicationProperties; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ApplicationContextProvider; import stirling.software.common.util.ExceptionUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java index 0768cd7ea..30a15797e 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java @@ -26,12 +26,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.RemoveBlankPagesRequest; -<<<<<<< HEAD -import stirling.software.common.model.ApplicationProperties; -======= import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.annotations.api.MiscApi; ->>>>>>> refs/remotes/origin/V2 +import stirling.software.common.model.ApplicationProperties; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ApplicationContextProvider; import stirling.software.common.util.ExceptionUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java index 91e68971c..15fc9cd56 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java @@ -29,12 +29,9 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.swagger.MultiFileResponse; import stirling.software.SPDF.model.api.misc.ExtractImageScansRequest; - -import stirling.software.common.model.ApplicationProperties; - import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.annotations.api.MiscApi; - +import stirling.software.common.model.ApplicationProperties; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ApplicationContextProvider; import stirling.software.common.util.CheckProgramInstall; @@ -53,7 +50,9 @@ public class ExtractImageScansController { private final CustomPDFDocumentFactory pdfDocumentFactory; - @AutoJobPostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE, value = "/extract-image-scans") + @AutoJobPostMapping( + consumes = MediaType.MULTIPART_FORM_DATA_VALUE, + value = "/extract-image-scans") @MultiFileResponse @Operation( summary = "Extract image scans from an input file", diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/FlattenController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/FlattenController.java index 53664b08f..f0211c265 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/FlattenController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/FlattenController.java @@ -24,12 +24,9 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.swagger.StandardPdfResponse; import stirling.software.SPDF.model.api.misc.FlattenRequest; -<<<<<<< HEAD -import stirling.software.common.model.ApplicationProperties; -======= import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.annotations.api.MiscApi; ->>>>>>> refs/remotes/origin/V2 +import stirling.software.common.model.ApplicationProperties; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ApplicationContextProvider; import stirling.software.common.util.ExceptionUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ReplaceAndInvertColorController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ReplaceAndInvertColorController.java index 241f9a166..72820acb9 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ReplaceAndInvertColorController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ReplaceAndInvertColorController.java @@ -13,13 +13,10 @@ import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.misc.ReplaceAndInvertColorRequest; import stirling.software.SPDF.service.misc.ReplaceAndInvertColorService; -<<<<<<< HEAD -import stirling.software.common.util.GeneralUtils; -import stirling.software.common.util.WebResponseUtils; -======= import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.annotations.api.MiscApi; ->>>>>>> refs/remotes/origin/V2 +import stirling.software.common.util.GeneralUtils; +import stirling.software.common.util.WebResponseUtils; @MiscApi @RequiredArgsConstructor @@ -27,7 +24,9 @@ public class ReplaceAndInvertColorController { private final ReplaceAndInvertColorService replaceAndInvertColorService; - @AutoJobPostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE, value = "/replace-invert-pdf") + @AutoJobPostMapping( + consumes = MediaType.MULTIPART_FORM_DATA_VALUE, + value = "/replace-invert-pdf") @Operation( summary = "Replace-Invert Color PDF", description = diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ScannerEffectController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ScannerEffectController.java index 2997b74c7..c4599dcae 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ScannerEffectController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ScannerEffectController.java @@ -29,12 +29,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.ScannerEffectRequest; -<<<<<<< HEAD -import stirling.software.common.model.ApplicationProperties; -======= import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.annotations.api.MiscApi; ->>>>>>> refs/remotes/origin/V2 +import stirling.software.common.model.ApplicationProperties; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ApplicationContextProvider; import stirling.software.common.util.ExceptionUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java index 259251c64..3b27492a6 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java @@ -59,7 +59,6 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.*; - import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java index 0a76e0f65..a7153cf84 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java @@ -54,14 +54,11 @@ import stirling.software.SPDF.model.PDFText; import stirling.software.SPDF.model.api.security.ManualRedactPdfRequest; import stirling.software.SPDF.model.api.security.RedactPdfRequest; import stirling.software.SPDF.pdf.TextFinder; -<<<<<<< HEAD import stirling.software.SPDF.utils.text.TextEncodingHelper; import stirling.software.SPDF.utils.text.TextFinderUtils; import stirling.software.SPDF.utils.text.WidthCalculator; -======= import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.annotations.api.SecurityApi; ->>>>>>> refs/remotes/origin/V2 import stirling.software.common.model.api.security.RedactionArea; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.GeneralUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/SanitizeController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/SanitizeController.java index 76538c4e1..a2cacce53 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/SanitizeController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/SanitizeController.java @@ -43,7 +43,6 @@ import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.GeneralUtils; import stirling.software.common.util.WebResponseUtils; - @Slf4j @SecurityApi @RequiredArgsConstructor @@ -51,7 +50,6 @@ public class SanitizeController { private final CustomPDFDocumentFactory pdfDocumentFactory; - @AutoJobPostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE, value = "/sanitize-pdf") @StandardPdfResponse @Operation( diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java b/app/core/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java index 0b862b158..c14d1ef56 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java @@ -1,16 +1,8 @@ package stirling.software.SPDF.controller.web; -<<<<<<< HEAD import org.springframework.http.HttpStatus; -import org.springframework.stereotype.Controller; -======= ->>>>>>> refs/remotes/origin/V2 import org.springframework.ui.Model; -<<<<<<< HEAD -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.server.ResponseStatusException; -======= ->>>>>>> refs/remotes/origin/V2 import org.springframework.web.servlet.ModelAndView; import io.swagger.v3.oas.annotations.Hidden; @@ -33,7 +25,6 @@ public class ConverterWebController { return "convert/img-to-pdf"; } - @Deprecated // @GetMapping("/cbz-to-pdf") @Hidden diff --git a/app/core/src/main/java/stirling/software/SPDF/model/api/converters/ConvertPDFToMarkdown.java b/app/core/src/main/java/stirling/software/SPDF/model/api/converters/ConvertPDFToMarkdown.java index c1e08c359..5b820e607 100644 --- a/app/core/src/main/java/stirling/software/SPDF/model/api/converters/ConvertPDFToMarkdown.java +++ b/app/core/src/main/java/stirling/software/SPDF/model/api/converters/ConvertPDFToMarkdown.java @@ -3,20 +3,15 @@ package stirling.software.SPDF.model.api.converters; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -<<<<<<< HEAD import lombok.RequiredArgsConstructor; -======= import stirling.software.SPDF.config.swagger.MarkdownConversionResponse; import stirling.software.common.annotations.AutoJobPostMapping; ->>>>>>> refs/remotes/origin/V2 +import stirling.software.common.annotations.api.ConvertApi; import stirling.software.common.model.api.PDFFile; import stirling.software.common.util.PDFToFile; import stirling.software.common.util.TempFileManager; @@ -27,7 +22,6 @@ public class ConvertPDFToMarkdown { private final TempFileManager tempFileManager; - @AutoJobPostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE, value = "/pdf/markdown") @MarkdownConversionResponse @Operation( diff --git a/app/proprietary/src/main/java/stirling/software/proprietary/controller/api/ProprietaryUIDataController.java b/app/proprietary/src/main/java/stirling/software/proprietary/controller/api/ProprietaryUIDataController.java index 5f321a89e..356048b38 100644 --- a/app/proprietary/src/main/java/stirling/software/proprietary/controller/api/ProprietaryUIDataController.java +++ b/app/proprietary/src/main/java/stirling/software/proprietary/controller/api/ProprietaryUIDataController.java @@ -212,19 +212,19 @@ public class ProprietaryUIDataController { if (latestSession.isPresent()) { SessionEntity sessionEntity = latestSession.get(); - Date lastAccessedTime = sessionEntity.getLastRequest(); + Instant lastAccessedTime = + Optional.ofNullable(sessionEntity.getLastRequest()) + .orElse(Instant.EPOCH); Instant now = Instant.now(); Instant expirationTime = - lastAccessedTime - .toInstant() - .plus(maxInactiveInterval, ChronoUnit.SECONDS); + lastAccessedTime.plus(maxInactiveInterval, ChronoUnit.SECONDS); if (now.isAfter(expirationTime)) { sessionPersistentRegistry.expireSession(sessionEntity.getSessionId()); } else { hasActiveSession = !sessionEntity.isExpired(); } - lastRequest = sessionEntity.getLastRequest(); + lastRequest = Date.from(lastAccessedTime); } else { lastRequest = new Date(0); } diff --git a/app/proprietary/src/main/java/stirling/software/proprietary/security/InitialSecuritySetup.java b/app/proprietary/src/main/java/stirling/software/proprietary/security/InitialSecuritySetup.java index 2320ea8c6..9bcecafc2 100644 --- a/app/proprietary/src/main/java/stirling/software/proprietary/security/InitialSecuritySetup.java +++ b/app/proprietary/src/main/java/stirling/software/proprietary/security/InitialSecuritySetup.java @@ -60,14 +60,14 @@ public class InitialSecuritySetup { ApplicationProperties.Security.Jwt jwtProperties = applicationProperties.getSecurity().getJwt(); - boolean jwtEnabled = jwtProperties.isEnabled(); + boolean jwtEnabled = jwtProperties.isEnableKeystore(); if (!v2Enabled || !jwtEnabled) { log.debug( "V2 enabled: {}, JWT enabled: {} - disabling all JWT features", v2Enabled, jwtEnabled); - jwtProperties.setKeyCleanup(false); + jwtProperties.setEnableKeyCleanup(false); } } diff --git a/app/proprietary/src/main/java/stirling/software/proprietary/security/config/AccountWebController.java b/app/proprietary/src/main/java/stirling/software/proprietary/security/config/AccountWebController.java index 4a6605f6a..d035dbc58 100644 --- a/app/proprietary/src/main/java/stirling/software/proprietary/security/config/AccountWebController.java +++ b/app/proprietary/src/main/java/stirling/software/proprietary/security/config/AccountWebController.java @@ -10,11 +10,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; -<<<<<<< HEAD -import org.springframework.security.access.prepost.PreAuthorize; -======= -import org.springframework.beans.factory.annotation.Qualifier; ->>>>>>> refs/remotes/origin/V2 import org.springframework.security.core.Authentication; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.oauth2.core.user.OAuth2User; @@ -203,7 +198,7 @@ public class AccountWebController { return "login"; } - //@EnterpriseEndpoint + // @EnterpriseEndpoint // @PreAuthorize("hasRole('ROLE_ADMIN')") // @GetMapping("/usage") diff --git a/app/proprietary/src/main/java/stirling/software/proprietary/security/model/Authority.java b/app/proprietary/src/main/java/stirling/software/proprietary/security/model/Authority.java index 3e7ddd27c..9adcce1ad 100644 --- a/app/proprietary/src/main/java/stirling/software/proprietary/security/model/Authority.java +++ b/app/proprietary/src/main/java/stirling/software/proprietary/security/model/Authority.java @@ -4,8 +4,8 @@ import java.io.Serializable; import org.springframework.security.core.GrantedAuthority; - import com.fasterxml.jackson.annotation.JsonIgnore; + import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; diff --git a/app/proprietary/src/main/java/stirling/software/proprietary/security/service/CustomUserDetailsService.java b/app/proprietary/src/main/java/stirling/software/proprietary/security/service/CustomUserDetailsService.java index 1d2360ad5..33bb8da60 100644 --- a/app/proprietary/src/main/java/stirling/software/proprietary/security/service/CustomUserDetailsService.java +++ b/app/proprietary/src/main/java/stirling/software/proprietary/security/service/CustomUserDetailsService.java @@ -38,7 +38,8 @@ public class CustomUserDetailsService implements UserDetailsService { "Your account has been locked due to too many failed login attempts."); } - // TODO: Remove for SaaS - Handle legacy users without authenticationType (from versions < 1.3.0) + // TODO: Remove for SaaS - Handle legacy users without authenticationType (from versions < + // 1.3.0) String authTypeStr = user.getAuthenticationType(); if (authTypeStr == null || authTypeStr.isEmpty()) { // Migrate legacy users by detecting authentication type based on password presence