Skip to content

Commit c00b558

Browse files
committed
refactor: refine redirect https
1 parent 6fb915e commit c00b558

File tree

4 files changed

+31
-21
lines changed

4 files changed

+31
-21
lines changed

src/param/cli.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -426,13 +426,11 @@ func doParseCli() []*Param {
426426

427427
// hsts & https
428428
if len(param.ListensTLS) > 0 {
429-
param.GlobalHsts = result.HasKey("globalhsts")
430-
if param.GlobalHsts {
429+
if result.HasKey("globalhsts") {
431430
param.GlobalHsts = validateHstsPort(param.ListensPlain, param.ListensTLS)
432431
}
433432

434-
param.GlobalHttps = result.HasKey("globalhttps")
435-
if param.GlobalHttps {
433+
if result.HasKey("globalhttps") {
436434
httpsPort, _ := result.GetString("globalhttps")
437435
param.HttpsPort, param.GlobalHttps = normalizeHttpsPort(httpsPort, param.ListensTLS)
438436
}

src/param/strUtil.go

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ func normalizeFilenames(inputs []string) []string {
187187
return outputs
188188
}
189189

190-
func validateHstsPort(listensPlain, ListensTLS []string) bool {
190+
func validateHstsPort(listensPlain, listensTLS []string) bool {
191191
var fromOK, toOK bool
192192

193193
for _, listen := range listensPlain {
@@ -198,7 +198,7 @@ func validateHstsPort(listensPlain, ListensTLS []string) bool {
198198
}
199199
}
200200

201-
for _, listen := range ListensTLS {
201+
for _, listen := range listensTLS {
202202
port := util.ExtractListenPort(listen)
203203
if len(port) == 0 || port == "443" {
204204
toOK = true
@@ -209,29 +209,23 @@ func validateHstsPort(listensPlain, ListensTLS []string) bool {
209209
return fromOK && toOK
210210
}
211211

212-
func normalizeHttpsPort(httpsPort string, ListensTLS []string) (string, bool) {
212+
func normalizeHttpsPort(httpsPort string, listensTLS []string) (string, bool) {
213213
if len(httpsPort) > 0 {
214214
httpsPort = util.ExtractListenPort(httpsPort)
215215
if len(httpsPort) == 0 {
216216
return "", false
217217
}
218-
} else if len(ListensTLS) > 0 {
219-
httpsPort = util.ExtractListenPort(ListensTLS[0])
218+
} else if len(listensTLS) > 0 {
219+
httpsPort = util.ExtractListenPort(listensTLS[0])
220220
}
221221

222-
lenHttpsPort := len(httpsPort)
223-
httpsColonPort := ":" + httpsPort
224-
for _, listen := range ListensTLS {
225-
if lenHttpsPort == 0 && len(listen) == 0 {
226-
return "", true
227-
}
228-
222+
for _, listen := range listensTLS {
229223
port := util.ExtractListenPort(listen)
230-
if lenHttpsPort == 0 && len(port) == 0 {
224+
if len(httpsPort) == 0 && len(port) == 0 {
231225
return "", true
232226
}
233227
if httpsPort == port {
234-
return httpsColonPort, true
228+
return ":" + httpsPort, true
235229
}
236230

237231
if httpsPort == "443" && port == "" {

src/param/strUtil_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,26 @@ func TestNormalizeHttpsPort(t *testing.T) {
220220
t.Error("4")
221221
}
222222

223+
httpsPort, ok = normalizeHttpsPort("", nil)
224+
if ok {
225+
t.Error("5")
226+
}
227+
228+
httpsPort, ok = normalizeHttpsPort("", []string{})
229+
if ok {
230+
t.Error("5")
231+
}
232+
233+
httpsPort, ok = normalizeHttpsPort("123", nil)
234+
if ok {
235+
t.Error("5")
236+
}
237+
238+
httpsPort, ok = normalizeHttpsPort("123", []string{})
239+
if ok {
240+
t.Error("5")
241+
}
242+
223243
httpsPort, ok = normalizeHttpsPort("", []string{""})
224244
if !ok || httpsPort != "" {
225245
t.Error("5")

src/serverHandler/hsts.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@ func (h *handler) https(w http.ResponseWriter, r *http.Request) (needRedirect bo
3636
targetPort = h.httpsPort
3737
}
3838

39-
targetHost := hostname + targetPort
40-
41-
location := "https://" + targetHost + r.RequestURI
39+
location := "https://" + hostname + targetPort + r.RequestURI
4240
http.Redirect(w, r, location, http.StatusMovedPermanently)
4341
return true
4442
}

0 commit comments

Comments
 (0)