package main import ( "errors" "log" "os" "strings" ) var ( BlogUrl string GiteaEndpoint string GiteaToken string BunnyCdnKey string MicroblogUrl string MicroblogToken string IgnoredWebmentionUrls []string SyndicationTargets []SyndicationTarget ) type SyndicationTarget struct { Uid string `json:"uid"` Name string `json:"name"` } func init() { // Blog URL (required) blogUrl, err := blogUrl() if err != nil { log.Fatal(err) } BlogUrl = blogUrl // Gitea (required) giteaEndpoint, err := giteaEndpoint() if err != nil { log.Fatal(err) } GiteaEndpoint = giteaEndpoint giteaToken, err := giteaToken() if err != nil { log.Fatal(err) } GiteaToken = giteaToken // BunnyCDN (optional) bunnyCdnKey, err := bunnyCdnKey() if err != nil { log.Println(err) } BunnyCdnKey = bunnyCdnKey // Microblog (optional) microblogUrl, err := microblogUrl() if err != nil { log.Println(err) } MicroblogUrl = microblogUrl microblogToken, err := microblogToken() if err != nil { log.Println(err) } MicroblogToken = microblogToken // Ignored Webmention URLs (optional) ignoredWebmentionUrls, err := ignoredWebmentionUrls() if err != nil { log.Println(err) } IgnoredWebmentionUrls = ignoredWebmentionUrls // Syndication Targets (optional) syndicationTargets, err := syndicationTargets() if err != nil { log.Println(err) } SyndicationTargets = syndicationTargets } func giteaEndpoint() (string, error) { giteaEndpoint := os.Getenv("GITEA_ENDPOINT") if len(giteaEndpoint) == 0 || giteaEndpoint == "" { return "", errors.New("GITEA_ENDPOINT not specified") } return giteaEndpoint, nil } func giteaToken() (string, error) { giteaToken := os.Getenv("GITEA_TOKEN") if len(giteaToken) == 0 || giteaToken == "" { return "", errors.New("GITEA_TOKEN not specified") } return giteaToken, nil } func blogUrl() (string, error) { blogURL := os.Getenv("BLOG_URL") if len(blogURL) == 0 || blogURL == "" { return "", errors.New("BLOG_URL not specified") } return blogURL, nil } func bunnyCdnKey() (string, error) { bunnyCDNKey := os.Getenv("BUNNY_CDN_KEY") if len(bunnyCDNKey) == 0 || bunnyCDNKey == "" { return "", errors.New("BUNNY_CDN_KEY not specified, BunnyCDN features are deactivated") } return bunnyCDNKey, nil } func microblogUrl() (string, error) { microblogUrl := os.Getenv("MICROBLOG_URL") if len(microblogUrl) == 0 || microblogUrl == "" { return "", errors.New("MICROBLOG_URL not specified, microblog.pub features are deactivated") } return microblogUrl, nil } func microblogToken() (string, error) { microblogToken := os.Getenv("MICROBLOG_TOKEN") if len(microblogToken) == 0 || microblogToken == "" { return "", errors.New("MICROBLOG_TOKEN not specified, microblog.pub features are deactivated") } return microblogToken, nil } func ignoredWebmentionUrls() ([]string, error) { webmentionIgnored := os.Getenv("WEBMENTION_IGNORED") if len(webmentionIgnored) == 0 { return make([]string, 0), errors.New("WEBMENTION_IGNORED not set, no URLs are ignored on Webmention sending") } return strings.Split(webmentionIgnored, ","), nil } func syndicationTargets() ([]SyndicationTarget, error) { syndication := os.Getenv("SYNDICATION") targets := make([]SyndicationTarget, 0) if len(syndication) == 0 { return targets, errors.New("SYNDICATION not set, no targets are returned when querying for syndication targets") } for _, url := range strings.Split(syndication, ",") { targets = append(targets, SyndicationTarget{ Uid: url, Name: url, }) } return targets, nil }