Cgi
CGI (Common Gateway Interface). It is a way to communicate between browser and server. Simple scripts used to do simple tasks.
Docs and References
You'll want to consult the httpd and [httpd.conf man pages to know about httpd config blocks. You'll want to consult the httpd and [httpd.conf man pages to know about httpd config blocks.
Writing the script
We will use C language to create the script.
Create the script at your home directory /home/username/hello.c
#include <stdio.h>
int main(void)
{
puts("Status: 200 OK\r");
puts("Content-Type: text/html\r");
puts("\r");
puts("Hello, world!\n");
return 0;
}
Your script is ready, but you still need to compile it.
$ cd /home/username
$ cc hello.c -o hello.cgi
$ doas mv hello.cgi /var/www/htdocs/yoursite/cgi-bin/
Make the script executable
$ doas chmod +x /var/www/htdocs/yoursite/cgi-bin/hello.cgi
Configuring httpd.conf
Add the cgi block to your /etc/httpd.conf block for your website. It should look like this:
server "example.com" {
listen on * port 80
root "/htdocs/yoursite"
connection max request body 104857600
location "/cgi-bin/*"{
root "/htdocs/yoursite/"
fastcgi
}
location "/.well-known/acme-challenge/*" {
root "/acme"
request strip 2
}
}
NOTE: You must replace example.com with your own domain
Now any scripts that you add in ##STARTCODEBLOCK## /var/www/htdocs/yoursite/cgi-bin ##ENDCODEBLOCK## directory will be accessible by ##STARTCODEBLOCK## http://example.com/cgi-bin/scriptname ##ENDCODEBLOCK##
Make sure you edit the block accordingly if you are using TLS.
enable the server to run the script, we will use Slowcgi .
Enable and start slowcgi
$ doas rcctl enable slowcgi
$ doas rcctl start slowcgi
Enable and start httpd if you haven't already
$ doas rcctl enable httpd
$ doas rcctl start httpd
Go to http://example.com/cgi-bin/hello.cgi
and you will see "Hello world" printed on your screen!