|  | 
|  | 1 | +package common | 
|  | 2 | + | 
|  | 3 | +import ( | 
|  | 4 | +	"fmt" | 
|  | 5 | +	_ "github.com/joho/godotenv/autoload" | 
|  | 6 | +	"github.com/nbd-wtf/go-nostr" | 
|  | 7 | +	"os" | 
|  | 8 | +	"strings" | 
|  | 9 | +) | 
|  | 10 | + | 
|  | 11 | +var PORT string | 
|  | 12 | +var RELAY_URL string | 
|  | 13 | +var RELAY_NAME string | 
|  | 14 | +var RELAY_ICON string | 
|  | 15 | +var RELAY_ADMIN string | 
|  | 16 | +var RELAY_SECRET string | 
|  | 17 | +var RELAY_SELF string | 
|  | 18 | +var RELAY_DESCRIPTION string | 
|  | 19 | +var RELAY_CLAIMS []string | 
|  | 20 | +var AUTH_BACKEND string | 
|  | 21 | +var AUTH_WHITELIST []string | 
|  | 22 | +var AUTH_RESTRICT_USER bool | 
|  | 23 | +var AUTH_RESTRICT_AUTHOR bool | 
|  | 24 | +var GENERATE_CLAIMS bool | 
|  | 25 | +var DATA_DIR string | 
|  | 26 | + | 
|  | 27 | +func SetupEnvironment() { | 
|  | 28 | +	var env = make(map[string]string) | 
|  | 29 | + | 
|  | 30 | +	for _, item := range os.Environ() { | 
|  | 31 | +		parts := strings.SplitN(item, "=", 2) | 
|  | 32 | +		env[parts[0]] = parts[1] | 
|  | 33 | +	} | 
|  | 34 | + | 
|  | 35 | +	getEnv := func(k string, fallback ...string) (v string) { | 
|  | 36 | +		v = env[k] | 
|  | 37 | + | 
|  | 38 | +		if v == "" && len(fallback) > 0 { | 
|  | 39 | +			v = fallback[0] | 
|  | 40 | +		} | 
|  | 41 | + | 
|  | 42 | +		return v | 
|  | 43 | +	} | 
|  | 44 | + | 
|  | 45 | +	PORT = getEnv("PORT", "3334") | 
|  | 46 | +	RELAY_URL = getEnv("RELAY_URL", "localhost:3334") | 
|  | 47 | +	RELAY_NAME = getEnv("RELAY_NAME", "Frith") | 
|  | 48 | +	RELAY_ICON = getEnv("RELAY_ICON", "https://hbr.coracle.social/fd73de98153b615f516d316d663b413205fd2e6e53d2c6064030ab57a7685bbd.jpg") | 
|  | 49 | +	RELAY_ADMIN = getEnv("RELAY_ADMIN", "") | 
|  | 50 | +	RELAY_SECRET = getEnv("RELAY_SECRET", nostr.GeneratePrivateKey()) | 
|  | 51 | +	RELAY_SELF, _ = nostr.GetPublicKey(RELAY_SECRET) | 
|  | 52 | +	RELAY_DESCRIPTION = getEnv("RELAY_DESCRIPTION", "A nostr relay for hosting groups.") | 
|  | 53 | +	RELAY_CLAIMS = split(getEnv("RELAY_CLAIMS", ""), ",") | 
|  | 54 | +	AUTH_BACKEND = getEnv("AUTH_BACKEND", "") | 
|  | 55 | +	AUTH_WHITELIST = split(getEnv("AUTH_WHITELIST", ""), ",") | 
|  | 56 | +	AUTH_RESTRICT_USER = getEnv("AUTH_RESTRICT_USER", "true") == "true" | 
|  | 57 | +	AUTH_RESTRICT_AUTHOR = getEnv("AUTH_RESTRICT_AUTHOR", "false") == "true" | 
|  | 58 | +	GENERATE_CLAIMS = getEnv("GENERATE_CLAIMS", "false") == "true" | 
|  | 59 | +	DATA_DIR = getEnv("DATA_DIR", "./data") | 
|  | 60 | +} | 
|  | 61 | + | 
|  | 62 | +func GetDataDir(dir string) string { | 
|  | 63 | +	return fmt.Sprintf("%s/%s", DATA_DIR, dir) | 
|  | 64 | +} | 
0 commit comments