v2.7.1
Security
ChunkedUploadService: redirect-following is now disabled (allow_redirects => false) on the upload init, chunk, and finalize requests as well — previously only the status-poll GET was hardened. Guzzle re-sends custom headers across redirects (it strips onlyAuthorization/Cookie), so a30xfrom the backup origin could otherwise relay theX-Notifier-Tokensecret to an arbitrary (even cleartext-http) host. The token now never leaves the configured HTTPS origin on any request.ChunkedUploadService: the server-suppliedfailure_reasonis sanitized (control characters stripped, length capped at 500) before being interpolated into the thrown exception and logged, preventing log injection from a misbehaving server.notifier:check: theNOTIFIER_BACKUP_CODEandNOTIFIER_BACKUP_PASSWORDsecrets are now displayed as presence + length only (set (N chars)) instead of revealing their first and last three characters, so they cannot leak into terminal scrollback or CI logs.
Fixed
PostgresDumper: fixed an undefined$binaryvariable on the dump-failure log path (surfaced by static analysis).NotifierDatabaseService: the "creating backup file" log entry now records the concrete dumper (MysqlDumper/PostgresDumper) instead of always reporting theLazyDatabaseDumperproxy.- CHANGELOG: removed a spurious
Contracts\DatabaseDumper → DatabaseDumperInterfacerename entry from the 2.7.0 notes (that interface is new, not a rename) and corrected the 2.7.0 release date.
Changed
MysqlDumper/PostgresDumper: command construction was extracted into abuildCommand()method. Behavior is unchanged — the password is still passed only via theMYSQL_PWD/PGPASSWORDenv var and never on the command line — but the generated argv is now unit-testable.
Tests
- Added direct unit coverage for
MysqlDumper,PostgresDumper(argv, excluded-table qualification, and binary resolution includingysql_dump/pg_dumppreference and config overrides) andLazyDatabaseDumper(single resolution + proxying). - Added driver-selection tests for
NotifierServiceProvider::resolveDumper(mysql/mariadb/pgsql, default-connection fallback, and the unsupported-driver / missing-connection error branches). - Added
ChunkedUploadService::waitForCompletiontests (completed / failed / non-terminal polling / timeout / repeated polling errors / failure-reason sanitization). - Hardened the
notifier:checkdatabase-dump-tool and masked-value checks, and rewrote the staleNotifierDatabaseServicetest (which still asserted the removed, insecure--password=argv pattern) into real behavior tests.
What's Changed
- ci(deps): bump codecov/codecov-action from 6 to 7 in the codecov group by @dependabot[bot] in #24
- ci(deps): bump actions/dependency-review-action from 4 to 5 in the actions group by @dependabot[bot] in #23
- feat: finalize 2.7.0 — explicit naming convention, status_url hardening, PostgreSQL dumps by @ludwigtomas in #25
Full Changelog: v2.6.4...v2.7.1