53 lines
775 B
Bash
Executable File
53 lines
775 B
Bash
Executable File
#! /bin/rc
|
|
#TODO add content type parser
|
|
cr=
|
|
fn header{
|
|
echo $1 $2$cr
|
|
}
|
|
|
|
fn filetype{
|
|
filetype=`{file -m $1}
|
|
type=text/gemini
|
|
#TODO: expand
|
|
switch ($filetype){
|
|
case image*:
|
|
type=$filetype
|
|
}
|
|
echo $type
|
|
}
|
|
webroot=./
|
|
while(! ~ $#* 0) {
|
|
switch ($1) {
|
|
case -w
|
|
webroot=$2
|
|
shift
|
|
case -m
|
|
mflag='yes'
|
|
case *
|
|
echo Usage: g9srv/fsr [-w webroot] [-m]
|
|
exit usage
|
|
}
|
|
shift
|
|
}
|
|
fullurl=`{read}
|
|
if(~ $mflag yes)
|
|
url=`{echo $fullurl | sed 's/gemini:\/\///
|
|
s/
|
|
//'}
|
|
if not
|
|
url=`{echo $fullurl | sed 's/gemini:\/\/[0-9 a-z .]*//
|
|
s/
|
|
//'}
|
|
if(~ $url '') url=/
|
|
if(test -f $webroot$url){
|
|
header 20 text/gemini
|
|
cat $webroot$url
|
|
exit 0
|
|
}
|
|
|
|
if(test -f $webroot$url/index.gmi){
|
|
header 20 text/utf8
|
|
cat $webroot$url/index.gmi
|
|
exit 0
|
|
}
|
|
header 51 'file not found'
|
|
|