From 30b19190dc4e1a2d82ca89c89cec1cd696f5c815 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 17 Sep 2015 20:33:39 +0100 Subject: [PATCH] add ignoreIndexes option to browse --- middleware/browse/browse.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/middleware/browse/browse.go b/middleware/browse/browse.go index 8036896f..c4ff6ef5 100644 --- a/middleware/browse/browse.go +++ b/middleware/browse/browse.go @@ -23,9 +23,10 @@ import ( // Browse is an http.Handler that can show a file listing when // directories in the given paths are specified. type Browse struct { - Next middleware.Handler - Root string - Configs []Config + Next middleware.Handler + Root string + Configs []Config + IgnoreIndexes bool } // Config is a configuration for browsing in a particular path. @@ -142,16 +143,18 @@ var IndexPages = []string{ "default.txt", } -func directoryListing(files []os.FileInfo, r *http.Request, canGoUp bool, root string) (Listing, error) { +func directoryListing(files []os.FileInfo, r *http.Request, canGoUp bool, root string, ignoreIndexes bool) (Listing, error) { var fileinfos []FileInfo var urlPath = r.URL.Path for _, f := range files { name := f.Name() // Directory is not browsable if it contains index file - for _, indexName := range IndexPages { - if name == indexName { - return Listing{}, errors.New("Directory contains index file, not browsable!") + if !ignoreIndexes { + for _, indexName := range IndexPages { + if name == indexName { + return Listing{}, errors.New("Directory contains index file, not browsable!") + } } } @@ -234,7 +237,7 @@ func (b Browse) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) { } } // Assemble listing of directory contents - listing, err := directoryListing(files, r, canGoUp, b.Root) + listing, err := directoryListing(files, r, canGoUp, b.Root, b.IgnoreIndexes) if err != nil { // directory isn't browsable continue }