From 070977fc6884f9b41ce23a8ce4daee6e320652ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=96=B5=E4=BA=8C?= <66155308+miaoermua@users.noreply.github.com> Date: Mon, 8 Jul 2024 14:42:14 +0800 Subject: [PATCH 1/7] Update: tailscale&ttyd configure --- cattools.sh | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/cattools.sh b/cattools.sh index 9f7759d..fc36434 100644 --- a/cattools.sh +++ b/cattools.sh @@ -735,6 +735,94 @@ sysupgrade(){ fi } +# Enhancement MENU +enhancement_menu() { + clear + echo "1. Tailscale 一键配置" + echo "2. Ttyd 配置" + echo "3. 返回主菜单" + echo + read -p "请选择一个选项: " choice + case $choice in + 1) configure_tailscale ;; + 2) configure_ttyd ;; + 3) menu ;; + *) echo "无效选项,请重试。" && enhance_menu ;; + esac +} + +configure_tailscale(){ + if ! grep -q "catwrt" /etc/opkg/distfeeds.conf && ! ip a | grep -q "192.168.1."; then + echo "请先配置软件源。" + echo "返回主菜单。" + menu + return + fi + + if ! opkg list_installed | grep -q "tailscale" || ! opkg list_installed | grep -q "tailscaled"; then + echo "请先安装 tailscale 和 tailscaled 软件包。" + echo "返回主菜单。" + menu + return + fi + + subnet=$(ip -o -f inet addr show | awk '/scope global/ {print $4}' | head -n 1) + if [ -z "$subnet" ]; then + echo "无法获取当前子网。" + echo "返回主菜单。" + menu + return + fi + + tailscale up --advertise-routes=$subnet --accept-routes --advertise-exit-node + + firewall_file="/etc/firewall.user" + rules=("iptables -I FORWARD -i tailscale0 -j ACCEPT" + "iptables -I FORWARD -o tailscale0 -j ACCEPT" + "iptables -t nat -I POSTROUTING -o tailscale0 -j MASQUERADE") + + for rule in "${rules[@]}"; do + if ! grep -q "^$rule$" $firewall_file; then + echo $rule >> $firewall_file + fi + done + + echo "" + echo "请在浏览器中访问 http:///cgi-bin/luci/admin/network/iface_add" + echo "新增以下配置:" + echo "" + echo "新接口的名称: tailscale" + echo "新接口的协议: 静态 (默认)" + echo "包括以下接口: 以太网适配器: \"tailscale0\" (tailscale)" + echo "IPv4 地址: 输入 tailscale 中的 CatWrt 地址" + echo "IPv4 子网掩码: 255.0.0.0" + echo "创建/分配防火墙区域: LAN" + echo "保存并应用" + + echo "Tailscale 配置部分,剩下的交给你了~" + menu +} + +# TTYD +configure_ttyd(){ + ttyd_file="/etc/config/ttyd" + original_command="option command '/bin/login'" + modified_command="option command '/bin/login -f root'" + + if grep -q "$modified_command" $ttyd_file; then + sed -i "s|$modified_command|$original_command|" $ttyd_file + echo "Ttyd 配置已还原为默认。" + else + sed -i "s|$original_command|$modified_command|" $ttyd_file + echo "Ttyd 配置已修改为 root 登录。" + fi + + /etc/init.d/ttyd restart + echo "TTYD 服务已重新启动。" + menu +} + + while true; do menu read choice @@ -760,6 +848,9 @@ while true; do 7) sysupgrade ;; + 8) + enhancement_menu + ;; 0) echo "Exiting..." break From 6428a56298f72ee44b1a294675b16ab9a15385aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=96=B5=E4=BA=8C?= <66155308+miaoermua@users.noreply.github.com> Date: Mon, 8 Jul 2024 14:59:23 +0800 Subject: [PATCH 2/7] fix: tailscale --- cattools.sh | 42 +++++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/cattools.sh b/cattools.sh index fc36434..2de5c36 100644 --- a/cattools.sh +++ b/cattools.sh @@ -737,22 +737,23 @@ sysupgrade(){ # Enhancement MENU enhancement_menu() { - clear + echo "增强配置 提高用户体验" + echo "" echo "1. Tailscale 一键配置" echo "2. Ttyd 配置" - echo "3. 返回主菜单" + echo "0. 返回 Cattools 主菜单" echo - read -p "请选择一个选项: " choice + read -p "请输入数字并回车(Please enter your choice):" choice case $choice in 1) configure_tailscale ;; 2) configure_ttyd ;; - 3) menu ;; + 0) menu ;; *) echo "无效选项,请重试。" && enhance_menu ;; esac } configure_tailscale(){ - if ! grep -q "catwrt" /etc/opkg/distfeeds.conf && ! ip a | grep -q "192.168.1."; then + if ! grep -q -E "catwrt|repo.miaoer.xyz" /etc/opkg/distfeeds.conf && ! ip a | grep -q -E "192\.168\.[0-9]+\.[0-9]+|10\.[0-9]+\.[0-9]+\.[0-9]+|172\.1[6-9]\.[0-9]+\.[0-9]+|172\.2[0-9]\.[0-9]+\.[0-9]+|172\.3[0-1]\.[0-9]+\.[0-9]+"; then echo "请先配置软件源。" echo "返回主菜单。" menu @@ -760,12 +761,16 @@ configure_tailscale(){ fi if ! opkg list_installed | grep -q "tailscale" || ! opkg list_installed | grep -q "tailscaled"; then - echo "请先安装 tailscale 和 tailscaled 软件包。" - echo "返回主菜单。" - menu - return + echo "正在安装 tailscale 和 tailscaled 软件包..." + opkg install tailscale + if [ $? -ne 0 ]; then + echo "安装 tailscale 失败,请先配置软件源。" + echo "返回主菜单。" + main_menu + return + fi fi - + subnet=$(ip -o -f inet addr show | awk '/scope global/ {print $4}' | head -n 1) if [ -z "$subnet" ]; then echo "无法获取当前子网。" @@ -787,15 +792,26 @@ configure_tailscale(){ fi done + lan_ip=$(uci get network.lan.ipaddr) + echo "" - echo "请在浏览器中访问 http:///cgi-bin/luci/admin/network/iface_add" + echo "点击上面的 tailscale login 链接然后再进行以下配置" + echo "=========================================================================" + echo "" + echo "请在浏览器中访问 http://$lan_ip/cgi-bin/luci/admin/network/iface_add" echo "新增以下配置:" echo "" echo "新接口的名称: tailscale" echo "新接口的协议: 静态 (默认)" echo "包括以下接口: 以太网适配器: \"tailscale0\" (tailscale)" + echo "提交 下一步" + echo "" + echo "## 接口 - TAILSCALE" echo "IPv4 地址: 输入 tailscale 中的 CatWrt 地址" echo "IPv4 子网掩码: 255.0.0.0" + echo "保存 下一步" + echo "" + echo "##接口 - TAILSCALE - 防火墙设置" echo "创建/分配防火墙区域: LAN" echo "保存并应用" @@ -811,10 +827,10 @@ configure_ttyd(){ if grep -q "$modified_command" $ttyd_file; then sed -i "s|$modified_command|$original_command|" $ttyd_file - echo "Ttyd 配置已还原为默认。" + echo "TTYD 配置已还原为默认。" else sed -i "s|$original_command|$modified_command|" $ttyd_file - echo "Ttyd 配置已修改为 root 登录。" + echo "TTYD 配置已修改为 root 登录。" fi /etc/init.d/ttyd restart From ed6f906a626b963c05cc9631e8145a12e3b090c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=96=B5=E4=BA=8C?= <66155308+miaoermua@users.noreply.github.com> Date: Mon, 8 Jul 2024 15:01:03 +0800 Subject: [PATCH 3/7] Update MENU --- cattools.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/cattools.sh b/cattools.sh index 2de5c36..6834928 100644 --- a/cattools.sh +++ b/cattools.sh @@ -53,6 +53,7 @@ menu() { echo "5. apply_repo - 软件源配置" echo "6. diagnostics - 网络诊断" echo "7. sysupgrade - 系统更新" + ehco "8. enhancement - 实用增强" echo "0. Exit - 退出" echo "----------------------------------------------------------" echo -n "请输入数字并回车(Please enter your choice): " From 5578391ba87842119b481e4d94d141db0fda80e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=96=B5=E4=BA=8C?= <66155308+miaoermua@users.noreply.github.com> Date: Mon, 8 Jul 2024 15:43:21 +0800 Subject: [PATCH 4/7] Update manual_deploy_uhttpd_ssl_cert --- cattools.sh | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 88 insertions(+), 5 deletions(-) diff --git a/cattools.sh b/cattools.sh index 6834928..571252f 100644 --- a/cattools.sh +++ b/cattools.sh @@ -742,20 +742,22 @@ enhancement_menu() { echo "" echo "1. Tailscale 一键配置" echo "2. Ttyd 配置" + echo "3. SSL/TLS 手动上传配置" echo "0. 返回 Cattools 主菜单" echo read -p "请输入数字并回车(Please enter your choice):" choice case $choice in 1) configure_tailscale ;; 2) configure_ttyd ;; + 3) manual_deploy_uhttpd_ssl_cert ;; 0) menu ;; - *) echo "无效选项,请重试。" && enhance_menu ;; + *) echo "无效选项,请重试。" && menu ;; esac } configure_tailscale(){ if ! grep -q -E "catwrt|repo.miaoer.xyz" /etc/opkg/distfeeds.conf && ! ip a | grep -q -E "192\.168\.[0-9]+\.[0-9]+|10\.[0-9]+\.[0-9]+\.[0-9]+|172\.1[6-9]\.[0-9]+\.[0-9]+|172\.2[0-9]\.[0-9]+\.[0-9]+|172\.3[0-1]\.[0-9]+\.[0-9]+"; then - echo "请先配置软件源。" + echo "[ERROR] 请先配置软件源。" echo "返回主菜单。" menu return @@ -765,16 +767,16 @@ configure_tailscale(){ echo "正在安装 tailscale 和 tailscaled 软件包..." opkg install tailscale if [ $? -ne 0 ]; then - echo "安装 tailscale 失败,请先配置软件源。" + echo "[ERROR] 安装 tailscale 失败,请先配置软件源。" echo "返回主菜单。" - main_menu + menu return fi fi subnet=$(ip -o -f inet addr show | awk '/scope global/ {print $4}' | head -n 1) if [ -z "$subnet" ]; then - echo "无法获取当前子网。" + echo "[ERROR] 无法获取当前子网。" echo "返回主菜单。" menu return @@ -839,6 +841,87 @@ configure_ttyd(){ menu } +# Manual upload SSL/TLS +manual_deploy_uhttpd_ssl_cert() { + if ! grep -q -E "catwrt|repo.miaoer.xyz" /etc/opkg/distfeeds.conf && ! ip a | grep -q -E "192\.168\.[0-9]+\.[0-9]+|10\.[0-9]+\.[0-9]+\.[0-9]+|172\.1[6-9]\.[0-9]+\.[0-9]+|172\.2[0-9]+\.[0-9]+\.[0-9]+|172\.3[0-1]\.[0-9]+\.[0-9]+"; then + echo "请先配置软件源。" + echo "返回主菜单。" + menu + return + fi + + if ! opkg list_installed | grep -q "unzip"; then + echo "正在安装 unzip..." + opkg update + opkg install unzip + if [ $? -ne 0 ]; then + echo "[ERROR] 安装 unzip 失败。请检查软件源配置。" + echo "返回主菜单。" + menu + return + fi + fi + lan_ip=$(uci get network.lan.ipaddr) + + echo "" + echo "请在浏览器中访问 http://$lan_ip/cgi-bin/luci/admin/system/filetransfer 上传证书 zip 文件。" + echo "仅支持 Aliyun / Tencent Cloud 创建的 Ngnix 和 apache SSL/TLS 证书" + echo "本功能仅做手动证书部署,并不代表你的 DNS 已解析或者网页 (:80/:443 or:8080) 端口通畅" + ehco "不支持已安装 ngnix 的设备" + echo "上传完成后,按 [1] 确认/ [0] 退出。" + read -r confirmation + if [ "$confirmation" != "1" ]; then + echo "[ERROR] 上传未确认。返回主菜单。" + menu + return + fi + + zip_files=($(ls /tmp/*.zip 2>/dev/null)) + if [ ${#zip_files[@]} -gt 1 ]; then + echo "[ERROR] 检测到多个 zip 文件,请仅上传一个 zip 文件。" + echo "返回主菜单。" + menu + return + elif [ ${#zip_files[@]} -eq 0 ]; then + echo "[ERROR] 未找到上传的 zip 文件。返回主菜单。" + menu + return + fi + + uploaded_zip=${zip_files[0]} + + if [ -f /etc/uhttpd.crt ]; then + mv /etc/uhttpd.crt /etc/uhttpd.crt.bak + fi + if [ -f /etc/uhttpd.key ]; then + mv /etc/uhttpd.key /etc/uhttpd.key.bak + fi + + unzip -o "$uploaded_zip" -d /tmp/deploy_ssl + if [ $? -ne 0 ]; then + echo "[ERROR] 解压失败。返回主菜单。" + menu + return + fi + + crt_file=$(find /tmp/deploy_ssl -name "*.crt" -o -name "*.pem" 2>/dev/null | head -n 1) + key_file=$(find /tmp/deploy_ssl -name "*.key" 2>/dev/null | head -n 1) + if [ -z "$crt_file" ] || [ -z "$key_file" ]; then + echo "[ERROR] 未找到有效的证书文件或密钥文件。返回主菜单。" + menu + return + fi + + cp "$crt_file" /etc/uhttpd.crt + cp "$key_file" /etc/uhttpd.key + + rm -rf /tmp/deploy_ssl + rm "$uploaded_zip" + + echo "证书部署完成,正在重启 UHTTPD" + /etc/init.d/uhttpd restart + menu +} while true; do menu From 2460921ee13d3ca366a50fbe153c04a858b2be3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=96=B5=E4=BA=8C?= <66155308+miaoermua@users.noreply.github.com> Date: Mon, 8 Jul 2024 15:48:54 +0800 Subject: [PATCH 5/7] fix: menu --- cattools.sh | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/cattools.sh b/cattools.sh index 571252f..433e430 100644 --- a/cattools.sh +++ b/cattools.sh @@ -53,7 +53,7 @@ menu() { echo "5. apply_repo - 软件源配置" echo "6. diagnostics - 网络诊断" echo "7. sysupgrade - 系统更新" - ehco "8. enhancement - 实用增强" + echo "8. enhancement - 实用增强" echo "0. Exit - 退出" echo "----------------------------------------------------------" echo -n "请输入数字并回车(Please enter your choice): " @@ -751,14 +751,13 @@ enhancement_menu() { 2) configure_ttyd ;; 3) manual_deploy_uhttpd_ssl_cert ;; 0) menu ;; - *) echo "无效选项,请重试。" && menu ;; + *) echo "无效选项,请重试" && menu ;; esac } configure_tailscale(){ if ! grep -q -E "catwrt|repo.miaoer.xyz" /etc/opkg/distfeeds.conf && ! ip a | grep -q -E "192\.168\.[0-9]+\.[0-9]+|10\.[0-9]+\.[0-9]+\.[0-9]+|172\.1[6-9]\.[0-9]+\.[0-9]+|172\.2[0-9]\.[0-9]+\.[0-9]+|172\.3[0-1]\.[0-9]+\.[0-9]+"; then - echo "[ERROR] 请先配置软件源。" - echo "返回主菜单。" + echo "[ERROR] 请先配置软件源" menu return fi @@ -768,7 +767,6 @@ configure_tailscale(){ opkg install tailscale if [ $? -ne 0 ]; then echo "[ERROR] 安装 tailscale 失败,请先配置软件源。" - echo "返回主菜单。" menu return fi @@ -777,7 +775,6 @@ configure_tailscale(){ subnet=$(ip -o -f inet addr show | awk '/scope global/ {print $4}' | head -n 1) if [ -z "$subnet" ]; then echo "[ERROR] 无法获取当前子网。" - echo "返回主菜单。" menu return fi @@ -830,22 +827,21 @@ configure_ttyd(){ if grep -q "$modified_command" $ttyd_file; then sed -i "s|$modified_command|$original_command|" $ttyd_file - echo "TTYD 配置已还原为默认。" + echo "TTYD 配置已还原为默认" else sed -i "s|$original_command|$modified_command|" $ttyd_file - echo "TTYD 配置已修改为 root 登录。" + echo "TTYD 配置已修改为 root 登录" fi /etc/init.d/ttyd restart - echo "TTYD 服务已重新启动。" + echo "TTYD 服务已重新启动" menu } # Manual upload SSL/TLS manual_deploy_uhttpd_ssl_cert() { if ! grep -q -E "catwrt|repo.miaoer.xyz" /etc/opkg/distfeeds.conf && ! ip a | grep -q -E "192\.168\.[0-9]+\.[0-9]+|10\.[0-9]+\.[0-9]+\.[0-9]+|172\.1[6-9]\.[0-9]+\.[0-9]+|172\.2[0-9]+\.[0-9]+\.[0-9]+|172\.3[0-1]\.[0-9]+\.[0-9]+"; then - echo "请先配置软件源。" - echo "返回主菜单。" + echo "[ERROR] 请先配置软件源" menu return fi @@ -855,8 +851,7 @@ manual_deploy_uhttpd_ssl_cert() { opkg update opkg install unzip if [ $? -ne 0 ]; then - echo "[ERROR] 安装 unzip 失败。请检查软件源配置。" - echo "返回主菜单。" + echo "[ERROR] 安装 unzip 失败。请检查软件源配置" menu return fi @@ -867,23 +862,22 @@ manual_deploy_uhttpd_ssl_cert() { echo "请在浏览器中访问 http://$lan_ip/cgi-bin/luci/admin/system/filetransfer 上传证书 zip 文件。" echo "仅支持 Aliyun / Tencent Cloud 创建的 Ngnix 和 apache SSL/TLS 证书" echo "本功能仅做手动证书部署,并不代表你的 DNS 已解析或者网页 (:80/:443 or:8080) 端口通畅" - ehco "不支持已安装 ngnix 的设备" - echo "上传完成后,按 [1] 确认/ [0] 退出。" + echo "不支持已安装 ngnix 的设备" + echo "上传完成后,按 [1] 确认/ [0] 退出" read -r confirmation if [ "$confirmation" != "1" ]; then - echo "[ERROR] 上传未确认。返回主菜单。" + echo "[ERROR] 上传未确认。返回主菜单" menu return fi - zip_files=($(ls /tmp/*.zip 2>/dev/null)) + zip_files=($(ls /tmp/upload/*.zip 2>/dev/null)) if [ ${#zip_files[@]} -gt 1 ]; then - echo "[ERROR] 检测到多个 zip 文件,请仅上传一个 zip 文件。" - echo "返回主菜单。" + echo "[ERROR] 检测到多个 zip 文件,请仅上传一个 zip 文件" menu return elif [ ${#zip_files[@]} -eq 0 ]; then - echo "[ERROR] 未找到上传的 zip 文件。返回主菜单。" + echo "[ERROR] 未找到上传的 zip 文件" menu return fi @@ -899,7 +893,7 @@ manual_deploy_uhttpd_ssl_cert() { unzip -o "$uploaded_zip" -d /tmp/deploy_ssl if [ $? -ne 0 ]; then - echo "[ERROR] 解压失败。返回主菜单。" + echo "[ERROR] 解压失败。返回主菜单" menu return fi @@ -907,7 +901,7 @@ manual_deploy_uhttpd_ssl_cert() { crt_file=$(find /tmp/deploy_ssl -name "*.crt" -o -name "*.pem" 2>/dev/null | head -n 1) key_file=$(find /tmp/deploy_ssl -name "*.key" 2>/dev/null | head -n 1) if [ -z "$crt_file" ] || [ -z "$key_file" ]; then - echo "[ERROR] 未找到有效的证书文件或密钥文件。返回主菜单。" + echo "[ERROR] 未找到有效的证书文件或密钥文件。返回主菜单" menu return fi From d050fed91766d85cbf783b8b9c45d702584f2a3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=96=B5=E4=BA=8C?= <66155308+miaoermua@users.noreply.github.com> Date: Mon, 8 Jul 2024 15:56:39 +0800 Subject: [PATCH 6/7] Update SSL/TLS --- cattools.sh | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/cattools.sh b/cattools.sh index 433e430..b9cc433 100644 --- a/cattools.sh +++ b/cattools.sh @@ -846,6 +846,20 @@ manual_deploy_uhttpd_ssl_cert() { return fi + if ! grep -q "option cert '/etc/uhttpd.crt'" /etc/config/uhttpd || ! grep -q "option key '/etc/uhttpd.key'" /etc/config/uhttpd; then + echo "[ERROR] uhttpd 配置文件中的证书或密钥路径已被修改,无法继续执行!" + echo "请检查 /etc/config/uhttpd" + menu + return + fi + + if ! grep -q "list listen_http '0.0.0.0:80'" /etc/config/uhttpd || \ + ! grep -q "list listen_http '\[::\]:80'" /etc/config/uhttpd || \ + ! grep -q "list listen_https '0.0.0.0:443'" /etc/config/uhttpd || \ + ! grep -q "list listen_https '\[::\]:443'" /etc/config/uhttpd; then + echo "[ERROR] uhttpd 配置文件中的监听端口配置已被修改,请检查!" + fi + if ! opkg list_installed | grep -q "unzip"; then echo "正在安装 unzip..." opkg update @@ -893,7 +907,7 @@ manual_deploy_uhttpd_ssl_cert() { unzip -o "$uploaded_zip" -d /tmp/deploy_ssl if [ $? -ne 0 ]; then - echo "[ERROR] 解压失败。返回主菜单" + echo "[ERROR] 解压失败" menu return fi @@ -901,7 +915,7 @@ manual_deploy_uhttpd_ssl_cert() { crt_file=$(find /tmp/deploy_ssl -name "*.crt" -o -name "*.pem" 2>/dev/null | head -n 1) key_file=$(find /tmp/deploy_ssl -name "*.key" 2>/dev/null | head -n 1) if [ -z "$crt_file" ] || [ -z "$key_file" ]; then - echo "[ERROR] 未找到有效的证书文件或密钥文件。返回主菜单" + echo "[ERROR] 未找到有效的证书文件或密钥文件" menu return fi From 2a940c8ff6bece5bdfbf8d602c12678057e76f2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=96=B5=E4=BA=8C?= <66155308+miaoermua@users.noreply.github.com> Date: Mon, 8 Jul 2024 16:53:38 +0800 Subject: [PATCH 7/7] Update TTYD --- cattools.sh | 66 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 48 insertions(+), 18 deletions(-) diff --git a/cattools.sh b/cattools.sh index 433e430..090bef4 100644 --- a/cattools.sh +++ b/cattools.sh @@ -740,9 +740,9 @@ sysupgrade(){ enhancement_menu() { echo "增强配置 提高用户体验" echo "" - echo "1. Tailscale 一键配置" - echo "2. Ttyd 配置" - echo "3. SSL/TLS 手动上传配置" + echo "1. Tailscale 配置" + echo "2. TTYD 配置免密(危险仅用于无网调试)" + echo "3. SSL/TLS 证书上传配置" echo "0. 返回 Cattools 主菜单" echo read -p "请输入数字并回车(Please enter your choice):" choice @@ -821,20 +821,50 @@ configure_tailscale(){ # TTYD configure_ttyd(){ - ttyd_file="/etc/config/ttyd" - original_command="option command '/bin/login'" - modified_command="option command '/bin/login -f root'" - - if grep -q "$modified_command" $ttyd_file; then - sed -i "s|$modified_command|$original_command|" $ttyd_file - echo "TTYD 配置已还原为默认" - else - sed -i "s|$original_command|$modified_command|" $ttyd_file - echo "TTYD 配置已修改为 root 登录" + if ! opkg list_installed | grep -q "luci-app-ttyd" || ! opkg list_installed | grep -q "ttyd"; then + echo "[ERROR]未安装 luci-app-ttyd 或 ttyd 软件包,请先配置软件源并安装这些软件包" + menu + return + fi + + echo "" + echo "Warning:" + echo "=========================================================================" + echo "此操作将修改 TTYD 的配置以自动登录 root 用户,而且不需要密码" + echo "这存在被远程执行的安全风险!仅适用于方便未放行端口时的调试,使用后请务必回到此处配置禁用。" + echo "你确定要继续吗? ([1] 确认/[2] 取消)" + read -r confirmation + if [ "$confirmation" != "1" ]; then + echo "操作取消" + menu + return + fi + + echo "" + echo "你真的阅读了此警告吗,这非常主要!请务必使用此功能后将其禁用,以避免遭受远程执行命令!" + echo "禁用只需要在 Cattools 里面再选一次此功能就可以完成禁用,这是我们的承诺哦!" + echo "你确定要继续吗? ([1] 确认/[2] 取消)" + read -r second_confirmation + if [ "$second_confirmation" != "1" ]; then + echo "操作取消" + menu + return + fi + + if grep -q "option command '/bin/login -f root'" /etc/config/ttyd; then + sed -i "s/option command '\/bin\/login -f root'/option command '\/bin\/login'/" /etc/config/ttyd + /etc/init.d/ttyd restart + echo "" + echo "TTYD 配置已还原为默认配置" + else + sed -i "s/option command '\/bin\/login'/option command '\/bin\/login -f root'/" /etc/config/ttyd + /etc/init.d/ttyd restart + echo "" + echo "TTYD 配置已修改为自动登录 root" + lan_ip=$(uci get network.lan.ipaddr) + echo "TTYD 访问链接 http://$lan_ip:7681" fi - /etc/init.d/ttyd restart - echo "TTYD 服务已重新启动" menu } @@ -866,7 +896,7 @@ manual_deploy_uhttpd_ssl_cert() { echo "上传完成后,按 [1] 确认/ [0] 退出" read -r confirmation if [ "$confirmation" != "1" ]; then - echo "[ERROR] 上传未确认。返回主菜单" + echo "[ERROR] 上传未确认" menu return fi @@ -893,7 +923,7 @@ manual_deploy_uhttpd_ssl_cert() { unzip -o "$uploaded_zip" -d /tmp/deploy_ssl if [ $? -ne 0 ]; then - echo "[ERROR] 解压失败。返回主菜单" + echo "[ERROR] 解压失败" menu return fi @@ -901,7 +931,7 @@ manual_deploy_uhttpd_ssl_cert() { crt_file=$(find /tmp/deploy_ssl -name "*.crt" -o -name "*.pem" 2>/dev/null | head -n 1) key_file=$(find /tmp/deploy_ssl -name "*.key" 2>/dev/null | head -n 1) if [ -z "$crt_file" ] || [ -z "$key_file" ]; then - echo "[ERROR] 未找到有效的证书文件或密钥文件。返回主菜单" + echo "[ERROR] 未找到有效的证书文件或密钥文件" menu return fi