// 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))
}