Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b88d670967 | |||
| 2aea194f35 | |||
| 0f4857999b | |||
| d8559dafb4 | |||
| 348862520c | |||
| 553529e9b8 | |||
| a68c38986d | |||
| 9e03cff9aa | |||
| f3d61b6fe4 | |||
| 486ceb7bb3 | |||
| 7378d8f53f | |||
| 68269add4b | |||
| ef17816b2d | |||
| f2bf6371f0 | |||
| 3f69ba589b | |||
| 69e60bd5d7 |
@@ -1,106 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
|
|
||||||
create_acme_tls_config() {
|
|
||||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
|
||||||
local CONFIG_DIR="$SCRIPT_DIR/../config"
|
|
||||||
local CONFIG_FILE="$CONFIG_DIR/config.json"
|
|
||||||
|
|
||||||
cp "$CONFIG_DIR/template/tuic/tuic_acme_tls_config.json" "$CONFIG_FILE"
|
|
||||||
|
|
||||||
# 获取邮箱
|
|
||||||
local USER_EMAIL
|
|
||||||
read -p "请输入你的邮箱(可留空): " USER_EMAIL
|
|
||||||
if [[ -z "$USER_EMAIL" ]]; then
|
|
||||||
USER_EMAIL="example@example.com"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 获取域名
|
|
||||||
local USER_DOMAIN
|
|
||||||
read -p "请输入你的域名 (例如: example.com): " USER_DOMAIN
|
|
||||||
while [[ -z "$USER_DOMAIN" ]]; do
|
|
||||||
echo "[错误] 域名不能为空"
|
|
||||||
read -p "请输入你的域名: " USER_DOMAIN
|
|
||||||
done
|
|
||||||
|
|
||||||
# 获取 Cloudflare API Token
|
|
||||||
local CLOUDFLARE_TOKEN
|
|
||||||
read -p "请输入你的 Cloudflare API Token: " CLOUDFLARE_TOKEN
|
|
||||||
while [[ -z "$CLOUDFLARE_TOKEN" ]]; do
|
|
||||||
echo "[错误] 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"
|
|
||||||
|
|
||||||
# 设置端口
|
|
||||||
update_port
|
|
||||||
|
|
||||||
# 设置密码
|
|
||||||
update_password
|
|
||||||
|
|
||||||
# 设置UUID
|
|
||||||
update_uuid
|
|
||||||
|
|
||||||
green "成功创建配置"
|
|
||||||
}
|
|
||||||
|
|
||||||
create_self_tls_config() {
|
|
||||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
|
||||||
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
|
||||||
|
|
||||||
cp "$SCRIPT_DIR/../config/template/tuic/tuic_self_tls_config.json" "$CONFIG_FILE"
|
|
||||||
|
|
||||||
# 生成自签名证书和设置域名
|
|
||||||
local DOMAIN="bing.com"
|
|
||||||
create_self_tls "$DOMAIN"
|
|
||||||
sed -i "s/你的域名/$DOMAIN/g" "$CONFIG_FILE"
|
|
||||||
|
|
||||||
# 设置端口
|
|
||||||
update_port
|
|
||||||
|
|
||||||
# 设置密码
|
|
||||||
update_password
|
|
||||||
|
|
||||||
# 设置UUID
|
|
||||||
update_uuid
|
|
||||||
|
|
||||||
green "成功创建配置"
|
|
||||||
}
|
|
||||||
|
|
||||||
create_config(){
|
|
||||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
|
||||||
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
|
||||||
|
|
||||||
# 如果配置文件已存在,提示用户是否重新生成
|
|
||||||
if [ -e "$CONFIG_FILE" ]; then
|
|
||||||
local REGENERATE
|
|
||||||
read -p "检测到配置已存在,是否重新生成配置?(y/n): " REGENERATE
|
|
||||||
if [ "$REGENERATE" != "y" ] && [ "$REGENERATE" != "Y" ]; then
|
|
||||||
echo "取消重新生成配置."
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "请选择配置类型:"
|
|
||||||
echo "1. 自签名证书配置"
|
|
||||||
echo "2. tls证书配置"
|
|
||||||
local CHOICE
|
|
||||||
read -p "输入您的选择: " CHOICE
|
|
||||||
case $CHOICE in
|
|
||||||
1)
|
|
||||||
echo "重置为自签名证书配置..."
|
|
||||||
create_self_tls_config
|
|
||||||
;;
|
|
||||||
2)
|
|
||||||
echo "重置为acme tls证书配置..."
|
|
||||||
create_acme_tls_config
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "无效的选择, 请重新选择."
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
create_hysteria_config(){
|
||||||
|
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||||
|
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
||||||
|
|
||||||
|
echo "请选择配置类型:"
|
||||||
|
echo "1. Hysteria 自签名证书配置"
|
||||||
|
echo "2. Hysteria tls证书配置"
|
||||||
|
local CHOICE
|
||||||
|
read -p "输入您的选择: " CHOICE
|
||||||
|
case $CHOICE in
|
||||||
|
1)
|
||||||
|
echo "重置为hysteria自签名证书配置..."
|
||||||
|
create_hysteria_self_tls_config
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
echo "重置为hysteria acme tls证书配置..."
|
||||||
|
create_hysteria_acme_tls_config
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的选择, 请重新选择."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
create_hysteria_self_tls_config() {
|
||||||
|
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||||
|
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
||||||
|
|
||||||
|
cp "$SCRIPT_DIR/../config/template/hysteria/hysteria_self_tls_config.json" "$CONFIG_FILE"
|
||||||
|
|
||||||
|
# 生成自签名证书和设置域名
|
||||||
|
update_self_tls "$CONFIG_FILE" "bing.com"
|
||||||
|
|
||||||
|
# 设置端口
|
||||||
|
update_port
|
||||||
|
|
||||||
|
# 设置密码
|
||||||
|
update_password
|
||||||
|
|
||||||
|
# 设置混淆密码
|
||||||
|
update_obfs_password
|
||||||
|
|
||||||
|
green "成功创建配置"
|
||||||
|
}
|
||||||
|
|
||||||
|
create_hysteria_acme_tls_config() {
|
||||||
|
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||||
|
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
||||||
|
|
||||||
|
cp "$SCRIPT_DIR/../config/template/hysteria/hysteria_acme_tls_config.json" "$CONFIG_FILE"
|
||||||
|
|
||||||
|
update_acme_tls "$CONFIG_FILE"
|
||||||
|
|
||||||
|
# 设置端口
|
||||||
|
update_port
|
||||||
|
|
||||||
|
# 设置密码
|
||||||
|
update_password
|
||||||
|
|
||||||
|
# 设置混淆密码
|
||||||
|
update_obfs_password
|
||||||
|
|
||||||
|
green "成功创建配置"
|
||||||
|
}
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
create_tuic_config(){
|
||||||
|
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||||
|
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
||||||
|
|
||||||
|
echo "请选择配置类型:"
|
||||||
|
echo "1. Tuic 自签名证书配置"
|
||||||
|
echo "2. Tuic tls证书配置"
|
||||||
|
local CHOICE
|
||||||
|
read -p "输入您的选择: " CHOICE
|
||||||
|
case $CHOICE in
|
||||||
|
1)
|
||||||
|
echo "重置为 tuic 自签名证书配置..."
|
||||||
|
create_tuic_self_tls_config
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
echo "重置为 tuic acme tls证书配置..."
|
||||||
|
create_tuic_acme_tls_config
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的选择, 请重新选择."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
create_tuic_acme_tls_config() {
|
||||||
|
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||||
|
local CONFIG_DIR="$SCRIPT_DIR/../config"
|
||||||
|
local CONFIG_FILE="$CONFIG_DIR/config.json"
|
||||||
|
|
||||||
|
cp "$CONFIG_DIR/template/tuic/tuic_acme_tls_config.json" "$CONFIG_FILE"
|
||||||
|
|
||||||
|
update_acme_tls "$CONFIG_FILE"
|
||||||
|
|
||||||
|
# 设置端口
|
||||||
|
update_port
|
||||||
|
|
||||||
|
# 设置密码
|
||||||
|
update_password
|
||||||
|
|
||||||
|
# 设置UUID
|
||||||
|
update_uuid
|
||||||
|
|
||||||
|
green "成功创建配置"
|
||||||
|
}
|
||||||
|
|
||||||
|
create_tuic_self_tls_config() {
|
||||||
|
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||||
|
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
||||||
|
|
||||||
|
cp "$SCRIPT_DIR/../config/template/tuic/tuic_self_tls_config.json" "$CONFIG_FILE"
|
||||||
|
|
||||||
|
# 生成自签名证书和设置域名
|
||||||
|
update_self_tls "$CONFIG_FILE" "bing.com"
|
||||||
|
|
||||||
|
# 设置端口
|
||||||
|
update_port
|
||||||
|
|
||||||
|
# 设置密码
|
||||||
|
update_password
|
||||||
|
|
||||||
|
# 设置UUID
|
||||||
|
update_uuid
|
||||||
|
|
||||||
|
green "成功创建配置"
|
||||||
|
}
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 生成自签名证书
|
|
||||||
create_self_tls() {
|
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -14,3 +14,18 @@ update_password() {
|
|||||||
|
|
||||||
echo "设置密码成功"
|
echo "设置密码成功"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 更新混淆密码
|
||||||
|
update_obfs_password() {
|
||||||
|
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||||
|
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
||||||
|
|
||||||
|
|
||||||
|
# 生成一个长度为16的随机密码
|
||||||
|
local NEW_PASSWORD=$(gen_password 16)
|
||||||
|
|
||||||
|
# 修改密码
|
||||||
|
sed -i 's/你的混淆密码/'"$NEW_PASSWORD"'/g' $CONFIG_FILE
|
||||||
|
|
||||||
|
echo "设置密码成功"
|
||||||
|
}
|
||||||
|
|||||||
+73
-6
@@ -1,14 +1,31 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
print_share_link() {
|
print_share_link() {
|
||||||
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
|
||||||
local CONFIG_DIR=$(readlink -f "$SCRIPT_DIR/../config")
|
|
||||||
|
|
||||||
# 检查jq是否安装
|
# 检查jq是否安装
|
||||||
check_jq
|
check_jq
|
||||||
|
|
||||||
CONFIG_FILE="$CONFIG_DIR/config.json"
|
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||||
|
local CONFIG_DIR=$(readlink -f "$SCRIPT_DIR/../config")
|
||||||
|
local CONFIG_FILE="$CONFIG_DIR/config.json"
|
||||||
|
|
||||||
|
local TYPE=$(jq -r '.inbounds[0].type' "$CONFIG_FILE")
|
||||||
|
if [ "$TYPE" = "tuic" ]; then
|
||||||
|
print_tuic_share_link
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$TYPE" = "hysteria2" ]; then
|
||||||
|
print_hysteria_share_link
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
red "error: 不支持的协议类型: $TYPE"
|
||||||
|
}
|
||||||
|
|
||||||
|
print_tuic_share_link() {
|
||||||
|
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||||
|
local CONFIG_DIR=$(readlink -f "$SCRIPT_DIR/../config")
|
||||||
|
local CONFIG_FILE="$CONFIG_DIR/config.json"
|
||||||
|
|
||||||
# 检查配置是否正确
|
# 检查配置是否正确
|
||||||
local UUID=$(jq -r '.inbounds[0].users[0].uuid' "$CONFIG_FILE")
|
local UUID=$(jq -r '.inbounds[0].users[0].uuid' "$CONFIG_FILE")
|
||||||
@@ -31,7 +48,7 @@ print_share_link() {
|
|||||||
local INSECURE=1 # 是否允许不安全连接,1表示允许,0表示不允许
|
local INSECURE=1 # 是否允许不安全连接,1表示允许,0表示不允许
|
||||||
|
|
||||||
# 检查是否使用ACME申请证书
|
# 检查是否使用ACME申请证书
|
||||||
if jq -e '.inbounds[0].tls.acme' "$CONFIG_DIR/config.json" > /dev/null 2>&1; then
|
if is_config_use_acme "$CONFIG_FILE"; then
|
||||||
ALLOW_INSECURE=0 # 不跳过证书验证
|
ALLOW_INSECURE=0 # 不跳过证书验证
|
||||||
INSECURE=0
|
INSECURE=0
|
||||||
fi
|
fi
|
||||||
@@ -52,3 +69,53 @@ print_share_link() {
|
|||||||
echo -e "\033[0m"
|
echo -e "\033[0m"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
print_hysteria_share_link(){
|
||||||
|
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
local config_dir=$(readlink -f "$script_dir/../config")
|
||||||
|
local config_file="$config_dir/config.json"
|
||||||
|
local insecure=1
|
||||||
|
local allow_insecure=1
|
||||||
|
|
||||||
|
# 检查是否使用ACME申请证书
|
||||||
|
if is_config_use_acme "$config_file"; then
|
||||||
|
allow_insecure=0 # 不跳过证书验证
|
||||||
|
insecure=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 读取配置文件内容
|
||||||
|
local config=$(cat "$config_file")
|
||||||
|
|
||||||
|
# 提取所需信息
|
||||||
|
local ipv4=$(curl -4 -sSL --connect-timeout 3 --retry 2 ip.sb || echo "null")
|
||||||
|
local port=$(echo "$config" | jq -r '.inbounds[0].listen_port')
|
||||||
|
local sni=$(echo "$config" | jq -r '.inbounds[0].tls.server_name')
|
||||||
|
local password=$(echo "$config" | jq -r '.inbounds[0].users[0].password')
|
||||||
|
local obfs_type=$(echo "$config" | jq -r '.inbounds[0].obfs.type')
|
||||||
|
local obfs_password=$(echo "$config" | jq -r '.inbounds[0].obfs.password')
|
||||||
|
|
||||||
|
# 构建分享链接
|
||||||
|
local share_link="hysteria2://${password}@${ipv4}:${port}/?sni=${sni}&insecure=${insecure}&obfs=${obfs_type}&obfs-password=${obfs_password}&allowInsecure=${allow_insecure}#Hysteria2节点"
|
||||||
|
|
||||||
|
# 输出分享链接
|
||||||
|
echo -e "\033[32m"
|
||||||
|
echo "IPV4: $ipv4"
|
||||||
|
echo "port: $port"
|
||||||
|
echo "password: $password"
|
||||||
|
echo "sni: $sni"
|
||||||
|
echo "obfs_type: $obfs_type"
|
||||||
|
echo "obfs_password(混淆密码): $obfs_password"
|
||||||
|
echo ""
|
||||||
|
echo "分享链接: $share_link"
|
||||||
|
echo -e "\033[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 检查是否使用ACME申请证书
|
||||||
|
is_config_use_acme(){
|
||||||
|
local CONFIG_FILE="$1"
|
||||||
|
if jq -e '.inbounds[0].tls.acme' "$CONFIG_FILE" > /dev/null 2>&1; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|||||||
+84
@@ -0,0 +1,84 @@
|
|||||||
|
#!/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:-bing.com}" # 域名,默认为bing.com
|
||||||
|
|
||||||
|
if [[ -z "$CONFIG_FILE" ]]; then
|
||||||
|
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||||
|
local CONFIG_DIR=$(readlink -f "$SCRIPT_DIR/../config")
|
||||||
|
CONFIG_FILE="$CONFIG_DIR/config.json"
|
||||||
|
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
|
||||||
|
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 脚本文件夹绝对路径
|
||||||
|
local CONFIG_DIR=$(readlink -f "$SCRIPT_DIR/../config")
|
||||||
|
CONFIG_FILE="$CONFIG_DIR/config.json"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 获取邮箱
|
||||||
|
local USER_EMAIL
|
||||||
|
read -p "请输入你的邮箱: " USER_EMAIL
|
||||||
|
while [[ -z "$USER_EMAIL" ]]; do
|
||||||
|
echo "[错误] 邮箱不能为空"
|
||||||
|
read -p "请输入你的邮箱: " USER_EMAIL
|
||||||
|
done
|
||||||
|
|
||||||
|
# 获取域名
|
||||||
|
local USER_DOMAIN
|
||||||
|
read -p "请输入你的域名 (例如: example.com): " USER_DOMAIN
|
||||||
|
while [[ -z "$USER_DOMAIN" ]]; do
|
||||||
|
echo "[错误] 域名不能为空"
|
||||||
|
read -p "请输入你的域名: " USER_DOMAIN
|
||||||
|
done
|
||||||
|
|
||||||
|
# 获取 Cloudflare API Token
|
||||||
|
local CLOUDFLARE_TOKEN
|
||||||
|
read -p "请输入你的 Cloudflare API Token: " CLOUDFLARE_TOKEN
|
||||||
|
while [[ -z "$CLOUDFLARE_TOKEN" ]]; do
|
||||||
|
echo "[错误] 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}" # 域名
|
||||||
|
modify_json_file "$CONFIG_FILE" ".inbounds[0].tls.acme.domain[0]" "$DOMAIN"
|
||||||
|
}
|
||||||
|
|
||||||
|
update_server_name(){
|
||||||
|
local CONFIG_FILE="${1}" # 配置文件
|
||||||
|
local DOMAIN="${2}" # 域名
|
||||||
|
modify_json_file "$CONFIG_FILE" ".inbounds[0].tls.server_name" "$DOMAIN"
|
||||||
|
}
|
||||||
@@ -10,17 +10,17 @@
|
|||||||
"tag": "hysteria2-in",
|
"tag": "hysteria2-in",
|
||||||
"listen": "::",
|
"listen": "::",
|
||||||
"listen_port": 8443,
|
"listen_port": 8443,
|
||||||
"obfs": {
|
|
||||||
"type": "salamander",
|
|
||||||
"password": "你的混淆密码"
|
|
||||||
},
|
|
||||||
"users": [
|
"users": [
|
||||||
{
|
{
|
||||||
"name": "user1",
|
"name": "user1",
|
||||||
"password": "你的密码"
|
"password": "你的密码"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"up_mbps": 100,
|
"obfs": {
|
||||||
|
"type": "salamander",
|
||||||
|
"password": "你的混淆密码"
|
||||||
|
},
|
||||||
|
"up_mbps": 50,
|
||||||
"down_mbps": 100,
|
"down_mbps": 100,
|
||||||
"tls": {
|
"tls": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
{
|
||||||
|
"log": {
|
||||||
|
"level": "info",
|
||||||
|
"timestamp": true,
|
||||||
|
"output": "/var/log/sing-box/sing-box.log"
|
||||||
|
},
|
||||||
|
"inbounds": [
|
||||||
|
{
|
||||||
|
"type": "hysteria2",
|
||||||
|
"tag": "hysteria2-in",
|
||||||
|
"listen": "::",
|
||||||
|
"listen_port": 8443,
|
||||||
|
"users": [
|
||||||
|
{
|
||||||
|
"name": "user1",
|
||||||
|
"password": "你的密码"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"obfs": {
|
||||||
|
"type": "salamander",
|
||||||
|
"password": "你的混淆密码"
|
||||||
|
},
|
||||||
|
"up_mbps": 50,
|
||||||
|
"down_mbps": 100,
|
||||||
|
"tls": {
|
||||||
|
"enabled": true,
|
||||||
|
"server_name": "你的域名",
|
||||||
|
"alpn": ["h3"],
|
||||||
|
"key_path": "/etc/sing-box/tls/self-tls/server.key",
|
||||||
|
"certificate_path": "/etc/sing-box/tls/self-tls/server.crt"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outbounds": [
|
||||||
|
{
|
||||||
|
"type": "direct",
|
||||||
|
"tag": "direct"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "block",
|
||||||
|
"tag": "block"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"route": {
|
||||||
|
"rules": [
|
||||||
|
{
|
||||||
|
"ip_is_private": true,
|
||||||
|
"outbound": "block"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"final": "direct"
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
-4
@@ -74,12 +74,11 @@ ask_update_domain(){
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# 修改server_name
|
# 修改server_name
|
||||||
modify_json_file "$CONFIG_FILE" ".inbounds[0].tls.server_name" "$DOMAIN"
|
update_server_name "$CONFIG_FILE" "$DOMAIN"
|
||||||
|
|
||||||
# 是否存在acme域名, 存在则修改
|
# 是否存在acme域名, 存在则修改
|
||||||
local ACME_EXISTS=$(jq -r 'has("inbounds") and (.inbounds[0] | has("tls")) and (.inbounds[0].tls | has("acme"))' "$CONFIG_FILE")
|
if is_config_use_acme "$CONFIG_FILE"; then
|
||||||
if [[ "$ACME_EXISTS" == "true" ]]; then
|
update_acme_domain "$CONFIG_FILE" "$DOMAIN"
|
||||||
modify_json_file "$CONFIG_FILE" ".inbounds[0].tls.acme.domain[0]" "$DOMAIN"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "修改域名成功"
|
echo "修改域名成功"
|
||||||
@@ -103,6 +102,39 @@ check_config_file(){
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 创建配置文件
|
||||||
|
create_config(){
|
||||||
|
local SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/bin" # 脚本文件夹绝对路径
|
||||||
|
local CONFIG_FILE="$SCRIPT_DIR/../config/config.json"
|
||||||
|
|
||||||
|
# 如果配置文件已存在,提示用户是否重新生成
|
||||||
|
if [ -e "$CONFIG_FILE" ]; then
|
||||||
|
local REGENERATE
|
||||||
|
read -p "检测到配置已存在,是否重新生成配置?(y/n): " REGENERATE
|
||||||
|
if [ "$REGENERATE" != "y" ] && [ "$REGENERATE" != "Y" ]; then
|
||||||
|
echo "取消重新生成配置."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "请选择配置类型:"
|
||||||
|
echo "1. Tuic"
|
||||||
|
echo "2. Hysteria"
|
||||||
|
local CHOICE
|
||||||
|
read -p "输入您的选择: " CHOICE
|
||||||
|
case $CHOICE in
|
||||||
|
1)
|
||||||
|
create_tuic_config
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
create_hysteria_config
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的选择, 请重新选择."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
main(){
|
main(){
|
||||||
local container_status=$(check_container_status)
|
local container_status=$(check_container_status)
|
||||||
# 显示菜单
|
# 显示菜单
|
||||||
|
|||||||
Reference in New Issue
Block a user