From d515c53b3c61e5bb775207b884af776c812b1d46 Mon Sep 17 00:00:00 2001 From: Dario Ghunney Ware Date: Sat, 17 May 2025 21:36:17 +0100 Subject: [PATCH] wip - fixing static resource loading issue. only / missing --- .github/labeler-config.yml | 75 +- build.gradle | 79 +- .../common/model/ApplicationProperties.java | 8 +- .../common}/model/api/GeneralFile.java | 2 +- .../exception/UnsupportedClaimException.java | 7 + .../UnsupportedUsernameAttribute.java | 7 - .../{ => oauth2}/provider/GitHubProvider.java | 2 +- .../{ => oauth2}/provider/GoogleProvider.java | 2 +- .../provider/KeycloakProvider.java | 2 +- .../model/{ => oauth2}/provider/Provider.java | 10 +- .../software/common/util/ProviderUtil.java | 2 +- .../software/common/util/RequestUriUtil.java | 2 - .../software/common/util/ValidationUtil.java | 1 - .../common/util/ProviderUtilTest.java | 13 +- proprietary/build.gradle | 79 +- .../security/CustomLogoutSuccessHandler.java | 2 +- .../security/configuration}/MailConfig.java | 5 +- .../controller/api/EmailController.java | 6 +- .../controller/web/AccountWebController.java | 6 +- .../security}/model/api/Email.java | 3 +- .../exception/BackupNotFoundException.java | 2 +- .../exception/NoProviderFoundException.java | 2 +- .../security/oauth2/OAuth2Configuration.java | 10 +- .../security/service/DatabaseService.java | 2 +- .../security/service}/EmailService.java | 6 +- .../controller/api/EmailControllerTest.java | 6 +- .../security/service}/EmailServiceTest.java | 12 +- .../model/api/security/RedactPdfRequest.java | 34 - stirling-pdf/.gitignore | 196 +++ stirling-pdf/build/resources/main/logback.xml | 2 +- .../resources/main/settings.yml.template | 10 +- .../build/resources/main/templates/home.html | 358 ++-- .../spdf/config/EndpointInterceptor.java | 7 +- .../spdf/config/ExternalAppDepConfig.java | 21 +- .../software/spdf/config/WebMvcConfig.java | 10 +- .../controller/api/SettingsController.java | 6 +- .../api/converters/ConvertMarkdownToPdf.java | 2 +- .../converters/ConvertOfficeController.java | 2 +- .../api/misc/CompressController.java | 10 +- .../EndpointConfigurationService.java} | 8 +- stirling-pdf/src/main/resources/logback.xml | 2 +- .../main/resources/messages_de_DE.properties | 1439 +++++++++++++++++ .../main/resources/messages_el_GR.properties | 1439 +++++++++++++++++ .../main/resources/messages_fr_FR.properties | 28 +- .../main/resources/messages_it_IT.properties | 2 +- .../main/resources/messages_ja_JP.properties | 1439 +++++++++++++++++ .../main/resources/messages_ml_ML.properties | 1439 +++++++++++++++++ .../src/main/resources/settings.yml.template | 8 + .../resources/static/3rdPartyLicenses.json | 196 ++- .../static/android-chrome-192x192.png | Bin 0 -> 4161 bytes .../src/main/resources/static/css/account.css | 4 + .../resources/static/css/cookieconsent.css | 1 + .../src/main/resources/static/css/footer.css | 60 + .../src/main/resources/static/css/general.css | 3 +- .../main/resources/static/css/licenses.css | 9 + .../src/main/resources/static/css/navbar.css | 4 + .../static/css/theme/componentes.css | 970 +++++++++++ .../main/resources/static/fonts/Meiryo.ttf | Bin 0 -> 7012504 bytes .../main/resources/static/fonts/SimSun.ttf | Bin 0 -> 10499104 bytes .../static/fonts/google-symbol.woff2 | Bin 0 -> 783460 bytes .../main/resources/static/images/Files.svg | 1 + .../src/main/resources/static/images/book.svg | 1 + .../main/resources/static/images/update.svg | 1 + .../main/resources/static/js/errorBanner.js | 50 + .../src/main/resources/static/js/homecard.js | 245 +++ .../static/js/multitool/PdfContainer.js | 6 +- .../main/resources/static/js/pages/home.js | 24 +- .../src}/main/resources/static/js/pipeline.js | 0 .../src/main/resources/static/js/search.js | 111 ++ .../main/resources/static/js/tab-container.js | 2 +- .../resources/static/js/thirdParty/prism.js | 5 + .../main/resources/static/mstile-70x70.png | Bin 0 -> 2733 bytes .../static/pdfjs-legacy/cmaps/78-EUC-V.bcmap | Bin 0 -> 173 bytes .../static/pdfjs-legacy/cmaps/78-RKSJ-V.bcmap | Bin 0 -> 173 bytes .../pdfjs-legacy/cmaps/83pv-RKSJ-H.bcmap | Bin 0 -> 905 bytes .../pdfjs-legacy/cmaps/90ms-RKSJ-V.bcmap | Bin 0 -> 290 bytes .../pdfjs-legacy/cmaps/90msp-RKSJ-V.bcmap | Bin 0 -> 291 bytes .../static/pdfjs-legacy/cmaps/Add-H.bcmap | Bin 0 -> 2419 bytes .../pdfjs-legacy/cmaps/Adobe-CNS1-2.bcmap | Bin 0 -> 376 bytes .../pdfjs-legacy/cmaps/Adobe-CNS1-5.bcmap | Bin 0 -> 406 bytes .../pdfjs-legacy/cmaps/Adobe-CNS1-UCS2.bcmap | Bin 0 -> 41193 bytes .../pdfjs-legacy/cmaps/Adobe-GB1-2.bcmap | Bin 0 -> 465 bytes .../pdfjs-legacy/cmaps/Adobe-Japan1-1.bcmap | Bin 0 -> 226 bytes .../pdfjs-legacy/cmaps/Adobe-Japan1-5.bcmap | Bin 0 -> 430 bytes .../pdfjs-legacy/cmaps/Adobe-Korea1-1.bcmap | Bin 0 -> 386 bytes .../static/pdfjs-legacy/cmaps/CNS1-H.bcmap | Bin 0 -> 706 bytes .../static/pdfjs-legacy/cmaps/ETen-B5-H.bcmap | Bin 0 -> 1125 bytes .../static/pdfjs-legacy/cmaps/GB-H.bcmap | 4 + .../static/pdfjs-legacy/cmaps/GBT-EUC-V.bcmap | Bin 0 -> 180 bytes .../pdfjs-legacy/cmaps/GBTpc-EUC-H.bcmap | Bin 0 -> 7298 bytes .../static/pdfjs-legacy/cmaps/Hiragana.bcmap | Bin 0 -> 124 bytes .../static/pdfjs-legacy/cmaps/Katakana.bcmap | Bin 0 -> 100 bytes .../static/pdfjs-legacy/cmaps/RKSJ-H.bcmap | Bin 0 -> 534 bytes .../pdfjs-legacy/cmaps/UniJIS-UTF32-H.bcmap | Bin 0 -> 40539 bytes .../cmaps/UniJIS2004-UTF32-H.bcmap | Bin 0 -> 40630 bytes .../cmaps/UniJIS2004-UTF8-H.bcmap | Bin 0 -> 41779 bytes .../cmaps/UniJISX02132004-UTF32-H.bcmap | Bin 0 -> 40608 bytes .../pdfjs-legacy/cmaps/UniKS-UTF8-V.bcmap | Bin 0 -> 169 bytes .../static/pdfjs-legacy/example/Welcome.pdf | Bin 0 -> 38223 bytes .../pdfjs-legacy/images/altText_done.svg | 1 + .../images/annotation-comment.svg | 1 + .../pdfjs-legacy/images/annotation-noicon.svg | 1 + .../images/editor-toolbar-delete.svg | 1 + .../images/gv-toolbarButton-download.svg | 1 + .../static/pdfjs-legacy/images/loading.svg | 1 + .../secondaryToolbarButton-handTool.svg | 1 + .../secondaryToolbarButton-lastPage.svg | 1 + .../secondaryToolbarButton-rotateCw.svg | 1 + .../secondaryToolbarButton-spreadNone.svg | 1 + .../images/toolbarButton-download.svg | 1 + .../images/toolbarButton-viewOutline.svg | 1 + .../static/pdfjs-legacy/locale/bo/viewer.ftl | 247 +++ .../static/pdfjs-legacy/locale/cak/viewer.ftl | 291 ++++ .../pdfjs-legacy/locale/es-ES/viewer.ftl | 402 +++++ .../pdfjs-legacy/locale/es-MX/viewer.ftl | 299 ++++ .../static/pdfjs-legacy/locale/fur/viewer.ftl | 402 +++++ .../pdfjs-legacy/locale/fy-NL/viewer.ftl | 402 +++++ .../static/pdfjs-legacy/locale/gl/viewer.ftl | 364 +++++ .../static/pdfjs-legacy/locale/gn/viewer.ftl | 402 +++++ .../static/pdfjs-legacy/locale/ko/viewer.ftl | 394 +++++ .../static/pdfjs-legacy/locale/my/viewer.ftl | 206 +++ .../static/pdfjs-legacy/locale/nl/viewer.ftl | 402 +++++ .../static/pdfjs-legacy/locale/ru/viewer.ftl | 404 +++++ .../static/pdfjs-legacy/locale/si/viewer.ftl | 253 +++ .../static/pdfjs-legacy/locale/skr/viewer.ftl | 396 +++++ .../static/pdfjs-legacy/locale/te/viewer.ftl | 239 +++ .../static/pdfjs-legacy/pdf.sandbox.mjs.map | 1 + .../standard_fonts/FoxitFixedItalic.pfb | Bin 0 -> 18746 bytes .../standard_fonts/LiberationSans-Italic.ttf | Bin 0 -> 162036 bytes .../src/main/resources/static/rainbow.svg | 1 + .../resources/templates/adminSettings.html | 4 +- .../templates/convert/file-to-pdf.html | 60 + .../templates/convert/pdf-to-markdown.html | 31 + .../templates/convert/pdf-to-text.html | 4 +- .../resources/templates/fragments/card.html | 2 +- .../resources/templates/fragments/common.html | 10 +- .../templates/fragments/languages.html | 81 +- .../resources/templates/fragments/navbar.html | 8 +- .../templates/fragments/navbarEntry.html | 2 +- .../fragments/navbarEntryCustom.html | 2 +- .../src/main/resources/templates/home.html | 335 ++-- .../templates/misc/extract-images.html | 43 + .../resources/templates/misc/ocr-pdf.html | 231 +++ .../templates/misc/remove-blanks.html | 41 + .../resources/templates/remove-pages.html | 48 + .../templates/security/add-password.html | 88 + .../security/change-permissions.html | 16 +- .../resources/templates/security/redact.html | 4 +- .../security/validate-signature.html | 265 +++ 149 files changed, 14134 insertions(+), 770 deletions(-) rename {stirling-pdf/src/main/java/stirling/software/spdf => common/src/main/java/stirling/software/common}/model/api/GeneralFile.java (87%) create mode 100644 common/src/main/java/stirling/software/common/model/exception/UnsupportedClaimException.java delete mode 100644 common/src/main/java/stirling/software/common/model/exception/UnsupportedUsernameAttribute.java rename common/src/main/java/stirling/software/common/model/{ => oauth2}/provider/GitHubProvider.java (97%) rename common/src/main/java/stirling/software/common/model/{ => oauth2}/provider/GoogleProvider.java (97%) rename common/src/main/java/stirling/software/common/model/{ => oauth2}/provider/KeycloakProvider.java (96%) rename common/src/main/java/stirling/software/common/model/{ => oauth2}/provider/Provider.java (93%) rename {src/main/java/stirling/software/SPDF/config/security/mail => proprietary/src/main/java/stirling/software/proprietary/security/configuration}/MailConfig.java (94%) rename {stirling-pdf/src/main/java/stirling/software/spdf => proprietary/src/main/java/stirling/software/proprietary/security}/controller/api/EmailController.java (92%) rename {stirling-pdf/src/main/java/stirling/software/spdf => proprietary/src/main/java/stirling/software/proprietary/security}/model/api/Email.java (92%) rename {common/src/main/java/stirling/software/common => proprietary/src/main/java/stirling/software/proprietary/security}/model/exception/BackupNotFoundException.java (70%) rename {common/src/main/java/stirling/software/common => proprietary/src/main/java/stirling/software/proprietary/security}/model/exception/NoProviderFoundException.java (79%) rename {src/main/java/stirling/software/SPDF/config/security/mail => proprietary/src/main/java/stirling/software/proprietary/security/service}/EmailService.java (92%) rename {stirling-pdf/src/test/java/stirling/software/spdf => proprietary/src/test/java/stirling/software/proprietary/security}/controller/api/EmailControllerTest.java (94%) rename {src/test/java/stirling/software/SPDF/config/security/mail => proprietary/src/test/java/stirling/software/proprietary/security/service}/EmailServiceTest.java (85%) delete mode 100644 src/main/java/stirling/software/SPDF/model/api/security/RedactPdfRequest.java create mode 100644 stirling-pdf/.gitignore rename {src/main/java/stirling/software/SPDF => stirling-pdf/src/main/java/stirling/software/spdf}/controller/api/misc/CompressController.java (99%) rename stirling-pdf/src/main/java/stirling/software/spdf/{config/EndpointConfiguration.java => service/EndpointConfigurationService.java} (98%) create mode 100644 stirling-pdf/src/main/resources/messages_de_DE.properties create mode 100644 stirling-pdf/src/main/resources/messages_el_GR.properties create mode 100644 stirling-pdf/src/main/resources/messages_ja_JP.properties create mode 100644 stirling-pdf/src/main/resources/messages_ml_ML.properties create mode 100644 stirling-pdf/src/main/resources/static/android-chrome-192x192.png create mode 100644 stirling-pdf/src/main/resources/static/css/account.css create mode 100644 stirling-pdf/src/main/resources/static/css/cookieconsent.css create mode 100644 stirling-pdf/src/main/resources/static/css/footer.css create mode 100644 stirling-pdf/src/main/resources/static/css/licenses.css create mode 100644 stirling-pdf/src/main/resources/static/css/theme/componentes.css create mode 100644 stirling-pdf/src/main/resources/static/fonts/Meiryo.ttf create mode 100644 stirling-pdf/src/main/resources/static/fonts/SimSun.ttf create mode 100644 stirling-pdf/src/main/resources/static/fonts/google-symbol.woff2 create mode 100644 stirling-pdf/src/main/resources/static/images/Files.svg create mode 100644 stirling-pdf/src/main/resources/static/images/book.svg create mode 100644 stirling-pdf/src/main/resources/static/images/update.svg create mode 100644 stirling-pdf/src/main/resources/static/js/errorBanner.js create mode 100644 stirling-pdf/src/main/resources/static/js/homecard.js rename {src => stirling-pdf/src}/main/resources/static/js/pipeline.js (100%) create mode 100644 stirling-pdf/src/main/resources/static/js/search.js create mode 100644 stirling-pdf/src/main/resources/static/js/thirdParty/prism.js create mode 100644 stirling-pdf/src/main/resources/static/mstile-70x70.png create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/78-EUC-V.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/78-RKSJ-V.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/83pv-RKSJ-H.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/90ms-RKSJ-V.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/90msp-RKSJ-V.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/Add-H.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/Adobe-CNS1-2.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/Adobe-CNS1-5.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/Adobe-CNS1-UCS2.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/Adobe-GB1-2.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/Adobe-Japan1-1.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/Adobe-Japan1-5.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/Adobe-Korea1-1.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/CNS1-H.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/ETen-B5-H.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/GB-H.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/GBT-EUC-V.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/GBTpc-EUC-H.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/Hiragana.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/Katakana.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/RKSJ-H.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/UniJIS-UTF32-H.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/UniJIS2004-UTF32-H.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/UniJIS2004-UTF8-H.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/UniJISX02132004-UTF32-H.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/cmaps/UniKS-UTF8-V.bcmap create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/example/Welcome.pdf create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/images/altText_done.svg create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/images/annotation-comment.svg create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/images/annotation-noicon.svg create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/images/editor-toolbar-delete.svg create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/images/gv-toolbarButton-download.svg create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/images/loading.svg create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/images/secondaryToolbarButton-handTool.svg create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/images/secondaryToolbarButton-lastPage.svg create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/images/secondaryToolbarButton-rotateCw.svg create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/images/secondaryToolbarButton-spreadNone.svg create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/images/toolbarButton-download.svg create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/images/toolbarButton-viewOutline.svg create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/locale/bo/viewer.ftl create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/locale/cak/viewer.ftl create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/locale/es-ES/viewer.ftl create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/locale/es-MX/viewer.ftl create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/locale/fur/viewer.ftl create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/locale/fy-NL/viewer.ftl create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/locale/gl/viewer.ftl create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/locale/gn/viewer.ftl create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/locale/ko/viewer.ftl create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/locale/my/viewer.ftl create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/locale/nl/viewer.ftl create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/locale/ru/viewer.ftl create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/locale/si/viewer.ftl create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/locale/skr/viewer.ftl create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/locale/te/viewer.ftl create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/pdf.sandbox.mjs.map create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/standard_fonts/FoxitFixedItalic.pfb create mode 100644 stirling-pdf/src/main/resources/static/pdfjs-legacy/standard_fonts/LiberationSans-Italic.ttf create mode 100644 stirling-pdf/src/main/resources/static/rainbow.svg create mode 100644 stirling-pdf/src/main/resources/templates/convert/file-to-pdf.html create mode 100644 stirling-pdf/src/main/resources/templates/convert/pdf-to-markdown.html create mode 100644 stirling-pdf/src/main/resources/templates/misc/extract-images.html create mode 100644 stirling-pdf/src/main/resources/templates/misc/ocr-pdf.html create mode 100644 stirling-pdf/src/main/resources/templates/misc/remove-blanks.html create mode 100644 stirling-pdf/src/main/resources/templates/remove-pages.html create mode 100644 stirling-pdf/src/main/resources/templates/security/add-password.html create mode 100644 stirling-pdf/src/main/resources/templates/security/validate-signature.html diff --git a/.github/labeler-config.yml b/.github/labeler-config.yml index 4815497c5..60ef1c3b3 100644 --- a/.github/labeler-config.yml +++ b/.github/labeler-config.yml @@ -1,65 +1,60 @@ Translation: - changed-files: - - any-glob-to-any-file: 'src/main/resources/messages_*_*.properties' + - any-glob-to-any-file: 'stirling-pdf/src/main/resources/messages_*_*.properties' - any-glob-to-any-file: 'scripts/ignore_translation.toml' - - any-glob-to-any-file: 'src/main/resources/templates/fragments/languages.html' + - any-glob-to-any-file: 'stirling-pdf/src/main/resources/templates/fragments/languages.html' Front End: - changed-files: - - any-glob-to-any-file: 'src/main/resources/templates/**/*' - - any-glob-to-any-file: 'src/main/resources/static/**/*' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/web/**' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/UI/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/main/resources/templates/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/main/resources/static/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/controller/web/**' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/UI/**/*' Java: - changed-files: - - any-glob-to-any-file: 'src/main/java/**/*.java' + - any-glob-to-any-file: 'common/src/main/java/**/*.java' + - any-glob-to-any-file: 'proprietary/src/main/java/**/*.java' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/**/*.java' Back End: - changed-files: - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/config/**/*' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/**/*' - - any-glob-to-any-file: 'src/main/resources/settings.yml.template' - - any-glob-to-any-file: 'src/main/resources/application.properties' - - any-glob-to-any-file: 'src/main/resources/banner.txt' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/config/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/controller/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/main/resources/settings.yml.template' + - any-glob-to-any-file: 'stirling-pdf/src/main/resources/application.properties' + - any-glob-to-any-file: 'stirling-pdf/src/main/resources/banner.txt' - any-glob-to-any-file: 'scripts/png_to_webp.py' - any-glob-to-any-file: 'split_photos.py' Security: - changed-files: # todo: fix these - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/config/interfaces/DatabaseInterface.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/config/security/**/*' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/api/DatabaseController.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/api/EmailController.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/api/H2SQLController.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/web/AccountWebController.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/web/DatabaseWebController.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/api/UserController.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/api/Email.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/exception/BackupNotFoundException.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/exception/NoProviderFoundExceptionjava' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/provider/**/*' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/AuthenticationType.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/ApiKeyAuthenticationToken.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/AttemptCounter.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/Authority.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/PersistentLogin.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/SessionEntity.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/config/security/**/*' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/provider/**/*' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/AuthenticationType.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/BackupNotFoundException.java' + - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/config/security/**/*' # fixme + # todo: check if correct + - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/**/*' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/exception/**/*' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/controller/**/*' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/oauth2/provider/**/*' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseServiceInterface.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseService.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/api/Email.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/AuthenticationType.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/ApiKeyAuthenticationToken.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/AttemptCounter.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/Authority.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/PersistentLogin.java' +# - any-glob-to-any-file: 'proprietary/src/main/java/stirling/software/proprietary/security/model/SessionEntity.java' - any-glob-to-any-file: 'scripts/download-security-jar.sh' - any-glob-to-any-file: '.github/workflows/dependency-review.yml' - any-glob-to-any-file: '.github/workflows/scorecards.yml' API: - changed-files: - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/config/OpenApiConfig.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/web/MetricsController.java' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/controller/api/**/*' - - any-glob-to-any-file: 'src/main/java/stirling/software/spdf/model/api/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/config/OpenApiConfig.java' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/controller/web/MetricsController.java' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/controller/api/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/main/java/stirling/software/spdf/model/api/**/*' - any-glob-to-any-file: 'scripts/png_to_webp.py' - any-glob-to-any-file: 'split_photos.py' - any-glob-to-any-file: '.github/workflows/swagger.yml' @@ -93,7 +88,9 @@ Devtools: Test: - changed-files: - any-glob-to-any-file: 'cucumber/**/*' - - any-glob-to-any-file: 'src/test/**/*' + - any-glob-to-any-file: 'common/src/test/**/*' + - any-glob-to-any-file: 'proprietary/src/test/**/*' + - any-glob-to-any-file: 'stirling-pdf/src/test/**/*' - any-glob-to-any-file: 'src/testing/**/*' - any-glob-to-any-file: '.pre-commit-config' - any-glob-to-any-file: '.github/workflows/pre_commit.yml' diff --git a/build.gradle b/build.gradle index 22b6ef624..bf1157ba0 100644 --- a/build.gradle +++ b/build.gradle @@ -42,9 +42,35 @@ bootJar { enabled = false } +sourceSets { + main { + java { + if (System.getenv('ADDITIONAL_FEATURES') == 'false') { + exclude 'stirling/software/proprietary/security/**' + } + + if (System.getenv('STIRLING_PDF_DESKTOP_UI') == 'false') { + exclude 'stirling/software/spdf/UI/impl/**' + } + } + } + + test { + java { + if (System.getenv('DOCKER_ENABLE_SECURITY') == 'false') { + exclude 'stirling/software/proprietary/security/**' + } + + if (System.getenv('STIRLING_PDF_DESKTOP_UI') == 'false') { + exclude 'stirling/software/spdf/UI/impl/**' + } + } + } +} + allprojects { - group = "stirling.software" - version = "0.46.1" + group = 'stirling.software' + version = '0.46.1' afterEvaluate { if (project == rootProject) return @@ -61,8 +87,6 @@ subprojects { apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' - - java { // 17 is lowest but we support and recommend 21 sourceCompatibility = JavaVersion.VERSION_17 @@ -74,7 +98,7 @@ subprojects { configurations.configureEach { exclude group: 'commons-logging', module: 'commons-logging' - exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat" + exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' // Exclude vulnerable BouncyCastle version used in tableau exclude group: 'org.bouncycastle', module: 'bcpkix-jdk15on' exclude group: 'org.bouncycastle', module: 'bcutil-jdk15on' @@ -121,45 +145,6 @@ licenseReport { allowedLicensesFile = new File("$projectDir/allowed-licenses.json") } -// todo: test if needed here -sourceSets { - main { - java { - if (System.getenv("ADDITIONAL_FEATURES") == "false") { - exclude 'stirling/software/proprietary/security/controller/**' - exclude 'stirling/software/proprietary/security/model/ApiKeyAuthenticationToken.java' - exclude 'stirling/software/proprietary/security/model/AttemptCounter.java' - exclude 'stirling/software/proprietary/security/model/Authority.java' - exclude 'stirling/software/proprietary/security/model/BackupNotFoundException.java' - exclude 'stirling/software/proprietary/security/model/PersistentLogin.java' - exclude 'stirling/software/proprietary/security/model/SessionEntity.java' - exclude 'stirling/software/proprietary/security/model/User.java' - exclude 'stirling/software/proprietary/security/database/repository/**' - } - - if (System.getenv("STIRLING_PDF_DESKTOP_UI") == "false") { - exclude "stirling/software/spdf/UI/impl/**" - } - - } - } - - test { - java { - if (System.getenv("DOCKER_ENABLE_SECURITY") == "false") { - exclude "stirling/software/spdf/config/security/**" - exclude "stirling/software/spdf/model/ApiKeyAuthenticationTokenTest.java" - exclude "stirling/software/spdf/controller/api/EmailControllerTest.java" - exclude "stirling/software/spdf/repository/**" - } - - if (System.getenv("STIRLING_PDF_DESKTOP_UI") == "false") { - exclude "stirling/software/spdf/UI/impl/**" - } - } - } -} - openApi { apiDocsUrl = "http://localhost:8080/v1/api-docs" outputDir = file("$projectDir") @@ -370,18 +355,18 @@ tasks.register('downloadTempJre') { def jreArchive = new File(tmpDir, 'jre.tar.gz') def jreDir = new File(tmpDir, 'jre') - println "🔽 Downloading JRE to $jreArchive..." + println "Downloading JRE to $jreArchive" jreArchive.withOutputStream { out -> new URI(jreUrl).toURL().withInputStream { from -> out << from } } - println "📦 Extracting JRE to $jreDir..." + println "Extracting JRE to $jreDir" jreDir.mkdirs() providers.exec { commandLine 'tar', '-xzf', jreArchive.absolutePath, '-C', jreDir.absolutePath, '--strip-components=1' }.result.get() - println "✅ JRE ready at: $jreDir" + println "JRE ready at: $jreDir" ext.tempJrePath = jreDir.absolutePath project.ext.tempJrePath = jreDir.absolutePath } catch (Exception e) { diff --git a/common/src/main/java/stirling/software/common/model/ApplicationProperties.java b/common/src/main/java/stirling/software/common/model/ApplicationProperties.java index d72b0107a..2e453806e 100644 --- a/common/src/main/java/stirling/software/common/model/ApplicationProperties.java +++ b/common/src/main/java/stirling/software/common/model/ApplicationProperties.java @@ -22,11 +22,11 @@ import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.stereotype.Component; import stirling.software.common.model.exception.UnsupportedProviderException; -import stirling.software.common.model.provider.GitHubProvider; -import stirling.software.common.model.provider.GoogleProvider; -import stirling.software.common.model.provider.KeycloakProvider; -import stirling.software.common.model.provider.Provider; import stirling.software.common.util.ValidationUtil; +import stirling.software.common.model.oauth2.provider.GitHubProvider; +import stirling.software.common.model.oauth2.provider.GoogleProvider; +import stirling.software.common.model.oauth2.provider.KeycloakProvider; +import stirling.software.common.model.oauth2.provider.Provider; @Data @Component diff --git a/stirling-pdf/src/main/java/stirling/software/spdf/model/api/GeneralFile.java b/common/src/main/java/stirling/software/common/model/api/GeneralFile.java similarity index 87% rename from stirling-pdf/src/main/java/stirling/software/spdf/model/api/GeneralFile.java rename to common/src/main/java/stirling/software/common/model/api/GeneralFile.java index eaec1f02f..ad6cb155d 100644 --- a/stirling-pdf/src/main/java/stirling/software/spdf/model/api/GeneralFile.java +++ b/common/src/main/java/stirling/software/common/model/api/GeneralFile.java @@ -1,4 +1,4 @@ -package stirling.software.spdf.model.api; +package stirling.software.common.model.api; import org.springframework.web.multipart.MultipartFile; diff --git a/common/src/main/java/stirling/software/common/model/exception/UnsupportedClaimException.java b/common/src/main/java/stirling/software/common/model/exception/UnsupportedClaimException.java new file mode 100644 index 000000000..37dcc2fbc --- /dev/null +++ b/common/src/main/java/stirling/software/common/model/exception/UnsupportedClaimException.java @@ -0,0 +1,7 @@ +package stirling.software.common.model.exception; + +public class UnsupportedClaimException extends RuntimeException { + public UnsupportedClaimException(String message) { + super(message); + } +} diff --git a/common/src/main/java/stirling/software/common/model/exception/UnsupportedUsernameAttribute.java b/common/src/main/java/stirling/software/common/model/exception/UnsupportedUsernameAttribute.java deleted file mode 100644 index c639dda60..000000000 --- a/common/src/main/java/stirling/software/common/model/exception/UnsupportedUsernameAttribute.java +++ /dev/null @@ -1,7 +0,0 @@ -package stirling.software.common.model.exception; - -public class UnsupportedUsernameAttribute extends RuntimeException { - public UnsupportedUsernameAttribute(String message) { - super(message); - } -} diff --git a/common/src/main/java/stirling/software/common/model/provider/GitHubProvider.java b/common/src/main/java/stirling/software/common/model/oauth2/provider/GitHubProvider.java similarity index 97% rename from common/src/main/java/stirling/software/common/model/provider/GitHubProvider.java rename to common/src/main/java/stirling/software/common/model/oauth2/provider/GitHubProvider.java index 35fe9c1f1..e1d781736 100644 --- a/common/src/main/java/stirling/software/common/model/provider/GitHubProvider.java +++ b/common/src/main/java/stirling/software/common/model/oauth2/provider/GitHubProvider.java @@ -1,4 +1,4 @@ -package stirling.software.common.model.provider; +package stirling.software.common.model.oauth2.provider; import java.util.ArrayList; import java.util.Collection; diff --git a/common/src/main/java/stirling/software/common/model/provider/GoogleProvider.java b/common/src/main/java/stirling/software/common/model/oauth2/provider/GoogleProvider.java similarity index 97% rename from common/src/main/java/stirling/software/common/model/provider/GoogleProvider.java rename to common/src/main/java/stirling/software/common/model/oauth2/provider/GoogleProvider.java index b3e5b0c8b..69a79310f 100644 --- a/common/src/main/java/stirling/software/common/model/provider/GoogleProvider.java +++ b/common/src/main/java/stirling/software/common/model/oauth2/provider/GoogleProvider.java @@ -1,4 +1,4 @@ -package stirling.software.common.model.provider; +package stirling.software.common.model.oauth2.provider; import java.util.ArrayList; import java.util.Collection; diff --git a/common/src/main/java/stirling/software/common/model/provider/KeycloakProvider.java b/common/src/main/java/stirling/software/common/model/oauth2/provider/KeycloakProvider.java similarity index 96% rename from common/src/main/java/stirling/software/common/model/provider/KeycloakProvider.java rename to common/src/main/java/stirling/software/common/model/oauth2/provider/KeycloakProvider.java index 8b483b4a4..873b6e350 100644 --- a/common/src/main/java/stirling/software/common/model/provider/KeycloakProvider.java +++ b/common/src/main/java/stirling/software/common/model/oauth2/provider/KeycloakProvider.java @@ -1,4 +1,4 @@ -package stirling.software.common.model.provider; +package stirling.software.common.model.oauth2.provider; import java.util.ArrayList; import java.util.Collection; diff --git a/common/src/main/java/stirling/software/common/model/provider/Provider.java b/common/src/main/java/stirling/software/common/model/oauth2/provider/Provider.java similarity index 93% rename from common/src/main/java/stirling/software/common/model/provider/Provider.java rename to common/src/main/java/stirling/software/common/model/oauth2/provider/Provider.java index 280939be9..66a5bc7b6 100644 --- a/common/src/main/java/stirling/software/common/model/provider/Provider.java +++ b/common/src/main/java/stirling/software/common/model/oauth2/provider/Provider.java @@ -1,4 +1,4 @@ -package stirling.software.common.model.provider; +package stirling.software.common.model.oauth2.provider; import java.util.ArrayList; import java.util.Arrays; @@ -6,7 +6,7 @@ import java.util.Collection; import lombok.Data; import lombok.NoArgsConstructor; import stirling.software.common.model.enumeration.UsernameAttribute; -import stirling.software.common.model.exception.UnsupportedUsernameAttribute; +import stirling.software.common.model.exception.UnsupportedClaimException; import static stirling.software.common.model.enumeration.UsernameAttribute.EMAIL; @Data @@ -80,7 +80,7 @@ public class Provider { return usernameAttribute; } default -> - throw new UnsupportedUsernameAttribute( + throw new UnsupportedClaimException( String.format(EXCEPTION_MESSAGE, usernameAttribute, clientName)); } } @@ -91,7 +91,7 @@ public class Provider { return usernameAttribute; } default -> - throw new UnsupportedUsernameAttribute( + throw new UnsupportedClaimException( String.format(EXCEPTION_MESSAGE, usernameAttribute, clientName)); } } @@ -102,7 +102,7 @@ public class Provider { return usernameAttribute; } default -> - throw new UnsupportedUsernameAttribute( + throw new UnsupportedClaimException( String.format(EXCEPTION_MESSAGE, usernameAttribute, clientName)); } } diff --git a/common/src/main/java/stirling/software/common/util/ProviderUtil.java b/common/src/main/java/stirling/software/common/util/ProviderUtil.java index 2035ba2f9..2d1784925 100644 --- a/common/src/main/java/stirling/software/common/util/ProviderUtil.java +++ b/common/src/main/java/stirling/software/common/util/ProviderUtil.java @@ -1,6 +1,6 @@ package stirling.software.common.util; -import stirling.software.common.model.provider.Provider; +import stirling.software.common.model.oauth2.provider.Provider; import static stirling.software.common.util.ValidationUtil.isCollectionEmpty; import static stirling.software.common.util.ValidationUtil.isStringEmpty; diff --git a/common/src/main/java/stirling/software/common/util/RequestUriUtil.java b/common/src/main/java/stirling/software/common/util/RequestUriUtil.java index b72ad413f..4cf6d6034 100644 --- a/common/src/main/java/stirling/software/common/util/RequestUriUtil.java +++ b/common/src/main/java/stirling/software/common/util/RequestUriUtil.java @@ -3,12 +3,10 @@ package stirling.software.common.util; public class RequestUriUtil { public static boolean isStaticResource(String requestURI) { - return isStaticResource("", requestURI); } public static boolean isStaticResource(String contextPath, String requestURI) { - return requestURI.startsWith(contextPath + "/css/") || requestURI.startsWith(contextPath + "/fonts/") || requestURI.startsWith(contextPath + "/js/") diff --git a/common/src/main/java/stirling/software/common/util/ValidationUtil.java b/common/src/main/java/stirling/software/common/util/ValidationUtil.java index 3393ca437..8646f3bb6 100644 --- a/common/src/main/java/stirling/software/common/util/ValidationUtil.java +++ b/common/src/main/java/stirling/software/common/util/ValidationUtil.java @@ -1,7 +1,6 @@ package stirling.software.common.util; import java.util.Collection; -import stirling.software.common.model.provider.Provider; public class ValidationUtil { diff --git a/common/src/test/java/stirling/software/common/util/ProviderUtilTest.java b/common/src/test/java/stirling/software/common/util/ProviderUtilTest.java index d5f3e3c2a..1ae9d0801 100644 --- a/common/src/test/java/stirling/software/common/util/ProviderUtilTest.java +++ b/common/src/test/java/stirling/software/common/util/ProviderUtilTest.java @@ -2,6 +2,7 @@ package stirling.software.common.util; import java.util.List; import java.util.stream.Stream; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; @@ -9,11 +10,9 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.mockito.junit.jupiter.MockitoExtension; import stirling.software.common.model.enumeration.UsernameAttribute; -import stirling.software.common.model.provider.GitHubProvider; -import stirling.software.common.model.provider.GoogleProvider; -import stirling.software.common.model.provider.Provider; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; +import stirling.software.common.model.oauth2.provider.GitHubProvider; +import stirling.software.common.model.oauth2.provider.GoogleProvider; +import stirling.software.common.model.oauth2.provider.Provider; import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) @@ -27,13 +26,13 @@ class ProviderUtilTest { when(provider.getClientSecret()).thenReturn("clientSecret"); when(provider.getScopes()).thenReturn(List.of("read:user")); - assertTrue(ProviderUtil.validateProvider(provider)); + Assertions.assertTrue(ProviderUtil.validateProvider(provider)); } @ParameterizedTest @MethodSource("providerParams") void testUnsuccessfulValidation(Provider provider) { - assertFalse(ProviderUtil.validateProvider(provider)); + Assertions.assertFalse(ProviderUtil.validateProvider(provider)); } public static Stream providerParams() { diff --git a/proprietary/build.gradle b/proprietary/build.gradle index ded00d9e6..43e4e982f 100644 --- a/proprietary/build.gradle +++ b/proprietary/build.gradle @@ -14,40 +14,27 @@ bootJar { enabled = false } +// todo: check if needed here sourceSets { main { java { if (System.getenv('ADDITIONAL_FEATURES') == 'false') { - exclude 'stirling/software/enterprise/security/UserAuthenticationFilter.java' - exclude 'stirling/software/enterprise/security/UserBasedRateLimitingFilter.java' - exclude 'stirling/software/enterprise/security/CustomAuthenticationSuccessHandler.java' - exclude 'stirling/software/enterprise/security/CustomLogoutSuccessHandler.java' - exclude 'stirling/software/enterprise/security/FirstLoginFilter.java' - exclude 'stirling/software/enterprise/security/IPRateLimitingFilter.java' - exclude 'stirling/software/enterprise/security/RateLimitResetScheduler.java' - exclude 'stirling/software/enterprise/security/CustomAuthenticationFailureHandler.java' - exclude 'stirling/software/enterprise/security/InitialSecuritySetup.java' - exclude 'stirling/software/enterprise/security/configuration/**' - exclude 'stirling/software/enterprise/security/controller/**' - exclude 'stirling/software/enterprise/security/database/**' - exclude 'stirling/software/enterprise/security/oauth2/**' - exclude 'stirling/software/enterprise/security/saml2/**' - exclude 'stirling/software/enterprise/security/service/**' - exclude 'stirling/software/enterprise/security/session/**' - exclude 'stirling/software/enterprise/security/model/ApiKeyAuthenticationToken.java' - exclude 'stirling/software/enterprise/security/model/AttemptCounter.java' - exclude 'stirling/software/enterprise/security/model/Authority.java' - exclude 'stirling/software/enterprise/security/model/BackupNotFoundException.java' - exclude 'stirling/software/enterprise/security/model/PersistentLogin.java' - exclude 'stirling/software/enterprise/security/model/SessionEntity.java' - exclude 'stirling/software/enterprise/security/model/User.java' + exclude 'stirling/software/proprietary/security/**' + } + + if (System.getenv('STIRLING_PDF_DESKTOP_UI') == 'false') { + exclude 'stirling/software/spdf/UI/impl/**' } } test { java { - if (System.getenv('ADDITIONAL_FEATURES') == 'false') { - exclude 'stirling/software/enterprise/security/**' + if (System.getenv('DOCKER_ENABLE_SECURITY') == 'false') { + exclude 'stirling/software/proprietary/security/**' + } + + if (System.getenv('STIRLING_PDF_DESKTOP_UI') == 'false') { + exclude 'stirling/software/spdf/UI/impl/**' } } } @@ -60,31 +47,31 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-jetty' implementation 'io.swagger.core.v3:swagger-core-jakarta:2.2.30' - implementation 'com.bucket4j:bucket4j_jdk17-core:8.14.0' // https://mvnrepository.com/artifact/com.bucket4j/bucket4j_jdk17 + implementation 'com.bucket4j:bucket4j_jdk17-core:8.14.0' + + // https://mvnrepository.com/artifact/com.bucket4j/bucket4j_jdk17 implementation 'org.bouncycastle:bcprov-jdk18on:1.80' - if (System.getenv('ADDITIONAL_FEATURES') == 'true') { - implementation 'org.springframework:spring-jdbc:6.2.6' - implementation 'org.springframework.boot:spring-boot-starter-security' - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' - implementation "org.springframework.security:spring-security-core:$springSecuritySamlVersion" - implementation "org.springframework.security:spring-security-saml2-service-provider:$springSecuritySamlVersion" - implementation 'org.springframework.session:spring-session-core:3.4.3' - - implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE' - implementation 'io.micrometer:micrometer-registry-prometheus' - implementation 'com.unboundid.product.scim2:scim2-sdk-client:2.3.5' - runtimeOnly 'com.h2database:h2:2.3.232' // Don't upgrade h2database - runtimeOnly 'org.postgresql:postgresql:42.7.5' - constraints { - implementation "org.opensaml:opensaml-core:$openSamlVersion" - implementation "org.opensaml:opensaml-saml-api:$openSamlVersion" - implementation "org.opensaml:opensaml-saml-impl:$openSamlVersion" - } - implementation 'com.coveo:saml-client:5.0.0' + implementation 'org.springframework:spring-jdbc:6.2.6' + implementation 'org.springframework.boot:spring-boot-starter-security' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' + implementation 'org.springframework.boot:spring-boot-starter-mail' + implementation "org.springframework.security:spring-security-core:$springSecuritySamlVersion" + implementation "org.springframework.security:spring-security-saml2-service-provider:$springSecuritySamlVersion" + implementation 'org.springframework.session:spring-session-core:3.4.3' + implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE' + implementation 'io.micrometer:micrometer-registry-prometheus' + implementation 'com.unboundid.product.scim2:scim2-sdk-client:2.3.5' + runtimeOnly 'com.h2database:h2:2.3.232' // Don't upgrade h2database + runtimeOnly 'org.postgresql:postgresql:42.7.5' + constraints { + implementation "org.opensaml:opensaml-core:$openSamlVersion" + implementation "org.opensaml:opensaml-saml-api:$openSamlVersion" + implementation "org.opensaml:opensaml-saml-impl:$openSamlVersion" } + implementation 'com.coveo:saml-client:5.0.0' compileOnly "org.projectlombok:lombok:$lombokVersion" annotationProcessor "org.projectlombok:lombok:$lombokVersion" diff --git a/proprietary/src/main/java/stirling/software/proprietary/security/CustomLogoutSuccessHandler.java b/proprietary/src/main/java/stirling/software/proprietary/security/CustomLogoutSuccessHandler.java index 0c15f1cd0..96b66095b 100644 --- a/proprietary/src/main/java/stirling/software/proprietary/security/CustomLogoutSuccessHandler.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/CustomLogoutSuccessHandler.java @@ -21,7 +21,7 @@ import stirling.software.common.configuration.AppConfig; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.ApplicationProperties.Security.OAUTH2; import stirling.software.common.model.ApplicationProperties.Security.SAML2; -import stirling.software.common.model.provider.KeycloakProvider; +import stirling.software.common.model.oauth2.provider.KeycloakProvider; import stirling.software.common.util.UrlUtils; import stirling.software.proprietary.security.saml2.CertificateUtils; import stirling.software.proprietary.security.saml2.CustomSaml2AuthenticatedPrincipal; diff --git a/src/main/java/stirling/software/SPDF/config/security/mail/MailConfig.java b/proprietary/src/main/java/stirling/software/proprietary/security/configuration/MailConfig.java similarity index 94% rename from src/main/java/stirling/software/SPDF/config/security/mail/MailConfig.java rename to proprietary/src/main/java/stirling/software/proprietary/security/configuration/MailConfig.java index 68c2fe35d..82d794d6e 100644 --- a/src/main/java/stirling/software/SPDF/config/security/mail/MailConfig.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/configuration/MailConfig.java @@ -1,4 +1,4 @@ -package stirling.software.SPDF.config.security.mail; +package stirling.software.proprietary.security.configuration; import java.util.Properties; @@ -10,8 +10,7 @@ import org.springframework.mail.javamail.JavaMailSenderImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; - -import stirling.software.SPDF.model.ApplicationProperties; +import stirling.software.common.model.ApplicationProperties; /** * This configuration class provides the JavaMailSender bean, which is used to send emails. It reads diff --git a/stirling-pdf/src/main/java/stirling/software/spdf/controller/api/EmailController.java b/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/EmailController.java similarity index 92% rename from stirling-pdf/src/main/java/stirling/software/spdf/controller/api/EmailController.java rename to proprietary/src/main/java/stirling/software/proprietary/security/controller/api/EmailController.java index 3b91368ef..084af2c8d 100644 --- a/stirling-pdf/src/main/java/stirling/software/spdf/controller/api/EmailController.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/EmailController.java @@ -1,4 +1,4 @@ -package stirling.software.SPDF.controller.api; +package stirling.software.proprietary.security.controller.api; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.http.HttpStatus; @@ -16,8 +16,8 @@ import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import stirling.software.SPDF.config.security.mail.EmailService; -import stirling.software.SPDF.model.api.Email; +import stirling.software.proprietary.security.model.api.Email; +import stirling.software.proprietary.security.service.EmailService; /** * Controller for handling email-related API requests. This controller exposes an endpoint for diff --git a/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/AccountWebController.java b/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/AccountWebController.java index 4fbf8a052..69616eacc 100644 --- a/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/AccountWebController.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/AccountWebController.java @@ -35,9 +35,9 @@ import stirling.software.common.model.ApplicationProperties.Security; import stirling.software.common.model.ApplicationProperties.Security.OAUTH2; import stirling.software.common.model.ApplicationProperties.Security.OAUTH2.Client; import stirling.software.common.model.ApplicationProperties.Security.SAML2; -import stirling.software.common.model.provider.GitHubProvider; -import stirling.software.common.model.provider.GoogleProvider; -import stirling.software.common.model.provider.KeycloakProvider; +import stirling.software.common.model.oauth2.provider.GitHubProvider; +import stirling.software.common.model.oauth2.provider.GoogleProvider; +import stirling.software.common.model.oauth2.provider.KeycloakProvider; import stirling.software.proprietary.security.database.repository.UserRepository; import stirling.software.proprietary.security.model.Authority; import stirling.software.proprietary.security.model.SessionEntity; diff --git a/stirling-pdf/src/main/java/stirling/software/spdf/model/api/Email.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/api/Email.java similarity index 92% rename from stirling-pdf/src/main/java/stirling/software/spdf/model/api/Email.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/api/Email.java index 21b5152e5..c25756fce 100644 --- a/stirling-pdf/src/main/java/stirling/software/spdf/model/api/Email.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/api/Email.java @@ -1,4 +1,4 @@ -package stirling.software.SPDF.model.api; +package stirling.software.proprietary.security.model.api; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -8,6 +8,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import stirling.software.common.model.api.GeneralFile; @Data @NoArgsConstructor diff --git a/common/src/main/java/stirling/software/common/model/exception/BackupNotFoundException.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/exception/BackupNotFoundException.java similarity index 70% rename from common/src/main/java/stirling/software/common/model/exception/BackupNotFoundException.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/exception/BackupNotFoundException.java index 588e89199..3aeb0096b 100644 --- a/common/src/main/java/stirling/software/common/model/exception/BackupNotFoundException.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/exception/BackupNotFoundException.java @@ -1,4 +1,4 @@ -package stirling.software.common.model.exception; +package stirling.software.proprietary.security.model.exception; public class BackupNotFoundException extends RuntimeException { public BackupNotFoundException(String message) { diff --git a/common/src/main/java/stirling/software/common/model/exception/NoProviderFoundException.java b/proprietary/src/main/java/stirling/software/proprietary/security/model/exception/NoProviderFoundException.java similarity index 79% rename from common/src/main/java/stirling/software/common/model/exception/NoProviderFoundException.java rename to proprietary/src/main/java/stirling/software/proprietary/security/model/exception/NoProviderFoundException.java index def079678..310821253 100644 --- a/common/src/main/java/stirling/software/common/model/exception/NoProviderFoundException.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/model/exception/NoProviderFoundException.java @@ -1,4 +1,4 @@ -package stirling.software.common.model.exception; +package stirling.software.proprietary.security.model.exception; public class NoProviderFoundException extends Exception { public NoProviderFoundException(String message) { diff --git a/proprietary/src/main/java/stirling/software/proprietary/security/oauth2/OAuth2Configuration.java b/proprietary/src/main/java/stirling/software/proprietary/security/oauth2/OAuth2Configuration.java index af587af3e..e6fcf006b 100644 --- a/proprietary/src/main/java/stirling/software/proprietary/security/oauth2/OAuth2Configuration.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/oauth2/OAuth2Configuration.java @@ -23,11 +23,11 @@ import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.ApplicationProperties.Security.OAUTH2; import stirling.software.common.model.ApplicationProperties.Security.OAUTH2.Client; import stirling.software.common.model.enumeration.UsernameAttribute; -import stirling.software.common.model.exception.NoProviderFoundException; -import stirling.software.common.model.provider.GitHubProvider; -import stirling.software.common.model.provider.GoogleProvider; -import stirling.software.common.model.provider.KeycloakProvider; -import stirling.software.common.model.provider.Provider; +import stirling.software.proprietary.security.model.exception.NoProviderFoundException; +import stirling.software.common.model.oauth2.provider.GitHubProvider; +import stirling.software.common.model.oauth2.provider.GoogleProvider; +import stirling.software.common.model.oauth2.provider.KeycloakProvider; +import stirling.software.common.model.oauth2.provider.Provider; import stirling.software.proprietary.security.model.User; import stirling.software.proprietary.security.service.UserService; import static org.springframework.security.oauth2.core.AuthorizationGrantType.AUTHORIZATION_CODE; diff --git a/proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseService.java b/proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseService.java index e93275819..37de87cf4 100644 --- a/proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseService.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/service/DatabaseService.java @@ -26,7 +26,7 @@ import org.springframework.stereotype.Service; import stirling.software.common.configuration.InstallationPathConfig; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.FileInfo; -import stirling.software.common.model.exception.BackupNotFoundException; +import stirling.software.proprietary.security.model.exception.BackupNotFoundException; @Slf4j @Service diff --git a/src/main/java/stirling/software/SPDF/config/security/mail/EmailService.java b/proprietary/src/main/java/stirling/software/proprietary/security/service/EmailService.java similarity index 92% rename from src/main/java/stirling/software/SPDF/config/security/mail/EmailService.java rename to proprietary/src/main/java/stirling/software/proprietary/security/service/EmailService.java index 8939fbab6..8b56e9aef 100644 --- a/src/main/java/stirling/software/SPDF/config/security/mail/EmailService.java +++ b/proprietary/src/main/java/stirling/software/proprietary/security/service/EmailService.java @@ -1,4 +1,4 @@ -package stirling.software.SPDF.config.security.mail; +package stirling.software.proprietary.security.service; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.mail.javamail.JavaMailSender; @@ -12,8 +12,8 @@ import jakarta.mail.internet.MimeMessage; import lombok.RequiredArgsConstructor; -import stirling.software.SPDF.model.ApplicationProperties; -import stirling.software.SPDF.model.api.Email; +import stirling.software.common.model.ApplicationProperties; +import stirling.software.proprietary.security.model.api.Email; /** * Service class responsible for sending emails, including those with attachments. It uses diff --git a/stirling-pdf/src/test/java/stirling/software/spdf/controller/api/EmailControllerTest.java b/proprietary/src/test/java/stirling/software/proprietary/security/controller/api/EmailControllerTest.java similarity index 94% rename from stirling-pdf/src/test/java/stirling/software/spdf/controller/api/EmailControllerTest.java rename to proprietary/src/test/java/stirling/software/proprietary/security/controller/api/EmailControllerTest.java index 25aa89479..527088e4d 100644 --- a/stirling-pdf/src/test/java/stirling/software/spdf/controller/api/EmailControllerTest.java +++ b/proprietary/src/test/java/stirling/software/proprietary/security/controller/api/EmailControllerTest.java @@ -1,4 +1,4 @@ -package stirling.software.SPDF.controller.api; +package stirling.software.proprietary.security.controller.api; import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; @@ -14,8 +14,8 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.multipart.MultipartFile; -import stirling.software.SPDF.config.security.mail.EmailService; -import stirling.software.SPDF.model.api.Email; +import stirling.software.proprietary.security.model.api.Email; +import stirling.software.proprietary.security.service.EmailService; @ExtendWith(MockitoExtension.class) public class EmailControllerTest { diff --git a/src/test/java/stirling/software/SPDF/config/security/mail/EmailServiceTest.java b/proprietary/src/test/java/stirling/software/proprietary/security/service/EmailServiceTest.java similarity index 85% rename from src/test/java/stirling/software/SPDF/config/security/mail/EmailServiceTest.java rename to proprietary/src/test/java/stirling/software/proprietary/security/service/EmailServiceTest.java index 63c38e9c3..34c118dca 100644 --- a/src/test/java/stirling/software/SPDF/config/security/mail/EmailServiceTest.java +++ b/proprietary/src/test/java/stirling/software/proprietary/security/service/EmailServiceTest.java @@ -1,6 +1,4 @@ -package stirling.software.SPDF.config.security.mail; - -import static org.mockito.Mockito.*; +package stirling.software.proprietary.security.service; import jakarta.mail.MessagingException; import jakarta.mail.internet.MimeMessage; @@ -10,10 +8,12 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.mail.javamail.JavaMailSender; -import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.web.multipart.MultipartFile; -import stirling.software.SPDF.model.ApplicationProperties; -import stirling.software.SPDF.model.api.Email; +import stirling.software.common.model.ApplicationProperties; +import stirling.software.proprietary.security.model.api.Email; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) public class EmailServiceTest { diff --git a/src/main/java/stirling/software/SPDF/model/api/security/RedactPdfRequest.java b/src/main/java/stirling/software/SPDF/model/api/security/RedactPdfRequest.java deleted file mode 100644 index 45070c5f6..000000000 --- a/src/main/java/stirling/software/SPDF/model/api/security/RedactPdfRequest.java +++ /dev/null @@ -1,34 +0,0 @@ -package stirling.software.SPDF.model.api.security; - -import io.swagger.v3.oas.annotations.media.Schema; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -import stirling.software.common.model.api.PDFFile; - -@Data -@EqualsAndHashCode(callSuper = true) -public class RedactPdfRequest extends PDFFile { - - @Schema( - description = "List of text to redact from the PDF", - type = "string", - requiredMode = Schema.RequiredMode.REQUIRED) - private String listOfText; - - @Schema(description = "Whether to use regex for the listOfText", defaultValue = "false") - private boolean useRegex; - - @Schema(description = "Whether to use whole word search", defaultValue = "false") - private boolean wholeWordSearch; - - @Schema(description = "Hexadecimal color code for redaction, e.g. #FF0000 or 000000", defaultValue = "#000000") - private String redactColor = "#000000"; - - @Schema(description = "Custom padding for redaction", type = "number") - private float customPadding; - - @Schema(description = "Convert the redacted PDF to an image", defaultValue = "false") - private boolean convertPDFToImage; -} diff --git a/stirling-pdf/.gitignore b/stirling-pdf/.gitignore new file mode 100644 index 000000000..90d48ccea --- /dev/null +++ b/stirling-pdf/.gitignore @@ -0,0 +1,196 @@ +### Eclipse ### +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.exe +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders +.classpath +.project +version.properties + +#### Stirling-PDF Files ### +pipeline/watchedFolders/ +pipeline/finishedFolders/ +customFiles/ +configs/ +watchedFolders/ +clientWebUI/ +!cucumber/ +!cucumber/exampleFiles/ +!cucumber/exampleFiles/example_html.zip +exampleYmlFiles/stirling/ +/testing/file_snapshots +SwaggerDoc.json + +# Gradle +.gradle +.lock + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ +.apt_generated_test/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +# Uncomment this line if you wish to ignore the project description file. +# Typically, this file would be tracked if it contains build/dependency configurations: +#.project + +### Eclipse Patch ### +# Spring Boot Tooling +.sts4-cache/ + +### Git ### +# Created by git for backups. To disable backups in Git: +# $ git config --global mergetool.keepBackup false +*.orig + +# Created by git when using merge tools for conflicts +*.BACKUP.* +*.BASE.* +*.LOCAL.* +*.REMOTE.* +*_BACKUP_*.txt +*_BASE_*.txt +*_LOCAL_*.txt +*_REMOTE_*.txt + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar +*.db +/build + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*.pyo + +# Virtual environments +.env* +.venv* +env*/ +venv*/ +ENV/ +env.bak/ +venv.bak/ + +# VS Code +/.vscode/**/* +!/.vscode/settings.json +!/.vscode/extensions.json + +# IntelliJ IDEA +.idea/ +*.iml +out/ + +# Ignore Mac DS_Store files +.DS_Store +**/.DS_Store + +# cucumber +/cucumber/reports/** + +# Certs and Security Files +*.p12 +*.pk8 +*.pem +*.crt +*.cer +*.cert +*.der +*.key +*.csr +*.kdbx +*.jks +*.asc + +# SSH Keys +*.pub +*.priv +id_rsa +id_rsa.pub +id_ecdsa +id_ecdsa.pub +id_ed25519 +id_ed25519.pub +.ssh/ +*ssh + +# cache +.cache +.ruff_cache +.mypy_cache +.pytest_cache +.ipynb_checkpoints + +**/jcef-bundle/ + +# node_modules +node_modules/ +*.mjs diff --git a/stirling-pdf/build/resources/main/logback.xml b/stirling-pdf/build/resources/main/logback.xml index e844e1f86..5bae1484b 100644 --- a/stirling-pdf/build/resources/main/logback.xml +++ b/stirling-pdf/build/resources/main/logback.xml @@ -40,7 +40,7 @@ - diff --git a/stirling-pdf/build/resources/main/settings.yml.template b/stirling-pdf/build/resources/main/settings.yml.template index 0226776c5..e786b9080 100644 --- a/stirling-pdf/build/resources/main/settings.yml.template +++ b/stirling-pdf/build/resources/main/settings.yml.template @@ -86,7 +86,7 @@ mail: from: '' # sender email address legal: - termsAndConditions: https://www.stirlingpdf.com/terms # URL to the terms and conditions of your application (e.g. https://example.com/terms). Empty string to disable or filename to load from local file in static folder + termsAndConditions: https://www.stirlingpdf.com/terms-and-conditions # URL to the terms and conditions of your application (e.g. https://example.com/terms). Empty string to disable or filename to load from local file in static folder privacyPolicy: https://www.stirlingpdf.com/privacy-policy # URL to the privacy policy of your application (e.g. https://example.com/privacy). Empty string to disable or filename to load from local file in static folder accessibilityStatement: '' # URL to the accessibility statement of your application (e.g. https://example.com/accessibility). Empty string to disable or filename to load from local file in static folder cookiePolicy: '' # URL to the cookie policy of your application (e.g. https://example.com/cookie). Empty string to disable or filename to load from local file in static folder @@ -114,11 +114,11 @@ system: name: postgres # set the name of your database. Should match the name of the database you create customPaths: pipeline: - watchedFoldersDir: '' # Defaults to /pipeline/watchedFolders - finishedFoldersDir: '' # Defaults to /pipeline/finishedFolders + watchedFoldersDir: '' #Defaults to /pipeline/watchedFolders + finishedFoldersDir: '' #Defaults to /pipeline/finishedFolders operations: - weasyprint: '' # Defaults to /opt/venv/bin/weasyprint - unoconvert: '' # Defaults to /opt/venv/bin/unoconvert + weasyprint: '' #Defaults to /opt/venv/bin/weasyprint + unoconvert: '' #Defaults to /opt/venv/bin/unoconvert fileUploadLimit: '' # Defaults to "". No limit when string is empty. Set a number, between 0 and 999, followed by one of the following strings to set a limit. "KB", "MB", "GB". ui: diff --git a/stirling-pdf/build/resources/main/templates/home.html b/stirling-pdf/build/resources/main/templates/home.html index a7cbbbd80..4ead72974 100644 --- a/stirling-pdf/build/resources/main/templates/home.html +++ b/stirling-pdf/build/resources/main/templates/home.html @@ -1,241 +1,241 @@ + xmlns:th="https://www.thymeleaf.org"> -
- -
-
- - -
+ +
+
+ + +
-
-
-
-
-
-
-
-

-

+ > +
+
+
+
+
+
+
+

+

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