mirror of https://github.com/minio/minio.git
				
				
				
			Fix regexp matcher of browser assets and paths (#7083)
Fix regexp matcher for special assets for the browser to clash with less of the object namespace. Assets should now be loaded with the /minio/ prefix. Previously, favicon.ico (and others) could be loaded at any path matching /minio/*/favicon.ico. This clashes with a large part of the object namespace. With this change, /minio/favicon.ico will serve the favicon but not /minio/mybucket/favicon.ico Fixes #7077
This commit is contained in:
		
							parent
							
								
									8c1b649b2d
								
							
						
					
					
						commit
						042d7f25e4
					
				|  | @ -5,13 +5,13 @@ | ||||||
|         <meta charset="UTF-8"> |         <meta charset="UTF-8"> | ||||||
|         <meta name="viewport" content="width=device-width, initial-scale=1"> |         <meta name="viewport" content="width=device-width, initial-scale=1"> | ||||||
|         <title>Minio Browser</title> |         <title>Minio Browser</title> | ||||||
|         <link rel="stylesheet" href="loader.css" type="text/css"> |         <link rel="stylesheet" href="/minio/loader.css" type="text/css"> | ||||||
|     </head> |     </head> | ||||||
| 
 | 
 | ||||||
|     <body> |     <body> | ||||||
|         <div class="page-load"> |         <div class="page-load"> | ||||||
|             <div class="pl-inner"> |             <div class="pl-inner"> | ||||||
|                 <img src="logo.svg" alt=""> |                 <img src="/minio/logo.svg" alt=""> | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
|         <div id="root"></div> |         <div id="root"></div> | ||||||
|  | @ -51,6 +51,6 @@ | ||||||
|         <![endif]--> |         <![endif]--> | ||||||
| 
 | 
 | ||||||
|         <script>currentUiVersion = 'MINIO_UI_VERSION'</script> |         <script>currentUiVersion = 'MINIO_UI_VERSION'</script> | ||||||
|         <script src="index_bundle.js"></script> |         <script src="/minio/index_bundle.js"></script> | ||||||
|     </body> |     </body> | ||||||
| </html> | </html> | ||||||
|  |  | ||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							|  | @ -19,7 +19,6 @@ package cmd | ||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"strings" |  | ||||||
| 
 | 
 | ||||||
| 	"github.com/elazarl/go-bindata-assetfs" | 	"github.com/elazarl/go-bindata-assetfs" | ||||||
| 	"github.com/gorilla/handlers" | 	"github.com/gorilla/handlers" | ||||||
|  | @ -57,7 +56,7 @@ func assetFS() *assetfs.AssetFS { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // specialAssets are files which are unique files not embedded inside index_bundle.js.
 | // specialAssets are files which are unique files not embedded inside index_bundle.js.
 | ||||||
| const specialAssets = ".*index_bundle.*.js$|.*loader.css$|.*logo.svg$|.*firefox.png$|.*safari.png$|.*chrome.png$|.*favicon.ico$" | const specialAssets = "index_bundle.*.js|loader.css|logo.svg|firefox.png|safari.png|chrome.png|favicon.ico" | ||||||
| 
 | 
 | ||||||
| // registerWebRouter - registers web router for serving minio browser.
 | // registerWebRouter - registers web router for serving minio browser.
 | ||||||
| func registerWebRouter(router *mux.Router) error { | func registerWebRouter(router *mux.Router) error { | ||||||
|  | @ -92,21 +91,14 @@ func registerWebRouter(router *mux.Router) error { | ||||||
| 	webBrowserRouter.Methods("GET").Path("/download/{bucket}/{object:.+}").Queries("token", "{token:.*}").HandlerFunc(httpTraceHdrs(web.Download)) | 	webBrowserRouter.Methods("GET").Path("/download/{bucket}/{object:.+}").Queries("token", "{token:.*}").HandlerFunc(httpTraceHdrs(web.Download)) | ||||||
| 	webBrowserRouter.Methods("POST").Path("/zip").Queries("token", "{token:.*}").HandlerFunc(httpTraceHdrs(web.DownloadZip)) | 	webBrowserRouter.Methods("POST").Path("/zip").Queries("token", "{token:.*}").HandlerFunc(httpTraceHdrs(web.DownloadZip)) | ||||||
| 
 | 
 | ||||||
| 	// Add compression for assets.
 | 	// Create compressed assets handler
 | ||||||
| 	h := http.FileServer(assetFS()) | 	compressAssets := handlers.CompressHandler(http.StripPrefix(minioReservedBucketPath, http.FileServer(assetFS()))) | ||||||
| 	compressedAssets := handlers.CompressHandler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |  | ||||||
| 		idx := strings.LastIndex(r.URL.Path, slashSeparator) |  | ||||||
| 		if idx != -1 { |  | ||||||
| 			r.URL.Path = r.URL.Path[idx+1:] |  | ||||||
| 		} |  | ||||||
| 		h.ServeHTTP(w, r) |  | ||||||
| 	})) |  | ||||||
| 
 | 
 | ||||||
| 	// Serve javascript files and favicon from assets.
 | 	// Serve javascript files and favicon from assets.
 | ||||||
| 	webBrowserRouter.Path(fmt.Sprintf("/{assets:%s}", specialAssets)).Handler(compressedAssets) | 	webBrowserRouter.Path(fmt.Sprintf("/{assets:%s}", specialAssets)).Handler(compressAssets) | ||||||
| 
 | 
 | ||||||
| 	// Serve index.html for rest of the requests.
 | 	// Serve index.html from assets for rest of the requests.
 | ||||||
| 	webBrowserRouter.Path("/{index:.*}").Handler(indexHandler{http.StripPrefix(minioReservedBucketPath, h)}) | 	webBrowserRouter.Path("/{index:.*}").Handler(indexHandler{compressAssets}) | ||||||
| 
 | 
 | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue