change 4.0

This commit is contained in:
2026-04-14 12:16:31 +08:00
parent 0b3d5d7d00
commit 6f634771cb
13 changed files with 234 additions and 84 deletions

View File

@@ -0,0 +1,93 @@
#!/bin/bash
# downmyip - 自动从 /etc/bird/vars.conf 读取ASN并下载ROA配置
# 配置文件路径
VARS_CONF="/etc/bird/vars.conf"
BASE_URL="https://ntwkapi.noc.zhuantou.com.cn/brnet/roa/api.php?as="
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
get_asn() {
grep "^define $1_ASN" "$VARS_CONF" | awk -F'[=; ]' '{print $5}'
}
# 函数:下载配置
download_roa() {
local asn="$1"
local filename="/etc/bird/whitelist/$2"
if [ -z "$asn" ]; then
echo -e "${YELLOW}⏭️ $filename 未配置ASN跳过下载${NC}"
return
fi
echo -e "${YELLOW}📥 正在下载 $filename (ASN: $asn)${NC}"
if wget -q -O "$filename" "${BASE_URL}${asn}"; then
echo -e "${GREEN}$filename 下载成功${NC}"
else
echo -e "${RED}$filename 下载失败${NC}"
fi
}
# 函数:创建软链接
create_symlink() {
local script_path=$(realpath "$0")
local link_path="/usr/local/bin/downmyip"
if [ -L "$link_path" ] || [ -f "$link_path" ]; then
echo -e "${YELLOW}🔗 软链接已存在${NC}"
return
fi
echo -e "${YELLOW}🔗 创建全局命令downmyip${NC}"
if ln -s "$script_path" "$link_path"; then
echo -e "${GREEN}✅ 软链接创建完成!${NC}"
else
echo -e "${RED}❌ 请用sudo运行脚本以创建软链接${NC}"
fi
}
# ===================== 主逻辑 =====================
clear
echo -e "${YELLOW}===== downmyip - 自动下载ROA配置 =====${NC}"
# 1. 检查vars.conf是否存在
if [ ! -f "$VARS_CONF" ]; then
echo -e "${RED}❌ 配置文件不存在:$VARS_CONF${NC}"
exit 1
fi
# 2. 读取三个ASN
INET_ASN=$(get_asn "LOCAL")
DN42_ASN=$(get_asn "DN42")
UNET_ASN=$(get_asn "UNET")
echo -e "${GREEN}📄 从vars.conf读取ASN${NC}"
[ -n "$INET_ASN" ] && echo "公网ASN$INET_ASN" || echo "公网ASN未配置"
[ -n "$DN42_ASN" ] && echo "DN42 ASN$DN42_ASN" || echo "DN42 ASN未配置"
[ -n "$UNET_ASN" ] && echo "内网ASN$UNET_ASN" || echo "内网ASN未配置"
echo
# 3. 依次下载(不存在则跳过)
download_roa "$INET_ASN" "inet.conf"
download_roa "$DN42_ASN" "dn42.conf"
download_roa "$UNET_ASN" "unet.conf"
echo
# 4. 重载BIRD配置
echo -e "${YELLOW}🔄 执行birdc c${NC}"
if command -v birdc &>/dev/null; then
birdc c
echo -e "${GREEN}✅ BIRD重载完成${NC}"
else
echo -e "${RED}❌ 未找到birdc命令${NC}"
fi
# 5. 创建全局软链接
create_symlink
echo -e "\n${GREEN}===== 全部执行完毕 =====${NC}"

View File

@@ -1,15 +0,0 @@
function unet_is_self_net() {
return net ~ [
10.188.6.0/23+,
10.188.5.124/30,
44.32.191.16/28,
44.32.191.7/32
];
}
function unet_is_self_net_v6() {
return net ~ [
2406:840:e603::/48{48,56},
2406:840:e60e::/56
];
}