From a888b868563e62b68a97eec20df14cbda15b287b Mon Sep 17 00:00:00 2001 From: sindricn Date: Thu, 7 Aug 2025 19:57:33 +0800 Subject: [PATCH] update --- quick-install.sh | 43 ++-------------------------- scripts/config.sh | 67 ++++++++++++++++++++++++++++++++++++++++---- scripts/node-info.sh | 66 ++++++++++++++++++------------------------- 3 files changed, 90 insertions(+), 86 deletions(-) diff --git a/quick-install.sh b/quick-install.sh index 8bb5a90..c570a92 100644 --- a/quick-install.sh +++ b/quick-install.sh @@ -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 | 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 diff --git a/scripts/config.sh b/scripts/config.sh index 18b991e..eb2f78d 100644 --- a/scripts/config.sh +++ b/scripts/config.sh @@ -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}" } diff --git a/scripts/node-info.sh b/scripts/node-info.sh index aae3362..0c1a9d5 100644 --- a/scripts/node-info.sh +++ b/scripts/node-info.sh @@ -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