diff options
| author | Paul Buetow <paul@buetow.org> | 2024-05-11 13:23:54 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-05-11 13:23:54 +0300 |
| commit | 560b685505a43aa1a1365c1c3f7b3d0733676847 (patch) | |
| tree | 9da7929d77587216eaf3632947683badcf710686 /internal/config/server | |
| parent | 2337c4c11eda933f9c91b46defca63dc5557eb19 (diff) | |
branch out serverconfig
Diffstat (limited to 'internal/config/server')
| -rw-r--r-- | internal/config/server/server.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/internal/config/server/server.go b/internal/config/server/server.go new file mode 100644 index 0000000..6778b1b --- /dev/null +++ b/internal/config/server/server.go @@ -0,0 +1,41 @@ +package server + +import ( + "fmt" + "log" + "os" + + "codeberg.org/snonux/gos/internal/config" +) + +type ServerConfig struct { + ListenAddr string `json:"ListenAddr,omitempty"` + Partner string `json:"Partner,omitempty"` + ApiKey string `json:"ApiKey,omitempty"` + DataDir string `json:"StateDir,omitempty"` + EmailTo string `json:"EmailTo,omitempty"` + EmailFrom string `json:"EmailFrom,omitempty"` + SMTPServer string `json:"SMTPServer,omitempty"` +} + +func New(configFile string) (ServerConfig, error) { + conf, _ := config.FromFile[ServerConfig](configFile) + conf.ListenAddr = config.FromENV("ListenAddr", conf.ListenAddr, "localhost:8080") + conf.Partner = config.FromENV("Partner", conf.Partner) + conf.ApiKey = config.FromENV("ApiKey", conf.ApiKey) + conf.DataDir = config.FromENV("DataDir", conf.DataDir, "data") + conf.EmailTo = config.FromENV("EmailTo", conf.EmailTo) + conf.EmailFrom = config.FromENV("EmailFrom", conf.EmailFrom) + conf.SMTPServer = config.FromENV("SMTPServer", conf.SMTPServer) + + if conf.SMTPServer == "" { + hostname, err := os.Hostname() + if err != nil { + log.Fatal(err) + } + conf.SMTPServer = fmt.Sprintf("%s:25", hostname) + log.Println("Set SMTPServer to " + conf.SMTPServer) + } + + return conf, nil +} |
