Skip to content
This repository has been archived by the owner. It is now read-only.
HTTP file server written by golang + reactjs, not maintained, move to https://github.com/codeskyblue/gohttpserver
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Godeps use github rsc lib instead of code.google, fixed #9 May 3, 2016
data change format Oct 29, 2015
docs add nginx docs Oct 28, 2015
images update screenshot, fix httpauth Oct 17, 2015
modules
public add download count show Dec 15, 2015
routers
scripts add pyftpdlib for ftp server Dec 16, 2015
templates support self define homepage Dec 3, 2015
.gitignore add download count show Dec 15, 2015
.gopack.yml add gobindata Apr 22, 2016
.travis.yml add go-bindata to travis Oct 13, 2015
CHANGELOG.md remove ftp support for now Dec 18, 2015
Makefile use github rsc lib instead of code.google, fixed #9 May 3, 2016
Procfile add pyftpdlib for ftp server Dec 16, 2015
README.md add commit close of gohttp, and move to gohttpserver Jul 31, 2016
main.go add head method for file handler Apr 14, 2016
package.json add highlight Nov 2, 2015
server.js use react hot reload for front page develop Oct 10, 2015
webpack.config.base.js add highlight code support Oct 23, 2015
webpack.config.js add highlight code support Oct 23, 2015
webpack.config.prod.js add highlight code support Oct 23, 2015

README.md

gohttp

A http file server written by golang and reactjs.

Not maintained any more. Move to https://github.com/codeskyblue/gohttpserver

Binary can be download from gobuild.io

Usage

# basic usage
gohttp --port 8000 --root /your/workdir

Usage: gohttp [<flags>]

Flags:
  -h, --help               Show context-sensitive help (also try --help-long and --help-man).
      --version            Show application version.
      --port=8000          Port to listen
      --root="."           File root directory
      --private            Only listen on loopback address
      --httpauth=HTTPAUTH  HTTP basic auth (ex: user:pass)
      --cert=CERT          TLS cert.pem
      --key=KEY            TLS key.pem
      --gzip               Enable Gzip support
      --upload             Enable upload support
      --zipable            Enable archieve folder into zip

Warning

ftp feature has a serious cpu usage problem. Be careful with that.

There are python scripts of which use pyftpdlib can do ftp server job.

screenshot screenshot

Features

  1. Support QRCode code generate
  2. All assets package to Standalone binary
  3. Different file type different icon
  4. Support show or hide hidden files
  5. Upload support
  6. README.md preview
  7. HTTP Basic Auth
  8. Gzip support
  9. When only one dir under dir, path will combine two together
  10. Directory zip download
  11. Code preview
  12. Apple ipa auto generate .plist file, qrcode can be recognized by iphone (Require https)
  13. Add ftp support(beta)
  14. Support modify the index page
  15. Download count statistics
  16. CORS enabled

About https

There is a Chinese doc about how to set up nginx and generate self signed keys

If there is a directory templates exists. The program will use templates under this dir instead use html resource inside the binary file.

Build

Suggest install node through nvm

go get -u github.com/jteeuwen/go-bindata/...
npm install -g webpack
npm install
make prod

Develop

Your need to know what is react, and golang. In develop mode, Support react hot reload

npm install
make dev

Open another terminal

go build && ./gohttp

API

Upload

POST /upload-dir

upload-dir is just a name which you can change it easily.

Field name Description Example
file Upload file file=@upload.txt
path Upload path(optional) path=/tmp/
name Save name (optional, need version set) name=foo
version Upload version version=1.2.0

Use CURL

# Normal upload
curl -F file=@upload.txt ${SERVER}

# Versioned upload
curl -F file=@foo-windows.txt -F file=@foo-mac.txt -F name=foo -F version=1.0.1 ${SERVER}

# will create dir structure
foo/
  |- foo-latest(symlink) -> foo-1.0.1
  `- foo-1.0.1/
      |- foo-windows.txt
      `- foo-mac.txt

Thanks

  1. https://github.com/shenfeng/http-watcher
  2. http://segmentfault.com/a/1190000002551952
  3. update package.json dependencies
  4. react hot reload QA
  5. https://github.com/evilstreak/markdown-js
You can’t perform that action at this time.