91 lines
2.7 KiB
Bash
91 lines
2.7 KiB
Bash
#!/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.acme.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"
|
|
}
|