package main import ( "fmt" "log" "net/http" "os" "strings" "time" ) func main() { addr := envOr("LISTEN_ADDR", ":8085") writeToken, err := readSecretFile("RECEIVER_WRITE_TOKEN_FILE") if err != nil { log.Fatal(err) } readToken, err := readSecretFile("RECEIVER_READ_TOKEN_FILE") if err != nil { log.Fatal(err) } server, err := newReceiverServer(envOr("RECEIPT_DIRECTORY", "/var/lib/notification-receiver"), writeToken, readToken, time.Now) if err != nil { log.Fatal(err) } log.Printf("notification-receiver listening on %s", addr) if err = http.ListenAndServe(addr, server.routes()); err != nil { log.Fatal(err) } } func readSecretFile(name string) (string, error) { path := os.Getenv(name) if path == "" { return "", fmt.Errorf("%s is required", name) } value, err := os.ReadFile(path) if err != nil { return "", fmt.Errorf("read %s: %w", name, err) } secret := strings.TrimSpace(string(value)) if secret == "" { return "", fmt.Errorf("%s is empty", name) } return secret, nil } func envOr(name, fallback string) string { if value := os.Getenv(name); value != "" { return value } return fallback }