Popularity
5.1
Growing
Activity
7.8
-
203
5
19

Description

goshs is a replacement for Python's SimpleHTTPServer. It allows uploading and downloading via HTTP/S with either self-signed certificate or user provided certificate and you can use HTTP basic auth.

Programming language: Go
License: MIT License
Tags: API     REST     Web Frameworks    

goshs alternatives and similar packages

Based on the "Web Frameworks" category.
Alternatively, view goshs alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of goshs or a related project?

Add another 'Web Frameworks' Package

README

Version GitHub GitHub go.mod Go version GitHub issues goreleaser Go Report Card

goshs is a replacement for Python's SimpleHTTPServer. It allows uploading and downloading via HTTP/S with either self-signed certificate or user provided certificate and you can use HTTP basic auth.

Features

  • Download or view files
    • Bulk download as .zip file
  • Upload files (Drag & Drop)
  • Basic Authentication
  • Transport Layer Security (HTTPS)
    • self-signed
    • provide own certificate
  • Non persistent clipboard
    • Download clipboard entries as .json file
  • WebDAV support
  • Read-Only and Upload-Only mode

Installation

Release

You can download the executable from the release section

Go

go get -u github.com/patrickhener/goshs
go install github.com/patrickhener/goshs

Build yourself

git clone https://github.com/patrickhener/goshs.git
cd goshs
make build

Usage

goshs v0.1.5
Usage: ./goshs [options]

Web server options:
  -i,  --ip           The ip/if-name to listen on             (default: 0.0.0.0)
  -p,  --port         The port to listen on                   (default: 8000)
  -d,  --dir          The web root directory                  (default: current working path)
  -w,  --webdav       Also serve using webdav protocol        (default: false)
  -wp, --webdav-port  The port to listen on for webdav        (default: 8001)
  -ro, --read-only    Read only mode, no upload possible      (default: false)
  -uo, --upload-only  Upload only mode, no download possible  (default: false)

TLS options:
  -s,  --ssl          Use TLS
  -ss, --self-signed  Use a self-signed certificate
  -sk, --server-key   Path to server key
  -sc, --server-cert  Path to server certificate

Authentication options:
  -b, --basic-auth    Use basic authentication (user:pass)

Misc options:
  -v  Print the current goshs version

Usage examples:
  Start with default values:    ./goshs
  Start with wevdav support:    ./goshs -w
  Start with different port:    ./goshs -p 8080
  Start with self-signed cert:  ./goshs -s -ss
  Start with custom cert:       ./goshs -s -sk <path to key> -sc <path to cert>
  Start with basic auth:        ./goshs -b secret-user:$up3r$3cur3

Examples

Serve from your current directory

goshs

Serve from your current directory with webdav enabled on custom port

goshs -w -wp 8081

Serve from another directory

goshs -d /path/to/directory

Serve from port 1337

goshs -p 1337

Password protect the service

goshs -b secret-user:VeryS3cureP4$$w0rd

Please note: goshs uses HTTP basic authentication. It is recommended to use SSL option with basic authentication to prevent from credentials beeing transfered in cleartext over the line.

Use TLS connection

Self-Signed

goshs -s -ss

Provide own certificate

goshs -s -sk server.key -sc server.crt

Credits

A special thank you goes to sc0tfree for inspiring this project with his project updog written in Python.

Tutorial Series

I wrote several blog posts how and why I implemented all of this. You can find it here if you are interested about the technical background.


*Note that all licence references and agreements mentioned in the goshs README section above are relevant to that project's source code only.