feat(verapdf): add moox/verapdf package with headless install + hardened installer#1006
Open
jbagsik wants to merge 6 commits into
Open
feat(verapdf): add moox/verapdf package with headless install + hardened installer#1006jbagsik wants to merge 6 commits into
jbagsik wants to merge 6 commits into
Conversation
Mirror kosit-validator: headless IzPack install, VeraPdfService + VeraPdfResult, audit model with morph pivot, and Pest fixture tests without a live JVM. Co-authored-by: Cursor <cursoragent@cursor.com>
Sanitize report basenames, reject output subdirectory traversal, prefer configured Java on PATH for the launcher, and keep config/README free of e-billing references. Co-authored-by: Cursor <cursoragent@cursor.com>
Pin IzPack auto-install to 1.30+ CLI (exclude GUI), assert CLI layout after install/doctor, and document headless JRE prerequisites. Co-authored-by: Cursor <cursoragent@cursor.com>
Fail verapdf:install when a launcher exists without bin/*cli*.jar so GUI-only leftovers cannot short-circuit a headless reinstall. Co-authored-by: Cursor <cursoragent@cursor.com>
Verify the pinned installer SHA-256 before use, reject path-traversal ZIP entries, and defer --force wipe until after integrity checks so failures stay non-destructive. Co-authored-by: Cursor <cursoragent@cursor.com>
Tighten SafeZipExtractor against symlink and '.' path segments, and assert --force does not wipe an existing install when extraction is refused. Co-authored-by: Cursor <cursoragent@cursor.com>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Summary
Adds
moox/verapdf, a standalone package for PDF/A-3 conformance validation viaveraPDF, mirroring
moox/kosit-validator. It is fully self-contained — dependsonly on
moox/core, touches nothing outsidepackages/verapdf/, and holds noe-billing/host-app knowledge. veraPDF runs as an arm's-length CLI process
(MPL-2.0, commercial-safe). This PR delivers the package, a headless server
install, and download-integrity hardening.
Package (validation core)
config/verapdf.php): base path, launcher location, Java binary.VeraPdfService::validate()→VeraPdfResult(passed()+ parsed errors;PDF/A flavour defaults to
3b).VeraPdfValidationmodel + morph pivot (verapdf_validatables) viaRecordVeraPdfValidation, mirroringKositValidation/KositValidatable.isInstalled(),javaAvailable(),verapdf:doctor.verapdf:install,verapdf:validate,verapdf:doctor.VeraPdfRelationConfigfor future owner wiring (no Filament resource —CLI + persistence only). DE/EN translations included.
Headless / server install
verapdf:installtargets headless Linux servers (no GUI/X11): an IzPackauto-install descriptor selects the veraPDF CLI pack only, excluding the
desktop/GUI pack.
verapdf:doctorconfirms a healthy headless setup.
Installer hardening
(
InstallerChecksum) before use; a mismatch aborts cleanly.SafeZipExtractorrejects entries resolving outside the target dir (zip-slip)and ZIP symlinks; the
--forcereinstall path is covered against the same.VeraPdfOutputPath::resolve()rejects../emptysegments. No e-billing FQCNs in config/README.
Testing
install-command behavior, checksum-mismatch and zip-slip/symlink rejection,
auto-install stub, doctor, arch test.
After merge (host apps)
Commits