update
This commit is contained in:
+2
-41
@@ -319,7 +319,7 @@ uninstall() {
|
||||
echo -e "${GREEN}卸载完成${NC}"
|
||||
}
|
||||
|
||||
# 改进的确认函数 - 支持管道输入和交互式确认
|
||||
# 简化的确认函数 - 直接安装或交互确认
|
||||
confirm_installation() {
|
||||
# 检查是否通过管道运行
|
||||
if [[ -t 0 ]]; then
|
||||
@@ -333,46 +333,7 @@ confirm_installation() {
|
||||
else
|
||||
# 通过管道运行,检查是否有强制参数
|
||||
if [[ "$1" != "--force" && "$1" != "-f" ]]; then
|
||||
echo -e "${YELLOW}检测到通过管道运行脚本${NC}"
|
||||
echo -e "${BLUE}如需跳过确认,请使用: ${NC}curl -fsSL <url> | sudo bash -s -- --force"
|
||||
echo ""
|
||||
echo -e "${YELLOW}请选择操作:${NC}"
|
||||
echo -e "${GREEN}Y/y${NC} - 立即开始安装"
|
||||
echo -e "${RED}N/n${NC} - 取消安装"
|
||||
echo -e "${BLUE}其他键或等待 10 秒${NC} - 自动开始安装"
|
||||
echo ""
|
||||
|
||||
# 倒计时,检测用户输入
|
||||
local countdown=10
|
||||
local user_input=""
|
||||
|
||||
while [[ $countdown -gt 0 ]]; do
|
||||
echo -n -e "\r${YELLOW}倒计时: $countdown 秒,请输入选择 [Y/n],或等待自动安装... ${NC}"
|
||||
|
||||
# 使用 read 的超时功能检测输入
|
||||
if read -t 1 -n 1 user_input 2>/dev/null; then
|
||||
echo ""
|
||||
case "$user_input" in
|
||||
[Yy]|$'\n'|"")
|
||||
echo -e "${GREEN}开始安装...${NC}"
|
||||
return 0
|
||||
;;
|
||||
[Nn])
|
||||
echo -e "${RED}取消安装${NC}"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo -e "${GREEN}开始安装...${NC}"
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
((countdown--))
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}等待时间到,自动开始安装...${NC}"
|
||||
echo -e "${YELLOW}检测到通过管道运行脚本,开始安装...${NC}"
|
||||
else
|
||||
echo -e "${BLUE}强制模式,跳过确认${NC}"
|
||||
fi
|
||||
|
||||
+61
-6
@@ -83,7 +83,7 @@ configure_acme_mode() {
|
||||
fi
|
||||
done
|
||||
|
||||
# 输入密码
|
||||
# 输入认证密码
|
||||
echo -n -e "${BLUE}请输入认证密码 (留空自动生成): ${NC}"
|
||||
read -r password
|
||||
if [[ -z "$password" ]]; then
|
||||
@@ -91,6 +91,28 @@ configure_acme_mode() {
|
||||
echo -e "${GREEN}自动生成密码: $password${NC}"
|
||||
fi
|
||||
|
||||
# 询问是否启用混淆
|
||||
echo ""
|
||||
echo -n -e "${BLUE}是否启用混淆功能? [Y/n]: ${NC}"
|
||||
read -r enable_obfs
|
||||
|
||||
local obfs_config=""
|
||||
if [[ ! $enable_obfs =~ ^[Nn]$ ]]; then
|
||||
echo -n -e "${BLUE}请输入混淆密码 (留空自动生成): ${NC}"
|
||||
read -r obfs_password
|
||||
if [[ -z "$obfs_password" ]]; then
|
||||
obfs_password=$(generate_password 16)
|
||||
echo -e "${GREEN}自动生成混淆密码: $obfs_password${NC}"
|
||||
fi
|
||||
|
||||
obfs_config="
|
||||
|
||||
obfs:
|
||||
type: salamander
|
||||
salamander:
|
||||
password: $obfs_password"
|
||||
fi
|
||||
|
||||
# 选择伪装网站
|
||||
echo ""
|
||||
echo -e "${BLUE}选择伪装网站:${NC}"
|
||||
@@ -136,7 +158,7 @@ acme:
|
||||
|
||||
auth:
|
||||
type: password
|
||||
password: $password
|
||||
password: $password$obfs_config
|
||||
|
||||
masquerade:
|
||||
type: proxy
|
||||
@@ -149,7 +171,13 @@ EOF
|
||||
echo -e "${GREEN}ACME 配置文件生成成功!${NC}"
|
||||
echo -e "${YELLOW}域名: $domain${NC}"
|
||||
echo -e "${YELLOW}邮箱: $email${NC}"
|
||||
echo -e "${YELLOW}密码: $password${NC}"
|
||||
echo -e "${YELLOW}认证密码: $password${NC}"
|
||||
if [[ -n "$obfs_password" ]]; then
|
||||
echo -e "${YELLOW}混淆密码: $obfs_password${NC}"
|
||||
echo -e "${YELLOW}混淆类型: Salamander${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}混淆功能: 未启用${NC}"
|
||||
fi
|
||||
echo -e "${YELLOW}伪装网站: $masquerade_url${NC}"
|
||||
}
|
||||
|
||||
@@ -194,7 +222,7 @@ configure_self_cert_mode() {
|
||||
;;
|
||||
esac
|
||||
|
||||
# 输入密码
|
||||
# 输入认证密码
|
||||
echo -n -e "${BLUE}请输入认证密码 (留空自动生成): ${NC}"
|
||||
read -r password
|
||||
if [[ -z "$password" ]]; then
|
||||
@@ -202,6 +230,27 @@ configure_self_cert_mode() {
|
||||
echo -e "${GREEN}自动生成密码: $password${NC}"
|
||||
fi
|
||||
|
||||
# 询问是否启用混淆
|
||||
echo ""
|
||||
echo -n -e "${BLUE}是否启用混淆功能? [Y/n]: ${NC}"
|
||||
read -r enable_obfs
|
||||
|
||||
local obfs_config=""
|
||||
if [[ ! $enable_obfs =~ ^[Nn]$ ]]; then
|
||||
echo -n -e "${BLUE}请输入混淆密码 (留空自动生成): ${NC}"
|
||||
read -r obfs_password
|
||||
if [[ -z "$obfs_password" ]]; then
|
||||
obfs_password=$(generate_password 16)
|
||||
echo -e "${GREEN}自动生成混淆密码: $obfs_password${NC}"
|
||||
fi
|
||||
|
||||
obfs_config="
|
||||
obfs:
|
||||
type: salamander
|
||||
salamander:
|
||||
password: $obfs_password"
|
||||
fi
|
||||
|
||||
# 生成自签名证书
|
||||
echo -e "${BLUE}生成自签名证书...${NC}"
|
||||
mkdir -p /etc/hysteria
|
||||
@@ -231,7 +280,7 @@ tls:
|
||||
|
||||
auth:
|
||||
type: password
|
||||
password: $password
|
||||
password: $password$obfs_config
|
||||
|
||||
masquerade:
|
||||
type: proxy
|
||||
@@ -243,7 +292,13 @@ EOF
|
||||
echo ""
|
||||
echo -e "${GREEN}自签名证书配置生成成功!${NC}"
|
||||
echo -e "${YELLOW}证书域名: $cert_domain${NC}"
|
||||
echo -e "${YELLOW}密码: $password${NC}"
|
||||
echo -e "${YELLOW}认证密码: $password${NC}"
|
||||
if [[ -n "$obfs_password" ]]; then
|
||||
echo -e "${YELLOW}混淆密码: $obfs_password${NC}"
|
||||
echo -e "${YELLOW}混淆类型: Salamander${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}混淆功能: 未启用${NC}"
|
||||
fi
|
||||
echo -e "${YELLOW}伪装网站: $masquerade_url${NC}"
|
||||
}
|
||||
|
||||
|
||||
+27
-39
@@ -280,21 +280,6 @@ bandwidth:
|
||||
EOF
|
||||
}
|
||||
|
||||
# 生成二维码 (如果有 qrencode)
|
||||
generate_qrcode() {
|
||||
local content="$1"
|
||||
|
||||
if command -v qrencode &> /dev/null; then
|
||||
echo -e "${BLUE}二维码:${NC}"
|
||||
qrencode -t ANSIUTF8 "$content"
|
||||
echo ""
|
||||
else
|
||||
echo -e "${YELLOW}提示: 安装 qrencode 可生成二维码${NC}"
|
||||
echo "Ubuntu/Debian: sudo apt install qrencode"
|
||||
echo "CentOS/RHEL: sudo yum install qrencode"
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
# 显示节点信息
|
||||
display_node_info() {
|
||||
@@ -402,13 +387,10 @@ show_node_links() {
|
||||
echo "$node_link"
|
||||
echo ""
|
||||
|
||||
# 生成二维码
|
||||
generate_qrcode "$node_link"
|
||||
|
||||
echo -e "${BLUE}使用说明:${NC}"
|
||||
echo "• 复制上方链接到支持 Hysteria2 的客户端"
|
||||
echo "• 或使用手机扫描二维码快速导入"
|
||||
echo "• 推荐客户端:v2rayNG (Android)、ShadowRocket (iOS)"
|
||||
echo "• 也可以手动输入到客户端的添加节点功能中"
|
||||
echo ""
|
||||
|
||||
wait_for_user
|
||||
@@ -428,32 +410,38 @@ show_subscription_info() {
|
||||
echo -e "${CYAN}=== 订阅信息 ===${NC}"
|
||||
echo ""
|
||||
|
||||
# Hysteria2 订阅 URL
|
||||
local hysteria2_sub_url="data:text/plain;charset=utf-8;base64,$(echo "$node_link" | base64 -w 0)"
|
||||
echo -e "${YELLOW}1. Hysteria2 订阅 URL:${NC}"
|
||||
echo "$hysteria2_sub_url"
|
||||
# 通用订阅链接 (Base64)
|
||||
local universal_sub_content=$(echo "$node_link" | base64 -w 0)
|
||||
echo -e "${YELLOW}1. 通用订阅链接 (Base64):${NC}"
|
||||
echo "$universal_sub_content"
|
||||
echo ""
|
||||
|
||||
# Base64 编码的订阅内容
|
||||
local hysteria2_sub_content=$(echo "$node_link" | base64 -w 0)
|
||||
echo -e "${YELLOW}2. Hysteria2 订阅内容 (Base64):${NC}"
|
||||
echo "$hysteria2_sub_content"
|
||||
# Clash 订阅链接
|
||||
local clash_config=$(generate_clash_config "$server_address" "$port" "$auth_password" "$obfs_password" "$sni_domain" "$insecure")
|
||||
local clash_sub_content=$(echo "$clash_config" | base64 -w 0)
|
||||
echo -e "${YELLOW}2. Clash 订阅内容:${NC}"
|
||||
echo "$clash_sub_content"
|
||||
echo ""
|
||||
|
||||
# 生成订阅二维码
|
||||
echo -e "${YELLOW}3. 订阅二维码:${NC}"
|
||||
generate_qrcode "$hysteria2_sub_url"
|
||||
|
||||
echo -e "${BLUE}订阅使用方法:${NC}"
|
||||
echo "• 方式1:复制 '订阅 URL' 到客户端的订阅功能中"
|
||||
echo "• 方式2:手机扫描二维码添加订阅"
|
||||
echo "• 方式3:手动输入 'Base64 内容' 到客户端"
|
||||
# SingBox 订阅链接
|
||||
local singbox_config=$(generate_singbox_config "$server_address" "$port" "$auth_password" "$obfs_password" "$sni_domain" "$insecure")
|
||||
local singbox_sub_content=$(echo "$singbox_config" | base64 -w 0)
|
||||
echo -e "${YELLOW}3. SingBox 订阅内容:${NC}"
|
||||
echo "$singbox_sub_content"
|
||||
echo ""
|
||||
echo -e "${BLUE}订阅使用说明:${NC}"
|
||||
echo "• 通用订阅:适用于大部分支持 Hysteria2 的客户端"
|
||||
echo "• Clash 订阅:专门用于 Clash 系列客户端"
|
||||
echo "• SingBox 订阅:专门用于 SingBox 客户端"
|
||||
echo ""
|
||||
echo -e "${BLUE}使用方法:${NC}"
|
||||
echo "• 复制对应的订阅内容到客户端的订阅功能中"
|
||||
echo "• 或者将订阅内容保存为文件导入客户端"
|
||||
echo ""
|
||||
echo -e "${BLUE}支持订阅的客户端:${NC}"
|
||||
echo "• v2rayNG (Android) - 推荐"
|
||||
echo "• Clash Verge Rev (桌面端)"
|
||||
echo "• ShadowRocket (iOS)"
|
||||
echo "• NekoBox/NekoRay"
|
||||
echo "• 通用订阅:v2rayNG (Android)、ShadowRocket (iOS)"
|
||||
echo "• Clash 订阅:Clash Verge Rev、ClashX Pro"
|
||||
echo "• SingBox 订阅:SingBox 官方客户端"
|
||||
echo ""
|
||||
|
||||
wait_for_user
|
||||
|
||||
Reference in New Issue
Block a user