Skip to content

V2.1.6 - Bug fixes, username support, and validation improvements#21

Merged
coelacant1 merged 1 commit into
mainfrom
testing
Nov 25, 2025
Merged

V2.1.6 - Bug fixes, username support, and validation improvements#21
coelacant1 merged 1 commit into
mainfrom
testing

Conversation

@coelacant1
Copy link
Copy Markdown
Owner


name: Bug fixes, username support, and validation improvements
about: Bug fixes, username support, and validation improvements
title: "[PR] Bug fixes, username support, and validation improvements"
labels: enhancement, bug
assignees: 'Coela'

Added

  • Username Configuration - Support for specifying SSH usernames per node
    • Added username field 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@ip throughout GUI
  • 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.sh runs bash -n on all .sh files
    • Catches structural errors and orphaned code blocks
    • Shows file names and line numbers for syntax errors
  • Enhanced Source Verification - Improved validation of shellcheck directives
    • VerifySourceCalls.py now 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 jq and sshpass
    • Documented that sshpass is only needed for password-based authentication
    • Separated build-time tools from runtime dependencies

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.sh to use configured username
    • __ssh_exec__, __scp_exec__, __scp_exec_recursive__, __scp_download__ now accept username parameter
    • ConfigManager.sh tracks username per node in NODE_USERNAMES associative array
  • Missing Validation - Syntax check gap closed
    • _RunChecks.sh never 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" default
  • Utilities/ConfigManager.sh - Added NODE_USERNAMES tracking and get_node_username() function
  • Utilities/RemoteExecutor.sh - All remote operations parameterized with username
  • GUI.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 -n syntax check was not being run in validation suite
  • DeadCodeCheck.py only checks unused functions/variables, not code structure
  • VerifySourceCalls.py didn't validate orphaned error handlers The fix adds syntax validation to prevent similar issues...

Type of Change

  • Bug fix (non-breaking change fixing an issue)
  • New feature (non-breaking change adding functionality)
  • Breaking change (fix or feature that would break existing functionality)
  • Documentation update
  • Other (please describe):

How Has This Been Tested?

Validated all _RunChecks.

Checklist

  • I have performed a self-review of my own code.
  • I have commented my code where necessary.
  • I have made corresponding changes to the documentation (if applicable).
  • My changes do not generate new warnings or errors.
  • I have tested this code.

Related Issues

#20 (comment)

### Added
- **Username Configuration** - Support for specifying SSH usernames per node
  - Added `username` field 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@ip` throughout GUI
- **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.sh` runs `bash -n` on all .sh files
  - Catches structural errors and orphaned code blocks
  - Shows file names and line numbers for syntax errors
- **Enhanced Source Verification** - Improved validation of shellcheck directives
  - `VerifySourceCalls.py` now 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 `jq` and `sshpass`
  - Documented that sshpass is only needed for password-based authentication
  - Separated build-time tools from runtime dependencies

### 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.sh` to use configured username
  - `__ssh_exec__`, `__scp_exec__`, `__scp_exec_recursive__`, `__scp_download__` now accept username parameter
  - `ConfigManager.sh` tracks username per node in `NODE_USERNAMES` associative array
- **Missing Validation** - Syntax check gap closed
  - `_RunChecks.sh` never 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" default
- `Utilities/ConfigManager.sh` - Added NODE_USERNAMES tracking and __get_node_username__() function
- `Utilities/RemoteExecutor.sh` - All remote operations parameterized with username
- `GUI.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 -n` syntax check was not being run in validation suite
- `DeadCodeCheck.py` only checks unused functions/variables, not code structure
- `VerifySourceCalls.py` didn't validate orphaned error handlers
The fix adds syntax validation to prevent similar issues...
@coelacant1 coelacant1 self-assigned this Nov 25, 2025
@coelacant1 coelacant1 merged commit fc91a2d into main Nov 25, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant