summaryrefslogtreecommitdiff
path: root/config/env.go
blob: 2c947d619b4327c44bcbe43c485971812c470dd8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package config

import "time"

type server struct {
	Host           string   `env:"SERVER_HOST" default:"localhost"`
	Port           int      `env:"SERVER_PORT" default:"8080"`
	AppSecret      string   `env:"APP_SECRET" default:"mysecret"`
	AppName        string   `env:"APP_NAME" default:"Lain Mail"`
	AppDescription string   `env:"APP_DESCRIPTION" default:"Present day, present time!"`
	AppEngine      string   `env:"APP_ENGINE" default:"Lain"`
	AllowedDomains []string `env:"ALLOWED_DOMAINS" default:"localhost"`
	DevMode        bool     `env:"DEV_MODE" default:"true"`
}

type mail struct {
	IMAPHost string `env:"IMAP_HOST" default:""`
	IMAPPort int    `env:"IMAP_PORT" default:"993"`
	IMAPTLS  bool   `env:"IMAP_TLS" default:"true"`
	SMTPHost string `env:"SMTP_HOST" default:""`
	SMTPPort int    `env:"SMTP_PORT" default:"587"`
	SMTPTLS  bool   `env:"SMTP_TLS" default:"true"`
}

type database struct {
	Host     string `env:"DB_HOST" default:"localhost"`
	Port     int    `env:"DB_PORT" default:"5432"`
	Username string `env:"DB_USER" default:"postgres"`
	Password string `env:"DB_PASS" default:""`
	Name     string `env:"DB_NAME" default:"lain"`
	SSLMode  string `env:"DB_SSLMODE" default:"disable"`
}

type minio struct {
	Endpoint   string `env:"MINIO_ENDPOINT" default:"localhost:9000"`
	AccessKey  string `env:"MINIO_ACCESS_KEY" default:""`
	SecretKey  string `env:"MINIO_SECRET_KEY" default:""`
	BucketName string `env:"MINIO_BUCKET_NAME" default:"lain"`
	UseSSL     bool   `env:"MINIO_USE_SSL" default:"false"`
}

type ai struct {
	URL     string `env:"AI_SERVER_URL" default:""`
	AuthKey string `env:"AI_SERVER_AUTH_KEY" default:""`
}

type session struct {
	CookieDomain   string        `env:"SESSION_COOKIE_DOMAIN" default:"localhost"`
	CookieName     string        `env:"SESSION_COOKIE_NAME" default:"lain_session"`
	CookiePath     string        `env:"SESSION_COOKIE_PATH" default:"/"`
	CookieSameSite string        `env:"SESSION_COOKIE_SAME_SITE" default:"Lax"`
	CookieSecure   bool          `env:"SESSION_SECURE_COOKIE" default:"false"`
	CookieTimeout  time.Duration `env:"SESSION_TIMEOUT" default:"24h"`
}