Files
birdlgp/trace
2026-05-23 17:57:52 +08:00

41 lines
1.2 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
VARS_CONF="/etc/bird/vars.conf"
NEXTTRACE="/etc/bird-lg/nexttrace"
# 1. 提取目标 IP (URL 中的 q 参数传过来的最后一个参数)
TARGET=$(echo "$@" | awk '{print $NF}')
# 2. 预设必须要带的 nexttrace 参数
# 这样即使 bird-lgproxy.yaml 里没写全,这里也会兜底
FIXED_ARGS="-C -n -M -q 1"
# --- 内部函数:从 vars.conf 提取定义的值 ---
get_var() {
grep -E "define[[:space:]]+$1" "$VARS_CONF" | awk -F'=' '{print $2}' | tr -d ' ;"' | xargs
}
# --- 3. 根据目标 IP 段选择 Source IP ---
SRC_IP=""
if echo "$TARGET" | grep -q ':'; then
SRC_IP=$(get_var "LOCAL_V6_kernel")
else
# IPv4 逻辑
if echo "$TARGET" | grep -qE '^(172\.(2[0-3]|1[6-9]))'; then
SRC_IP=$(get_var "DN42_V4_kernel")
elif echo "$TARGET" | grep -qE '^10\.'; then
SRC_IP=$(get_var "UNET_V4_kernel")
else
SRC_IP=$(get_var "LOCAL_V4_kernel")
fi
fi
# --- 4. 组合并执行 ---
# 确保如果没读到变量,就不传 -s避免 nexttrace 报错
if [ -n "$SRC_IP" ]; then
# 使用 exec 替换当前进程,效率最高
exec "$NEXTTRACE" $FIXED_ARGS -s "$SRC_IP" "$TARGET"
else
exec "$NEXTTRACE" $FIXED_ARGS "$TARGET"
fi