diff --git a/x/quick_client.sh b/x/quick_client.sh index 3f225bf..fe5c039 100644 --- a/x/quick_client.sh +++ b/x/quick_client.sh @@ -24,7 +24,7 @@ fi TAG=${TAG:-latest} -github_download_url_prefix="https://gitee.com/xxoommd/magic/releases/download" +github_download_url_prefix="https://github.com/xxoommd/magic/releases/download" gitee_download_url_prefix="https://github.com/xxoommd/ultimate_collection/releases/download" naive_bin_name="" diff --git a/x/quick_server.sh b/x/quick_server.sh new file mode 100644 index 0000000..4784c09 --- /dev/null +++ b/x/quick_server.sh @@ -0,0 +1,173 @@ +#!/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 + +# 仅root用户执行 +if [ "$(id -u)" -eq 0 ]; then + echo "当前用户是 root" +else + echo -e "${RED}[Err]${NC}当前用户不是 root" + 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 [[ -z $DEPLOY_DOMAIN ]]; then + echo + echo "[${RED}Err${NC}] DEPLOY_DOMAIN is not set" + echo + exit 1 +fi + +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 + +TAG=${TAG:-"latest"} + +echo -e "[INFO] Using TAG: ${YELLOW}${TAG}${NC}" + +caddy_download_url="" +hysteria_download_url="" + +if [ "$DOWNLOAD_SRC" = "gitee" ]; then + echo -e "[INFO] Download from ${YELLOW}Gitee${NC} ..." + caddy_download_url="https://gitee.com/xxoommd/magic/releases/download/${TAG}/caddy-linux-amd64" + hysteria_download_url="https://gitee.com/xxoommd/magic/releases/download/${TAG}/hysteria-linxu-amd64-avx" +else + echo -e "[INFO] Download from ${YELLOW}Github${NC} ..." + caddy_download_url="https://github.com/xxoommd/magic/releases/download/${TAG}/caddy-linux-amd64" + hysteria_download_url="https://github.com/xxoommd/magic/releases/download/${TAG}/hysteria-linxu-amd64-avx" +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 $hysteria_download_url && + curl -L -o /usr/local/bin/caddy $caddy_download_url && + 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 <