@@ -114,42 +114,47 @@ func startHTTPAPI(errChan chan error, config DNSConfig, dnsservers []*DNSServer)
114
114
115
115
api := httprouter .New ()
116
116
c := cors .New (cors.Options {
117
- AllowedOrigins : Config .API .CorsOrigins ,
117
+ AllowedOrigins : config .API .CorsOrigins ,
118
118
AllowedMethods : []string {"GET" , "POST" },
119
119
OptionsPassthrough : false ,
120
- Debug : Config .General .Debug ,
120
+ Debug : config .General .Debug ,
121
121
})
122
- if Config .General .Debug {
122
+ if config .General .Debug {
123
123
// Logwriter for saner log output
124
124
c .Log = stdlog .New (logwriter , "" , 0 )
125
125
}
126
- if ! Config .API .DisableRegistration {
126
+ if ! config .API .DisableRegistration {
127
127
api .POST ("/register" , webRegisterPost )
128
128
}
129
129
api .POST ("/update" , Auth (webUpdatePost ))
130
130
api .GET ("/health" , healthCheck )
131
131
132
- host := Config .API .IP + ":" + Config .API .Port
132
+ host := config .API .IP + ":" + config .API .Port
133
133
134
134
// TLS specific general settings
135
135
cfg := & tls.Config {
136
136
MinVersion : tls .VersionTLS12 ,
137
137
}
138
138
provider := NewChallengeProvider (dnsservers )
139
- storage := certmagic.FileStorage {Path : Config .API .ACMECacheDir }
139
+ storage := certmagic.FileStorage {Path : config .API .ACMECacheDir }
140
140
141
141
// Set up certmagic for getting certificate for acme-dns api
142
142
certmagic .DefaultACME .DNS01Solver = & provider
143
143
certmagic .DefaultACME .Agreed = true
144
- if Config .API .TLS == "letsencrypt" {
144
+ switch config .API .TLS {
145
+ case TlsTypeLetsEncrypt :
145
146
certmagic .DefaultACME .CA = certmagic .LetsEncryptProductionCA
146
- } else {
147
+ case TlsTypeAcmeCustom :
148
+ certmagic .DefaultACME .CA = config .API .ACMEDir
149
+ case TlsTypeLetsEncryptStaging :
150
+ default :
147
151
certmagic .DefaultACME .CA = certmagic .LetsEncryptStagingCA
152
+
148
153
}
149
- certmagic .DefaultACME .Email = Config .API .NotificationEmail
154
+ certmagic .DefaultACME .Email = config .API .ACMENotificationEmail
150
155
magicConf := certmagic .NewDefault ()
151
156
magicConf .Storage = & storage
152
- magicConf .DefaultServerName = Config .General .Domain
157
+ magicConf .DefaultServerName = config .General .Domain
153
158
154
159
magicCache := certmagic .NewCache (certmagic.CacheOptions {
155
160
GetConfigForCert : func (cert certmagic.Certificate ) (* certmagic.Config , error ) {
@@ -159,25 +164,11 @@ func startHTTPAPI(errChan chan error, config DNSConfig, dnsservers []*DNSServer)
159
164
160
165
magic := certmagic .New (magicCache , * magicConf )
161
166
var err error
162
- switch Config .API .TLS {
163
- case "letsencryptstaging" :
164
- err = magic .ManageAsync (context .Background (), []string {Config .General .Domain })
165
- if err != nil {
166
- errChan <- err
167
- return
168
- }
169
- cfg .GetCertificate = magic .GetCertificate
170
-
171
- srv := & http.Server {
172
- Addr : host ,
173
- Handler : c .Handler (api ),
174
- TLSConfig : cfg ,
175
- ErrorLog : stdlog .New (logwriter , "" , 0 ),
176
- }
177
- log .WithFields (log.Fields {"host" : host , "domain" : Config .General .Domain }).Info ("Listening HTTPS" )
178
- err = srv .ListenAndServeTLS ("" , "" )
179
- case "letsencrypt" :
180
- err = magic .ManageAsync (context .Background (), []string {Config .General .Domain })
167
+ switch config .API .TLS {
168
+ case TlsTypeLetsEncrypt :
169
+ case TlsTypeLetsEncryptStaging :
170
+ case TlsTypeAcmeCustom :
171
+ err = magic .ManageAsync (context .Background (), []string {config .General .Domain })
181
172
if err != nil {
182
173
errChan <- err
183
174
return
@@ -189,17 +180,17 @@ func startHTTPAPI(errChan chan error, config DNSConfig, dnsservers []*DNSServer)
189
180
TLSConfig : cfg ,
190
181
ErrorLog : stdlog .New (logwriter , "" , 0 ),
191
182
}
192
- log .WithFields (log.Fields {"host" : host , "domain" : Config .General .Domain }).Info ("Listening HTTPS" )
183
+ log .WithFields (log.Fields {"host" : host , "domain" : config .General .Domain }).Info ("Listening HTTPS" )
193
184
err = srv .ListenAndServeTLS ("" , "" )
194
- case "cert" :
185
+ case TlsTypeCert :
195
186
srv := & http.Server {
196
187
Addr : host ,
197
188
Handler : c .Handler (api ),
198
189
TLSConfig : cfg ,
199
190
ErrorLog : stdlog .New (logwriter , "" , 0 ),
200
191
}
201
192
log .WithFields (log.Fields {"host" : host }).Info ("Listening HTTPS" )
202
- err = srv .ListenAndServeTLS (Config .API .TLSCertFullchain , Config .API .TLSCertPrivkey )
193
+ err = srv .ListenAndServeTLS (config .API .TLSCertFullchain , config .API .TLSCertPrivkey )
203
194
default :
204
195
log .WithFields (log.Fields {"host" : host }).Info ("Listening HTTP" )
205
196
err = http .ListenAndServe (host , c .Handler (api ))
0 commit comments