Files
pangolin/.gitignore
T
wangjia ea1a875607
ci-pangolin / Redline Scan — 脱敏 (UI 文案) (push) Successful in 28s
ci-pangolin / Cleartext Scan — Android 禁明文 (push) Successful in 19s
ci-pangolin / Portable SQL — 可移植性 (mysql/sqlite) (push) Successful in 18s
ci-pangolin / OpenAPI Sync Check (push) Successful in 1m24s
ci-pangolin / Flutter — analyze + test (push) Successful in 1m0s
ci-pangolin / Codegen Drift — token 生成物未漂移 (push) Successful in 27s
ci-pangolin / DS-flow — 原型/跨端同源/代码色单源闸 (push) Successful in 29s
ci-pangolin / Go — build + test (push) Failing after 49s
ci-pangolin / E2E Smoke — L4 进程级端到端 (push) Failing after 38s
ci-pangolin / Go — integration (mysql/redis testcontainers) (push) Failing after 5m3s
ci-pangolin / Golden — 视觉回归 (全量:components/auth/desktop/tablet) (push) Successful in 43s
ci-pangolin / Lint — shellcheck (push) Failing after 12m23s
Merge feat/private-dest-acl: 节点侧私有目的地 ACL(按 dp_uuid 放行家庭内网服务)
pangolin 出口 IP 是家庭内网服务(brain/nas/git/win.51yanmei.com)在 ali 侧的
唯一准入凭据;单用户时=「只有我」,现在 5 个账号退化成「所有 pangolin 用户」。
本功能在节点 sing-box route 上按 dp_uuid 补一道 fail-closed 白名单闸,把语义
拉回「只有我」。改动收敛在 internal/agentd/,零 migration,不动控制面/客户端/DB。

合并动因:该分支代码已在 pangolin1 生产运行(线上 agent 二进制 vcs.revision=
e4b527b + auth_user 修复,昨晚经 SIGHUP 热渲染 auth_user 闸生效),但 main 缺失
——从 main 重建部署 agent 会静默移除这道安全闸。合并后 main 与生产对齐,并把
线上「脏树构建(vcs.modified=true)」规整成干净可追溯来源。

含 21 个提交:设计/计划文档、ACL 配置类型与 fail-closed 加载、渲染放行+拒绝
规则对、last-good 内存+落盘跨重启兜底、SIGHUP 热重载不踢人、ip_cidr/port 校验、
resolve 堵域名绕过、auth_user(VLESS 运行时只认 auth_user)、29 个单测 + 真机验收。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
2026-07-25 00:20:53 +08:00

101 lines
2.4 KiB
Plaintext

# ---> AL
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
*.app
.snapshots/*
# 密钥与渲染产物 —— 绝不入库
deploy/secrets/
deploy/xray/config.json
deploy/singbox/config.json
# 备份系统密钥(age 私钥、AWS 凭据)—— 绝不入库
deploy/backup/backup.env
*.age-private*
age-keypair.txt
# infra/domains —— 签名私钥与发布产物绝不入库(公钥可入库)
*.ed25519.key
infra/domains/tools/_publish/
infra/domains/tools/_smoke/
# Terraform —— state/tfvars/缓存绝不入库
**/.terraform/
*.tfstate
*.tfstate.*
*.tfvars
!*.tfvars.example
*.tfplan
tf.plan
crash.log
# Terraform 状态与本地变量(含厂商/管理凭证)—— 绝不入库
infra/**/.terraform/
infra/**/.terraform.lock.hcl
*.tfstate
*.tfstate.*
infra/**/terraform.tfvars
*.auto.tfvars
# kernel 构建产物与临时源码(不入库,本地可重建)
app/kernel/dist/
app/kernel/.build/
# Go 编译产物(mock server 等)
server/mockserver
server/pangolin-server
server/out/
# Flutter / Dart 构建产物与本地配置
client/android/local.properties
client/android/app/src/main/java/
client/ios/Flutter/ephemeral/
client/pubspec.lock
# Android release 签名材料(本地或 CI 落盘,绝不入库)
# 用全局通配:签名私钥曾以 pangolin-release.jks 出现在**仓库根**,而旧规则只盖
# client/android/ 一层,根目录那份不被忽略 → 一次 `git add -A` 就会把私钥提交进库。
key.properties
*.jks
*.keystore
*.p12
*.mobileprovision
*.provisionprofile
# CI 客户端产物暂存目录(scripts/ci/compile-{android,windows}.sh 输出,构建期生成)
/dist/
# Claude worktrees(临时工作目录,本地专用)
.claude/worktrees/
# 杂项
.DS_Store
*.log
*.bak
# 编译产物(不应跟踪)
/server/server
/server/nodectl
/server/agent
# 字体子集生成的中间产物(源字体/临时字表;产物 client/fonts/ 才入库)
tools/fonts/_*
# golden 测试失败时生成的对比图(临时产物)
client/test/golden/failures/
# Inno Setup 编译产物(安装包,本地生成不入库)
client/windows/installer/Output/
# 覆盖率产物(CI 覆盖率闸生成,临时不入库)
/server/cover.out
/server/coverage.txt
/client/coverage/
# superpowers 执行进度暂存(本地,不入库)
.superpowers/