Redirect HTTP to HTTPS

pull/69/head
Thomas Buckley-Houston 2018-06-27 17:10:48 +08:00
rodzic af1f47bc65
commit 752f34ddb3
1 zmienionych plików z 15 dodań i 2 usunięć

Wyświetl plik

@ -78,17 +78,23 @@ func (h *slashFix) ServeHTTP(w http.ResponseWriter, r *http.Request) {
func handleHTTPServerRequest(w http.ResponseWriter, r *http.Request) {
var message string
urlForBrowsh, _ := url.PathUnescape(strings.TrimPrefix(r.URL.Path, "/"))
if isProductionHTTP(r) {
http.Redirect(w, r, "https://" + r.Host + "/" + urlForBrowsh, 301)
return
}
w.Header().Set("Cache-Control", "public, max-age=600")
if strings.TrimSpace(urlForBrowsh) == "" {
if (strings.Contains(r.Host, "text.")) {
message = "Welcome to the Browsh plain text client.\n" +
"You can use it by appending URLs like this;\n" +
"http://html.brow.sh/https://www.brow.sh"
"https://html.brow.sh/https://www.brow.sh"
} else {
message = "<html>" +
"Welcome to the Browsh HTML web client.<br />" +
"Type a URL after 'html.brow.sh' in your URL bar, eg;<br />" +
"<a href=\"http://html.brow.sh/https://www.brow.sh\">http://html.brow.sh/https://www.brow.sh</a><br />" +
"<a href=\"https://html.brow.sh/https://www.brow.sh\">" +
"https://html.brow.sh/https://www.brow.sh" +
"</a><br />" +
"</html>"
}
io.WriteString(w, message)
@ -108,6 +114,13 @@ func handleHTTPServerRequest(w http.ResponseWriter, r *http.Request) {
waitForResponse(rawTextRequestID, w)
}
func isProductionHTTP(r *http.Request) bool {
if (strings.Contains(r.Host, "brow.sh")) {
return r.Header.Get("X-Forwarded-Proto") == "http"
}
return false
}
// 'PLAIN' mode returns raw text without any HTML whatsoever.
// 'HTML' mode returns some basic HTML tags for things like anchor links.
func getRawTextMode(r *http.Request) string {