Merge pull request #248 from hacdias/master

browse: Option to ignore indexes
This commit is contained in:
Matt Holt 2015-09-17 19:01:12 -06:00
commit 66fb8f031b
2 changed files with 14 additions and 10 deletions

View file

@ -17,8 +17,9 @@ func Browse(c *Controller) (middleware.Middleware, error) {
} }
browse := browse.Browse{ browse := browse.Browse{
Root: c.Root, Root: c.Root,
Configs: configs, Configs: configs,
IgnoreIndexes: false,
} }
return func(next middleware.Handler) middleware.Handler { return func(next middleware.Handler) middleware.Handler {

View file

@ -23,9 +23,10 @@ import (
// Browse is an http.Handler that can show a file listing when // Browse is an http.Handler that can show a file listing when
// directories in the given paths are specified. // directories in the given paths are specified.
type Browse struct { type Browse struct {
Next middleware.Handler Next middleware.Handler
Root string Root string
Configs []Config Configs []Config
IgnoreIndexes bool
} }
// Config is a configuration for browsing in a particular path. // Config is a configuration for browsing in a particular path.
@ -142,16 +143,18 @@ var IndexPages = []string{
"default.txt", "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 fileinfos []FileInfo
var urlPath = r.URL.Path var urlPath = r.URL.Path
for _, f := range files { for _, f := range files {
name := f.Name() name := f.Name()
// Directory is not browsable if it contains index file // Directory is not browsable if it contains index file
for _, indexName := range IndexPages { if !ignoreIndexes {
if name == indexName { for _, indexName := range IndexPages {
return Listing{}, errors.New("Directory contains index file, not browsable!") 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 // 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 if err != nil { // directory isn't browsable
continue continue
} }