LighthouseApp/debug_connection.sh
speakeloudest 75d4c48e41
Some checks failed
Build Windows / build (push) Has been cancelled
feat: 源码提交
2025-10-19 23:30:54 -07:00

175 lines
4.2 KiB
Bash
Executable File

#!/bin/bash
# BearVPN 连接调试脚本
# 用于调试 macOS 平台下的节点连接超时问题
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查网络连接
check_network() {
log_info "检查网络连接..."
# 检查基本网络连接
if ping -c 3 8.8.8.8 > /dev/null 2>&1; then
log_success "基本网络连接正常"
else
log_error "基本网络连接失败"
return 1
fi
# 检查 DNS 解析
if nslookup google.com > /dev/null 2>&1; then
log_success "DNS 解析正常"
else
log_error "DNS 解析失败"
return 1
fi
}
# 检查代理设置
check_proxy() {
log_info "检查系统代理设置..."
# 检查 HTTP 代理
if [ -n "$http_proxy" ] || [ -n "$HTTP_PROXY" ]; then
log_warning "检测到 HTTP 代理设置: $http_proxy$HTTP_PROXY"
else
log_info "未检测到 HTTP 代理设置"
fi
# 检查 HTTPS 代理
if [ -n "$https_proxy" ] || [ -n "$HTTPS_PROXY" ]; then
log_warning "检测到 HTTPS 代理设置: $https_proxy$HTTPS_PROXY"
else
log_info "未检测到 HTTPS 代理设置"
fi
}
# 检查防火墙
check_firewall() {
log_info "检查防火墙状态..."
# 检查 macOS 防火墙
local firewall_status=$(sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate 2>/dev/null || echo "unknown")
log_info "防火墙状态: $firewall_status"
if [ "$firewall_status" = "enabled" ]; then
log_warning "防火墙已启用,可能影响连接"
fi
}
# 测试常见端口连接
test_ports() {
log_info "测试常见端口连接..."
local ports=(80 443 8080 8443)
local hosts=("google.com" "cloudflare.com" "github.com")
for host in "${hosts[@]}"; do
for port in "${ports[@]}"; do
if timeout 5 bash -c "echo >/dev/tcp/$host/$port" 2>/dev/null; then
log_success "$host:$port 连接正常"
else
log_warning "$host:$port 连接失败或超时"
fi
done
done
}
# 检查 libcore 库
check_libcore() {
log_info "检查 libcore 库..."
if [ -f "libcore/bin/libcore.dylib" ]; then
log_success "找到 libcore.dylib"
# 检查库的架构
local arch=$(file libcore/bin/libcore.dylib)
log_info "库架构: $arch"
# 检查库的依赖
log_info "库依赖:"
otool -L libcore/bin/libcore.dylib | head -10
else
log_error "未找到 libcore.dylib"
return 1
fi
}
# 检查应用配置
check_app_config() {
log_info "检查应用配置..."
# 检查当前域名配置
if [ -f "lib/app/common/app_config.dart" ]; then
log_info "检查域名配置..."
grep -n "kr_baseDomains\|kr_currentDomain" lib/app/common/app_config.dart | head -5
fi
# 检查超时配置
log_info "检查超时配置..."
grep -n "kr_domainTimeout\|kr_totalTimeout" lib/app/common/app_config.dart | head -5
}
# 监控应用日志
monitor_logs() {
log_info "开始监控应用日志..."
log_info "请运行应用并尝试连接节点,然后按 Ctrl+C 停止监控"
# 监控 Flutter 日志
flutter logs --device-id=macos 2>/dev/null | grep -E "(ERROR|WARNING|INFO|超时|连接|节点|SingBox)" || true
}
# 主函数
main() {
log_info "开始 BearVPN 连接调试..."
log_info "=========================================="
check_network
check_proxy
check_firewall
test_ports
check_libcore
check_app_config
log_info "=========================================="
log_info "基础检查完成"
log_info "=========================================="
# 询问是否监控日志
read -p "是否开始监控应用日志?(y/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
monitor_logs
fi
log_success "调试完成"
}
# 运行主函数
main "$@"