A Golang HTTP FileSystem that disables directory indexing
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
.gitignore
.travis.yml
LICENSE
README.md
doc.go
go.mod
unindexed.go
unindexed_test.go

README.md

unindexed

Go Report Card GoDoc TravisCI

A Golang HTTP FileSystem that disables directory indexing.

Motivation

By default, the http.Dir filesystem has directory indexing enabled. For example, let's say you have a .git/ folder at the root of the folder you're serving. If someone were to request your_url/.git/, the contents of the folder would be listed.

This package disables directory indexing, preventing the contents from being listed.

Installation

go get -u github.com/jordan-wright/unindexed

Usage

The easiest way to use unindexed is as a drop-in replacement for http.Dir, which is commonly used to serve static files.

Here's a simple example using the gorilla/mux router:

package main

import (
	"log"
	"net/http"

	"github.com/gorilla/mux"
	"github.com/jordan-wright/unindexed"
)

func main() {
	router := mux.NewRouter()
	router.PathPrefix("/").Handler(http.FileServer(unindexed.Dir("../static")))
	log.Fatal(http.ListenAndServe(":8080", router))
}

Other examples can be found in the examples/ directory.