blob: a66c7a45e5cf03898aeb0349cfcbc6a2b612c9fa (
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
package config
import "time"
type ServerConfig struct {
Host string `env:"SERVER_HOST" default:"localhost"`
Port int `env:"SERVER_PORT" default:"8080"`
AppName string `env:"APP_NAME" default:"ImageBoard"`
AppBaseURL string `env:"APP_BASE_URL" default:"http://localhost:8080"`
AppSecret string `env:"APP_SECRET" default:"default_secret"`
IsDevMode bool `env:"DEV_MODE" default:"true"`
MinPasswordLength int `env:"MIN_PASSWORD_LENGTH" default:"8"`
AdminEmail string `env:"ADMIN_EMAIL" default:""`
}
type DatabaseConfig struct {
Host string `env:"DB_HOST" default:"localhost"`
Port int `env:"DB_PORT" default:"5432"`
Username string `env:"DB_USERNAME" default:"postgres"`
Password string `env:"DB_PASSWORD" default:""`
DatabaseName string `env:"DB_NAME" default:"imageboard"`
SSLMode string `env:"DB_SSLMODE" default:"disable"`
WipeAndResetDatabase bool `env:"DB_WIPE_AND_RESET" default:"false"`
}
type SessionConfig struct {
Expiration time.Duration `env:"SESSION_EXPIRATION" default:"24h"`
CookieName string `env:"SESSION_COOKIE_NAME" default:"session_id"`
CookieDomain string `env:"SESSION_COOKIE_DOMAIN" default:""`
CookiePath string `env:"SESSION_COOKIE_PATH" default:"/"`
CookieSecure bool `env:"SESSION_COOKIE_SECURE" default:"false"`
CookieSameSite string `env:"SESSION_COOKIE_SAMESITE" default:"Lax"`
}
type UploadConfig struct {
MaxSize int `env:"IMAGE_MAX_SIZE" default:"10485760"`
AllowedTypes string `env:"IMAGE_ALLOWED_TYPES" default:"image/jpeg,image/png,image/gif,image/webp"`
}
type S3Config struct {
Endpoint string `env:"S3_ENDPOINT" default:"localhost:9000"`
AccessKey string `env:"S3_ACCESS_KEY" default:"minioadmin"`
SecretAccessKey string `env:"S3_SECRET_KEY" default:"minioadmin"`
BucketName string `env:"S3_BUCKET_NAME" default:"shifoo"`
FolderPath string `env:"S3_FOLDER_PATH" default:"imageboard"`
Region string `env:"S3_REGION" default:"us-east-1"`
UseSSL bool `env:"S3_USE_SSL" default:"false"`
PublicURL string `env:"S3_PUBLIC_URL" default:""`
}
type SMTPConfig struct {
Host string `env:"SMTP_HOST" default:""`
Port int `env:"SMTP_PORT" default:"587"`
Username string `env:"SMTP_USERNAME" default:""`
Password string `env:"SMTP_PASSWORD" default:""`
From string `env:"EMAIL_FROM" default:""`
}
type QueryParam struct {
Key string
Value string
}
type Request struct {
Path string
Method string
Query []QueryParam
Params []QueryParam
QueryString string
IP string
URL string
}
type SiteStats struct {
Posts string
Tags string
Today string
Storage string
Comments string
}
type SitePreferences struct {
SidebarWidth string `json:"sidebar_width"`
MainContentWidth string `json:"main_content_width"`
H1FontSize string `json:"h1_font_size"`
BodyFontSize string `json:"body_font_size"`
SmallFontSize string `json:"small_font_size"`
PostsPerPage int `json:"posts_per_page"`
}
|