mirror of
https://github.com/angristan/openvpn-install.git
synced 2025-12-18 17:57:03 +01:00
## 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
29 lines
663 B
YAML
29 lines
663 B
YAML
on:
|
|
push:
|
|
branches: [master]
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
name: Lint
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
super-linter:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v6
|
|
with:
|
|
fetch-depth: 0
|
|
persist-credentials: false
|
|
- name: Lint Code Base
|
|
uses: super-linter/super-linter@502f4fe48a81a392756e173e39a861f8c8efe056 # v8.3.0
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|