Caution
This is super-duper insecure and bad code. It is not worth using in the modern age, and not worth fixing either. Please do not use this ever.
There are actual, known command injection vulnerabilities here.
If you really want to use a webserver written by me, use SpruceHTTP, which is way more secure and robust.
A webserver designed and programmed by a bored 16 year old that has nothing better to do.
Create the directory /var/www/html, or edit the 'default' configuration location to point to another folder that already exists.
Create index.html in that folder and put whatever you want in it.
Run ./start.sh
The configuration file is a JSON file that contains the settings for every website you have running. If it's not found in there, the 'default' configuration is used.
To create a new site, append a comma to the end of the last entry in the main.conf, in between the curly brackets.
In quotes, type out the full domain name, with separate entries for with and without a www.
After the quote, type a : and then an open curly bracket.
In quotes, type "type", then a : and then in quotes "local"
Append a comma, then type in quotes "location", a :, and then in quotes the folder you wish the domain to point to.
Ex:
{
"default": {"type": "local", "location": "/var/www/html"},
"www.example.com": {"type": "local", "location": "/var/www/html2"}
}JoshieHTTPD supports proxying of external or internal sites, and ports.
Follow the above instructions to add a new site, but instead of the "type" being "local", change "local" to "proxy"
Then, instead of a folder for the location, put the URL of the place you would like to proxy to. make sure that you put a http:// or a https:// in front of the URL. If you would like to proxy a port, simply append a : and then the port in side of the quotes.
Ex:
{
"default": {"type": "proxy", "location": "http://www.example.com"},
"api.example.com": {"type": "proxy", "location": "http://localhost:8080"}
}PHP, Ruby, Python, etc. is not supported in JoshieHTTP. Mainly because I didn't feel like adding them. Too much. So, to make up for that, I made the .sjs extension for scripting. It's just a .js file, but renamed. It runs in node.js, and all URL parameters and cookies (cookies in a single variable called "COOKIES") are passed on as environment variables to the script. You can go on from there, reading the variables. It's all run server-side, and to send data back you just send it back in a console.log();. There's actually a lot you can do with this. Happy scripting!
Update: PHP support now added. Some (most) features don't work, since it's just called directly from the command line, but it's a start! Just make sure PHP is installed on your server. Just add "php_enabled" to your configuration file for the sites you want PHP on. Happy scripting!
Coming soon: JoshieScript in the .jspt format
If you wish for JoshieHTTP to run with SSL (who wouldn't?), create a directory named ssl in the same directory as index.js
In ssl, you need two files. key.pem, which is your private key, and cert.pem, which is your certificate file.
Then, run ./start-ssl.sh