bashttp/README.md

62 lines
1.6 KiB
Markdown

# bashttp
A very goofy http server that runs scripts based of the given URI route
## Config
All routes and scripts must be layed out in a file called config, or you can specift the path by setting the `CONFIG_PATH` env variable.
An example config is shown below
```
GET / command.sh
POST /joe headers.sh
POST /echo body.sh
```
As shown above, each line is the method route given to run a given script.
## Scripts
Anything written to a scripts stdout will be treated as part of the HTTP Response.
Therefore the first things returned will be treated as headers. To stop reading headers, print a `\n` to stdout to
tell the HTTP Response that the headers have ended.
All content after the headers will be treated as the response body, and the scripts exit code will be treated as the http response code.
An example script that gives custom headers is shown below:
```sh
#!/bin/bash
# print headers that will be returned
printf "Content-Type: text/plain\n"
printf "aaaaaaaa: AAAAAAAAAA\n"
printf "\n"
printf "joe\n"
# return http code 200
exit 200
```
Finally if you wish to read the request body given by the user, that is always stored in argument 1. For example to create a echo endpoint:
```sh
#!/bin/bash
# even though we have no headers
# we still need to tell there will be no more headers
printf "\n"
# the body of any http request made will be stored in argument 1
printf "$1"
exit 200
```
## License
This project is licensed under the [WTFPL](https://www.wtfpl.net/)
## Warrenty
This project is probably not secure and if it beaks, uh... have fun
...wtfpl