https://box.matto.nl/cgi-with-awk-on-openbsd-httpd.html box.matto.nl Enjoying Open Source Software Home Most recent pages Tags All posts Links About RSS Posted: 2020-01-02 CGI with Awk on OpenBSD httpd Remember that for httpd OpenBSD chroots to /var/www. To run an Awk CGI-script on OpenBSD httpd: * set up configurations file(s) * put your script in /var/www/cgi-bin/ * populatie the chroot (meaning: /var/www/) with the needed binaries and libraries. Prepare /etc/httpd Below follows some content for /etc/httpd, with some lines for SSL certificate through the acme-client. For security, we included some simple basic authentication with htpasswd. ext_ip = "10.0.0.4" server "www.example.com" { listen on $ext_ip port 80 listen on $ext_ip tls port 443 root "/htdocs/www.example.com/" directory { index "index.html" } location "/.well-known/acme-challenge/*" { root "/acme" request strip 2 } location "/cgi-bin/*" { authenticate MySecretRealm with "/data/htpasswd" fastcgi root "/" } tls { certificate "/etc/ssl/www.example.com.crt" key "/etc/ssl/private/www.example.com.key" } } Check the file for syntax errors with: httpd -n Off course you can start with http only. leaving out the port 443 and the tls-part. Setup htpasswd mkdir /var/www/data htpasswd /var/www/data/htpasswd UserName chown -R :www /var/www/data Create a CGI-script Here is a nice example script: #!/bin/awk -f BEGIN { printf("Status: 200 OK\n"); printf("Content-type: text/plain\n\n"); for ( key in ENVIRON ) { print key " : " ENVIRON[key]; } } Put this script in /var/www/cgi-bin/test.awk Populate the chroot Create a subdirectory for bin and lib files Use ldd to determine. which lib files are needed. mkdir -p /var/www/usr/{bin,lib,libexec} cd /var/www/usr/bin/ cp /usr/bin/awk . ldd /var/www/usr/bin/awk And copy the lib files cp /usr/lib/libm.so* /var/www/usr/lib/ cp /usr/lib/libc.so* /var/www/usr/lib/ cp /usr/libexec/ld.so /var/www/usr/libexec/ld.so Enable and start slowcgi and httpd rcctl enable slowcgi rcctl enable httpd rcctl start slowcgi rcctl start httpd Now, point your browser to: * http://www.example.com/cgi-bin/test.awk * http://www.example.com/cgi-bin/test.awk?abc=123 and enjoy :) When in trouble, look for error messages in your logfiles in /var/www /logs/. Another possibility is to run /usr/sbin/httpd -dvvv and see if this turns up some helpful messages. Tags: httpd openbsd cgi Proud member of the 10kb.club and the 250kb.club. Most recent pages All tags Sitemap RSS RSS of Gophersite