diff --git a/quick_server.sh b/quick_server.sh new file mode 100755 index 0000000..f149548 --- /dev/null +++ b/quick_server.sh @@ -0,0 +1,148 @@ +#!/bin/bash + +GREEN='\033[0;32m' +RED='\033[0;31m' +BLUE='\033[0;34m' +YELLOW='\033[0;33m' +UNDERLINE='\033[4m' # 下划线 +NC='\033[0m' # No Color + +if [[ -z $DEPLOY_DOMAIN ]]; then + echo + echo "[${RED}Err${NC}] DEPLOY_DOMAIN is not set" + echo + exit 1 +fi + +function is_valid_domain() { + local str="$1" + + # 使用正则表达式匹配合法域名格式 + if [[ $str =~ ^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z]{2,})+$ ]]; then + return 0 # 合法返回0 + else + return 1 # 不合法返回1 + fi +} + +# 验证域名格式是否合法 +echo -e "\n[INFO] Validate DOMAN: ${BLUE}${DEPLOY_DOMAIN}${NC} ..." + +if is_valid_domain "$DEPLOY_DOMAIN"; then + echo -e "[INFO] ${BLUE}${UNDERLINE}$DEPLOY_DOMAIN${NC} is a valid domain.\n" +else + echo -e "[${RED}ERR${NC}] ${BLUE}${UNDERLINE}$DEPLOY_DOMAIN${NC} is not a valid domain. Abort." + exit 1 +fi + +# 设置工作目录 +WORKING_DIR="/root/.local/magic" +if [ ! -d "${WORKING_DIR}" ]; then + mkdir -p "${WORKING_DIR}" +fi + +CADDY_STORAGE="${WORKING_DIR}/caddy" +CERT_DIR="$CADDY_STORAGE/certificates/acme-v02.api.letsencrypt.org-directory/$DEPLOY_DOMAIN" +CRT_FILE="$CERT_DIR/$DEPLOY_DOMAIN.crt" +KEY_FILE="$CERT_DIR/$DEPLOY_DOMAIN.key" +HY_CONFIG_FILE="${WORKING_DIR}/hy-config.yaml" +CADDY_CONFIG_FILE="${WORKING_DIR}/Caddyfile" + +echo -e "[INFO] Download ${GREEN}hysteria${NC} and ${GREEN}caddy${NC} ..." +curl -L -o /usr/local/bin/hysteria https://github.com/xxoommd/ultimate_collection/releases/download/latest/hysteria && + curl -L -o /usr/local/bin/caddy https://github.com/xxoommd/ultimate_collection/releases/download/latest/caddy && + chmod +x /usr/local/bin/hysteria /usr/local/bin/caddy +echo -e "[INFO] Download Done\n" + +# Generating all config files... +echo -e "[INFO] Generate ${GREEN}${CADDY_CONFIG_FILE}${NC} ..." +cat >${CADDY_CONFIG_FILE} <${HY_CONFIG_FILE} </etc/systemd/system/hysteria.service </etc/systemd/system/caddy.service <