diff options
| author | Paul Buetow <paul@buetow.org> | 2024-09-21 13:42:36 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-09-21 13:42:36 +0300 |
| commit | 780ade3dc066afb8a43be824373414f3d316ebd6 (patch) | |
| tree | 5b2e1f1a478bcc5469e4f0456f13464062c8e2a4 /internal/config | |
| parent | 5263e61d5667009e7a7ac13014cec73ccbd0e20a (diff) | |
jo
Diffstat (limited to 'internal/config')
| -rw-r--r-- | internal/config/server/mastodon.go | 1 | ||||
| -rw-r--r-- | internal/config/server/secrets.go | 44 |
2 files changed, 45 insertions, 0 deletions
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 +} |
