feat: 国内流量直连分流(geoip-cn / geosite-cn)— #5
国内 IP/域名直连(不走隧道)→ 省流量 + 国内访问快;非国内走代理。
- clientconfig.go: BuildClientConfig 加 ClientConfigOpts{SplitCN,RulesBaseURL};
开启时 route 加 {rule_set:[geoip-cn,geosite-cn]→direct} + 定义 rule_set
(remote .srs,download_detour:direct 直连下载)
- rules.go: 控制面静态服务 /v1/rules/{name}.srs(白名单防穿越)——自托管避免
GitHub 在国内被墙的鸡生蛋;客户端反正连控制面,可达性有保证
- nodes.go ConnectNode: 读 ?split_cn → opts;NodeAPI 加 rulesBaseURL
(PANGOLIN_PUBLIC_URL);main.go 挂 /v1/rules 路由 + RulesHandler
- 客户端: connect_api splitCN→?split_cn=1;connection_provider 传 smartRoute 偏好
- deploy/single-node: 拉 geoip-cn/geosite-cn.srs 到 $DATA_DIR/rules +
设 PANGOLIN_PUBLIC_URL/PANGOLIN_RULES_DIR
验证:go test(splitCN 开/关渲染 + RulesHandler 白名单/404)+ flutter analyze +
shellcheck;不需要节点。订阅链接暂用默认 opts、DNS 分流为后续增强。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -175,6 +175,8 @@ CA_KEY_PATH=$ETC/ca.key
|
||||
CA_CERT_PATH=$ETC/ca.crt
|
||||
GRPC_CERT_PATH=$ETC/grpc.crt
|
||||
GRPC_KEY_PATH=$ETC/grpc.key
|
||||
PANGOLIN_PUBLIC_URL=http://$VPS_IP:$HTTP_PORT
|
||||
PANGOLIN_RULES_DIR=$DATA_DIR/rules
|
||||
EOF
|
||||
if [ -n "${SMTP_HOST:-}" ]; then
|
||||
cat >> "$ETC/server.env" <<EOF
|
||||
@@ -186,6 +188,19 @@ SMTP_FROM=${SMTP_FROM:-no-reply@pangolin.app}
|
||||
EOF
|
||||
fi
|
||||
|
||||
# ── 6b. 国内分流 rule-set(#5)──────────────────────────────────────────────────
|
||||
# 自托管 geoip-cn / geosite-cn(控制面 /v1/rules/*.srs 静态服务,客户端 sing-box
|
||||
# 直连下载)。GitHub 在国内被墙,故控制面代为下发,避免鸡生蛋。
|
||||
log "拉取国内分流 rule-set(geoip-cn / geosite-cn)..."
|
||||
RULES_DIR="$DATA_DIR/rules"
|
||||
install -d -m 755 "$RULES_DIR"
|
||||
curl -fsSL -o "$RULES_DIR/geoip-cn.srs" \
|
||||
https://github.com/SagerNet/sing-geoip/raw/rule-set/geoip-cn.srs \
|
||||
|| log "WARN: geoip-cn.srs 拉取失败,国内分流将不可用"
|
||||
curl -fsSL -o "$RULES_DIR/geosite-cn.srs" \
|
||||
https://github.com/SagerNet/sing-geosite/raw/rule-set/geosite-cn.srs \
|
||||
|| log "WARN: geosite-cn.srs 拉取失败,国内分流将不可用"
|
||||
|
||||
# ── 7. 迁移 + seed(SQLite)────────────────────────────────────────────────────
|
||||
log "执行迁移(sqlite)..."
|
||||
DB_DRIVER=sqlite DB_DSN="$DB_FILE" "$BIN/pangolin-migrate" up
|
||||
|
||||
Reference in New Issue
Block a user