feat(config): 涉密内容外置到配置目录(档案 140)

把散落在代码里的真实部署值统一收进 config/,代码改为引用配置,
使仓库副本/开源导出不再带出生产域名、IP、内网路径与凭据。

新增 config/:platform.env.example(模板)· load.sh(shell 加载器)·
index.cjs(node 加载器)· README.md(键一览与优先级)。
真实值放 config/platform.env —— 已 .gitignore 排除,不入库、不进导出。

TS 侧新增 src/platform-paths.ts 作部署路径的唯一解析处(零副作用):
platformDir/stateDir/backupDir/artifactDir/installDir/scriptPath。
config.ts 接入这些字段;内置中继种子由生产 URL 改为空(改由
DSHS_OVERLAY_BOOTSTRAP_SEEDS 提供)。修掉 5 处硬编码绝对路径,
src/** 注释中性化 116 行/53 文件。

scripts/** 36 个内部运维脚本:真令牌/PG 口令/隧道目标/主机号/路径
一律改从配置取;web/wake.html 的注册域白名单改为运行时从
location.hostname 推导;test/** 夹具 119 行/13 文件改 RFC 2606/5737
保留值,并把「内置种子必须为空」固化为回归断言。

取证:tsc 0 错;npm test 373/375(唯一失败 lease 属既有);
全仓扫描(大小写不敏感)代码面涉密标识 = 0;已部署 47 并零回归
(/opt/dsh/* 未搬家,/var/lib/dshs/platform 未被误建)。
This commit is contained in:
admin committed 2026-09-19 15:12:19 +08:00
1 parent 9c2e7975ac
commit 452924d89c
100 files changed
+1167 -453

No files matched your search

+19 -5
View File
@@ -20,6 +20,13 @@ if [ "$(id -u)" != "0" ]; then
exit 1
fi
. "$(cd "$(dirname "$0")/.." && pwd)/config/load.sh"
# ⛔ 本机地址不写死在 nft 规则里:规则体里用占位符,写完文件再注入实际值。
HOST_ADDRS=""
for a in "$DSH_HOST_LAN_IP" "$DSH_HOST_PUBLIC_IP"; do
[ -n "$a" ] && HOST_ADDRS="${HOST_ADDRS:+$HOST_ADDRS, }$a"
done
echo "==> 写入 /etc/nftables-dsh-egress.nft"
cat > /etc/nftables-dsh-egress.nft <<'NFTEOF'
#!/usr/sbin/nft -f
@@ -50,18 +57,18 @@ table ip dsh_egress {
# 封 4 类目的地址(仅实例主动发起的连接):
# 127.0.0.0/8 → 宿主全部 loopback 服务(sshd 22/32022、nginx 80/443/888、
# 门户 3080、BT-Panel 58888/8765)+ 其他实例的 127.0.0.1 监听
# 172.18.16.212 → 宿主内网卡(eth0,同样到达 nginx/面板)
# <host-lan-ip> → 宿主内网卡(eth0,同样到达 nginx/面板)
# 172.17.0.1 → docker0 网桥网关
# 47.77.182.89 → 公网 EIP(回环到本机 nginx/sshd)
# <server-public-ip> → 公网 EIP(回环到本机 nginx/sshd)
# 不影响:公网访问、阿里云内网 DNS(100.100.2.136/138)、pip/npm 下载、
# 实例自身监听端口、nginx 回源(root 发包 + 实例回包带 ack)
meta skuid 100000-199999 ip daddr { 127.0.0.0/8, 172.17.0.1, 172.18.16.212, 47.77.182.89 } \
meta skuid 100000-199999 ip daddr { 127.0.0.0/8, 172.17.0.1, __HOST_ADDRS__ } \
meta l4proto tcp tcp flags & (fin|syn|rst|ack) == syn \
counter log prefix "dsh-egress-HOST " level warn limit rate 20/minute
meta skuid 100000-199999 ip daddr { 127.0.0.0/8, 172.17.0.1, 172.18.16.212, 47.77.182.89 } \
meta skuid 100000-199999 ip daddr { 127.0.0.0/8, 172.17.0.1, __HOST_ADDRS__ } \
meta l4proto tcp tcp flags & (fin|syn|rst|ack) == syn \
counter reject with tcp reset
meta skuid 100000-199999 ip daddr { 127.0.0.0/8, 172.17.0.1, 172.18.16.212, 47.77.182.89 } \
meta skuid 100000-199999 ip daddr { 127.0.0.0/8, 172.17.0.1, __HOST_ADDRS__ } \
meta l4proto udp ct state new counter reject
# H4 · 观测实例新建外联(先记录不拦截;排除 loopback 与 DNS 降噪)
@@ -71,6 +78,13 @@ table ip dsh_egress {
}
NFTEOF
# 注入本机地址(来自 config/platform.env);未配 ⇒ 摘掉该占位符,规则只剩回环与 docker 网桥。
if [ -n "$HOST_ADDRS" ]; then
sed -i "s|__HOST_ADDRS__|$HOST_ADDRS|g" /etc/nftables-dsh-egress.nft
else
sed -i "s|, __HOST_ADDRS__||g" /etc/nftables-dsh-egress.nft
fi
echo "==> 写入 /etc/systemd/system/dsh-egress.service"
cat > /etc/systemd/system/dsh-egress.service <<'SVCEOF'
[Unit]