Cloudreve/pkg/conf/types.go

149 lines
3.2 KiB
Go

package conf
import "github.com/cloudreve/Cloudreve/v4/pkg/util"
type DBType string
var (
SQLiteDB DBType = "sqlite"
SQLite3DB DBType = "sqlite3"
MySqlDB DBType = "mysql"
MsSqlDB DBType = "mssql"
PostgresDB DBType = "postgres"
MariaDB DBType = "mariadb"
)
// Database 数据库
type Database struct {
Type DBType
User string
Password string
Host string
Name string
TablePrefix string
DBFile string
Port int
Charset string
UnixSocket bool
// 允许直接使用DATABASE_URL来配置数据库连接
DatabaseURL string
// SSLMode 允许使用SSL连接数据库, 用户可以在sslmode string中添加证书等配置
SSLMode string
}
type SysMode string
var (
MasterMode SysMode = "master"
SlaveMode SysMode = "slave"
)
// System 系统通用配置
type System struct {
Mode SysMode `validate:"eq=master|eq=slave"`
Listen string `validate:"required"`
Debug bool
SessionSecret string
HashIDSalt string // deprecated
GracePeriod int `validate:"gte=0"`
ProxyHeader string `validate:"required_with=Listen"`
LogLevel string `validate:"oneof=debug info warning error"`
}
type SSL struct {
CertPath string `validate:"omitempty,required"`
KeyPath string `validate:"omitempty,required"`
Listen string `validate:"required"`
}
type Unix struct {
Listen string
Perm uint32
}
// Slave 作为slave存储端配置
type Slave struct {
Secret string `validate:"omitempty,gte=64"`
CallbackTimeout int `validate:"omitempty,gte=1"`
SignatureTTL int `validate:"omitempty,gte=1"`
}
// Redis 配置
type Redis struct {
Network string
Server string
User string
Password string
DB string
UseTLS bool
TLSSkipVerify bool
}
// 跨域配置
type Cors struct {
AllowOrigins []string
AllowMethods []string
AllowHeaders []string
AllowCredentials bool
ExposeHeaders []string
SameSite string
Secure bool
}
// RedisConfig Redis服务器配置
var RedisConfig = &Redis{
Network: "tcp",
Server: "",
Password: "",
DB: "0",
UseTLS: false,
TLSSkipVerify: true,
}
// DatabaseConfig 数据库配置
var DatabaseConfig = &Database{
Charset: "utf8mb4",
DBFile: util.DataPath("cloudreve.db"),
Port: 3306,
UnixSocket: false,
DatabaseURL: "",
}
// SystemConfig 系统公用配置
var SystemConfig = &System{
Debug: false,
Mode: MasterMode,
Listen: ":5212",
ProxyHeader: "X-Forwarded-For",
LogLevel: "info",
}
// CORSConfig 跨域配置
var CORSConfig = &Cors{
AllowOrigins: []string{"UNSET"},
AllowMethods: []string{"PUT", "POST", "GET", "OPTIONS"},
AllowHeaders: []string{"Cookie", "X-Cr-Policy", "Authorization", "Content-Length", "Content-Type", "X-Cr-Path", "X-Cr-FileName"},
AllowCredentials: false,
ExposeHeaders: nil,
SameSite: "Default",
Secure: false,
}
// SlaveConfig 从机配置
var SlaveConfig = &Slave{
CallbackTimeout: 20,
SignatureTTL: 600,
}
var SSLConfig = &SSL{
Listen: ":443",
CertPath: "",
KeyPath: "",
}
var UnixConfig = &Unix{
Listen: "",
}
var OptionOverwrite = map[string]interface{}{}