mirror of https://github.com/go-gitea/gitea.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.8 KiB
54 lines
1.8 KiB
// Copyright 2020 The Gitea Authors. All rights reserved. |
|
// SPDX-License-Identifier: MIT |
|
|
|
package install |
|
|
|
import ( |
|
"fmt" |
|
"html" |
|
"net/http" |
|
|
|
"code.gitea.io/gitea/modules/log" |
|
"code.gitea.io/gitea/modules/public" |
|
"code.gitea.io/gitea/modules/setting" |
|
"code.gitea.io/gitea/modules/web" |
|
"code.gitea.io/gitea/routers/common" |
|
"code.gitea.io/gitea/routers/web/healthcheck" |
|
"code.gitea.io/gitea/routers/web/misc" |
|
"code.gitea.io/gitea/services/forms" |
|
) |
|
|
|
// Routes registers the installation routes |
|
func Routes() *web.Router { |
|
base := web.NewRouter() |
|
base.Use(common.ProtocolMiddlewares()...) |
|
base.Methods("GET, HEAD", "/assets/*", public.FileHandlerFunc()) |
|
|
|
r := web.NewRouter() |
|
if sessionMid, err := common.Sessioner(); err == nil && sessionMid != nil { |
|
r.Use(sessionMid, Contexter()) |
|
} else { |
|
log.Fatal("common.Sessioner failed: %v", err) |
|
} |
|
r.Get("/", Install) // it must be on the root, because the "install.js" use the window.location to replace the "localhost" AppURL |
|
r.Post("/", web.Bind(forms.InstallForm{}), SubmitInstall) |
|
r.Get("/post-install", InstallDone) |
|
|
|
r.Get("/-/web-theme/list", misc.WebThemeList) |
|
r.Post("/-/web-theme/apply", misc.WebThemeApply) |
|
r.Get("/api/healthz", healthcheck.Check) |
|
|
|
r.NotFound(installNotFound) |
|
|
|
base.Mount("", r) |
|
return base |
|
} |
|
|
|
func installNotFound(w http.ResponseWriter, req *http.Request) { |
|
w.Header().Add("Content-Type", "text/html; charset=utf-8") |
|
w.Header().Add("Refresh", "1; url="+setting.AppSubURL+"/") |
|
// do not use 30x status, because the "post-install" page needs to use 404/200 to detect if Gitea has been installed. |
|
// the fetch API could follow 30x requests to the page with 200 status. |
|
w.WriteHeader(http.StatusNotFound) |
|
_, _ = fmt.Fprintf(w, `Not Found. <a href="%s">Go to default page</a>.`, html.EscapeString(setting.AppSubURL+"/")) |
|
}
|
|
|