summaryrefslogtreecommitdiff
path: root/internal/config
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-09-21 13:42:36 +0300
committerPaul Buetow <paul@buetow.org>2024-09-21 13:42:36 +0300
commit780ade3dc066afb8a43be824373414f3d316ebd6 (patch)
tree5b2e1f1a478bcc5469e4f0456f13464062c8e2a4 /internal/config
parent5263e61d5667009e7a7ac13014cec73ccbd0e20a (diff)
jo
Diffstat (limited to 'internal/config')
-rw-r--r--internal/config/server/mastodon.go1
-rw-r--r--internal/config/server/secrets.go44
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
+}