Private
Public Access
1
0
Files
u-desk/internal/filesystem/constants.go

86 lines
2.3 KiB
Go

package filesystem
import (
"time"
)
// 文件大小限制常量
const (
// ZIP 文件大小限制
MaxZipSize = 100 * 1024 * 1024 // 100MB - ZIP 文件最大大小
MaxExtractSize = 500 * 1024 * 1024 // 500MB - 解压后总大小限制
MaxSingleFileSize = 50 * 1024 * 1024 // 50MB - ZIP 中单个文件最大大小
// HTTP 文件服务大小限制
MaxHTTPFileSize = 500 * 1024 * 1024 // 500MB - HTTP 访问文件最大大小
// 删除操作限制
MaxDeleteSizeGB = 1 * 1024 * 1024 * 1024 // 1GB - 单个文件删除大小限制
MaxDeleteDirSizeGB = 1 * 1024 * 1024 * 1024 // 1GB - 目录删除大小限制
)
// 时间相关常量
const (
// 审计日志
AuditFlushInterval = 5 * time.Second // 审计日志刷新间隔
AuditLogBufferSize = 100 // 审计日志缓冲区大小
// 回收站
RecycleBinRetentionDays = 30 // 回收站文件保留天数(天)
RecycleBinRetentionPeriod = 30 * 24 * time.Hour // 回收站文件保留期
// 临时文件
TempFileCleanupAge = 24 * time.Hour // 临时文件清理周期
TempFileDir = "u-desk-zip" // 临时文件目录名
)
// 数量限制常量
const (
MaxDirectoryDepth = 15 // 最大目录深度
MaxFileCount = 1000 // 最大文件数量(目录)
)
// 文件操作相关常量
const (
DefaultFilePermissions = 0644 // 默认文件权限 (rw-r--r--)
DefaultDirPermissions = 0755 // 默认目录权限 (rwxr-xr-x)
)
// 随机字符串相关常量
const (
RandomStringCharset = "abcdefghijklmnopqrstuvwxyz0123456789"
RandomStringDefaultLength = 6 // 回收站文件名随机后缀长度
)
// 文件路径相关常量
const (
WindowsDriveLength = 2 // Windows 盘符长度 (C:)
)
// 路径遍历检测字符串
const (
PathTraversalPattern = ".." // 路径遍历特征字符串
)
// 文件类型常量
const (
FileTypeImage = "image"
FileTypeVideo = "video"
FileTypeAudio = "audio"
FileTypeDocument = "document"
FileTypeText = "text"
FileTypeArchive = "archive"
FileTypeApplication = "application"
)
// 安全相关常量
const (
// ZIP 安全
MinValidZipSize = 22 // ZIP 文件最小有效大小(文件头)
ZipFileHeaderSignature = 0x504B // "PK" - ZIP 文件头签名
// 文件锁
LockCheckMaxRetries = 3 // 文件锁检查最大重试次数
LockCheckRetryInterval = 100 * time.Millisecond // 文件锁检查重试间隔
)