All Projects → thecoshman → Http

thecoshman / Http

Licence: mit
Host These Things Please - a basic http server for hosting a folder fast and simply

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Http

Jetty.project
Eclipse Jetty® - Web Container & Clients - supports HTTP/2, HTTP/1.1, HTTP/1.0, websocket, servlets, and more
Stars: ✭ 3,260 (+1085.45%)
Mutual labels:  http2, https, http-server
tipi
Tipi - the All-in-one Web Server for Ruby Apps
Stars: ✭ 214 (-22.18%)
Mutual labels:  https, http2, http-server
libmicrohttpd-http2
HTTP/2 support for libmicrohttpd
Stars: ✭ 21 (-92.36%)
Mutual labels:  https, http2, http-server
Cowboy
Small, fast, modern HTTP server for Erlang/OTP.
Stars: ✭ 6,533 (+2275.64%)
Mutual labels:  http2, https, http-server
Farwest
Framework for building RESTful HATEOAS-driven applications.
Stars: ✭ 18 (-93.45%)
Mutual labels:  http2, https, http-server
Watsonwebserver
Watson is the fastest, easiest way to build scalable RESTful web servers and services in C#.
Stars: ✭ 125 (-54.55%)
Mutual labels:  server, https, http-server
Go Bootstrap
Easy way to bootstrap a web server in Go (Routing|Middleware|Https)
Stars: ✭ 27 (-90.18%)
Mutual labels:  server, https, http-server
Armor
Uncomplicated, modern HTTP server
Stars: ✭ 1,629 (+492.36%)
Mutual labels:  server, http2, https
phorklift
Phorklift is an HTTP server and proxy daemon, with clear, powerful and dynamic configuration.
Stars: ✭ 43 (-84.36%)
Mutual labels:  http2, http-server
Ghost-over-Caddy
This repo/script will install Ghost blog over Caddy web server as a reverse proxy.
Stars: ✭ 20 (-92.73%)
Mutual labels:  https, http2
3dub
www dev server with livereload, file watching, http2, https, self signed cert generation
Stars: ✭ 28 (-89.82%)
Mutual labels:  https, http2
cryptonice
CryptoNice is both a command line tool and library which provides the ability to scan and report on the configuration of SSL/TLS for your internet or internal facing web services. Built using the sslyze API and ssl, http-client and dns libraries, cryptonice collects data on a given domain and performs a series of tests to check TLS configuration…
Stars: ✭ 91 (-66.91%)
Mutual labels:  https, http2
hunt-http
http library for D, support http 1.1 / http 2.0 (http2) / websocket server and client.
Stars: ✭ 29 (-89.45%)
Mutual labels:  http2, http-server
Kvantum
An intellectual (HTTP/HTTPS) web server with support for server side templating (Crush, Apache Velocity and JTwig)
Stars: ✭ 17 (-93.82%)
Mutual labels:  https, http-server
esa-httpclient
An asynchronous event-driven HTTP client based on netty.
Stars: ✭ 82 (-70.18%)
Mutual labels:  https, http2
PuppyProxy
A simple HTTP proxy in C# including support for HTTP CONNECT tunneling
Stars: ✭ 37 (-86.55%)
Mutual labels:  https, http-server
lolhttp
An HTTP Server and Client library for Scala.
Stars: ✭ 93 (-66.18%)
Mutual labels:  https, http2
restler
Restler is a beautiful and powerful Android app for quickly testing REST API anywhere and anytime.
Stars: ✭ 120 (-56.36%)
Mutual labels:  https, http2
node-jsonrpc2
JSON-RPC 2.0 server and client library, with HTTP (with Websocket support) and TCP endpoints
Stars: ✭ 103 (-62.55%)
Mutual labels:  https, http-server
gost
GO Simple Tunnel - a simple tunnel written in golang
Stars: ✭ 154 (-44%)
Mutual labels:  https, http2

http Travis build status AppVeyor build status Licence Crates.io version

Host These Things Please - a basic HTTP server for hosting a folder fast and simply

Selected features

See the manpage for full list.

  • [x] Symlinks followed by default (disableable via -s option)
  • [x] Index generation for directories
  • [x] Sane defaults (like hosted dir (.) and port (first free one from range 8000-9999))
  • [x] Correct MIME type for served files
  • [x] Handled request methods: OPTIONS, GET, PUT, DELETE, HEAD and TRACE ("writing" methods are off by default, enable via -w switch)
  • [x] Proper handling of percent-encoded URLs (like асдф fdsa)
  • [x] Good symlink handling compatible with Windows
  • [x] Multitude of information in directory indices
  • [x] Serving index files like index.{html,htm,shtml} from directories (disableable via -i switch)
  • [x] Drag&Drop to upload files (with -w specified)
  • [x] Smart encoding of generated and filesystem-originating responses (disableable via -e switch)
  • [x] Full Range header support
  • [x] Hosting with an (optional) optionally autogenerated TLS certificate
  • [x] Arbitrarily nested username/password authentication
  • [x] Per-request bandwidth cap
  • [x] Per-extension-overridable MIME-types with reasonable guesses
  • [x] WebDAV/RFC2518 support, tested with the Linux davfs2 helper, Windows network filesystem support (out-of-box), and the Total Commander WebDAV plugin
  • [x] RFSAPI support (format spec) (explorable from commandline with D'Oh)

Manpage

Installation

If you have cargo installed (you're a Rust developer) all you need to do is:

cargo install https

Which will install http and httplz (identical, disable one or another if they clash) in the folder where all other binaries go.

If, however, you're not a Rust developer, but you have sh-like shell, you can use an installer (works on Windows and Linux):

curl -SsL https://cdn.rawgit.com/thecoshman/http/master/install.sh | sh
# or, if you like taking precautions
sh -c "$(curl -SsL https://cdn.rawgit.com/thecoshman/http/master/install.sh)"

You can change the installation directory by setting the PREFIX environment variable (default - /usr/bin):

PREFIX=$HOME/bin curl -SsL https://cdn.rawgit.com/thecoshman/http/master/install.sh | sh
# Windows:
set PREFIX=D:\Akces
curl -SsL https://cdn.rawgit.com/thecoshman/http/master/install.sh | sh

If you're on a Debian-based amd64 machine, you can also grab a .deb package from the latest release page.

If you're on Windows and prefer a more guided installation (or you don't have a shell), you can download the Windows installer from the latest release's page. (Note: you can add /D INSTALLDIR to installer command line to change the installation directory.)

Aims

The idea is to make a program that can compile down to a simple binary that can be used via Linux CLI to quickly take the current directory and serve it over HTTP. Everything should have sensible defaults such that you do not have to pass parameters like what port to use.

  • [x] Sub directories would be automatically hosted.
  • [ ] Symlinks will not be followed by default (in my opinion, this is more likely to be a problem than an intended thing).
  • [x] Root should not be required.
  • [x] If an index file isn't provided, one will be generated (in memory, no touching the disk, why would you do that you dirty freak you), that will list the current files and folders (and then sub directories will have index files generated as required)
  • [x] Changes made to files should be reflected instantly, as I don't see why anything would be cached... you request a file, a file will be looked for

It's not going to be a 'production ready' tool, it's a quick and dirty way of hosting a folder, so whilst I'll try to make it secure, it is not going to be a serious goal.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].