All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Outbound watcher goroutine now survives transient errors (file-open failures, missing credentials, MinIO client creation errors) via
continueinstead ofreturn, preventing permanent loss of file-watch coverage - Inbound AMQP reconnection loop now correctly exits the inner select loop on channel close via labeled
break, eliminating a busy-spin that prevented reconnection deferinside event/message processing loops replaced with explicit resource cleanup, fixing file-handle and context leaks that accumulated until goroutine exit- Missing
continueafterurl.Parsefailure in outbound handler (previously continued with a nil/partial URL) - Watcher slice changed to pointer type (
[]*fsnotify.Watcher) enabling test teardown to properly stop goroutines and eliminate data races
- Notification messages and titles are now sanitized before interpolation into macOS AppleScript and Windows PowerShell command strings, preventing command injection via crafted filenames
- Removed redundant
usernameandpasswordfields fromWebDAVClientstruct — credentials already held by the gowebdav client, extra copies increased in-memory exposure
- Exponential backoff in retry helpers uses multiplication instead of
int → uintbit-shift to avoid CWE-190 integer overflow (gosec G115) - Noisy info-level log loop that printed all remote endpoints on every S3 event removed
fsnotifyv1.9.0 → v1.10.1klauspost/compressv1.18.5 → v1.18.6golang.org/x/cryptov0.50.0 → v0.51.0golang.org/x/netv0.53.0 → v0.54.0golang.org/x/sysv0.43.0 → v0.44.0golang.org/x/textv0.36.0 → v0.37.0
- Configurable ignore patterns for outbound configurations to skip temporary/partial files
- Build information logging (version, build time, git commit) on startup
- Service account support for enhanced security with MinIO
- Comprehensive test coverage expansion with new unit tests
- Improved notification messages with file details and empty message prevention
- Notifications now include full file paths and prevent empty notifications
- File watcher improved to handle Create/Write events and avoid premature watcher closure
- Endpoint matching fixed to use u.Host instead of u.Hostname() for ports
- Error handling enhanced with better logging and retry mechanisms
- Watcher lifecycle management to prevent event loss
- Configurable file filtering to ignore unwanted files
- Notification system robustness
- Service account credentials with restricted permissions
- Improved secure credential handling
- AMQP connection reconnection on timeout/failure (closes #1)
- Improved error handling and logging for connection states
- Prevented goroutine leaks in message processing
.debpackaging for Debian/Ubuntu with complete documentation- Makefile with
make debtarget for local packaging - Example configuration and systemd service included in package
- CHANGELOG.md included in package documentation
- Improved CI workflow to build .deb packages for Linux amd64/arm64
- Enhanced package metadata and file structure
- Version flag (
-version) to display current version - Retry logic with exponential backoff for MinIO operations (up to 3 retries)
- Timeouts (30 seconds) for all MinIO upload/download operations
- Structured JSON parsing for S3 event messages to prevent panics
- Graceful error handling for AMQP message processing with proper nack/ack
- Updated yaml dependency from v2 to v3 for improved performance
- Replaced
log.Fatal()with graceful error logging in file watching and MinIO operations - Improved AMQP consumer tag from "backupsyncd" to "bucketsyncd"
- Enhanced logging with better error context and redaction
- Potential panics from unsafe type assertions in JSON parsing
- Unchecked AMQP nack errors
- Service crashes on recoverable errors
- Safer handling of configuration and message parsing
- Proper error handling to prevent information leakage
- WebDAV support for outbound file uploads
- AMQP inbound processing for S3 event notifications
- File watching with glob patterns
- Docker build support
- Comprehensive test suite
- Improved logging with structured fields
- Enhanced CI/CD pipeline with security scanning
- Initial release with S3 outbound syncing
- Basic file watching and upload functionality
- YAML configuration support
- Logging with logrus