aboutsummaryrefslogtreecommitdiff
path: root/preprocessor
diff options
context:
space:
mode:
Diffstat (limited to 'preprocessor')
-rwxr-xr-xpreprocessor/main.sh55
-rwxr-xr-xpreprocessor/url.sh12
2 files changed, 49 insertions, 18 deletions
diff --git a/preprocessor/main.sh b/preprocessor/main.sh
index 5aff989..081e5a1 100755
--- a/preprocessor/main.sh
+++ b/preprocessor/main.sh
@@ -1,17 +1,40 @@
#!/bin/bash
-data=$(cat index.bhtml | envsubst)
-echo "HTTP/1.1 200 OK"
-echo "Server: Bashweb"
-echo "Date: $(date)"
-echo "Content-Type: text/html; charset=utf-8"
-echo "Content-Length: ${#data}"
-echo "Connection: keep-alive"
-echo "X-Frame-Options: SAMEORIGIN"
-echo "X-XSS-Protection: 1; mode=block"
-echo "Cache-Control: private, no-cache, no-store, must-revalidate"
-echo "X-Content-Type-Options: nosniff"
-echo "Pragma: no-cache"
-echo "Expires: Sat, 01 Jan 2000 00:00:00 GMT"
-echo "Referrer-Policy: no-referrer-when-downgrade"
-echo ""
-echo $data
+read -r REQUEST_LINE
+export REQUEST_LINE="$REQUEST_LINE"
+export REQUEST_METHOD=$(echo "$REQUEST_LINE" | cut -d' ' -f1)
+export REQUEST_DOCUMENT=$(echo "$REQUEST_LINE" | cut -d' ' -f2)
+export REQUEST_PROTOCOL=$(echo "$REQUEST_LINE" | rev | cut -d' ' -f1 | rev)
+
+export e404=$(cat errors/404.bhtml | envsubst)
+
+echo "./public/$(./preprocessor/url.sh $REQUEST_DOCUMENT)" >> log
+if [ -f "./public/$(./preprocessor/url.sh $REQUEST_DOCUMENT)" ]; then
+ if [[ $(file --mime-type -b "./public/$(./preprocessor/url.sh $REQUEST_DOCUMENT)") == text/html ]]; then
+ export data=$(cat "./public/$(./preprocessor/url.sh $REQUEST_DOCUMENT)" | envsubst)
+ fi
+
+ echo "HTTP/1.1 200 OK"
+ echo "Server: Bashweb/"$bashweb_version"; bash/"$(bash --version | head -1 | cut -d' ' -f4)"; "$(uname -s)"/"$(uname -r)
+ echo "Connection: close"
+ if [[ $(file --mime-type -b "./public/$(./preprocessor/url.sh $REQUEST_DOCUMENT)") == text/html ]]; then
+ echo "Content-Length: "$(echo "$data" | wc -c)
+ fi
+ echo "Content-Type: "$(file --mime-type -b "./public/$(./preprocessor/url.sh $REQUEST_DOCUMENT)")
+ echo $(file --mime-type -b "./public/$(./preprocessor/url.sh $REQUEST_DOCUMENT)") >> log
+ echo ""
+ #echo "$data"
+ #echo "garbage"
+ if [[ $(file --mime-type -b "./public/$(./preprocessor/url.sh $REQUEST_DOCUMENT)") == text/html ]]; then
+ echo "$data"
+ else
+ cat "./public/$(./preprocessor/url.sh $REQUEST_DOCUMENT)"
+ fi
+else
+ echo "HTTP/1.1 404 Not Found"
+ echo "Server: Bashweb/"$bashweb_version"; bash/"$(bash --version | head -1 | cut -d' ' -f4)"; "$(uname -s)"/"$(uname -r)
+ echo "Connection: close"
+ echo "Content-Length: "$(echo "$e404" | wc -c)
+ echo "Content-Type: text/html"
+ echo ""
+ echo "$e404"
+fi
diff --git a/preprocessor/url.sh b/preprocessor/url.sh
index bc4e221..1c04b90 100755
--- a/preprocessor/url.sh
+++ b/preprocessor/url.sh
@@ -1,4 +1,12 @@
#!/bin/bash
-read_from_pipe() { read "$@" <&0; }
+url=$1
-echo "$(read_from_pipe | head -1)"
+if [[ "$url" =~ .*"..".* ]]; then
+ url="/"
+fi
+
+if [ -f "./public/$url/index.bhtml" ]; then
+ url="/$url/index.bhtml"
+fi
+
+echo $url