// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

//go:build linux
// +build linux

package main

import (
	"net/http"
	"strings"
)

func insecureRedirectHandler() http.Handler {
	return http.HandlerFunc(insecureRedirectDispatch)
}

func insecureRedirectDispatch(w http.ResponseWriter, r *http.Request) {
	if !strings.HasPrefix(r.URL.Path, "/insecure/") {
		http.Error(w, "path does not start with /insecure/", http.StatusInternalServerError)
		return
	}

	url := *r.URL
	url.Scheme = "http" // not "https"
	if url.Host == "" {
		url.Host = r.Host
	}
	url.Path = strings.TrimPrefix(url.Path, "/insecure")
	http.Redirect(w, r, url.String(), http.StatusMovedPermanently)
}
