feat: replace Nginx/SSL validation with TLS/Caddy in common.sh
Add validate_tls_mode() (cloudflare|existing). Replace NGINX_CONTAINER_NAME, NGINX_CONF_PATH, SSL_MODE in validation arrays with TLS_MODE, CADDY_DOMAIN, CADDY_DATA_PATH. Update conditional arrays from SSL_MODE-based to TLS_MODE-based (CLOUDFLARE_API_TOKEN for cloudflare, SSL_CERT_PATH/SSL_KEY_PATH for existing). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -177,6 +177,10 @@ validate_ssl_mode() {
|
|||||||
[[ "$1" == "letsencrypt" ]] || [[ "$1" == "existing" ]]
|
[[ "$1" == "letsencrypt" ]] || [[ "$1" == "existing" ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
validate_tls_mode() {
|
||||||
|
[[ "$1" == "cloudflare" ]] || [[ "$1" == "existing" ]]
|
||||||
|
}
|
||||||
|
|
||||||
validate_db_type() {
|
validate_db_type() {
|
||||||
[[ "$1" == "sqlite3" ]] || [[ "$1" == "mysql" ]] || [[ "$1" == "postgres" ]] || [[ "$1" == "mssql" ]]
|
[[ "$1" == "sqlite3" ]] || [[ "$1" == "mysql" ]] || [[ "$1" == "postgres" ]] || [[ "$1" == "mssql" ]]
|
||||||
}
|
}
|
||||||
@@ -220,7 +224,7 @@ _ENV_VAR_NAMES=(
|
|||||||
REPO_NAMES
|
REPO_NAMES
|
||||||
MIGRATE_ISSUES MIGRATE_LABELS MIGRATE_MILESTONES MIGRATE_WIKI
|
MIGRATE_ISSUES MIGRATE_LABELS MIGRATE_MILESTONES MIGRATE_WIKI
|
||||||
GITHUB_MIRROR_INTERVAL
|
GITHUB_MIRROR_INTERVAL
|
||||||
NGINX_CONTAINER_NAME NGINX_CONF_PATH SSL_MODE
|
TLS_MODE CADDY_DOMAIN CADDY_DATA_PATH
|
||||||
PROTECTED_BRANCH REQUIRE_PR_REVIEW REQUIRED_APPROVALS
|
PROTECTED_BRANCH REQUIRE_PR_REVIEW REQUIRED_APPROVALS
|
||||||
SEMGREP_VERSION TRIVY_VERSION GITLEAKS_VERSION SECURITY_FAIL_ON_ERROR
|
SEMGREP_VERSION TRIVY_VERSION GITLEAKS_VERSION SECURITY_FAIL_ON_ERROR
|
||||||
)
|
)
|
||||||
@@ -242,15 +246,15 @@ _ENV_VAR_TYPES=(
|
|||||||
nonempty
|
nonempty
|
||||||
bool bool bool bool
|
bool bool bool bool
|
||||||
nonempty
|
nonempty
|
||||||
nonempty path ssl_mode
|
tls_mode nonempty path
|
||||||
nonempty bool integer
|
nonempty bool integer
|
||||||
nonempty nonempty nonempty bool
|
nonempty nonempty nonempty bool
|
||||||
)
|
)
|
||||||
|
|
||||||
# Conditional variables — validated only when SSL_MODE matches.
|
# Conditional variables — validated only when TLS_MODE matches.
|
||||||
_ENV_CONDITIONAL_SSL_NAMES=(SSL_EMAIL SSL_CERT_PATH SSL_KEY_PATH)
|
_ENV_CONDITIONAL_TLS_NAMES=(CLOUDFLARE_API_TOKEN SSL_CERT_PATH SSL_KEY_PATH)
|
||||||
_ENV_CONDITIONAL_SSL_TYPES=(email path path)
|
_ENV_CONDITIONAL_TLS_TYPES=(nonempty path path)
|
||||||
_ENV_CONDITIONAL_SSL_WHEN=( letsencrypt existing existing)
|
_ENV_CONDITIONAL_TLS_WHEN=( cloudflare existing existing)
|
||||||
|
|
||||||
# Conditional variables — validated only when GITEA_DB_TYPE is NOT sqlite3.
|
# Conditional variables — validated only when GITEA_DB_TYPE is NOT sqlite3.
|
||||||
_ENV_CONDITIONAL_DB_NAMES=(GITEA_DB_HOST GITEA_DB_PORT GITEA_DB_NAME GITEA_DB_USER GITEA_DB_PASSWD)
|
_ENV_CONDITIONAL_DB_NAMES=(GITEA_DB_HOST GITEA_DB_PORT GITEA_DB_NAME GITEA_DB_USER GITEA_DB_PASSWD)
|
||||||
@@ -275,6 +279,7 @@ _validator_hint() {
|
|||||||
nonempty) echo "cannot be empty" ;;
|
nonempty) echo "cannot be empty" ;;
|
||||||
password) echo "must be at least 8 characters" ;;
|
password) echo "must be at least 8 characters" ;;
|
||||||
ssl_mode) echo "must be letsencrypt or existing" ;;
|
ssl_mode) echo "must be letsencrypt or existing" ;;
|
||||||
|
tls_mode) echo "must be cloudflare or existing" ;;
|
||||||
db_type) echo "must be sqlite3, mysql, postgres, or mssql" ;;
|
db_type) echo "must be sqlite3, mysql, postgres, or mssql" ;;
|
||||||
optional) echo "any value or empty" ;;
|
optional) echo "any value or empty" ;;
|
||||||
*) echo "invalid" ;;
|
*) echo "invalid" ;;
|
||||||
@@ -300,20 +305,20 @@ validate_env() {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Validate conditional variables (SSL_MODE-dependent)
|
# Validate conditional variables (TLS_MODE-dependent)
|
||||||
local ssl_mode="${SSL_MODE:-}"
|
local tls_mode="${TLS_MODE:-}"
|
||||||
for ((i = 0; i < ${#_ENV_CONDITIONAL_SSL_NAMES[@]}; i++)); do
|
for ((i = 0; i < ${#_ENV_CONDITIONAL_TLS_NAMES[@]}; i++)); do
|
||||||
var_name="${_ENV_CONDITIONAL_SSL_NAMES[$i]}"
|
var_name="${_ENV_CONDITIONAL_TLS_NAMES[$i]}"
|
||||||
var_type="${_ENV_CONDITIONAL_SSL_TYPES[$i]}"
|
var_type="${_ENV_CONDITIONAL_TLS_TYPES[$i]}"
|
||||||
local required_when="${_ENV_CONDITIONAL_SSL_WHEN[$i]}"
|
local required_when="${_ENV_CONDITIONAL_TLS_WHEN[$i]}"
|
||||||
|
|
||||||
if [[ "$ssl_mode" != "$required_when" ]]; then
|
if [[ "$tls_mode" != "$required_when" ]]; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
value="${!var_name:-}"
|
value="${!var_name:-}"
|
||||||
if [[ -z "$value" ]]; then
|
if [[ -z "$value" ]]; then
|
||||||
log_error " → $var_name is empty (required when SSL_MODE=$required_when, $(_validator_hint "$var_type"))"
|
log_error " → $var_name is empty (required when TLS_MODE=$required_when, $(_validator_hint "$var_type"))"
|
||||||
errors=$((errors + 1))
|
errors=$((errors + 1))
|
||||||
elif ! "validate_${var_type}" "$value"; then
|
elif ! "validate_${var_type}" "$value"; then
|
||||||
log_error " → $var_name='$value' ($(_validator_hint "$var_type"))"
|
log_error " → $var_name='$value' ($(_validator_hint "$var_type"))"
|
||||||
|
|||||||
Reference in New Issue
Block a user