#!/bin/bash # 生成自签名证书 create_self_tls_file() { local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径 local KEY_DIR="$SCRIPT_DIR/../tls/self-tls" # 自签tls证书文件夹 # 创建存放证书的目录 mkdir -p "$KEY_DIR" # 生成自签名证书文件 local DOMAIN="${1:-bing.com}" # 域名,默认为bing.com openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) \ -keyout "$KEY_DIR/server.key" \ -out "$KEY_DIR/server.crt" \ -subj "/CN=$DOMAIN" \ -days 36500 } update_self_tls(){ local CONFIG_FILE="${1}" # 配置文件 local DOMAIN="${2}" # 域名 if [[ -z "$CONFIG_FILE" ]]; then echo "[Error] config_file配置文件路径 不能为空" return 1 fi # 生成自签名证书, 设置域名 create_self_tls_file "$DOMAIN" sed -i "s/你的域名/$DOMAIN/g" "$CONFIG_FILE" } update_acme_tls(){ local CONFIG_FILE="${1}" # 配置文件 if [[ -z "$CONFIG_FILE" ]]; then echo "[Error] config_file配置文件路径 不能为空" return 1 fi # 获取邮箱 local USER_EMAIL read -p "请输入你的邮箱: " USER_EMAIL while [[ -z "$USER_EMAIL" ]]; do echo "[Error] 邮箱不能为空" read -p "请输入你的邮箱: " USER_EMAIL done # 获取域名 local USER_DOMAIN read -p "请输入你的域名 (例如: example.com): " USER_DOMAIN while [[ -z "$USER_DOMAIN" ]]; do echo "[Error] 域名不能为空" read -p "请输入你的域名: " USER_DOMAIN done # 获取 Cloudflare API Token local CLOUDFLARE_TOKEN read -p "请输入你的 Cloudflare API Token: " CLOUDFLARE_TOKEN while [[ -z "$CLOUDFLARE_TOKEN" ]]; do echo "[Error] Cloudflare API Token 不能为空" read -p "请输入你的 Cloudflare API Token: " CLOUDFLARE_TOKEN done sed -i "s/你的邮箱/$USER_EMAIL/g" "$CONFIG_FILE" sed -i "s/你的域名/$USER_DOMAIN/g" "$CONFIG_FILE" sed -i "s/你的Cloudflare_API_Token/$CLOUDFLARE_TOKEN/g" "$CONFIG_FILE" } # 修改ACME域名 update_acme_domain(){ local CONFIG_FILE="${1}" # 配置文件 local DOMAIN="${2}" # 域名 if [[ -z "$CONFIG_FILE" ]]; then echo "[Error] config_file配置文件路径 不能为空" return 1 fi modify_json_file "$CONFIG_FILE" ".inbounds[0].tls.certificate_provider.domain[0]" "$DOMAIN" } update_server_name(){ local CONFIG_FILE="${1}" # 配置文件 local DOMAIN="${2}" # 域名 if [[ -z "$CONFIG_FILE" ]]; then echo "[Error] config_file配置文件路径 不能为空" return 1 fi modify_json_file "$CONFIG_FILE" ".inbounds[0].tls.server_name" "$DOMAIN" }