diff --git a/cmd/drone-server/server.go b/cmd/drone-server/server.go index d2eb60489..c53488b8e 100644 --- a/cmd/drone-server/server.go +++ b/cmd/drone-server/server.go @@ -536,7 +536,7 @@ func server(c *cli.Context) error { // start the server with tls enabled if c.String("server-cert") != "" { g.Go(func() error { - return http.ListenAndServe(":http", handler) + return http.ListenAndServe(":http", http.HandlerFunc(redirect)) }) g.Go(func() error { serve := &http.Server{ @@ -675,6 +675,15 @@ func (a *authorizer) authorize(ctx context.Context) error { return errors.New("missing agent token") } +func redirect(w http.ResponseWriter, req *http.Request) { + var serverHost string = droneserver.Config.Server.Host + serverHost = strings.TrimPrefix(serverHost, "http://") + serverHost = strings.TrimPrefix(serverHost, "https://") + req.URL.Scheme = "https" + req.URL.Host = serverHost + http.Redirect(w, req, req.URL.String(), http.StatusMovedPermanently) +} + func cacheDir() string { const base = "golang-autocert" if xdg := os.Getenv("XDG_CACHE_HOME"); xdg != "" {