FileCodeBox Go 重写版 v2.5.6(安全审计修复版)
Go 1.27.1 (Gin+GORM) + Vue 3 文件快传服务: - 安全审计全部修复(docs/security-audit-2026-09-05.md): bcrypt 密码哈希与自动升级、presign 直传服务端大小/内容校验、 全局请求体上限、依赖升级(govulncheck 0 命中)、janitor 后台清理、 管理端审计动作落库、/admin CORS 收紧、通知内容白名单净化、 会话默认 7 天、限流缓存故障降级、robots.txt 端点等 - 前端:取件链接复制修复(不再重复拼接提取码)、markdown 净化器加固 - Redis 支持库号(FCB_REDIS_DB / redis://…/db URL) - 文档:docs/api/* 与 openapi.yaml 同步最新行为(robots.txt、 提码 5 位起、chunk 32MiB 上限、admin 审计动作等) 验证:gofmt/go vet/go test 全绿;二进制端到端冒烟通过
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
package storage
|
||||
|
||||
// EngineOptions 引擎构造选项:由 main.go(API 层任务)从 config KV 填充。
|
||||
// 各引擎的 RegisterEngine 工厂读取本结构;零值即安全默认。
|
||||
type EngineOptions struct {
|
||||
// Local 本地引擎选项。
|
||||
Local LocalOptions
|
||||
// S3 S3 引擎选项。
|
||||
S3 S3Options
|
||||
// WebDAV WebDAV 引擎选项。
|
||||
WebDAV WebDAVOptions
|
||||
}
|
||||
|
||||
// LocalOptions 本地引擎配置(对齐 local_storage_path)。
|
||||
type LocalOptions struct {
|
||||
// Root 存储根目录;空则使用系统临时目录。
|
||||
Root string
|
||||
}
|
||||
|
||||
// S3Options S3 引擎配置(对齐 s3_* 配置键)。
|
||||
type S3Options struct {
|
||||
AccessKeyID string // s3_access_key_id
|
||||
SecretAccessKey string // s3_secret_access_key
|
||||
SessionToken string // aws_session_token
|
||||
Bucket string // s3_bucket_name
|
||||
Endpoint string // s3_endpoint_url(MinIO 等;空则 AWS 默认端点)
|
||||
Region string // s3_region_name,默认 auto
|
||||
AddressingStyle string // s3_addressing_style: auto|path|virtual
|
||||
}
|
||||
|
||||
// WebDAVOptions WebDAV 引擎配置(对齐 webdav_* 配置键 + 本次优化项)。
|
||||
type WebDAVOptions struct {
|
||||
// BaseURL 服务地址,如 https://dav.example.com/dav/。
|
||||
BaseURL string
|
||||
// Username/Password 凭据(Basic 与 Digest 共用)。
|
||||
Username string
|
||||
Password string
|
||||
// RootPath 远端根目录(webdav_root_path),会自动逐级创建。
|
||||
RootPath string
|
||||
// MaxRetries 5xx/网络错误最大重试次数(指数退避),0 取默认 3。
|
||||
MaxRetries int
|
||||
// BaseBackoff 重试基础退避时长,0 取默认 200ms。
|
||||
BaseBackoff int64
|
||||
// Timeout 单请求超时秒数,0 取默认 30s。
|
||||
Timeout int64
|
||||
// MaxIdleConnsPerHost 连接池每主机最大空闲连接,0 取默认 16(连接复用优化)。
|
||||
MaxIdleConnsPerHost int
|
||||
}
|
||||
|
||||
// engineOptions 全局引擎选项(由 main.go 注入;默认零值)。
|
||||
var engineOptions EngineOptions
|
||||
|
||||
// SetEngineOptions 注入引擎构造选项(在 RegisterEngine 工厂执行前调用)。
|
||||
func SetEngineOptions(opts EngineOptions) { engineOptions = opts }
|
||||
|
||||
// applyDefaults 填充零值默认项。
|
||||
func (o *WebDAVOptions) applyDefaults() {
|
||||
if o.MaxRetries <= 0 {
|
||||
o.MaxRetries = 3
|
||||
}
|
||||
if o.BaseBackoff <= 0 {
|
||||
o.BaseBackoff = 200
|
||||
}
|
||||
if o.Timeout <= 0 {
|
||||
o.Timeout = 30
|
||||
}
|
||||
if o.MaxIdleConnsPerHost <= 0 {
|
||||
o.MaxIdleConnsPerHost = 16
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user