Skip to content

Commit

Permalink
If ssl is enabled, require ssl
Browse files Browse the repository at this point in the history
  • Loading branch information
nvoxland committed Dec 29, 2020
1 parent a8803ea commit d52450f
Showing 1 changed file with 24 additions and 9 deletions.
33 changes: 24 additions & 9 deletions server/system_control/internal/server/webserver/webserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,20 +44,13 @@ func Start(ctx context.Context) error {

http.HandleFunc("/", handleRequest)

go func() {
logger.Println("Starting listener on port 80")
if err := http.ListenAndServe(":80", nil); err != nil {
e := fmt.Errorf("error starting webserver listener on port 80: %s", err)
logger.Println(e)
//ui.Fatal(e)
}
}()

httpsSupported := false
_, err = os.Stat(sslKeyFilePath)
if err == nil {
_, err = os.Stat(sslCertFilePath)
if err == nil {
go func() {
httpsSupported = true
logger.Println("Starting listener on port 443")
if err := http.ListenAndServeTLS(":443",
sslCertFilePath,
Expand All @@ -75,6 +68,20 @@ func Start(ctx context.Context) error {
logger.Printf("Not starting https, cannot use key in %s: %s", sslKeyFilePath, err)
}

go func() {
var handler http.Handler
if httpsSupported {
handler = http.HandlerFunc(redirectToHttps)
}

logger.Println("Starting listener on port 80")
if err := http.ListenAndServe(":80", handler); err != nil {
e := fmt.Errorf("error starting webserver listener on port 80: %s", err)
logger.Println(e)
//ui.Fatal(e)
}
}()

go func() {
select {
case <-ctx.Done():
Expand Down Expand Up @@ -202,3 +209,11 @@ func proxyToKubernetes(res http.ResponseWriter, req *http.Request) error {

return nil
}

func redirectToHttps(responseWriter http.ResponseWriter, requeset *http.Request) {
target := "https://" + requeset.Host + requeset.URL.Path
if len(requeset.URL.RawQuery) > 0 {
target += "?" + requeset.URL.RawQuery
}
http.Redirect(responseWriter, requeset, target, http.StatusMovedPermanently)
}

0 comments on commit d52450f

Please sign in to comment.