Help us shape the future of Go! Take the 2026 Go Developer Survey

core

module
v0.15.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 10, 2026 License: Apache-2.0

README

core · 业务核心库

CI Tag Go License

PigeonBox 业务核心库:16 个域服务 + 数据访问 + 存储抽象 + HTTP 装配(bootstrap)。不含 main、不含静态资源、不含配置文件——本模块定位是被复用的库,消费方:

🗂️ PigeonBox 生态成员仓 · 总览见 装配仓 pigeonbox · 架构图集

结构

目录 说明
bootstrap/ 库入口:Bootstrap(configPath) 拉起全部业务,返回 *server.Hertz
app/ 16 个域服务:share / chunk / anonymous / presign / admin / user / notify / qrcode / setup / storage / federation / mcp / moderation / oidc / preview / request(模块间近零耦合,仅 presign→share)
repo/ 数据访问:db(gorm dao/model)、redis、external
storage/ 存储抽象(OpenDAL 多后端)
pkg/ auth / logger / middleware / resp / errors / utils 等横切设施
transport/ 手写 http handler 与中间件(生成代码之外的补充)
preview/ 文件预览服务
conf/ 配置结构定义
gen/ thrift 生成的 handler / router(模型类型在 pigeonbox/contracts)

分层职责(继承自原仓库 internal 设计)

  1. app/ —— 业务逻辑层,不依赖具体传输协议,不直接操作数据库(经 repo 层)
  2. transport/ + gen/ —— 传输层,协议适配,调用 app 层服务
  3. repo/ —— 数据访问层,封装 DB/Redis/外部服务
  4. pkg/ —— 项目内横切工具(不含对外通用库)

库用法

import "github.com/pigeonbox/core/bootstrap"

h, err := bootstrap.Bootstrap("/path/to/config.yaml")
if err != nil { log.Fatal(err) }
defer bootstrap.Cleanup()
go h.Spin()

依赖规则(强制)

core ──► contracts ──► (thrift runtime)
  └─ 不允许 import server / frontend;不引入任何 UI 与部署物
  • thrift 版本约束由 contracts 以 require 传递,下游无需任何 replace(这是从原仓库拆出的重要修复:原仓库靠 replace thrift => v0.13.0 钉版本,库使用者被迫复述该约束)。
  • 显式钉 bytedance/sonic v1.15.0:hertz 声明的 v1.12.7 在 go1.27/arm64 有 linkname 链接错误。

来源

拆分自 zy84338719/fileCodeBox 的 backend/api、backend/gen/http/{handler,router}、backend/cmd/server/bootstrap,import 路径机械替换,业务逻辑零变更。

License

Apache-2.0

Directories

Path Synopsis
app
admin
auth.go 认证职责簇:管理员登录凭据校验与 JWT 签发(GenerateTokenForAdmin 属认证职责,单独成文件)。
auth.go 认证职责簇:管理员登录凭据校验与 JWT 签发(GenerateTokenForAdmin 属认证职责,单独成文件)。
anonymous
Package anonymous 实现匿名取件 service(仿 vastsa/PigeonBox UX)。
Package anonymous 实现匿名取件 service(仿 vastsa/PigeonBox UX)。
chunk
storage.go — 分片物理操作的存储接缝(chunk 域)。
storage.go — 分片物理操作的存储接缝(chunk 域)。
config
config.go 站点配置模型与校验:SystemConfig/UserSettings 类型、默认值、 写库前校验(纯函数簇,自 admin 域原样迁入)。
config.go 站点配置模型与校验:SystemConfig/UserSettings 类型、默认值、 写库前校验(纯函数簇,自 admin 域原样迁入)。
federation
Package federation 将本站点接入 PigeonBox P2P 联邦(github.com/pigeonbox/p2p)。
Package federation 将本站点接入 PigeonBox P2P 联邦(github.com/pigeonbox/p2p)。
mcp
Package mcp 实现 PigeonBox 的 Model Context Protocol (MCP) server。
Package mcp 实现 PigeonBox 的 Model Context Protocol (MCP) server。
moderation
Package moderation 内容审核钩子(治理 2026-10-03,方案 A:管控优先、审核留钩子)。
Package moderation 内容审核钩子(治理 2026-10-03,方案 A:管控优先、审核留钩子)。
notify
Package notify 实现系统通知(管理员公告 + per-user 取件通知)service。
Package notify 实现系统通知(管理员公告 + per-user 取件通知)service。
oidc
Package oidc 实现 OIDC 单点登录(P2,stdlib-only,无第三方依赖)。
Package oidc 实现 OIDC 单点登录(P2,stdlib-only,无第三方依赖)。
presign
Package presign 实现预签名上传 service。
Package presign 实现预签名上传 service。
preview
Package preview 预览域服务:取件校验与预览生成/持久化的业务编排。
Package preview 预览域服务:取件校验与预览生成/持久化的业务编排。
request
Package request 寄件码/反向收件(P2):用户创建投递链接,访客凭链接上传, 文件以链接主人名义成为普通分享(复用分享过期/清理/通知机制)。
Package request 寄件码/反向收件(P2):用户创建投递链接,访客凭链接上传, 文件以链接主人名义成为普通分享(复用分享过期/清理/通知机制)。
share
files.go — 直传落盘与下载取流的存储收口(share 域存储接缝)。
files.go — 直传落盘与下载取流的存储收口(share 域存储接缝)。
API Key 临期站内通知(波次3):定期扫描 7 天内到期的有效 Key, 给属主发站内信(带 Webhook 外推),并打去重标记。
API Key 临期站内通知(波次3):定期扫描 7 天内到期的有效 Key, 给属主发站内信(带 Webhook 外推),并打去重标记。
signingkey.go 直传/分片会话签名密钥的单源取用。
signingkey.go 直传/分片会话签名密钥的单源取用。
gen
handler/admin
admin_manage.go 管理端增强:用户 CRUD / 文件管理 / 富统计 Dashboard。
admin_manage.go 管理端增强:用户 CRUD / 文件管理 / 富统计 Dashboard。
handler/share
download_range.go — 远端后端的 Range 下载(断点续传/P3 下载续传)。
download_range.go — 远端后端的 Range 下载(断点续传/P3 下载续传)。
pkg
baseurl
Package baseurl 公开链接 base 解析(请求级公开地址推断的单源)。
Package baseurl 公开链接 base 解析(请求级公开地址推断的单源)。
errors
shareblocked.go 分享管控拒绝态错误(治理状态机的 typed error 词汇表)。
shareblocked.go 分享管控拒绝态错误(治理状态机的 typed error 词汇表)。
gate
Package gate 上传/下载准入闸门。
Package gate 上传/下载准入闸门。
logger
ring.go 进程内日志环形缓冲(管理端「系统日志」页的真实数据源)。
ring.go 进程内日志环形缓冲(管理端「系统日志」页的真实数据源)。
memkv
Package memkv 进程内字符串 TTL KV(stdlib-only):单机内存模式的共享存储原语。
Package memkv 进程内字符串 TTL KV(stdlib-only):单机内存模式的共享存储原语。
memkv/redisshim
Package redisshim 单机内存模式下 go-redis 命令面的等价实现(memkv.Store 的 redis 兼容垫片):redis.host 为空时 anonymous/presign 等域的 NewService 以此 兜底,取件码映射/直传会话等短 TTL 数据存进程内——不跨进程共享、重启即失, DB 仍是唯一真相源。
Package redisshim 单机内存模式下 go-redis 命令面的等价实现(memkv.Store 的 redis 兼容垫片):redis.host 为空时 anonymous/presign 等域的 NewService 以此 兜底,取件码映射/直传会话等短 TTL 数据存进程内——不跨进程共享、重启即失, DB 仍是唯一真相源。
metrics
Package metrics 业务指标(治理 2026-10-03)。
Package metrics 业务指标(治理 2026-10-03)。
middleware
auditactor.go 审计操作者提取:从请求上下文取 (用户ID, 用户名, IP)。
auditactor.go 审计操作者提取:从请求上下文取 (用户ID, 用户名, IP)。
security
Package security 提供独立的安全原语:
Package security 提供独立的安全原语:
transfer
Package transfer 提供传输日志(上传/下载)的异步记录。
Package transfer 提供传输日志(上传/下载)的异步记录。
utils
uploadpath.go 上传相对路径的统一生成收口。
uploadpath.go 上传相对路径的统一生成收口。
repo
db
Package db 提供数据库连接与迁移。
Package db 提供数据库连接与迁移。
db/dao
Package dao 数据访问对象层:各域模型的 GORM 持久化实现。
Package dao 数据访问对象层:各域模型的 GORM 持久化实现。
backends.go 存储后端注册表:类型 → Operator 构建器。
backends.go 存储后端注册表:类型 → Operator 构建器。
opendal
Package opendal 提供 OpenDAL 风格的存储抽象。
Package opendal 提供 OpenDAL 风格的存储抽象。
transport
http/handler
Package handler 提供定制 HTTP handlers(不走 thrift IDL 生成)。
Package handler 提供定制 HTTP handlers(不走 thrift IDL 生成)。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL