4

I'm using gorilla mux for routing in my http server

https://github.com/gorilla/mux

This is my code for disable directory listing

type justFilesFilesystem struct {
  fs               http.FileSystem
  // readDirBatchSize - configuration parameter for Readdir func
  readDirBatchSize int
}

func (fs justFilesFilesystem) Open(name string) (http.File, error) {
  f, err := fs.fs.Open(name)
  if err != nil {
    return nil, err
  }
  return neuteredStatFile{File: f, readDirBatchSize: fs.readDirBatchSize}, nil
}

type neuteredStatFile struct {
  http.File
  readDirBatchSize int
}

func (e neuteredStatFile) Stat() (os.FileInfo, error) {
  s, err := e.File.Stat()
  if err != nil {
    return nil, err
  }
  if s.IsDir() {
  LOOP:
    for {
      fl, err := e.File.Readdir(e.readDirBatchSize)
      switch err {
      case io.EOF:
        break LOOP
      case nil:
        for _, f := range fl {
          if f.Name() == "" {
            return s, err
          }
        }
      default:
        return nil, err
      }
    }
    return nil, os.ErrNotExist
  }
  return s, err
}

and this is my main func

  mux := mux.NewRouter()
  // This line why not work?
  mux.NotFoundHandler = http.HandlerFunc(NotFound)

  mux.HandleFunc("/index",HandleIndex)

  fs := justFilesFilesystem{fs: http.Dir("assets"), readDirBatchSize: 0}
  staticFileHandler := http.StripPrefix("", http.FileServer(fs))
  mux.PathPrefix("").Handler(staticFileHandler).Methods("GET")

and finally my 404 handle func

func NotFound(w http.ResponseWriter, r *http.Request) {

  fmt.Fprint(w, "404")
}

The question is how to handle custom 404 page error if file not found and also disable directory listing in the same time.

Jonathan Hall
  • 75,165
  • 16
  • 143
  • 189
Zola Man
  • 113
  • 9
  • Although only a half-answer to your question, check related question: [How to custom handle a file not being found when using go static file server?](https://stackoverflow.com/questions/47285119/how-to-custom-handle-a-file-not-being-found-when-using-go-static-file-server/47286697#47286697) – icza Feb 08 '19 at 15:58
  • Not work i checked – Zola Man Feb 08 '19 at 16:07

0 Answers0