in server mode: serve static files from data dir
authorpaul <paul@plutz.net>
Mon, 10 Oct 2016 12:04:45 +0000 (12:04 +0000)
committerpaul <paul@plutz.net>
Mon, 10 Oct 2016 12:04:45 +0000 (12:04 +0000)
svn path=/trunk/; revision=36

index.cgi
server.sh
static.sh

index c546b9a..021c516 100755 (executable)
--- 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
index dc97607..4eb253f 100755 (executable)
--- 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
index e8de7d1..ec860c6 100755 (executable)
--- 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