parent
846438e3af
commit
cc303e74dd
@ -1,52 +1,60 @@
|
|||||||
package conf
|
package conf
|
||||||
|
|
||||||
|
import "github.com/cloudreve/Cloudreve/v3/pkg/util"
|
||||||
|
|
||||||
// RedisConfig Redis服务器配置
|
// RedisConfig Redis服务器配置
|
||||||
var RedisConfig = &redis{
|
var RedisConfig = &redis{
|
||||||
Network: "tcp",
|
Network: util.EnvStr("REDIS_NETWORK", "tcp"),
|
||||||
Server: "",
|
Server: util.EnvStr("REDIS_SERVER", ""),
|
||||||
Password: "",
|
Password: util.EnvStr("REDIS_PASSWORD", ""),
|
||||||
DB: "0",
|
DB: util.EnvStr("REDIS_DB", "0"),
|
||||||
}
|
}
|
||||||
|
|
||||||
// DatabaseConfig 数据库配置
|
// DatabaseConfig 数据库配置
|
||||||
var DatabaseConfig = &database{
|
var DatabaseConfig = &database{
|
||||||
Type: "UNSET",
|
Type: util.EnvStr("DATABASE_TYPE", "UNSET"),
|
||||||
Charset: "utf8",
|
User: util.EnvStr("DATABASE_USER", "root"),
|
||||||
DBFile: "cloudreve.db",
|
Password: util.EnvStr("DATABASE_PASSWORD", ""),
|
||||||
Port: 3306,
|
Host: util.EnvStr("DATABASE_HOST", "localhost"),
|
||||||
|
Name: util.EnvStr("DATABASE_NAME", "cloudreve"),
|
||||||
|
TablePrefix: util.EnvStr("DATABASE_TABLE_PREFIX", ""),
|
||||||
|
DBFile: util.EnvStr("DATABASE_DBFILE", "data.db"),
|
||||||
|
Port: util.EnvInt("DATABASE_PORT", 3306),
|
||||||
|
Charset: util.EnvStr("DATABASE_CHARSET", "utf8"),
|
||||||
}
|
}
|
||||||
|
|
||||||
// SystemConfig 系统公用配置
|
// SystemConfig 系统公用配置
|
||||||
var SystemConfig = &system{
|
var SystemConfig = &system{
|
||||||
Debug: false,
|
Debug: util.EnvStr("DEBUG", "false") == "true",
|
||||||
Mode: "master",
|
Mode: util.EnvStr("MODE", "master"),
|
||||||
Listen: ":5212",
|
Listen: util.EnvStr("LISTEN", ":5212"),
|
||||||
}
|
}
|
||||||
|
|
||||||
// CORSConfig 跨域配置
|
// CORSConfig 跨域配置
|
||||||
var CORSConfig = &cors{
|
var CORSConfig = &cors{
|
||||||
AllowOrigins: []string{"UNSET"},
|
AllowOrigins: util.EnvArr("CORS_ALLOW_ORIGINS", []string{"UNSET"}),
|
||||||
AllowMethods: []string{"PUT", "POST", "GET", "OPTIONS"},
|
AllowMethods: util.EnvArr("CORS_ALLOW_METHODS", []string{"PUT", "POST", "GET", "OPTIONS"}),
|
||||||
AllowHeaders: []string{"Cookie", "X-Cr-Policy", "Authorization", "Content-Length", "Content-Type", "X-Cr-Path", "X-Cr-FileName"},
|
AllowHeaders: util.EnvArr("CORS_ALLOW_HEADERS", []string{"Cookie", "X-Cr-Policy", "Authorization", "Content-Length", "Content-Type", "X-Cr-Path", "X-Cr-FileName"}),
|
||||||
AllowCredentials: false,
|
AllowCredentials: util.EnvStr("CORS_ALLOW_CREDENTIALS", "false") == "true",
|
||||||
ExposeHeaders: nil,
|
ExposeHeaders: util.EnvArr("CORS_EXPOSE_HEADERS", nil),
|
||||||
}
|
}
|
||||||
|
|
||||||
// SlaveConfig 从机配置
|
// SlaveConfig 从机配置
|
||||||
var SlaveConfig = &slave{
|
var SlaveConfig = &slave{
|
||||||
CallbackTimeout: 20,
|
Secret: util.EnvStr("SLAVE_SECRET", ""),
|
||||||
SignatureTTL: 60,
|
CallbackTimeout: util.EnvInt("SLAVE_CALLBACK_TIMEOUT", 10),
|
||||||
|
SignatureTTL: util.EnvInt("SLAVE_SIGNATURE_TTL", 10),
|
||||||
}
|
}
|
||||||
|
|
||||||
var SSLConfig = &ssl{
|
var SSLConfig = &ssl{
|
||||||
Listen: ":443",
|
Listen: util.EnvStr("SSL_LISTEN", ":443"),
|
||||||
CertPath: "",
|
CertPath: util.EnvStr("SSL_CERT_PATH", ""),
|
||||||
KeyPath: "",
|
KeyPath: util.EnvStr("SSL_KEY_PATH", ""),
|
||||||
}
|
}
|
||||||
|
|
||||||
var UnixConfig = &unix{
|
var UnixConfig = &unix{
|
||||||
Listen: "",
|
Listen: util.EnvStr("UNIX_LISTEN", ""),
|
||||||
ProxyHeader: "X-Forwarded-For",
|
ProxyHeader: util.EnvStr("UNIX_PROXY_HEADER", "X-Forwarded-For"),
|
||||||
}
|
}
|
||||||
|
|
||||||
var OptionOverwrite = map[string]interface{}{}
|
var OptionOverwrite = map[string]interface{}{}
|
||||||
|
@ -0,0 +1,40 @@
|
|||||||
|
package util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// EnvStr returns the value of the environment variable named by the key.
|
||||||
|
func EnvStr(key, defaultValue string) string {
|
||||||
|
if value, exist := os.LookupEnv(key); exist {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
|
||||||
|
return defaultValue
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnvInt returns the value of the environment variable named by the key.
|
||||||
|
func EnvInt(key string, defaultValue int) int {
|
||||||
|
if value, exist := os.LookupEnv(key); exist {
|
||||||
|
number, err := strconv.Atoi(value)
|
||||||
|
if err != nil {
|
||||||
|
// I think that we should log this error
|
||||||
|
return defaultValue
|
||||||
|
}
|
||||||
|
|
||||||
|
return number
|
||||||
|
}
|
||||||
|
|
||||||
|
return defaultValue
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnvArr returns the value of the environment variable named by the key.
|
||||||
|
func EnvArr(key string, defaultValue []string) []string {
|
||||||
|
if value, exist := os.LookupEnv(key); exist {
|
||||||
|
return strings.Split(value, ",")
|
||||||
|
}
|
||||||
|
|
||||||
|
return defaultValue
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
package util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestEnvStr(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
|
||||||
|
{
|
||||||
|
asserts.Equal("default", EnvStr("not_exist", "default"))
|
||||||
|
}
|
||||||
|
{
|
||||||
|
err := os.Setenv("exist", "value")
|
||||||
|
asserts.NoError(err)
|
||||||
|
asserts.Equal("value", EnvStr("exist", "default"))
|
||||||
|
|
||||||
|
err = os.Unsetenv("exist")
|
||||||
|
asserts.NoError(err)
|
||||||
|
asserts.Equal("default", EnvStr("exist", "default"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEnvInt(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
|
||||||
|
{
|
||||||
|
asserts.Equal(1, EnvInt("not_exist", 1))
|
||||||
|
}
|
||||||
|
{
|
||||||
|
err := os.Setenv("exist", "2")
|
||||||
|
asserts.NoError(err)
|
||||||
|
asserts.Equal(2, EnvInt("exist", 1))
|
||||||
|
|
||||||
|
err = os.Unsetenv("exist")
|
||||||
|
asserts.NoError(err)
|
||||||
|
asserts.Equal(1, EnvInt("exist", 1))
|
||||||
|
}
|
||||||
|
{
|
||||||
|
err := os.Setenv("exist", "not_number")
|
||||||
|
asserts.NoError(err)
|
||||||
|
asserts.Equal(1, EnvInt("exist", 1))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEnvArr(t *testing.T) {
|
||||||
|
asserts := assert.New(t)
|
||||||
|
|
||||||
|
{
|
||||||
|
asserts.Equal([]string{"default"}, EnvArr("not_exist", []string{"default"}))
|
||||||
|
}
|
||||||
|
{
|
||||||
|
err := os.Setenv("exist", "value1,value2")
|
||||||
|
asserts.NoError(err)
|
||||||
|
asserts.Equal([]string{"value1", "value2"}, EnvArr("exist", []string{"default"}))
|
||||||
|
|
||||||
|
err = os.Unsetenv("exist")
|
||||||
|
asserts.NoError(err)
|
||||||
|
asserts.Equal([]string{"default"}, EnvArr("exist", []string{"default"}))
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue