CRITICAL FIX: Added robust newline stripping as a defensive measure when writing passwords to the config file. The Problem: Even though prompt_password() was fixed to output to stderr, the newline was still somehow getting into the PBS_PASSWORD variable in some cases, causing the config file to be malformed. The Solution (Defense in Depth): Before writing PBS_PASSWORD to config file, explicitly strip all newline and carriage return characters: PBS_PASSWORD_CLEAN=$(echo -n "$PBS_PASSWORD" | tr -d '\n\r') This ensures the password is always clean, regardless of how it was captured or what's in the original variable. Changes: - pbs-client-installer.sh: - Line 298: Added newline filter in reconfigure_connection() - Line 593: Added newline filter in create_systemd_service() - Both use: tr -d '\n\r' to remove \n and \r characters CHANGELOG.md: - Updated to document defensive filtering approach - Lists both functions that apply the filter This is a belt-and-suspenders approach: we fix the source (prompt_password) AND filter at write time for maximum safety. Impact: Config file will now ALWAYS have single-line passwords, even if something goes wrong with password capture. This prevents the "authentication failed - invalid credentials" error in the backup service. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
4.1 KiB
4.1 KiB
Changelog
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.
[Unreleased]
Added
- Intelligent reconfiguration options when PBS client is already installed
- Quick connection-only reconfiguration (server/credentials only)
- Full reconfiguration of all settings
- Reinstall option with reconfiguration
- Exit without changes option
- 3-step connection verification process:
- Step 1: Server reachability test (5s timeout with curl)
- Step 2: Authentication test with automatic SSL fingerprint acceptance
- Step 3: Datastore access verification
- Display available block devices when invalid device is entered
- Step-by-step progress indicators during connection testing
test-connection.sh- Diagnostic script for testing PBS connections manually- Parameterized for security (no hardcoded credentials)
- Tests server reachability, authentication, and datastore access
- Handles SSL fingerprint acceptance interactively
- Comprehensive documentation in README:
- Step-by-step walkthrough of complete installation (14 steps)
- PBS server setup guide (API token creation and permissions)
- Common permission error troubleshooting
- Explanation of backup types, schedules, and retention policies
Changed
- Installation instructions now use
git cloneinstead ofwget - Connection test provides better user feedback during testing
- Script now detects existing configurations and offers appropriate options
- Block device detection now strips btrfs subvolume notation (e.g.,
[/@]) - Connection test succeeds if authentication works, even if no backups exist yet
- More specific error messages based on which step of connection test fails
- SSL certificate fingerprints are now automatically accepted during setup
- Reduced authentication timeout from 30s to 15s
- README now includes comprehensive step-by-step walkthrough
- Prerequisites section expanded with detailed PBS server setup instructions
- Default realm changed from "pbs" to "pam" (more common for root authentication)
- Default encryption setting changed from "yes" to "no" (user can opt-in if needed)
- Main menu now includes "Run backup now" option for immediate backup testing
Fixed
- CRITICAL: SSL fingerprint prompt no longer causes authentication timeout
- Script now automatically accepts SSL fingerprints by piping 'y' to login
- This was the root cause of "authentication hanging" issues
- CRITICAL: Password/token capture no longer includes newline character
prompt_password()function now outputs formatting to stderr- Added defensive newline stripping when writing config file
- Filters
\nand\rcharacters from passwords usingtr -d '\n\r' - Fixes "authentication failed - invalid credentials" in backup service
- Config file now has properly formatted single-line passwords
- Applied to both
reconfigure_connection()andcreate_systemd_service()
- Script no longer hangs indefinitely when PBS server is unreachable
- Block device auto-detection now correctly handles btrfs subvolumes
- Invalid device paths like
/dev/mapper/root[/@]are now properly cleaned - Connection test now differentiates between network issues and authentication failures
- Shows actual PBS client error messages when authentication fails
- Authentication test now uses correct
logincommand instead of non-existentstatuscommand - Connection test no longer times out due to using wrong PBS client commands
[1.0.0] - 2025-11-01
Added
- Initial release
- Auto-detection of Linux distribution (Ubuntu, Debian, Arch)
- Interactive configuration via console prompts
- Automatic encryption key generation with paper backup
- Systemd service and timer for automated backups
- Configurable retention policies
- Connection testing before finalization
- Immediate backup option after installation
- Support for file-level (.pxar) backups
- Support for block device (.img) backups
- Hybrid backup mode (daily files + weekly block device)
- Comprehensive error handling and logging
- Uninstaller script