diff options
Diffstat (limited to 'cmd/mirumd/config.go')
| -rw-r--r-- | cmd/mirumd/config.go | 54 | +54 −0 |
1 files changed, 54 insertions, 0 deletions
diff --git a/cmd/mirumd/config.go b/cmd/mirumd/config.go new file mode 100644 --- /dev/null +++ b/cmd/mirumd/config.go @@ -0,0 +1,54 @@ +// Copyright (c) 2026 Nikolay Govorov +// SPDX-License-Identifier: AGPL-3.0-or-later + +package main + +import ( + "fmt" + "os" + + "gopkg.in/yaml.v3" +) + +type config struct { + WwwAddr string `yaml:"www_addr"` + GrpcAddr string `yaml:"grpc_addr"` + AdminSocket string `yaml:"admin_socket"` + DatabaseUri string `yaml:"database_uri"` + Pepper string `yaml:"pepper"` + + TLSCert string `yaml:"tls_cert"` + TLSKey string `yaml:"tls_key"` + + GitHubToken string `yaml:"token"` + WebhookSecret string `yaml:"webhook_secret"` +} + +func getConfig(filename string) (*config, error) { + cfg := &config{ + GrpcAddr: ":2026", + WwwAddr: ":3000", + AdminSocket: "/run/mirumd/admin.sock", + } + + data, err := os.ReadFile(filename) + if err != nil { + return nil, err + } + + if err := yaml.Unmarshal(data, &cfg); err != nil { + return nil, err + } + + if cfg.DatabaseUri == "" { + return nil, fmt.Errorf("error: database_uri is required") + } + if cfg.WebhookSecret == "" { + return nil, fmt.Errorf("error: webhook_secret is required") + } + if cfg.Pepper == "" { + return nil, fmt.Errorf("error: pepper is required") + } + + return cfg, nil +} |
