mirror of
https://github.com/angristan/openvpn-install.git
synced 2025-12-18 17:57:03 +01:00
refactor: eliminate CHOICE variables and centralize configuration (#1427)
## Summary - Eliminate all CHOICE intermediary variables (~17 variables removed) - Replace numeric values with descriptive string values throughout - Centralize configuration defaults in a single function - Add comprehensive validation for all configuration values - Add reusable helper functions for interactive prompts - Fix non-interactive mode to skip interactive prompts entirely ## Changes ### Configuration Values Now Use Strings | Variable | Before | After | |----------|--------|-------| | TLS_SIG | 1, 2, 3 | "crypt-v2", "crypt", "auth" | | CERT_TYPE | 1, 2 | "ecdsa", "rsa" | | DNS | 1-13 | "cloudflare", "quad9", "custom", etc. | ### Code Reduction - Removed ~80 lines of duplicate defaults from `installOpenVPN()` - Removed ~60 lines of CHOICE variable assignments from `cmd_install()` - Net change: cleaner structure with better separation of concerns ### New Functions - `set_installation_defaults()`: Single source of truth for all defaults - `validate_configuration()`: Validates all config values after defaults applied - `select_from_array()`: Generic menu selection helper - `select_with_labels()`: Menu with display labels different from values - `prompt_yes_no()`: Yes/no prompts with validation - `prompt_validated()`: Custom value prompts with validation function - `detect_server_ips()`: Detects server IPv4/IPv6 addresses - `prepare_network_config()`: Calculates derived network config (gateways, etc.) ### Configuration Constants Added readonly arrays for valid options: - `PROTOCOLS`, `DNS_PROVIDERS`, `CIPHERS`, `CERT_TYPES` - `CERT_CURVES`, `RSA_KEY_SIZES`, `TLS_VERSIONS` - `TLS13_CIPHERSUITES_OPTIONS`, `TLS_GROUPS_OPTIONS` - `HMAC_ALGORITHMS`, `TLS_SIG_MODES` ### Non-Interactive Mode Fix - `installQuestions()` is now only called in interactive mode - IP detection and gateway calculations extracted to separate functions - Renamed `AUTO_INSTALL` to `NON_INTERACTIVE_INSTALL` for clarity - Non-interactive installs no longer hang waiting for user input ## Test plan - [ ] Run `make test` (default Ubuntu) - [ ] Test interactive installation - [ ] Test non-interactive installation with CLI flags - [ ] Test non-interactive installation with environment variables - [ ] Test invalid configuration values are rejected
This commit is contained in:
2
.github/workflows/lint.yml
vendored
2
.github/workflows/lint.yml
vendored
@@ -23,6 +23,6 @@ jobs:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
- name: Lint Code Base
|
||||
uses: super-linter/super-linter@502f4fe48a81a392756e173e39a861f8c8efe056 # v8
|
||||
uses: super-linter/super-linter@502f4fe48a81a392756e173e39a861f8c8efe056 # v8.3.0
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user