// Jonathan Frech, 8th of August 2020 package main import ( "fmt" "log" "net/http" "html/template" ) func handle(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, `

ip ` + template.HTMLEscapeString(r.RemoteAddr) + ` requesting ` + template.HTMLEscapeString(r.URL.Path) + `

`) } func handleHTTP(w http.ResponseWriter, r *http.Request) { target := "https://" + r.Host + r.URL.Path if len(r.URL.RawQuery) > 0 { target += "?" + r.URL.RawQuery } http.Redirect(w, r, target, http.StatusTemporaryRedirect) } func main() { http.HandleFunc("/", handle) go http.ListenAndServe(":80", http.HandlerFunc(handleHTTP)) log.Fatal(http.ListenAndServeTLS(":443", "/etc/letsencrypt/live/www.jfrech.com/fullchain.pem", "/etc/letsencrypt/live/www.jfrech.com/privkey.pem", nil)) }