Merge pull request #1161 from krishnasrinivas/feb-23

UI: serve index.html if the requested file is not found in the assets bundle.
This commit is contained in:
Harshavardhana 2016-02-23 12:14:52 -08:00
commit 997141d031
2 changed files with 15 additions and 6 deletions

View File

@ -104,7 +104,7 @@ func (h redirectHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
// '/rpc' is redirected to 'locationPrefix/rpc' // '/rpc' is redirected to 'locationPrefix/rpc'
// '/login' is redirected to 'locationPrefix/login' // '/login' is redirected to 'locationPrefix/login'
switch r.URL.Path { switch r.URL.Path {
case "/", "/rpc", "/login": case "/", "/rpc", "/login", "/favicon.ico":
location := h.locationPrefix + r.URL.Path location := h.locationPrefix + r.URL.Path
// Redirect to new location. // Redirect to new location.
http.Redirect(w, r, location, http.StatusTemporaryRedirect) http.Redirect(w, r, location, http.StatusTemporaryRedirect)

View File

@ -19,7 +19,6 @@ package main
import ( import (
"net" "net"
"net/http" "net/http"
"path"
router "github.com/gorilla/mux" router "github.com/gorilla/mux"
jsonrpc "github.com/gorilla/rpc/v2" jsonrpc "github.com/gorilla/rpc/v2"
@ -58,6 +57,16 @@ type webAPI struct {
secretAccessKey string secretAccessKey string
} }
// indexHandler - Handler to serve index.html
type indexHandler struct {
handler http.Handler
}
func (h indexHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
r.URL.Path = privateBucket + "/"
h.handler.ServeHTTP(w, r)
}
// registerAPIHandlers - register all the handlers to their respective paths // registerAPIHandlers - register all the handlers to their respective paths
func registerAPIHandlers(mux *router.Router, a storageAPI, w *webAPI) { func registerAPIHandlers(mux *router.Router, a storageAPI, w *webAPI) {
// Minio rpc router // Minio rpc router
@ -72,10 +81,10 @@ func registerAPIHandlers(mux *router.Router, a storageAPI, w *webAPI) {
// RPC handler at URI - /minio/rpc // RPC handler at URI - /minio/rpc
minio.Path("/rpc").Handler(rpc) minio.Path("/rpc").Handler(rpc)
// Serve javascript files and favicon.ico from assets
// Web handler assets at URI - /minio/login minio.Path("/{assets:[^/]+.js|favicon.ico}").Handler(http.StripPrefix(privateBucket, http.FileServer(assetFS())))
minio.Path("/login").Handler(http.StripPrefix(path.Join(privateBucket, "login"), http.FileServer(assetFS()))) // Serve index.html for rest of the requests
minio.Path("/{file:.*}").Handler(http.StripPrefix(privateBucket, http.FileServer(assetFS()))) minio.Path("/{index:.*}").Handler(indexHandler{http.StripPrefix(privateBucket, http.FileServer(assetFS()))})
// API Router // API Router
api := mux.NewRoute().PathPrefix("/").Subrouter() api := mux.NewRoute().PathPrefix("/").Subrouter()