feat #4: add storage config in config file
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
chapeau 2023-10-21 23:50:53 +02:00
parent 8852e3de52
commit a6011106d5
2 changed files with 37 additions and 5 deletions

View file

@ -54,6 +54,19 @@ type OpenConnectConfig struct {
Issuer string `json:"issuer"` Issuer string `json:"issuer"`
} }
type StorageConfigConfig struct {
File string `json:"file"`
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 +77,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 +90,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 +121,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) {

View file

@ -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,