Release v2.1.6 - Bug fixes, username support, and validation improvements
Added
- Username Configuration - Support for specifying SSH usernames per node
- Added
usernamefield to nodes.json configuration - Username prompts in all node configuration flows (manual entry, saved nodes, IP ranges, VMID ranges)
- Default username is "root" with option to specify alternatives
- Display format changed to
username@ipthroughout GUI
- Added
- Dependency Checking - Runtime validation before remote execution
__check_remote_dependencies__()function checks for sshpass and jq- Helpful error messages with installation commands for all major distros
- Notes that sshpass is not required when using SSH keys
- Syntax Validation - Basic shell syntax checking added to validation suite
- New Check 1a. in
_RunChecks.shrunsbash -non all .sh files - Catches structural errors and orphaned code blocks
- Shows file names and line numbers for syntax errors
- New Check 1a. in
- Enhanced Source Verification - Improved validation of shellcheck directives
VerifySourceCalls.pynow validates shellcheck comments have matching source statements- Detects orphaned shellcheck directives within 5 lines
- Prevents mismatched documentation and code
Changed
- Remote Execution UI - Scripts hidden in remote mode for better UX
- GUI.sh and CCPVE.sh hidden from root menu when in remote execution mode
- Prevents accidental execution of control scripts on remote nodes
- Scripts still shown in local mode and subdirectories
- README.md - Clarified dependency requirements
- Updated installation command to include
jqandsshpass - Documented that sshpass is only needed for password-based authentication
- Separated build-time tools from runtime dependencies
- Updated installation command to include
Fixed
- Critical: Orphaned Error Handler - Fixed syntax error in
Host/HostInfo.sh- Removed orphaned error handler code block (lines 34-36)
- File had error message without matching source statement
- Bug prevented script execution on remote nodes
- Username Hardcoding - Removed hardcoded "root@" from all remote operations
- Updated all SSH/SCP operations in
RemoteExecutor.shto use configured username __ssh_exec__,__scp_exec__,__scp_exec_recursive__,__scp_download__now accept username parameterConfigManager.shtracks username per node inNODE_USERNAMESassociative array
- Updated all SSH/SCP operations in
- Missing Validation - Syntax check gap closed
_RunChecks.shnever validated basic syntax :C- Now catches structural errors that bash -n would detect
- Prevents orphaned code and malformed control structures from entering repository
Technical Details
nodes.json.template- Added username field with "root" defaultUtilities/ConfigManager.sh- Added NODE_USERNAMES tracking and get_node_username() functionUtilities/RemoteExecutor.sh- All remote operations parameterized with usernameGUI.sh- Dependency checking, username prompts, and script filtering.check/VerifySourceCalls.py- Enhanced shellcheck directive validation.check/_RunChecks.sh- Added Check 1a. for syntax validation
Developer Notes
The orphaned error handler bug existed because:
bash -nsyntax check was not being run in validation suiteDeadCodeCheck.pyonly checks unused functions/variables, not code structureVerifySourceCalls.pydidn't validate orphaned error handlers
The fix adds syntax validation to prevent similar issues...
Commit: fc91a2d