mirror of
https://github.com/aljazceru/haven.git
synced 2025-12-17 05:44:20 +01:00
121 lines
5.5 KiB
Go
121 lines
5.5 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
type Config struct {
|
|
OwnerNpub string `json:"owner_npub"`
|
|
RelaySoftware string `json:"relay_software"`
|
|
RelayVersion string `json:"relay_version"`
|
|
PrivateRelayName string `json:"private_relay_name"`
|
|
PrivateRelayNpub string `json:"private_relay_npub"`
|
|
PrivateRelayDescription string `json:"private_relay_description"`
|
|
PrivateRelayIcon string `json:"private_relay_icon"`
|
|
ChatRelayName string `json:"chat_relay_name"`
|
|
ChatRelayNpub string `json:"chat_relay_npub"`
|
|
ChatRelayDescription string `json:"chat_relay_description"`
|
|
ChatRelayIcon string `json:"chat_relay_icon"`
|
|
ChatRelayWotDepth int `json:"chat_relay_wot_depth"`
|
|
ChatRelayWotRefreshIntervalHours int `json:"chat_relay_wot_refresh_interval_hours"`
|
|
ChatRelayMinimumFollowers int `json:"chat_relay_minimum_followers"`
|
|
OutboxRelayName string `json:"outbox_relay_name"`
|
|
OutboxRelayNpub string `json:"outbox_relay_npub"`
|
|
OutboxRelayDescription string `json:"outbox_relay_description"`
|
|
OutboxRelayIcon string `json:"outbox_relay_icon"`
|
|
InboxRelayName string `json:"inbox_relay_name"`
|
|
InboxRelayNpub string `json:"inbox_relay_npub"`
|
|
InboxRelayDescription string `json:"inbox_relay_description"`
|
|
InboxRelayIcon string `json:"inbox_relay_icon"`
|
|
InboxPullIntervalSeconds int `json:"inbox_pull_interval_seconds"`
|
|
ImportStartDate string `json:"import_start_date"`
|
|
ImportQueryIntervalSeconds int `json:"import_query_interval_seconds"`
|
|
ImportSeedRelays []string `json:"import_seed_relays"`
|
|
BackupProvider string `json:"backup_provider"`
|
|
BlastrRelays []string `json:"blastr_relays"`
|
|
}
|
|
|
|
type AwsConfig struct {
|
|
AccessKeyID string `json:"access"`
|
|
SecretAccessKey string `json:"secret"`
|
|
Region string `json:"region"`
|
|
Bucket string `json:"bucket"`
|
|
}
|
|
|
|
func loadConfig() Config {
|
|
godotenv.Load(".env")
|
|
|
|
return Config{
|
|
OwnerNpub: getEnv("OWNER_NPUB"),
|
|
RelaySoftware: "https://github.com/bitvora/haven",
|
|
RelayVersion: "v0.1.0",
|
|
PrivateRelayName: getEnv("PRIVATE_RELAY_NAME"),
|
|
PrivateRelayNpub: getEnv("PRIVATE_RELAY_NPUB"),
|
|
PrivateRelayDescription: getEnv("PRIVATE_RELAY_DESCRIPTION"),
|
|
PrivateRelayIcon: getEnv("PRIVATE_RELAY_ICON"),
|
|
ChatRelayName: getEnv("CHAT_RELAY_NAME"),
|
|
ChatRelayNpub: getEnv("CHAT_RELAY_NPUB"),
|
|
ChatRelayDescription: getEnv("CHAT_RELAY_DESCRIPTION"),
|
|
ChatRelayIcon: getEnv("CHAT_RELAY_ICON"),
|
|
ChatRelayWotDepth: getEnvInt("CHAT_RELAY_WOT_DEPTH", 0),
|
|
ChatRelayWotRefreshIntervalHours: getEnvInt("CHAT_RELAY_WOT_REFRESH_INTERVAL_HOURS", 0),
|
|
ChatRelayMinimumFollowers: getEnvInt("CHAT_RELAY_MINIMUM_FOLLOWERS", 0),
|
|
OutboxRelayName: getEnv("OUTBOX_RELAY_NAME"),
|
|
OutboxRelayNpub: getEnv("OUTBOX_RELAY_NPUB"),
|
|
OutboxRelayDescription: getEnv("OUTBOX_RELAY_DESCRIPTION"),
|
|
OutboxRelayIcon: getEnv("OUTBOX_RELAY_ICON"),
|
|
InboxRelayName: getEnv("INBOX_RELAY_NAME"),
|
|
InboxRelayNpub: getEnv("INBOX_RELAY_NPUB"),
|
|
InboxRelayDescription: getEnv("INBOX_RELAY_DESCRIPTION"),
|
|
InboxRelayIcon: getEnv("INBOX_RELAY_ICON"),
|
|
InboxPullIntervalSeconds: getEnvInt("INBOX_PULL_INTERVAL_SECONDS", 3600),
|
|
ImportStartDate: getEnv("IMPORT_START_DATE"),
|
|
ImportQueryIntervalSeconds: getEnvInt("IMPORT_QUERY_INTERVAL_SECONDS", 360000),
|
|
ImportSeedRelays: getRelayList(getEnv("IMPORT_SEED_RELAYS")),
|
|
BackupProvider: getEnv("BACKUP_PROVIDER"),
|
|
BlastrRelays: getRelayList(getEnv("BLASTR_RELAYS")),
|
|
}
|
|
}
|
|
|
|
func getRelayList(commaList string) []string {
|
|
relayList := strings.Split(commaList, ",")
|
|
for i, relay := range relayList {
|
|
relayList[i] = "wss://" + strings.TrimSpace(relay)
|
|
}
|
|
return relayList
|
|
}
|
|
|
|
func getEnv(key string) string {
|
|
value, exists := os.LookupEnv(key)
|
|
if !exists {
|
|
log.Fatalf("Environment variable %s not set", key)
|
|
}
|
|
return value
|
|
}
|
|
|
|
func getEnvInt(key string, defaultValue int) int {
|
|
if value, ok := os.LookupEnv(key); ok {
|
|
intValue, err := strconv.Atoi(value)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return intValue
|
|
}
|
|
return defaultValue
|
|
}
|
|
|
|
var art = `
|
|
██╗ ██╗ █████╗ ██╗ ██╗███████╗███╗ ██╗
|
|
██║ ██║██╔══██╗██║ ██║██╔════╝████╗ ██║
|
|
███████║███████║██║ ██║█████╗ ██╔██╗ ██║
|
|
██╔══██║██╔══██║╚██╗ ██╔╝██╔══╝ ██║╚██╗██║
|
|
██║ ██║██║ ██║ ╚████╔╝ ███████╗██║ ╚████║
|
|
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═══╝
|
|
HIGH AVAILABILITY VAULT FOR EVENTS ON NOSTR
|
|
`
|