- account: accounts.json 原子读写、常量时间口令校验、增删改查与用户名校验 - auth: HMAC 会话签名 + 管理员 bcrypt 凭据初始化 - randstr: 口令生成;usage: 目录用量统计 - 单测覆盖口令对错、账号禁用、只读、路径逃逸、持久化与 0600 权限
29 lines
646 B
Go
29 lines
646 B
Go
// Package usage 统计账号根目录的磁盘占用。
|
|
package usage
|
|
|
|
import (
|
|
"io/fs"
|
|
"path/filepath"
|
|
)
|
|
|
|
// Dir 遍历 root,返回常规文件的总字节数与文件数。读不到的条目直接跳过。
|
|
func Dir(root string) (bytes int64, files int64, err error) {
|
|
err = filepath.WalkDir(root, func(_ string, d fs.DirEntry, walkErr error) error {
|
|
if walkErr != nil {
|
|
// 权限或竞态导致的读取失败不影响整体统计。
|
|
return nil
|
|
}
|
|
if d.IsDir() {
|
|
return nil
|
|
}
|
|
info, infoErr := d.Info()
|
|
if infoErr != nil {
|
|
return nil
|
|
}
|
|
bytes += info.Size()
|
|
files++
|
|
return nil
|
|
})
|
|
return bytes, files, err
|
|
}
|