X-Git-Url: http://git.plutz.net/?p=cgilite;a=blobdiff_plain;f=file.sh;h=084b7e643ee03ad3f55065e02d3bfa1d9865fa94;hp=90e8f9c91d4b339aba048542c3c7ea453955c94d;hb=318867de22a49dc1e348cc1173ee4cdeb977d7b1;hpb=69474bafc0d39135f537512a6b359c612747d7a8 diff --git a/file.sh b/file.sh index 90e8f9c..084b7e6 100755 --- a/file.sh +++ b/file.sh @@ -1,4 +1,4 @@ -#!/bin/zsh +#!/bin/sh # Copyright 2016 - 2018 Paul Hänsch # @@ -17,6 +17,9 @@ # You should have received a copy of the GNU Affero General Public License # along with cgilite. If not, see . +[ -n "$include_fileserve" ] && return 0 +include_fileserve="$0" + file_type(){ case ${1##*.} in html|html) printf 'text/html';; @@ -37,14 +40,14 @@ file_type(){ } FILE(){ - unset range file_size file_date http_date cachedate + local file file_size file_date http_date cachedate range file="$1" if ! [ -f "$file" ]; then - printf 'Status: 404 Not Found\r\n\r\n' + printf 'Content-Length: 0\r\nStatus: 404 Not Found\r\n\r\n' exit 0 elif ! [ -r "$file" ]; then - printf 'Status: 403 Forbidden\r\n\r\n' + printf 'Content-Length: 0\r\nStatus: 403 Forbidden\r\n\r\n' exit 0 fi @@ -79,6 +82,7 @@ FILE(){ if [ "$file_date" -lt "$cachedate" ] 2>&-; then printf '%s: %s\r\n' \ Status '304 Not Modified' \ + Content-Length 0 \ Last-Modified "$http_date" printf '\r\n' @@ -105,11 +109,12 @@ FILE(){ [ "$REQUEST_METHOD" != HEAD ] \ && tail -c+$((${range%-*} + 1)) "$file" \ - | head -c "$((${range#*-} - ${range%-*} + 1))" + | head -c "$((${range#*-} - ${range%-*} + 1))" elif [ "${range%-*}" -gt "${range#*-}" ]; then printf '%s: %s\r\n' \ Status "216 Range Not Satisfiable" \ + Content-Length 0 \ Content-Range \*/${file_size} printf '\r\n' fi