change 4.0
This commit is contained in:
93
bird/whitelist/downmyip.sh
Normal file
93
bird/whitelist/downmyip.sh
Normal 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}"
|
||||
@@ -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
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user