@@ -135,6 +135,12 @@ func init() {
135135 err = options .AddFlagsValue ("template" , []string {"-t" , "--template" }, "GHFS_TEMPLATE" , "" , "custom template file for page" )
136136 serverErrHandler .CheckFatal (err )
137137
138+ err = options .AddFlag ("globalhsts" , "--hsts" , "GHFS_HSTS" , "enable HSTS(HTTP Strict Transport Security)" )
139+ serverErrHandler .CheckFatal (err )
140+
141+ err = options .AddFlagValue ("globalhttps" , "--to-https" , "GHFS_TO_HTTPS" , "" , "redirect http:// to https://, with optional target port" )
142+ serverErrHandler .CheckFatal (err )
143+
138144 err = options .AddFlagsValues ("shows" , []string {"-S" , "--show" }, "GHFS_SHOW" , nil , "show directories or files match wildcard" )
139145 serverErrHandler .CheckFatal (err )
140146 err = options .AddFlagsValues ("showdirs" , []string {"-SD" , "--show-dir" }, "GHFS_SHOW_DIR" , nil , "show directories match wildcard" )
@@ -274,17 +280,6 @@ func doParseCli() []*Param {
274280 serverErrHandler .CheckFatal (errors .New ("missing certificate key file" ))
275281 }
276282
277- // normalize listen
278- listens , _ := result .GetStrings ("listens" )
279- param .Listens = append (param .Listens , listens ... )
280-
281- listenRests := result .GetRests ()
282- param .Listens = append (param .Listens , listenRests ... )
283-
284- param .ListensPlain , _ = result .GetStrings ("listensplain" )
285-
286- param .ListensTLS , _ = result .GetStrings ("listenstls" )
287-
288283 // normalize aliases
289284 arrAlias , _ := result .GetStrings ("aliases" )
290285 param .Aliases = normalizePathMaps (arrAlias )
@@ -356,6 +351,31 @@ func doParseCli() []*Param {
356351 serverErrHandler .CheckFatal (fmt .Errorf ("duplicated usernames: %q" , dupUserNames ))
357352 }
358353
354+ // normalize listen
355+ listens , _ := result .GetStrings ("listens" )
356+ param .Listens = append (param .Listens , listens ... )
357+
358+ listenRests := result .GetRests ()
359+ param .Listens = append (param .Listens , listenRests ... )
360+
361+ param .ListensPlain , _ = result .GetStrings ("listensplain" )
362+
363+ param .ListensTLS , _ = result .GetStrings ("listenstls" )
364+
365+ // hsts & https
366+ if len (param .ListensTLS ) > 0 {
367+ param .GlobalHsts = result .HasKey ("globalhsts" )
368+ if param .GlobalHsts {
369+ param .GlobalHsts = validateHstsPort (param .ListensPlain , param .ListensTLS )
370+ }
371+
372+ param .GlobalHttps = result .HasKey ("globalhttps" )
373+ if param .GlobalHttps {
374+ httpsPort , _ := result .GetString ("globalhttps" )
375+ param .HttpsPort , param .GlobalHttps = normalizeHttpsPort (httpsPort , param .ListensTLS )
376+ }
377+ }
378+
359379 // shows
360380 shows , err := WildcardToRegexp (result .GetStrings ("shows" ))
361381 serverErrHandler .CheckFatal (err )
0 commit comments