ref: 38a5bd73c3c37cd87dbe13dcbc34b159efe47bb9
dir: /README.md/
# To run the shithub software: ```/rc/bin/service/tcp80```: ``` #!/bin/auth/box -r/mnt -r/usr/git -r/sys/lib/ -r/usr/ori -r/usr/web -r/sys/lib/shithub -r/n -r/dev -eMa -s <[3]/srv/clone{ d=`{<[0=3]read} bind /srv/$d /srv # ugly, but we don't want to leak the clone fd into # procs that may stick around. <[3=0]{ bind /usr/web /mnt/static exec /bin/tcp80 -r /sys/lib/tcp80 >>[2]/sys/log/httpd/log } } ``` ```/rc/bin/service/tcp443```: ``` #!/bin/auth/box -r/mnt -r/usr/git -r/sys/lib/ -r/usr/ori -r/usr/web -r/sys/lib/shithub -r/n -r/dev -eMa -s <[3]/srv/clone{ d=`{<[0=3]read} bind /srv/$d /srv # ugly, but we don't want to leak the clone fd into # procs that may stick around. <[3=0]{ bind /usr/web /mnt/static exec tlssrv -c/sys/lib/tls/cert.pem -lhttpd -r`{cat $3/remote} /bin/tcp80 -r /sys/lib/tcp80 >>[2]/sys/log/httpd/log } } ``` ```/lib/namespace.httpd```: ``` bind /mnt/static /usr/web/static ``` It is possible to redirect error pages by passing ```-e error```, like ```tcp80 -e 404 -e 403```. This will send a ```301 Moved Permanently``` to e.g. ```/404``` or ```/403```. It will also append the path to it: Attempting to access ```http://server/nopage.html``` would redirect to ```http://server/404/nopage.html```. It is also possible to define a set of hostnames to change the bind mounts for ```/usr/web``` based on the Host header. To use this feature, you pass ```-h file``` to tcp80. The format of the file is the same as that for execfs, a regex for the hostname, any number of tabs, with a path to be mounted over ```/usr/web```. ``` server1.domain.com /usr/webroot/server1 aardvark.different.org /usr/webroot/aardvark ``` This does not affect execfs scripts directly, although the bind mounts happen prior to their execution. If you are using the same scripts for multiple hostnames, you can check the environment using ```ns``` to find out what is mounted over ```/usr/web```. If you are using shithub, or anything similar which hooks on ```/index.html```, it will still take precedence over any static files. You can work around this by not hooking ```/index.html```, instead hook something like ```/shithub.html``` and then redirect to it.