diff options
Diffstat (limited to 'preprocessor/main.sh')
-rwxr-xr-x | preprocessor/main.sh | 55 |
1 files changed, 39 insertions, 16 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 |