summaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/web.go23
1 files changed, 23 insertions, 0 deletions
diff --git a/cmd/web.go b/cmd/web.go
index 55546ea480..473688a8b8 100644
--- a/cmd/web.go
+++ b/cmd/web.go
@@ -51,6 +51,26 @@ and it takes care of all the other things for you`,
},
}
+func runHTTPRedirector() {
+ source := fmt.Sprintf("%s:%s", setting.HTTPAddr, setting.PortToRedirect)
+ dest := strings.TrimSuffix(setting.AppURL, "/")
+ log.Info("Redirecting: %s to %s", source, dest)
+
+ handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ target := dest + r.URL.Path
+ if len(r.URL.RawQuery) > 0 {
+ target += "?" + r.URL.RawQuery
+ }
+ http.Redirect(w, r, target, http.StatusTemporaryRedirect)
+ })
+
+ var err = runHTTP(source, context2.ClearHandler(handler))
+
+ if err != nil {
+ log.Fatal(4, "Failed to start port redirection: %v", err)
+ }
+}
+
func runWeb(ctx *cli.Context) error {
if ctx.IsSet("config") {
setting.CustomConf = ctx.String("config")
@@ -124,6 +144,9 @@ func runWeb(ctx *cli.Context) error {
case setting.HTTP:
err = runHTTP(listenAddr, context2.ClearHandler(m))
case setting.HTTPS:
+ if setting.RedirectOtherPort {
+ go runHTTPRedirector()
+ }
err = runHTTPS(listenAddr, setting.CertFile, setting.KeyFile, context2.ClearHandler(m))
case setting.FCGI:
listener, err := net.Listen("tcp", listenAddr)