#!/bin/bash # ⚠ 管理密码不再写在这里,从环境变量取: # export RELAY_ADMIN_PASSWORD=... : "${RELAY_ADMIN_PASSWORD:?请先 export RELAY_ADMIN_PASSWORD}" # 验证官网 + 管理页分家 set -u BASE=http://127.0.0.1:8080 PUB=https://relay.xxmxxs.top UA='LanRemote/1.4.0' echo "===== 1. 官网首页 / (应该不用登录就能看到)=====" body=$(curl -s --max-time 15 "$BASE/" 2>/dev/null) echo " HTTP 内容长度: $(echo -n "$body" | wc -c)" for n in 'ykxmz' '老师抬一下手腕' '下载' '电脑端' '服务器端' '手表端'; do echo "$body" | grep -q "$n" && echo " OK $n" || echo " XX $n" done echo echo "===== 2. 管理页 /zhongzhuanzhan(应该要登录)=====" code=$(curl -s -o /dev/null -w '%{http_code}' --max-time 15 "$BASE/zhongzhuanzhan" 2>/dev/null) echo " HTTP $code" login=$(curl -s --max-time 15 "$BASE/zhongzhuanzhan" 2>/dev/null) echo "$login" | grep -q 'name=username' && echo " OK 有账号输入框" || echo " XX 没有账号框" echo "$login" | grep -q 'name=password' && echo " OK 有密码输入框" || echo " XX 没有密码框" echo echo "===== 3. /admin 应该跳转 =====" loc=$(curl -s -o /dev/null -w '%{redirect_url}' --max-time 15 "$BASE/admin" 2>/dev/null) echo " 跳转到: ${loc:-(没有跳转)}" echo echo "===== 4. 用错误密码登录(应该被拒)=====" curl -s -o /dev/null -w ' HTTP %{http_code} -> %{redirect_url}\n' --max-time 15 \ -X POST -d "username=xmz7891&password=$RELAY_ADMIN_PASSWORD" "$BASE/admin/login" 2>/dev/null echo echo "===== 5. 用正确账号密码登录(应该成功)=====" curl -s -c /tmp/ck.txt -o /dev/null -w ' HTTP %{http_code} -> %{redirect_url}\n' \ --max-time 15 -X POST \ -d "username=xmz7891&password=$RELAY_ADMIN_PASSWORD" "$BASE/admin/login" 2>/dev/null echo " Cookie:" grep -o 'lr_admin.*' /tmp/ck.txt 2>/dev/null | head -1 | sed 's/^/ /' echo echo "===== 6. 带 Cookie 访问管理页(应该看到管理内容)=====" admin=$(curl -s -b /tmp/ck.txt --max-time 15 "$BASE/zhongzhuanzhan" 2>/dev/null) for n in 'id=dlPanel' '网络体检' '退出登录' 'favicon'; do echo "$admin" | grep -q "$n" && echo " OK $n" || echo " XX $n" done echo echo "===== 7. 公网访问官网 =====" curl -s --max-time 30 -H "User-Agent: $UA" "$PUB/" 2>/dev/null | head -c 200 echo echo " 下载区文件:" curl -s --max-time 20 "$BASE/v1/downloads" | python3 -c ' import json,sys d=json.load(sys.stdin) for f in d.get("files",[]): print(" "+f["name"]) ' 2>/dev/null