https://github.com/avleen/bashttpd
A web server written in bash
https://github.com/avleen/bashttpd
Last synced: 17 days ago
JSON representation
A web server written in bash
- Host: GitHub
- URL: https://github.com/avleen/bashttpd
- Owner: avleen
- License: mit
- Created: 2012-09-13T23:34:36.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2019-10-08T10:53:23.000Z (over 5 years ago)
- Last Synced: 2025-03-19T22:52:56.233Z (26 days ago)
- Language: Shell
- Size: 299 KB
- Stars: 1,521
- Watchers: 93
- Forks: 200
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-bash - bashttpd - A web server written in Bash. (Applications / Web Frameworks)
README
bashttpd is a simple, configurable web server written in bash
Requirements
-------------1. `bash`, any recent version should work
2. `socat` or `netcat` to handle the underlying sockets.
3. A healthy dose of insanityExamples
---------socat TCP4-LISTEN:8080 EXEC:/usr/local/bin/bashttpd
Or
netcat -lp 8080 -e ./bashttpd
Note that in the `socat` example above, the web server will immediately exit once the first connection closes. If you wish to serve to more than one client - like most servers do, then use the variant:
socat TCP4-LISTEN:8080,fork EXEC:/usr/local/bin/bashttpd
This way, a new process is spawned for each incoming connection.
Getting started
----------------1. Running bashttpd for the first time will generate a default configuration file, bashttpd.conf
2. Review bashttpd.conf and configure it as you want.
3. Run bashttpd using netcat or socat, as listed above.Features
---------1. Serves text and HTML files
2. Shows directory listings
3. Allows for configuration based on the client-specified URILimitations
------------1. Does not support authentication
2. Doesn't strictly adhere to the HTTP spec.Security
--------1. Only rudimentary input handling. We would not running this on a public machine.
HTTP protocol support
---------------------403: Returned when a directory is not listable, or a file is not readable
400: Returned when the first word of the first line is not `GET`
200: Returned with valid content
Content-type: Bashttpd uses /usr/bin/file to determine the MIME type to sent to the browser
1.0: The server doesn't support Host: headers or other HTTP/1.1 features - it barely supports HTTP/1.0!As always, your patches/pull requests are welcome!
Testimonials
------------"If anyone installs that anywhere, they might meet a gruesome end with a rusty fork"
--- BasHTTPd creator, maintainer