@@ -78,6 +78,7 @@ var DefaultConfig = map[string]interface{}{
78
78
"services.checks.pageSize" : 2 ,
79
79
"services.checks.cacheTTL" : 100 ,
80
80
"server.maxBodySize" : 20 * megabyte ,
81
+ "server.advertisedHost" : "localhost" ,
81
82
}
82
83
83
84
const megabyte int64 = 1048576
@@ -105,10 +106,7 @@ type Config struct {
105
106
Port int `key:"port" validate:"required,min=1,max=65535"`
106
107
Name string `key:"name" validate:"required"`
107
108
} `key:"database"`
108
- Server struct {
109
- Port int `key:"port" validate:"required,min=1,max=65535"`
110
- MaxBodySize int64 `key:"maxBodySize" validate:"required,min=1"` // in bytes
111
- } `key:"server"`
109
+ Server ServerConfig `key:"server"`
112
110
Logging struct {
113
111
Enabled bool `key:"enabled"`
114
112
Level LogLevel `key:"level" validate:"required,oneof=debug info"`
@@ -126,16 +124,7 @@ type Config struct {
126
124
Interval int `key:"interval"`
127
125
Output OtelOutput `key:"output" validate:"required,oneof=stdout http"`
128
126
} `key:"metrics"`
129
- Security struct {
130
- SiteKey []byte `key:"siteKey" validate:"required,min=64,max=64"`
131
- Salt []byte `key:"salt" validate:"required,min=32,max=32"`
132
- TLS struct {
133
- KeyType string `key:"keyType" validate:"required,oneof=RSA-4096 EC-P224 EC-P256 EC-P384 EC-P521 ED25519"`
134
- CertificatePath string `key:"certificatePath"`
135
- KeyPath string `key:"keyPath"`
136
- InsecureSkipVerify bool `key:"insecureSkipVerify"`
137
- } `key:"tls" validate:"required"`
138
- } `key:"security" validate:"required"`
127
+ Security SecurityConfig `key:"security" validate:"required"`
139
128
Services struct {
140
129
Users struct {
141
130
PageSize int `key:"pageSize" validate:"required,min=2"`
@@ -155,6 +144,25 @@ type Config struct {
155
144
} `key:"development"`
156
145
}
157
146
147
+ type TLSConfig struct {
148
+ KeyType string `key:"keyType" validate:"required,oneof=RSA-4096 EC-P224 EC-P256 EC-P384 EC-P521 ED25519"`
149
+ CertificatePath string `key:"certificatePath"`
150
+ KeyPath string `key:"keyPath"`
151
+ InsecureSkipVerify bool `key:"insecureSkipVerify"`
152
+ }
153
+
154
+ type SecurityConfig struct {
155
+ SiteKey []byte `key:"siteKey" validate:"required,min=64,max=64"`
156
+ Salt []byte `key:"salt" validate:"required,min=32,max=32"`
157
+ TLS TLSConfig `key:"tls" validate:"required"`
158
+ }
159
+
160
+ type ServerConfig struct {
161
+ Port int `key:"port" validate:"required,min=1,max=65535"`
162
+ MaxBodySize int64 `key:"maxBodySize" validate:"required,min=1"` // in bytes
163
+ AdvertisedHost string `key:"advertisedHost" validate:"required"`
164
+ }
165
+
158
166
// ConfigEnvironmentPrefix is the prefix used to identify the environment
159
167
// variables that are used to configure the application.
160
168
var ConfigEnvironmentPrefix = "SOPH_"
0 commit comments