summaryrefslogtreecommitdiff
path: root/internal/config/server
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-05-11 13:23:54 +0300
committerPaul Buetow <paul@buetow.org>2024-05-11 13:23:54 +0300
commit560b685505a43aa1a1365c1c3f7b3d0733676847 (patch)
tree9da7929d77587216eaf3632947683badcf710686 /internal/config/server
parent2337c4c11eda933f9c91b46defca63dc5557eb19 (diff)
branch out serverconfig
Diffstat (limited to 'internal/config/server')
-rw-r--r--internal/config/server/server.go41
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
+}