feat #4: add storage config in config file
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
8852e3de52
commit
bdd7522455
2 changed files with 36 additions and 5 deletions
|
@ -54,6 +54,18 @@ type OpenConnectConfig struct {
|
||||||
Issuer string `json:"issuer"`
|
Issuer string `json:"issuer"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type StorageConfigConfig struct {
|
||||||
|
Host string `json:"host"`
|
||||||
|
Port int `json:"port"`
|
||||||
|
Database string `json:"database"`
|
||||||
|
User string `json:"user"`
|
||||||
|
Password string `json:"password"`
|
||||||
|
Ssl struct {
|
||||||
|
Mode string `json:"mode"`
|
||||||
|
CaFile string `json:"caFile"`
|
||||||
|
} `json:"ssl"`
|
||||||
|
}
|
||||||
|
|
||||||
type jsonConf struct {
|
type jsonConf struct {
|
||||||
Log struct {
|
Log struct {
|
||||||
Level string `json:"level"`
|
Level string `json:"level"`
|
||||||
|
@ -64,6 +76,10 @@ type jsonConf struct {
|
||||||
Mode string `json:"mode"`
|
Mode string `json:"mode"`
|
||||||
SockPath string `json:"sock"`
|
SockPath string `json:"sock"`
|
||||||
} `json:"server"`
|
} `json:"server"`
|
||||||
|
Storage struct {
|
||||||
|
StorageType string `json:"type"`
|
||||||
|
StorageConfig *StorageConfigConfig `json:"config"`
|
||||||
|
} `json:"storage"`
|
||||||
OpenConnectConfig *OpenConnectConfig `json:"openconnect"`
|
OpenConnectConfig *OpenConnectConfig `json:"openconnect"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,6 +89,8 @@ type AppConfig struct {
|
||||||
Host string
|
Host string
|
||||||
Port int
|
Port int
|
||||||
SockPath string
|
SockPath string
|
||||||
|
StorageType string
|
||||||
|
StorageConfig *StorageConfigConfig
|
||||||
OpenConnectConfig *OpenConnectConfig
|
OpenConnectConfig *OpenConnectConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,14 +120,17 @@ func (ac *AppConfig) UnmarshalJSON(data []byte) error {
|
||||||
ac.Host = jsonConf.Server.Host
|
ac.Host = jsonConf.Server.Host
|
||||||
ac.Port = jsonConf.Server.Port
|
ac.Port = jsonConf.Server.Port
|
||||||
ac.OpenConnectConfig = jsonConf.OpenConnectConfig
|
ac.OpenConnectConfig = jsonConf.OpenConnectConfig
|
||||||
|
ac.StorageType = jsonConf.Storage.StorageType
|
||||||
|
ac.StorageConfig = jsonConf.Storage.StorageConfig
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var defaultConfig AppConfig = AppConfig{
|
var defaultConfig AppConfig = AppConfig{
|
||||||
LogLevel: logrus.InfoLevel,
|
LogLevel: logrus.InfoLevel,
|
||||||
ServerMode: ModeNet,
|
ServerMode: ModeNet,
|
||||||
Host: "0.0.0.0",
|
Host: "0.0.0.0",
|
||||||
Port: 5000,
|
Port: 5000,
|
||||||
|
StorageType: "memory",
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(filepath string) (*AppConfig, error) {
|
func New(filepath string) (*AppConfig, error) {
|
||||||
|
|
|
@ -47,12 +47,22 @@ func main() {
|
||||||
logger.Init(conf.LogLevel)
|
logger.Init(conf.LogLevel)
|
||||||
logger.L.Infof("Initialized logger with level %v", conf.LogLevel)
|
logger.L.Infof("Initialized logger with level %v", conf.LogLevel)
|
||||||
|
|
||||||
|
var storageType storage.Storage
|
||||||
|
switch conf.StorageType {
|
||||||
|
case "memory":
|
||||||
|
storageType = memory.New(logger.L)
|
||||||
|
default:
|
||||||
|
logger.L.Fatalf("Unsupported storage backend type: %s", conf.StorageType)
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.L.Infof("Initialized storage backend \"%s\"", conf.StorageType)
|
||||||
|
|
||||||
dexConf := dex_server.Config{
|
dexConf := dex_server.Config{
|
||||||
Web: dex_server.WebConfig{
|
Web: dex_server.WebConfig{
|
||||||
Dir: "./",
|
Dir: "./",
|
||||||
Theme: "default",
|
Theme: "default",
|
||||||
},
|
},
|
||||||
Storage: memory.New(logger.L),
|
Storage: storageType,
|
||||||
Issuer: conf.OpenConnectConfig.Issuer,
|
Issuer: conf.OpenConnectConfig.Issuer,
|
||||||
SupportedResponseTypes: []string{"code"},
|
SupportedResponseTypes: []string{"code"},
|
||||||
SkipApprovalScreen: false,
|
SkipApprovalScreen: false,
|
||||||
|
|
Loading…
Reference in a new issue