From 780ade3dc066afb8a43be824373414f3d316ebd6 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 21 Sep 2024 13:42:36 +0300 Subject: jo --- internal/config/server/mastodon.go | 1 + internal/config/server/secrets.go | 44 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 internal/config/server/mastodon.go create mode 100644 internal/config/server/secrets.go (limited to 'internal/config') diff --git a/internal/config/server/mastodon.go b/internal/config/server/mastodon.go new file mode 100644 index 0000000..abb4e43 --- /dev/null +++ b/internal/config/server/mastodon.go @@ -0,0 +1 @@ +package server diff --git a/internal/config/server/secrets.go b/internal/config/server/secrets.go new file mode 100644 index 0000000..0e8aab2 --- /dev/null +++ b/internal/config/server/secrets.go @@ -0,0 +1,44 @@ +package server + +import ( + "fmt" + "log" + "os" + + "codeberg.org/snonux/gos/internal/config" +) + +type SecretsConfig struct { + MastodonEnable bool `json:"MastodonEnable,omitempty"` + MastodonDomain string `json:"MastodonDomain,omitempty"` + MastodonAccessToken string `json:"MastodonAccessToken,omitempty"` +} + +func newSecretsConfig(secretsFile string) (SecretsConfig, error) { + if isWorldReadable(secretsFile) { + return SecretsConfig{}, fmt.Errorf("config '%s' is world readable", secretsFile) + } + + conf, err := config.FromFile[SecretsConfig](secretsFile) + if err != nil { + if _, ok := err.(*os.PathError); !ok { + return conf, err + } + log.Println("Skipping config file:", err) + } + + conf.MastodonEnable = config.Bool("GOS_MASTODON_ENABLE", conf.MastodonEnable) + conf.MastodonDomain = config.Str("GOS_MASTODON_DOMAIN", conf.MastodonDomain) + conf.MastodonAccessToken = config.Str("GOS_MASTODON_ACCESS_TOKEN", conf.MastodonAccessToken) + + return conf, nil +} + +func isWorldReadable(file string) bool { + fileInfo, err := os.Stat(file) + if err != nil { + return false + } + + return fileInfo.Mode().Perm()&00004 != 0 +} -- cgit v1.2.3