From b3455673aa27e118f55b91fe69a4b07c42dbe3a7 Mon Sep 17 00:00:00 2001 From: paul Date: Mon, 10 Oct 2016 12:04:45 +0000 Subject: [PATCH] in server mode: serve static files from data dir svn path=/trunk/; revision=36 --- index.cgi | 6 +++--- server.sh | 7 +++++++ static.sh | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/index.cgi b/index.cgi index c546b9a..021c516 100755 --- a/index.cgi +++ b/index.cgi @@ -28,13 +28,13 @@ real="$(readlink -f $call)" export _DATA="$(dirname "$call")" #storage directory export _EXEC="${real%/shcgi/index.cgi}" #execution directory +. "$_EXEC/shcgi/misc.sh" + if [ "$1" = '--server' -o "$1" = '--inetd' -o "$1" = '--ncat' ]; then . "$_EXEC/shcgi/server.sh" $@ else HTTP_format(){ cat } fi - -. "$_EXEC/shcgi/misc.sh" # put debug options in the local.opts file . "$_EXEC/shcgi/debug.sh" @@ -49,7 +49,7 @@ ACTION=$(validate "${ACTION:-${_GET[action]}}" '[a-zA-Z0-9_-]+' '') STATIC=$(invalidate "${STATIC:-${_GET[static]}}" '(^|.*/)\.\./.*' '') if [ -n "$STATIC" -a -e "${_EXEC}/static/${STATIC}" ]; then - . "$_EXEC/shcgi/static.sh" + . "$_EXEC/shcgi/static.sh" "$_EXEC/static/$STATIC" elif [ -n "$ACTION" -a -x "${_EXEC}/actions/${ACTION}.sh" ]; then . "${_EXEC}/actions/${ACTION}.sh" elif [ -n "$PAGE" -a -x "${_EXEC}/pages/${PAGE}.sh" ]; then diff --git a/server.sh b/server.sh index dc97607..4eb253f 100755 --- a/server.sh +++ b/server.sh @@ -84,3 +84,10 @@ HTTP_format(){ bX ' } + +PATH_INFO="$(invalidate "${PATH_INFO}" '(^|.*/)\.\./.*' '')" + +if [ -z "$QUERY_STRING" -a -f "$_DATA/$PATH_INFO" ]; then + . "$_EXEC/shcgi/static.sh" "$_DATA/$PATH_INFO" + exit 0 +fi |HTTP_format diff --git a/static.sh b/static.sh index e8de7d1..ec860c6 100755 --- a/static.sh +++ b/static.sh @@ -19,7 +19,7 @@ unset length date file suffix -file="$_EXEC/static/$STATIC" +file="$1" date="$(stat -c %Y "$file")" # allow overriding magic file recognition -- 2.39.2