Merge branch 'Stirling-Tools:main' into update-eml-to-pdf-to-support-only-general-fonts

This commit is contained in:
Balázs Szücs 2025-06-19 00:40:56 +02:00 committed by GitHub
commit 2e3c0dc97c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 427 additions and 134 deletions

136
.github/labeler-config-srvaroa.yml vendored Normal file
View File

@ -0,0 +1,136 @@
version: 1
labels:
- label: "Bugfix"
title: '^fix:.*'
- label: "enhancement"
title: '^feat:.*'
- label: "build"
title: '^build:.*'
- label: "chore"
title: '^chore:.*'
- label: "ci"
title: '^ci:.*'
- label: "perf"
title: '^perf:.*'
- label: "refactor"
title: '^refactor:.*'
- label: "revert"
title: '^revert:.*'
- label: "style"
title: '^style:.*'
- label: 'API'
title: '.*openapi.*'
- label: 'Translation'
files:
- 'stirling-pdf/src/main/resources/messages_[a-zA-Z_]{2}_[a-zA-Z_]{2,7}.properties'
- 'scripts/ignore_translation.toml'
- 'stirling-pdf/src/main/resources/templates/fragments/languages.html'
- '.github/scripts/check_language_properties.py'
- label: 'Front End'
files:
- 'stirling-pdf/src/main/resources/templates/**/*'
- 'proprietary/src/main/resources/templates/**/*'
- 'stirling-pdf/src/main/resources/static/**/*'
- 'proprietary/src/main/resources/static/**/*'
- 'stirling-pdf/src/main/java/stirling/software/SPDF/controller/web/**/*'
- 'stirling-pdf/src/main/java/stirling/software/SPDF/UI/**/*'
- label: 'Java'
files:
- 'common/src/main/java/**/*.java'
- 'proprietary/src/main/java/**/*.java'
- 'stirling-pdf/src/main/java/**/*.java'
- label: 'Back End'
files:
- 'stirling-pdf/src/main/java/stirling/software/SPDF/config/**/*'
- 'stirling-pdf/src/main/java/stirling/software/SPDF/controller/**/*'
- 'stirling-pdf/src/main/resources/settings.yml.template'
- 'stirling-pdf/src/main/resources/application.properties'
- 'stirling-pdf/src/main/resources/banner.txt'
- 'scripts/png_to_webp.py'
- 'split_photos.py'
- label: 'Security'
files:
- 'proprietary/src/main/java/stirling/software/proprietary/security/**/*'
- 'scripts/download-security-jar.sh'
- '.github/workflows/dependency-review.yml'
- '.github/workflows/scorecards.yml'
- label: 'API'
files:
- 'stirling-pdf/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java'
- 'stirling-pdf/src/main/java/stirling/software/SPDF/controller/web/MetricsController.java'
- 'stirling-pdf/src/main/java/stirling/software/SPDF/controller/api/**/*'
- 'stirling-pdf/src/main/java/stirling/software/SPDF/model/api/**/*'
- 'scripts/png_to_webp.py'
- 'split_photos.py'
- '.github/workflows/swagger.yml'
- label: 'Documentation'
files:
- '**/*.md'
- 'scripts/counter_translation.py'
- 'scripts/ignore_translation.toml'
title: '^docs:.*'
- label: 'Docker'
files:
- '.github/workflows/build.yml'
- '.github/workflows/push-docker.yml'
- 'Dockerfile'
- 'Dockerfile.fat'
- 'Dockerfile.ultra-lite'
- 'exampleYmlFiles/*.yml'
- 'scripts/download-security-jar.sh'
- 'scripts/init.sh'
- 'scripts/init-without-ocr.sh'
- 'scripts/installFonts.sh'
- 'test.sh'
- 'test2.sh'
- label: 'Devtools'
files:
- '.devcontainer/**/*'
- 'Dockerfile.dev'
- '.vscode/**/*'
- '.editorconfig'
- '.pre-commit-config'
- '.github/workflows/pre_commit.yml'
- 'HowToAddNewLanguage.md'
- label: 'Test'
files:
- 'common/src/test/**/*'
- 'proprietary/src/test/**/*'
- 'stirling-pdf/src/test/**/*'
- 'testing/**/*'
- '.github/workflows/scorecards.yml'
- label: 'Github'
files:
- '.github/**/*'
- label: 'Gradle'
files:
- 'gradle/**/*'
- 'gradlew'
- 'gradlew.bat'
- 'settings.gradle'
- 'build.gradle'
- 'common/build.gradle'
- 'proprietary/build.gradle'
- 'stirling-pdf/build.gradle'

27
.github/labels.yml vendored
View File

@ -111,3 +111,30 @@
- name: "Devtools" - name: "Devtools"
color: "FF9E1F" color: "FF9E1F"
description: "Development tools" description: "Development tools"
- name: "Bugfix"
color: "FF9E1F"
description: "Pull requests that fix bugs"
- name: "Gradle"
color: "FF9E1F"
description: "Pull requests that update Gradle code"
- name: "build"
color: "1E90FF"
description: "Changes that affect the build system or external dependencies"
- name: "chore"
color: "FFD700"
description: "Routine tasks or maintenance that don't modify src or test files"
- name: "ci"
color: "4682B4"
description: "Changes to CI configuration files and scripts"
- name: "perf"
color: "FF69B4"
description: "Changes that improve performance"
- name: "refactor"
color: "9932CC"
description: "Code changes that neither fix a bug nor add a feature"
- name: "revert"
color: "DC143C"
description: "Reverts a previous commit"
- name: "style"
color: "FFA500"
description: "Changes that do not affect the meaning of the code (formatting, etc.)"

35
.github/workflows/auto-labelerV2.yml vendored Normal file
View File

@ -0,0 +1,35 @@
name: "Auto Pull Request Labeler V2"
on:
pull_request_target:
types: [opened, synchronize]
permissions:
contents: read
jobs:
labeler:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Harden Runner
uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
with:
egress-policy: audit
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Setup GitHub App Bot
id: setup-bot
uses: ./.github/actions/setup-bot
with:
app-id: ${{ secrets.GH_APP_ID }}
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
- uses: srvaroa/labeler@0a20eccb8c94a1ee0bed5f16859aece1c45c3e55 # v1.13.0
with:
config_path: .github/labeler-config-srvaroa.yml
use_local_config: false
fail_on_error: true
env:
GITHUB_TOKEN: "${{ steps.setup-bot.outputs.token }}"

View File

@ -131,10 +131,10 @@ Stirling-PDF currently supports 40 languages!
| German (Deutsch) (de_DE) | ![92%](https://geps.dev/progress/92) | | German (Deutsch) (de_DE) | ![92%](https://geps.dev/progress/92) |
| Greek (Ελληνικά) (el_GR) | ![71%](https://geps.dev/progress/71) | | Greek (Ελληνικά) (el_GR) | ![71%](https://geps.dev/progress/71) |
| Hindi (हिंदी) (hi_IN) | ![71%](https://geps.dev/progress/71) | | Hindi (हिंदी) (hi_IN) | ![71%](https://geps.dev/progress/71) |
| Hungarian (Magyar) (hu_HU) | ![94%](https://geps.dev/progress/94) | | Hungarian (Magyar) (hu_HU) | ![99%](https://geps.dev/progress/99) |
| Indonesian (Bahasa Indonesia) (id_ID) | ![65%](https://geps.dev/progress/65) | | Indonesian (Bahasa Indonesia) (id_ID) | ![65%](https://geps.dev/progress/65) |
| Irish (Gaeilge) (ga_IE) | ![72%](https://geps.dev/progress/72) | | Irish (Gaeilge) (ga_IE) | ![72%](https://geps.dev/progress/72) |
| Italian (Italiano) (it_IT) | ![94%](https://geps.dev/progress/94) | | Italian (Italiano) (it_IT) | ![98%](https://geps.dev/progress/98) |
| Japanese (日本語) (ja_JP) | ![72%](https://geps.dev/progress/72) | | Japanese (日本語) (ja_JP) | ![72%](https://geps.dev/progress/72) |
| Korean (한국어) (ko_KR) | ![71%](https://geps.dev/progress/71) | | Korean (한국어) (ko_KR) | ![71%](https://geps.dev/progress/71) |
| Norwegian (Norsk) (no_NB) | ![70%](https://geps.dev/progress/70) | | Norwegian (Norsk) (no_NB) | ![70%](https://geps.dev/progress/70) |

View File

@ -170,19 +170,10 @@ subprojects {
test { test {
useJUnitPlatform() useJUnitPlatform()
} }
// Ensure all packaging tasks depend on writeVersion from root project tasks.named("processResources") {
tasks.withType(org.springframework.boot.gradle.tasks.bundling.BootJar) { dependsOn(rootProject.tasks.writeVersion)
dependsOn(rootProject.tasks.writeVersion) }
}
tasks.withType(Jar) {
dependsOn(rootProject.tasks.writeVersion)
}
tasks.withType(org.gradle.api.tasks.bundling.Zip) {
dependsOn(rootProject.tasks.writeVersion)
}
} }
tasks.withType(JavaCompile).configureEach { tasks.withType(JavaCompile).configureEach {

View File

@ -420,7 +420,27 @@ ignore = [
[hu_HU] [hu_HU]
ignore = [ ignore = [
'AddStampRequest.alphabet',
'AddStampRequest.position',
'adminUserSettings.admin',
'alphabet',
'audit.dashboard.export.json',
'audit.dashboard.modal.id',
'audit.dashboard.table.id',
'certSign.name',
'cookieBanner.popUp.acceptAllBtn',
'endpointStatistics.top10',
'endpointStatistics.top20',
'language.direction', 'language.direction',
'licenses.version',
'poweredBy',
'pro',
'sponsor',
'text',
'validateSignature.cert.bits',
'validateSignature.cert.version',
'validateSignature.status',
'watermark.type.1',
] ]
[id_ID] [id_ID]

View File

@ -1638,82 +1638,82 @@ validateSignature.cert.selfSigned=Önaláírt
validateSignature.cert.bits=bit validateSignature.cert.bits=bit
# Audit Dashboard # Audit Dashboard
audit.dashboard.title=Audit Dashboard audit.dashboard.title=Audit Vezérlőpult
audit.dashboard.systemStatus=Audit System Status audit.dashboard.systemStatus=Audit Rendszer Állapota
audit.dashboard.status=Status audit.dashboard.status=Állapot
audit.dashboard.enabled=Enabled audit.dashboard.enabled=Engedélyezve
audit.dashboard.disabled=Disabled audit.dashboard.disabled=Letiltva
audit.dashboard.currentLevel=Current Level audit.dashboard.currentLevel=Jelenlegi Szint
audit.dashboard.retentionPeriod=Retention Period audit.dashboard.retentionPeriod=Megőrzési Időszak
audit.dashboard.days=days audit.dashboard.days=nap
audit.dashboard.totalEvents=Total Events audit.dashboard.totalEvents=Összes Esemény
# Audit Dashboard Tabs # Audit Dashboard Tabs
audit.dashboard.tab.dashboard=Dashboard audit.dashboard.tab.dashboard=Vezérlőpult
audit.dashboard.tab.events=Audit Events audit.dashboard.tab.events=Audit Események
audit.dashboard.tab.export=Export audit.dashboard.tab.export=Exportálás
# Dashboard Charts # Dashboard Charts
audit.dashboard.eventsByType=Events by Type audit.dashboard.eventsByType=Események Típus Szerint
audit.dashboard.eventsByUser=Events by User audit.dashboard.eventsByUser=Események Felhasználó Szerint
audit.dashboard.eventsOverTime=Events Over Time audit.dashboard.eventsOverTime=Események Időben
audit.dashboard.period.7days=7 Days audit.dashboard.period.7days=7 Nap
audit.dashboard.period.30days=30 Days audit.dashboard.period.30days=30 Nap
audit.dashboard.period.90days=90 Days audit.dashboard.period.90days=90 Nap
# Events Tab # Events Tab
audit.dashboard.auditEvents=Audit Events audit.dashboard.auditEvents=Audit Események
audit.dashboard.filter.eventType=Event Type audit.dashboard.filter.eventType=Esemény Típusa
audit.dashboard.filter.allEventTypes=All event types audit.dashboard.filter.allEventTypes=Minden esemény típus
audit.dashboard.filter.user=User audit.dashboard.filter.user=Felhasználó
audit.dashboard.filter.userPlaceholder=Filter by user audit.dashboard.filter.userPlaceholder=Szűrés felhasználó szerint
audit.dashboard.filter.startDate=Start Date audit.dashboard.filter.startDate=Kezdő Dátum
audit.dashboard.filter.endDate=End Date audit.dashboard.filter.endDate=Befejező Dátum
audit.dashboard.filter.apply=Apply Filters audit.dashboard.filter.apply=Szűrők Alkalmazása
audit.dashboard.filter.reset=Reset Filters audit.dashboard.filter.reset=Szűrők Visszaállítása
# Table Headers # Table Headers
audit.dashboard.table.id=ID audit.dashboard.table.id=ID
audit.dashboard.table.time=Time audit.dashboard.table.time=Idő
audit.dashboard.table.user=User audit.dashboard.table.user=Felhasználó
audit.dashboard.table.type=Type audit.dashboard.table.type=Típus
audit.dashboard.table.details=Details audit.dashboard.table.details=Részletek
audit.dashboard.table.viewDetails=View Details audit.dashboard.table.viewDetails=Részletek Megtekintése
# Pagination # Pagination
audit.dashboard.pagination.show=Show audit.dashboard.pagination.show=Megjelenítés
audit.dashboard.pagination.entries=entries audit.dashboard.pagination.entries=bejegyzés
audit.dashboard.pagination.pageInfo1=Page audit.dashboard.pagination.pageInfo1=Oldal
audit.dashboard.pagination.pageInfo2=of audit.dashboard.pagination.pageInfo2=/
audit.dashboard.pagination.totalRecords=Total records: audit.dashboard.pagination.totalRecords=Összes rekord:
# Modal # Modal
audit.dashboard.modal.eventDetails=Event Details audit.dashboard.modal.eventDetails=Esemény Részletei
audit.dashboard.modal.id=ID audit.dashboard.modal.id=ID
audit.dashboard.modal.user=User audit.dashboard.modal.user=Felhasználó
audit.dashboard.modal.type=Type audit.dashboard.modal.type=Típus
audit.dashboard.modal.time=Time audit.dashboard.modal.time=Idő
audit.dashboard.modal.data=Data audit.dashboard.modal.data=Adatok
# Export Tab # Export Tab
audit.dashboard.export.title=Export Audit Data audit.dashboard.export.title=Audit Adatok Exportálása
audit.dashboard.export.format=Export Format audit.dashboard.export.format=Export Formátum
audit.dashboard.export.csv=CSV (Comma Separated Values) audit.dashboard.export.csv=CSV (Vesszővel Elválasztott Értékek)
audit.dashboard.export.json=JSON (JavaScript Object Notation) audit.dashboard.export.json=JSON (JavaScript Object Notation)
audit.dashboard.export.button=Export Data audit.dashboard.export.button=Adatok Exportálása
audit.dashboard.export.infoTitle=Export Information audit.dashboard.export.infoTitle=Export Információk
audit.dashboard.export.infoDesc1=The export will include all audit events matching the selected filters. For large datasets, the export may take a few moments to generate. audit.dashboard.export.infoDesc1=Az export tartalmazni fogja az összes audit eseményt, amelyek megfelelnek a kiválasztott szűrőknek. Nagy adathalmazok esetén az export generálása eltarthat néhány percig.
audit.dashboard.export.infoDesc2=Exported data will include: audit.dashboard.export.infoDesc2=Az exportált adatok tartalmazni fogják:
audit.dashboard.export.infoItem1=Event ID audit.dashboard.export.infoItem1=Esemény ID
audit.dashboard.export.infoItem2=User audit.dashboard.export.infoItem2=Felhasználó
audit.dashboard.export.infoItem3=Event Type audit.dashboard.export.infoItem3=Esemény Típusa
audit.dashboard.export.infoItem4=Timestamp audit.dashboard.export.infoItem4=Időbélyeg
audit.dashboard.export.infoItem5=Event Data audit.dashboard.export.infoItem5=Esemény Adatok
# JavaScript i18n keys # JavaScript i18n keys
audit.dashboard.js.noEventsFound=No audit events found matching the current filters audit.dashboard.js.noEventsFound=Nem található audit esemény a jelenlegi szűrőknek megfelelően
audit.dashboard.js.errorLoading=Error loading data: audit.dashboard.js.errorLoading=Hiba az adatok betöltésekor:
audit.dashboard.js.errorRendering=Error rendering table: audit.dashboard.js.errorRendering=Hiba a táblázat megjelenítésekor:
audit.dashboard.js.loadingPage=Loading page audit.dashboard.js.loadingPage=Oldal betöltése
#################### ####################
# Cookie banner # # Cookie banner #

View File

@ -200,7 +200,7 @@ disabledCurrentUserMessage=L'utente corrente non può essere disabilitato
downgradeCurrentUserLongMessage=Impossibile declassare il ruolo dell'utente corrente. Pertanto, l'utente corrente non verrà visualizzato. downgradeCurrentUserLongMessage=Impossibile declassare il ruolo dell'utente corrente. Pertanto, l'utente corrente non verrà visualizzato.
userAlreadyExistsOAuthMessage=L'utente esiste già come utente OAuth2. userAlreadyExistsOAuthMessage=L'utente esiste già come utente OAuth2.
userAlreadyExistsWebMessage=L'utente esiste già come utente web. userAlreadyExistsWebMessage=L'utente esiste già come utente web.
invalidRoleMessage=Invalid role. invalidRoleMessage=Ruolo non valido.
error=Errore error=Errore
oops=Oops! oops=Oops!
help=Aiuto help=Aiuto
@ -1548,7 +1548,7 @@ survey.meeting.1=Se utilizzi Stirling PDF al lavoro, saremo lieti di parlare con
survey.meeting.2=Questa è un'opportunità per: survey.meeting.2=Questa è un'opportunità per:
survey.meeting.3=Ottenere assistenza per la distribuzione, le integrazioni o la risoluzione dei problemi survey.meeting.3=Ottenere assistenza per la distribuzione, le integrazioni o la risoluzione dei problemi
survey.meeting.4=Fornire feedback diretto su prestazioni, casi limite e lacune nelle funzionalità survey.meeting.4=Fornire feedback diretto su prestazioni, casi limite e lacune nelle funzionalità
survey.meeting.5=Aiutaci a perfezionare Stirling PDF per un utilizzo aziendale nel mondo reale survey.meeting.5=Aiutarci a perfezionare Stirling PDF per un utilizzo aziendale nel mondo reale
survey.meeting.6=Se sei interessato, puoi prenotare un appuntamento direttamente con il nostro team. (Solo in inglese) survey.meeting.6=Se sei interessato, puoi prenotare un appuntamento direttamente con il nostro team. (Solo in inglese)
survey.meeting.7=Non vediamo l'ora di approfondire i tuoi casi d'uso e di migliorare ulteriormente Stirling PDF! survey.meeting.7=Non vediamo l'ora di approfondire i tuoi casi d'uso e di migliorare ulteriormente Stirling PDF!
survey.meeting.notInterested=Non sei un'azienda e/o sei interessato a un incontro? survey.meeting.notInterested=Non sei un'azienda e/o sei interessato a un incontro?
@ -1638,82 +1638,82 @@ validateSignature.cert.selfSigned=Autofirmato
validateSignature.cert.bits=bit validateSignature.cert.bits=bit
# Audit Dashboard # Audit Dashboard
audit.dashboard.title=Audit Dashboard audit.dashboard.title=Dashboard di controllo
audit.dashboard.systemStatus=Audit System Status audit.dashboard.systemStatus=Stato del sistema di controllo
audit.dashboard.status=Status audit.dashboard.status=Stato
audit.dashboard.enabled=Enabled audit.dashboard.enabled=Abilitato
audit.dashboard.disabled=Disabled audit.dashboard.disabled=Disabilitato
audit.dashboard.currentLevel=Current Level audit.dashboard.currentLevel=Livello attuale
audit.dashboard.retentionPeriod=Retention Period audit.dashboard.retentionPeriod=Periodo di conservazione
audit.dashboard.days=days audit.dashboard.days=giorni
audit.dashboard.totalEvents=Total Events audit.dashboard.totalEvents=Eventi totali
# Audit Dashboard Tabs # Audit Dashboard Tabs
audit.dashboard.tab.dashboard=Dashboard audit.dashboard.tab.dashboard=Dashboard
audit.dashboard.tab.events=Audit Events audit.dashboard.tab.events=Controllo eventi
audit.dashboard.tab.export=Export audit.dashboard.tab.export=Esporta
# Dashboard Charts # Dashboard Charts
audit.dashboard.eventsByType=Events by Type audit.dashboard.eventsByType=Eventi per tipo
audit.dashboard.eventsByUser=Events by User audit.dashboard.eventsByUser=Eventi per utente
audit.dashboard.eventsOverTime=Events Over Time audit.dashboard.eventsOverTime=Eventi nel tempo
audit.dashboard.period.7days=7 Days audit.dashboard.period.7days=7 giorni
audit.dashboard.period.30days=30 Days audit.dashboard.period.30days=30 giorni
audit.dashboard.period.90days=90 Days audit.dashboard.period.90days=90 giorni
# Events Tab # Events Tab
audit.dashboard.auditEvents=Audit Events audit.dashboard.auditEvents=Controllo eventi
audit.dashboard.filter.eventType=Event Type audit.dashboard.filter.eventType=Tipo di evento
audit.dashboard.filter.allEventTypes=All event types audit.dashboard.filter.allEventTypes=Tutti i tipi di eventi
audit.dashboard.filter.user=User audit.dashboard.filter.user=Utente
audit.dashboard.filter.userPlaceholder=Filter by user audit.dashboard.filter.userPlaceholder=Filtra per utente
audit.dashboard.filter.startDate=Start Date audit.dashboard.filter.startDate=Data di inizio
audit.dashboard.filter.endDate=End Date audit.dashboard.filter.endDate=Data di fine
audit.dashboard.filter.apply=Apply Filters audit.dashboard.filter.apply=Applica filtri
audit.dashboard.filter.reset=Reset Filters audit.dashboard.filter.reset=Resetta Filtri
# Table Headers # Table Headers
audit.dashboard.table.id=ID audit.dashboard.table.id=ID
audit.dashboard.table.time=Time audit.dashboard.table.time=Orario
audit.dashboard.table.user=User audit.dashboard.table.user=Utente
audit.dashboard.table.type=Type audit.dashboard.table.type=Tipo
audit.dashboard.table.details=Details audit.dashboard.table.details=Dettagli
audit.dashboard.table.viewDetails=View Details audit.dashboard.table.viewDetails=Vedi dettagli
# Pagination # Pagination
audit.dashboard.pagination.show=Show audit.dashboard.pagination.show=Mostra
audit.dashboard.pagination.entries=entries audit.dashboard.pagination.entries=voci
audit.dashboard.pagination.pageInfo1=Page audit.dashboard.pagination.pageInfo1=Pagina
audit.dashboard.pagination.pageInfo2=of audit.dashboard.pagination.pageInfo2=di
audit.dashboard.pagination.totalRecords=Total records: audit.dashboard.pagination.totalRecords=Record totali:
# Modal # Modal
audit.dashboard.modal.eventDetails=Event Details audit.dashboard.modal.eventDetails=Dettagli dell'evento
audit.dashboard.modal.id=ID audit.dashboard.modal.id=ID
audit.dashboard.modal.user=User audit.dashboard.modal.user=Utente
audit.dashboard.modal.type=Type audit.dashboard.modal.type=Tipo
audit.dashboard.modal.time=Time audit.dashboard.modal.time=ora
audit.dashboard.modal.data=Data audit.dashboard.modal.data=Dati
# Export Tab # Export Tab
audit.dashboard.export.title=Export Audit Data audit.dashboard.export.title=Esportazione dei dati di controllo
audit.dashboard.export.format=Export Format audit.dashboard.export.format=Formato di esportazione
audit.dashboard.export.csv=CSV (Comma Separated Values) audit.dashboard.export.csv=CSV (valori separati da virgola)
audit.dashboard.export.json=JSON (JavaScript Object Notation) audit.dashboard.export.json=JSON (JavaScript Object Notation)
audit.dashboard.export.button=Export Data audit.dashboard.export.button=Esporta dati
audit.dashboard.export.infoTitle=Export Information audit.dashboard.export.infoTitle=Informazioni sull'esportazione
audit.dashboard.export.infoDesc1=The export will include all audit events matching the selected filters. For large datasets, the export may take a few moments to generate. audit.dashboard.export.infoDesc1=L'esportazione includerà tutti gli eventi di controllo corrispondenti ai filtri selezionati. Per set di dati di grandi dimensioni, la generazione dell'esportazione potrebbe richiedere alcuni minuti.
audit.dashboard.export.infoDesc2=Exported data will include: audit.dashboard.export.infoDesc2=I dati esportati includeranno:
audit.dashboard.export.infoItem1=Event ID audit.dashboard.export.infoItem1=ID evento
audit.dashboard.export.infoItem2=User audit.dashboard.export.infoItem2=Utente
audit.dashboard.export.infoItem3=Event Type audit.dashboard.export.infoItem3=Tipo evento
audit.dashboard.export.infoItem4=Timestamp audit.dashboard.export.infoItem4=Marca temporale
audit.dashboard.export.infoItem5=Event Data audit.dashboard.export.infoItem5=Dati dell'evento
# JavaScript i18n keys # JavaScript i18n keys
audit.dashboard.js.noEventsFound=No audit events found matching the current filters audit.dashboard.js.noEventsFound=Nessun evento di audit trovato corrispondente ai filtri correnti
audit.dashboard.js.errorLoading=Error loading data: audit.dashboard.js.errorLoading=Errore durante il caricamento dei dati:
audit.dashboard.js.errorRendering=Error rendering table: audit.dashboard.js.errorRendering=Errore nel rendering della tabella:
audit.dashboard.js.loadingPage=Loading page audit.dashboard.js.loadingPage=Caricamento pagina
#################### ####################
# Cookie banner # # Cookie banner #

View File

@ -169,6 +169,50 @@ compare_file_lists() {
return 0 return 0
} }
# Get the expected version from Gradle once
get_expected_version() {
./gradlew printVersion --quiet | tail -1
}
# Function to verify the application version
verify_app_version() {
local service_name=$1
local base_url=$2
echo "Checking version for $service_name (expecting $EXPECTED_VERSION)..."
# Try to access the homepage and extract the version
local response
response=$(curl -s "$base_url")
# Extract version from pixel tracking tag
local actual_version
actual_version=$(echo "$response" | grep -o 'appVersion=[0-9.]*' | head -1 | sed 's/appVersion=//')
# If we couldn't find the version in the pixel tag, try other approaches
if [ -z "$actual_version" ]; then
# Check for "App Version:" format
if echo "$response" | grep -q "App Version:"; then
actual_version=$(echo "$response" | grep -o "App Version: [0-9.]*" | sed 's/App Version: //')
else
echo "❌ Version verification failed: Could not find version information"
return 1
fi
fi
# Check if the extracted version matches expected version
if [ "$actual_version" = "$EXPECTED_VERSION" ]; then
echo "✅ Version verification passed: $actual_version"
return 0
elif [ "$actual_version" = "0.0.0" ]; then
echo "❌ Version verification failed: Found placeholder version 0.0.0"
return 1
else
echo "❌ Version verification failed: Found $actual_version, expected $EXPECTED_VERSION"
return 1
fi
}
# Function to test a Docker Compose configuration # Function to test a Docker Compose configuration
test_compose() { test_compose() {
local compose_file=$1 local compose_file=$1
@ -206,20 +250,27 @@ run_tests() {
fi fi
} }
# Main testing routine # Main testing routine
main() { main() {
SECONDS=0 SECONDS=0
cd "$PROJECT_ROOT" cd "$PROJECT_ROOT"
export DOCKER_CLI_EXPERIMENTAL=enabled export DOCKER_CLI_EXPERIMENTAL=enabled
export COMPOSE_DOCKER_CLI_BUILD=0 export COMPOSE_DOCKER_CLI_BUILD=0
export DISABLE_ADDITIONAL_FEATURES=true export DISABLE_ADDITIONAL_FEATURES=true
# Run the gradlew build command and check if it fails # Run the gradlew build command and check if it fails
if ! ./gradlew clean build; then if ! ./gradlew clean build; then
echo "Gradle build failed with security disabled, exiting script." echo "Gradle build failed with security disabled, exiting script."
exit 1 exit 1
fi fi
# Get expected version after the build to ensure version.properties is created
echo "Getting expected version from Gradle..."
EXPECTED_VERSION=$(get_expected_version)
echo "Expected version: $EXPECTED_VERSION"
# Building Docker images # Building Docker images
# docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest -f ./Dockerfile . # docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest -f ./Dockerfile .
@ -237,6 +288,16 @@ main() {
echo "Webpage accessibility lite tests failed" echo "Webpage accessibility lite tests failed"
fi fi
cd "$PROJECT_ROOT" cd "$PROJECT_ROOT"
echo "Testing version verification..."
if verify_app_version "Stirling-PDF-Ultra-Lite" "http://localhost:8080"; then
passed_tests+=("Stirling-PDF-Ultra-Lite-Version-Check")
echo "Version verification passed for Stirling-PDF-Ultra-Lite"
else
failed_tests+=("Stirling-PDF-Ultra-Lite-Version-Check")
echo "Version verification failed for Stirling-PDF-Ultra-Lite"
fi
docker-compose -f "./exampleYmlFiles/docker-compose-latest-ultra-lite.yml" down docker-compose -f "./exampleYmlFiles/docker-compose-latest-ultra-lite.yml" down
# run_tests "Stirling-PDF" "./exampleYmlFiles/docker-compose-latest.yml" # run_tests "Stirling-PDF" "./exampleYmlFiles/docker-compose-latest.yml"
@ -248,6 +309,11 @@ main() {
echo "Gradle build failed with security enabled, exiting script." echo "Gradle build failed with security enabled, exiting script."
exit 1 exit 1
fi fi
# Get expected version after the security-enabled build
echo "Getting expected version from Gradle (security enabled)..."
EXPECTED_VERSION=$(get_expected_version)
echo "Expected version with security enabled: $EXPECTED_VERSION"
# Building Docker images with security enabled # Building Docker images with security enabled
# docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest -f ./Dockerfile . # docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest -f ./Dockerfile .
@ -273,6 +339,15 @@ main() {
echo "Webpage accessibility full tests failed" echo "Webpage accessibility full tests failed"
fi fi
cd "$PROJECT_ROOT" cd "$PROJECT_ROOT"
echo "Testing version verification..."
if verify_app_version "Stirling-PDF-Security-Fat" "http://localhost:8080"; then
passed_tests+=("Stirling-PDF-Security-Fat-Version-Check")
echo "Version verification passed for Stirling-PDF-Security-Fat"
else
failed_tests+=("Stirling-PDF-Security-Fat-Version-Check")
echo "Version verification failed for Stirling-PDF-Security-Fat"
fi
docker-compose -f "./exampleYmlFiles/docker-compose-latest-fat-security.yml" down docker-compose -f "./exampleYmlFiles/docker-compose-latest-fat-security.yml" down
@ -341,6 +416,15 @@ main() {
failed_tests+=("Disabled-Endpoints") failed_tests+=("Disabled-Endpoints")
echo "Disabled Endpoints tests failed" echo "Disabled Endpoints tests failed"
fi fi
echo "Testing version verification..."
if verify_app_version "Stirling-PDF-Fat-Disable-Endpoints" "http://localhost:8080"; then
passed_tests+=("Stirling-PDF-Fat-Disable-Endpoints-Version-Check")
echo "Version verification passed for Stirling-PDF-Fat-Disable-Endpoints"
else
failed_tests+=("Stirling-PDF-Fat-Disable-Endpoints-Version-Check")
echo "Version verification failed for Stirling-PDF-Fat-Disable-Endpoints"
fi
docker-compose -f "./exampleYmlFiles/docker-compose-latest-fat-endpoints-disabled.yml" down docker-compose -f "./exampleYmlFiles/docker-compose-latest-fat-endpoints-disabled.yml" down