gofile icon indicating copy to clipboard operation
gofile copied to clipboard

HTTP/1.1 directory listing and file server using TCP sockets for fun

Gofile

GoDoc Build Status

A non-blocking directory listing and file server. It implementats HTTP/1.1 keepalive, chunked transfer, and byte range.

The HTTP server implementation provides a channel for writing chunked response. It could be used as a library. Read the API.

gofile

Usage

Usage: gofile port [dir]

Examples:

gofile 8080
gofile 8080 ~/public

Install

go get -u github.com/siadat/gofile

HTTP/1.1 implementation checklist

  • [x] GET and HEAD methods
  • [x] Support keep-alive connections
  • [x] Support chunked transfer encoding
  • [x] Requests must include a Host header
  • [x] Requests with Connection: close should be closed
  • [x] Support for requests with absolute URLs
  • [x] If-Modified-Since support
  • [x] Byte range support
  • [ ] Transparent response compression

Hacking

Submit an issue or send a pull request. Make sure you ./run-tests.bash to test your patch.

Thanks

Thanks @valyala for his feature suggestions. Thanks @maruel for reviewing the http package.