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] 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