Documentation
¶
Index ¶
- Constants
- Variables
- func DeleteFileByIDs(ids []uint) error
- func DeleteFolderByIDs(ids []uint) error
- func DeleteShareBySourceIDs(sources []uint, isDir bool) error
- func DeleteTagByID(id, uid uint) error
- func DeleteWebDAVAccountByID(id, uid uint)
- func GetIntSetting(key string, defaultVal int) int
- func GetSettingByName(name string) string
- func GetSettingByNames(names ...string) map[string]string
- func GetSettingByType(types []string) map[string]string
- func GetSiteURL() *url.URL
- func Init()
- func IsTrueVal(val string) bool
- type Download
- type File
- func GetChildFilesOfFolders(folders *[]Folder) ([]File, error)
- func GetFilesByIDs(ids []uint, uid uint) ([]File, error)
- func GetFilesByKeywords(uid uint, keywords ...interface{}) ([]File, error)
- func GetFilesByParentIDs(ids []uint, uid uint) ([]File, error)
- func RemoveFilesWithSoftLinks(files []File) ([]File, error)
- func (file *File) Create() (uint, error)
- func (file *File) GetName() string
- func (file *File) GetPolicy() *Policy
- func (file *File) GetPosition() string
- func (file *File) GetSize() uint64
- func (file *File) IsDir() bool
- func (file *File) ModTime() time.Time
- func (file *File) Rename(new string) error
- func (file *File) UpdatePicInfo(value string) error
- func (file *File) UpdateSize(value uint64) error
- func (file *File) UpdateSourceName(value string) error
- type Folder
- func (folder *Folder) CopyFolderTo(folderID uint, dstFolder *Folder) (size uint64, err error)
- func (folder *Folder) Create() (uint, error)
- func (folder *Folder) GetChild(name string) (*Folder, error)
- func (folder *Folder) GetChildFile(name string) (*File, error)
- func (folder *Folder) GetChildFiles() ([]File, error)
- func (folder *Folder) GetChildFolder() ([]Folder, error)
- func (folder *Folder) GetName() string
- func (folder *Folder) GetPosition() string
- func (folder *Folder) GetSize() uint64
- func (folder *Folder) IsDir() bool
- func (folder *Folder) ModTime() time.Time
- func (folder *Folder) MoveFolderTo(dirs []uint, dstFolder *Folder) error
- func (folder *Folder) MoveOrCopyFileTo(files []uint, dstFolder *Folder, isCopy bool) (uint64, error)
- func (folder *Folder) Rename(new string) error
- type Group
- type GroupOption
- type Policy
- func (policy *Policy) AfterFind() (err error)
- func (policy *Policy) BeforeSave() (err error)
- func (policy *Policy) CanStructureBeListed() bool
- func (policy *Policy) ClearCache()
- func (policy *Policy) GenerateFileName(uid uint, origin string) string
- func (policy *Policy) GeneratePath(uid uint, origin string) string
- func (policy *Policy) GetUploadURL() string
- func (policy *Policy) IsDirectlyPreview() bool
- func (policy *Policy) IsPathGenerateNeeded() bool
- func (policy *Policy) IsThumbExist(name string) bool
- func (policy *Policy) IsThumbGenerateNeeded() bool
- func (policy *Policy) IsTransitUpload(size uint64) bool
- func (policy *Policy) SerializeOptions() (err error)
- func (policy *Policy) UpdateAccessKey(key string) error
- type PolicyOption
- type Setting
- type Share
- func (share *Share) CanBeDownloadBy(user *User) error
- func (share *Share) Create() (uint, error)
- func (share *Share) Creator() *User
- func (share *Share) Delete() error
- func (share *Share) DownloadBy(user *User, c *gin.Context) error
- func (share *Share) Downloaded()
- func (share *Share) IsAvailable() bool
- func (share *Share) Source() interface{}
- func (share *Share) SourceFile() *File
- func (share *Share) SourceFolder() *Folder
- func (share *Share) Update(props map[string]interface{}) error
- func (share *Share) Viewed()
- func (share *Share) WasDownloadedBy(user *User, c *gin.Context) (exist bool)
- type Tag
- type Task
- type User
- func (user *User) AfterCreate(tx *gorm.DB) (err error)
- func (user *User) AfterFind() (err error)
- func (user *User) BeforeSave() (err error)
- func (user *User) CheckPassword(password string) (bool, error)
- func (user *User) DeductionStorage(size uint64) bool
- func (user *User) GetPolicyID(prefer uint) uint
- func (user *User) GetRemainingCapacity() uint64
- func (user *User) IncreaseStorage(size uint64) bool
- func (user *User) IncreaseStorageWithoutCheck(size uint64)
- func (user *User) IsAnonymous() bool
- func (user *User) RegisterAuthn(credential *webauthn.Credential) error
- func (user *User) RemoveAuthn(id string)
- func (user *User) Root() (*Folder, error)
- func (user *User) SerializeOptions() (err error)
- func (user *User) SetPassword(password string) error
- func (user *User) SetStatus(status int)
- func (user *User) Update(val map[string]interface{}) error
- func (user *User) UpdateOptions() error
- func (user User) WebAuthnCredentials() []webauthn.Credential
- func (user User) WebAuthnDisplayName() string
- func (user User) WebAuthnID() []byte
- func (user User) WebAuthnIcon() string
- func (user User) WebAuthnName() string
- type UserOption
- type Webdav
Constants ¶
const ( // FileTagType 文件分类标签 FileTagType = iota // DirectoryLinkType 目录快捷方式标签 DirectoryLinkType )
const ( // Active 账户正常状态 Active = iota // NotActivicated 未激活 NotActivicated // Baned 被封禁 Baned // OveruseBaned 超额使用被封禁 OveruseBaned )
Variables ¶
var DB *gorm.DB
DB 数据库链接单例
Functions ¶
func DeleteShareBySourceIDs ¶
DeleteShareBySourceIDs 根据原始资源类型和ID删除文件
func DeleteWebDAVAccountByID ¶
func DeleteWebDAVAccountByID(id, uid uint)
DeleteWebDAVAccountByID 根据账户ID和UID删除账户
func GetIntSetting ¶
GetIntSetting 获取整形设置值,如果转换失败则返回默认值defaultVal
func GetSettingByNames ¶
GetSettingByNames 用多个 Name 获取设置值
func GetSettingByType ¶
GetSettingByType 获取一个或多个分组的所有设置值
Types ¶
type Download ¶
type Download struct {
gorm.Model
Status int // 任务状态
Type int // 任务类型
Source string `gorm:"type:text"` // 文件下载地址
TotalSize uint64 // 文件大小
DownloadedSize uint64 // 文件大小
GID string `gorm:"size:32,index:gid"` // 任务ID
Speed int // 下载速度
Parent string `gorm:"type:text"` // 存储目录
Attrs string `gorm:"type:text"` // 任务状态属性
Error string `gorm:"type:text"` // 错误描述
Dst string `gorm:"type:text"` // 用户文件系统存储父目录路径
UserID uint // 发起者UID
TaskID uint // 对应的转存任务ID
// 关联模型
User *User `gorm:"PRELOAD:false,association_autoupdate:false"`
// 数据库忽略字段
StatusInfo rpc.StatusInfo `gorm:"-"`
Task *Task `gorm:"-"`
}
Download 离线下载队列模型
func GetDownloadByGid ¶
GetDownloadByGid 根据GID和用户ID查找下载
func GetDownloadsByStatus ¶
GetDownloadsByStatus 根据状态检索下载
func GetDownloadsByStatusAndUser ¶
GetDownloadsByStatusAndUser 根据状态检索和用户ID下载 page 为 0 表示列出所有,非零时分页
func (*Download) BeforeSave ¶
BeforeSave Save下载任务前的钩子
type File ¶
type File struct {
// 表字段
gorm.Model
Name string `gorm:"unique_index:idx_only_one"`
SourceName string `gorm:"type:text"`
UserID uint `gorm:"index:user_id;unique_index:idx_only_one"`
Size uint64
PicInfo string
FolderID uint `gorm:"index:folder_id;unique_index:idx_only_one"`
PolicyID uint
// 关联模型
Policy Policy `gorm:"PRELOAD:false,association_autoupdate:false"`
// 数据库忽略字段
Position string `gorm:"-"`
}
File 文件
func GetChildFilesOfFolders ¶
GetChildFilesOfFolders 批量检索目录子文件
func GetFilesByIDs ¶
GetFilesByIDs 根据文件ID批量获取文件, UID为0表示忽略用户,只根据文件ID检索
func GetFilesByKeywords ¶
GetFilesByKeywords 根据关键字搜索文件, UID为0表示忽略用户,只根据文件ID检索
func GetFilesByParentIDs ¶
GetFilesByParentIDs 根据父目录ID查找文件
func RemoveFilesWithSoftLinks ¶
RemoveFilesWithSoftLinks 去除给定的文件列表中有软链接的文件
func (*File) GetPosition ¶
func (*File) UpdatePicInfo ¶
UpdatePicInfo 更新文件的图像信息
func (*File) UpdateSourceName ¶
UpdateSourceName 更新文件的源文件名
type Folder ¶
type Folder struct {
// 表字段
gorm.Model
Name string `gorm:"unique_index:idx_only_one_name"`
ParentID *uint `gorm:"index:parent_id;unique_index:idx_only_one_name"`
OwnerID uint `gorm:"index:owner_id"`
// 数据库忽略字段
Position string `gorm:"-"`
}
Folder 目录
func GetFoldersByIDs ¶
GetFoldersByIDs 根据ID和用户查找所有目录
func GetRecursiveChildFolder ¶
GetRecursiveChildFolder 查找所有递归子目录,包括自身
func (*Folder) CopyFolderTo ¶
CopyFolderTo 将此目录及其子目录及文件递归复制至dstFolder 返回此操作新增的容量
func (*Folder) GetChildFile ¶
GetChildFile 查找目录下名为name的子文件
func (*Folder) GetChildFiles ¶
GetChildFiles 查找目录下子文件
func (*Folder) GetChildFolder ¶
GetChildFolder 查找子目录
func (*Folder) GetPosition ¶
func (*Folder) MoveFolderTo ¶
MoveFolderTo 将folder目录下的dirs子目录复制或移动到dstFolder, 返回此过程中增加的容量
type Group ¶
type Group struct {
gorm.Model
Name string
Policies string
MaxStorage uint64
WebDAVEnabled bool
SpeedLimit int
Options string `json:"-",gorm:"type:text"`
// 数据库忽略字段
PolicyList []uint `gorm:"-"`
OptionsSerialized GroupOption `gorm:"-"`
}
Group 用户组模型
func (*Group) SerializePolicyList ¶
SerializePolicyList 将序列后的可选策略列表、配置写入数据库字段 TODO 完善测试
type GroupOption ¶
type GroupOption struct {
ArchiveDownload bool `json:"archive_download,omitempty"` // 打包下载
ArchiveTask bool `json:"archive_task,omitempty"` // 在线压缩
CompressSize uint64 `json:"compress_size,omitempty"` // 可压缩大小
DecompressSize uint64 `json:"decompress_size,omitempty"`
OneTimeDownload bool `json:"one_time_download,omitempty"`
Aria2 bool `json:"aria2,omitempty"` // 离线下载
Aria2Options map[string]interface{} `json:"aria2_options,omitempty"` // 离线下载用户组配置
}
GroupOption 用户组其他配置
type Policy ¶
type Policy struct {
// 表字段
gorm.Model
Name string
Type string
Server string
BucketName string
IsPrivate bool
BaseURL string
AccessKey string `gorm:"type:text"`
SecretKey string `gorm:"type:text"`
MaxSize uint64
AutoRename bool
DirNameRule string
FileNameRule string
IsOriginLinkEnable bool
Options string `gorm:"type:text"`
// 数据库忽略字段
OptionsSerialized PolicyOption `gorm:"-"`
}
Policy 存储策略
func (*Policy) CanStructureBeListed ¶
CanStructureBeListed 返回存储策略是否能被前台列物理目录
func (*Policy) GenerateFileName ¶
GenerateFileName 生成存储文件名
func (*Policy) GeneratePath ¶
GeneratePath 生成存储文件的路径
func (*Policy) GetUploadURL ¶
GetUploadURL 获取文件上传服务API地址
func (*Policy) IsDirectlyPreview ¶
IsDirectlyPreview 返回此策略下文件是否可以直接预览(不需要重定向)
func (*Policy) IsPathGenerateNeeded ¶
IsPathGenerateNeeded 返回此策略是否需要在生成上传凭证时生成存储路径
func (*Policy) IsThumbExist ¶
IsThumbExist 给定文件名,返回此存储策略下是否可能存在缩略图
func (*Policy) IsThumbGenerateNeeded ¶
IsThumbGenerateNeeded 返回此策略是否需要在上传后生成缩略图
func (*Policy) IsTransitUpload ¶
IsTransitUpload 返回此策略上传给定size文件时是否需要服务端中转
func (*Policy) SerializeOptions ¶
SerializeOptions 将序列后的Option写入到数据库字段
func (*Policy) UpdateAccessKey ¶
UpdateAccessKey 更新 AccessKey
type PolicyOption ¶
type PolicyOption struct {
// Upyun访问Token
Token string `json:"token"`
// 允许的文件扩展名
FileType []string `json:"file_type"`
// MimeType
MimeType string `json:"mimetype"`
// OdRedirect Onedrive重定向地址
OdRedirect string `json:"od_redirect,omitempty"`
// Region 区域代码
Region string `json:"region,omitempty"`
}
PolicyOption 非公有的存储策略属性
type Setting ¶
type Setting struct {
gorm.Model
Type string `gorm:"not null"`
Name string `gorm:"unique;not null;index:setting_key"`
Value string `gorm:"size:65535"`
}
Setting 系统设置模型
type Share ¶
type Share struct {
// 数据库忽略字段
}
Share 分享模型
func ListShares ¶
ListShares 列出UID下的分享
func SearchShares ¶
SearchShares 根据关键字搜索分享
func (*Share) CanBeDownloadBy ¶
CanBeDownloadBy 返回此分享是否可以被给定用户下载
func (*Share) DownloadBy ¶
DownloadBy 增加下载次数,匿名用户不会缓存
type Tag ¶
type Tag struct {
gorm.Model
Name string // 标签名
Icon string // 图标标识
Color string // 图标颜色
Type int // 标签类型(文件分类/目录直达)
Expression string `gorm:"type:text"` // 搜索表表达式/直达路径
UserID uint // 创建者ID
}
Tag 用户自定义标签
type Task ¶
type Task struct {
gorm.Model
Status int // 任务状态
Type int // 任务类型
UserID uint // 发起者UID,0表示为系统发起
Progress int // 进度
Error string `gorm:"type:text"` // 错误信息
Props string `gorm:"type:text"` // 任务属性
}
Task 任务模型
type User ¶
type User struct {
// 表字段
gorm.Model
Email string `gorm:"type:varchar(100);unique_index"`
Nick string `gorm:"size:50"`
Password string `json:"-"`
Status int
GroupID uint
Storage uint64
TwoFactor string
Avatar string
Options string `json:"-",gorm:"type:text"`
Authn string `gorm:"type:text"`
// 关联模型
Group Group `gorm:"save_associations:false:false"`
Policy Policy `gorm:"PRELOAD:false,association_autoupdate:false"`
// 数据库忽略字段
OptionsSerialized UserOption `gorm:"-"`
}
User 用户模型
func GetActiveUserByID ¶
GetActiveUserByID 用ID获取可登录用户
func GetActiveUserByOpenID ¶
GetActiveUserByOpenID 用OpenID获取可登录用户
func (*User) AfterCreate ¶
AfterCreate 创建用户后的钩子
func (*User) CheckPassword ¶
CheckPassword 根据明文校验密码
func (*User) DeductionStorage ¶
DeductionStorage 减少用户已用容量
func (*User) GetPolicyID ¶
GetPolicyID 获取用户当前的存储策略ID
func (*User) GetRemainingCapacity ¶
GetRemainingCapacity 获取剩余配额
func (*User) IncreaseStorage ¶
IncreaseStorage 检查并增加用户已用容量
func (*User) IncreaseStorageWithoutCheck ¶
IncreaseStorageWithoutCheck 忽略可用容量,增加用户已用容量
func (*User) RegisterAuthn ¶
func (user *User) RegisterAuthn(credential *webauthn.Credential) error
RegisterAuthn 添加新的验证器
func (*User) SerializeOptions ¶
SerializeOptions 将序列后的Option写入到数据库字段
func (*User) SetPassword ¶
SetPassword 根据给定明文设定 User 的 Password 字段
func (User) WebAuthnCredentials ¶
func (user User) WebAuthnCredentials() []webauthn.Credential
WebAuthnCredentials 获得已注册的验证器凭证
func (User) WebAuthnDisplayName ¶
WebAuthnDisplayName 获得用于展示的用户名
type UserOption ¶
type UserOption struct {
ProfileOff bool `json:"profile_off,omitempty"`
PreferredTheme string `json:"preferred_theme,omitempty"`
}
UserOption 用户个性化配置字段
type Webdav ¶
type Webdav struct {
gorm.Model
Name string // 应用名称
Password string `gorm:"unique_index:password_only_on"` // 应用密码
UserID uint `gorm:"unique_index:password_only_on"` // 用户ID
Root string `gorm:"type:text"` // 根目录
}
Webdav 应用账户
func GetWebdavByPassword ¶
GetWebdavByPassword 根据密码和用户查找Webdav应用