From 6927fab9f9fd71f85253d8eec50d1a642b4d7713 Mon Sep 17 00:00:00 2001 From: dqzboy Date: Tue, 16 Jul 2024 23:48:32 +0800 Subject: [PATCH] fix: Check if the input host record is valid. --- install/DockerProxy_Install.sh | 39 ++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/install/DockerProxy_Install.sh b/install/DockerProxy_Install.sh index 0344578..782db81 100644 --- a/install/DockerProxy_Install.sh +++ b/install/DockerProxy_Install.sh @@ -463,12 +463,27 @@ SEPARATOR "配置Caddy" while true; do INFO "${LIGHT_GREEN}>>> 域名解析主机记录(即域名前缀):${RESET} ${LIGHT_CYAN}ui、hub、gcr、ghcr、k8sgcr、k8s、quay、mcr、elastic${RESET}" WARN "${LIGHT_GREEN}>>> 只需选择你部署的服务进行解析即可${RESET},${LIGHT_YELLOW}无需将上面提示中所有的主机记录进行解析${RESET}" - read -e -p "$(WARN "是否配置Caddy,实现自动HTTPS? 执行前需提前在DNS服务商选择部署的服务进行解析主机记录 ${PROMPT_YES_NO}")" caddy_conf + read -e -p "$(WARN "是否配置Caddy,实现自动HTTPS? 执行前需在DNS服务商对部署服务解析主机记录 ${PROMPT_YES_NO}")" caddy_conf case "$caddy_conf" in y|Y ) read -e -p "$(INFO "请输入你的域名${LIGHT_BLUE}[例: baidu.com]${RESET} ${LIGHT_RED}不可为空${RESET}: ")" caddy_domain read -e -p "$(INFO "请输入要配置的${LIGHT_MAGENTA}主机记录${RESET},用逗号分隔${LIGHT_BLUE}[例: ui,hub]${RESET}: ")" selected_records + + # 验证输入的主机记录 + local valid_records=("ui" "hub" "gcr" "ghcr" "k8sgcr" "k8s" "quay" "mcr" "elastic") IFS=',' read -r -a records_array <<< "$selected_records" + local invalid_records=() + for record in "${records_array[@]}"; do + if ! [[ " ${valid_records[@]} " =~ " ${record} " ]]; then + invalid_records+=("$record") + fi + done + + if [[ ${#invalid_records[@]} -gt 0 ]]; then + ERROR "无效的主机记录: ${LIGHT_RED}${invalid_records[@]}${RESET}" + INFO "请输入有效的主机记录: ${LIGHT_GREEN}ui、hub、gcr、ghcr、k8sgcr、k8s、quay、mcr、elastic${RESET}" + continue + fi declare -A record_templates record_templates[ui]="ui.$caddy_domain { @@ -681,13 +696,27 @@ while true; do WARN "自行安装的 Nginx ${LIGHT_RED}请勿执行此操作${RESET},${LIGHT_BLUE}以防覆盖原有配置${RESET}" INFO "${LIGHT_GREEN}>>> 域名解析主机记录(即域名前缀):${RESET} ${LIGHT_CYAN}ui、hub、gcr、ghcr、k8sgcr、k8s、quay、mcr、elastic${RESET}" WARN "${LIGHT_GREEN}>>> 只需选择你部署的服务进行解析即可${RESET},${LIGHT_YELLOW}无需将上面提示中所有的主机记录进行解析${RESET}" - read -e -p "$(WARN "是否配置 Nginx?配置完成后需在DNS服务商对部署的服务进行解析主机记录 ${PROMPT_YES_NO}")" nginx_conf + read -e -p "$(WARN "是否配置 Nginx?配置完成后需在DNS服务商解析主机记录 ${PROMPT_YES_NO}")" nginx_conf case "$nginx_conf" in y|Y ) - read -e -p "$(INFO "请输入你的域名${LIGHT_BLUE}[例: baidu.com]${RESET} ${LIGHT_RED}不可为空${RESET}: ")" nginx_domain - + read -e -p "$(INFO "请输入你的域名${LIGHT_BLUE}[例: baidu.com]${RESET} ${LIGHT_RED}不可为空${RESET}: ")" nginx_domain read -e -p "$(INFO "请输入要配置的${LIGHT_MAGENTA}主机记录${RESET},用逗号分隔${LIGHT_BLUE}[例: ui,hub]${RESET}: ")" selected_records + + # 验证输入的主机记录 + local valid_records=("ui" "hub" "gcr" "ghcr" "k8sgcr" "k8s" "quay" "mcr" "elastic") IFS=',' read -r -a records_array <<< "$selected_records" + local invalid_records=() + for record in "${records_array[@]}"; do + if ! [[ " ${valid_records[@]} " =~ " ${record} " ]]; then + invalid_records+=("$record") + fi + done + + if [[ ${#invalid_records[@]} -gt 0 ]]; then + ERROR "无效的主机记录: ${LIGHT_RED}${invalid_records[@]}${RESET}" + INFO "请输入有效的主机记录: ${LIGHT_GREEN}ui、hub、gcr、ghcr、k8sgcr、k8s、quay、mcr、elastic${RESET}" + continue + fi declare -A record_templates record_templates[ui]="server { @@ -1552,7 +1581,6 @@ PROXY_HTTP START_CONTAINER } - function STOP_REMOVE_CONTAINER() { if [[ -f "${PROXY_DIR}/${DOCKER_COMPOSE_FILE}" ]]; then INFO "停止和移除所有容器" @@ -1563,7 +1591,6 @@ function STOP_REMOVE_CONTAINER() { fi } - function UPDATE_CONFIG() { while true; do read -e -p "$(WARN "是否更新配置,更新前请确保您已备份现有配置,此操作不可逆? ${PROMPT_YES_NO}")" update_conf