Files
rancher/pkg/ui/routes.go
2025-09-11 15:45:38 -07:00

58 lines
2.2 KiB
Go

package ui
import (
"net/http"
"github.com/gorilla/mux"
"github.com/rancher/apiserver/pkg/parse"
"github.com/rancher/rancher/pkg/cacerts"
v3 "github.com/rancher/rancher/pkg/generated/controllers/management.cattle.io/v3"
)
func New(_ v3.PreferenceCache, clusterRegistrationTokenCache v3.ClusterRegistrationTokenCache) http.Handler {
router := mux.NewRouter()
router.UseEncodedPath()
router.Handle("/", PreferredIndex())
router.Handle("/cacerts", cacerts.Handler(clusterRegistrationTokenCache))
router.Handle("/asset-manifest.json", ember.ServeAsset())
router.Handle("/crossdomain.xml", ember.ServeAsset())
router.Handle("/dashboard", http.RedirectHandler("/dashboard/", http.StatusFound))
router.Handle("/dashboard/", vue.IndexFile())
router.Handle("/humans.txt", ember.ServeAsset())
router.Handle("/index.txt", ember.ServeAsset())
router.Handle("/robots.txt", ember.ServeAsset())
router.Handle("/VERSION.txt", ember.ServeAsset())
router.Handle("/favicon.png", vue.ServeFaviconDashboard())
router.Handle("/favicon.ico", vue.ServeFaviconDashboard())
router.Path("/verify-auth-azure").Queries("state", "{state}").HandlerFunc(redirectAuth)
router.Path("/verify-auth").Queries("state", "{state}").HandlerFunc(redirectAuth)
router.PathPrefix("/api-ui").Handler(ember.ServeAPIUI())
router.PathPrefix("/assets/rancher-ui-driver-linode").Handler(emberAlwaysOffline.ServeAsset())
router.PathPrefix("/assets").Handler(ember.ServeAsset())
router.PathPrefix("/dashboard/").Handler(vue.IndexFileOnNotFound())
router.PathPrefix("/ember-fetch").Handler(ember.ServeAsset())
router.PathPrefix("/engines-dist").Handler(ember.ServeAsset())
router.PathPrefix("/static").Handler(ember.ServeAsset())
router.PathPrefix("/translations").Handler(ember.ServeAsset())
router.NotFoundHandler = emberIndexUnlessAPI()
return router
}
func emberIndexUnlessAPI() http.Handler {
return http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
if parse.IsBrowser(req, true) {
emberIndex.ServeHTTP(rw, req)
} else {
http.NotFound(rw, req)
}
})
}
func PreferredIndex() http.Handler {
return http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
http.Redirect(rw, req, "/dashboard/", http.StatusFound)
})
}