mirror of https://github.com/cloudreve/Cloudreve
149 lines
3.2 KiB
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{}{}
|