From 3d2d81380172d7cfb07c7a26f6fe481278f14cac Mon Sep 17 00:00:00 2001 From: niansa Date: Mon, 1 May 2017 12:36:51 +0200 Subject: [PATCH] Add files via upload --- config.sh | 8 ++++---- filelist.sh | 22 ++++++++++++++++++++++ httpheaders.sh | 18 +++++------------- init.sh | 2 +- main.sh | 11 +++++++---- sendfile.sh | 19 +++++++++++++++++++ urlcheck.sh | 23 +++++++++++++++++------ 7 files changed, 75 insertions(+), 28 deletions(-) create mode 100644 filelist.sh create mode 100644 sendfile.sh diff --git a/config.sh b/config.sh index b086cef..d153786 100644 --- a/config.sh +++ b/config.sh @@ -6,11 +6,11 @@ export FILES="/var/www/html" # Wie soll der Titel der Dateiliste sein, die aufgerufene URL ist in $URL enthalten. export HTMLTITLE="Datei: $URL" -# Wo soll das Fertige HTML-Dokument gespeichert werden? Die Variable $HTMLFILEID muss enthalten sein! -export HTMLFILE="/tmp/simpsh-html.${HTMLFILEID}.html" +# Wo soll das Fertige HTML-Dokument gespeichert werden? Die Variable $OUTFILEID muss enthalten sein! +export OUTFILE="/tmp/simpsh-html.${OUTFILEID}.html" -# Welcher Content-Type soll bei einer Unbekannten Datei gesendet werden? -export DEFAULTCONTENT="text/html" +# Welcher Content-Type soll bei einem Unbekannten Dateityp gesendet werden? +export DEFAULTCONTENTTYPE="text/html" # Port zum lauschen (Falls start-socat.sh als startscript verwendet wird) export PORT=8888 diff --git a/filelist.sh b/filelist.sh new file mode 100644 index 0000000..872cbce --- /dev/null +++ b/filelist.sh @@ -0,0 +1,22 @@ +#! /bin/bash + +status="$URL" + +# Statisches HTML +echo ' + + '"${HTMLTITLE}"' + + +

'"$status"'

+

Directory list:


+ ..
' >> $OUTFILE + +# Erstelle Dateiliste im HTML-Format +for i in $( ls "${FILE}" ); do + echo ' '"${i}"'
' >> $OUTFILE +done + +# Statisches HTML +echo ' +' >> $OUTFILE diff --git a/httpheaders.sh b/httpheaders.sh index ac5bcb5..0a0021f 100644 --- a/httpheaders.sh +++ b/httpheaders.sh @@ -1,14 +1,6 @@ #! /bin/bash -if [ "$CONTENTTYPE" = "html" ]; then - echo 'HTTP/1.1 200 OK' >> $HTMLFILE - echo 'Date: '"$(date)" >> $HTMLFILE - echo 'Server: httpd' >> $HTMLFILE - echo 'Content-Type: text/html' >> $HTMLFILE - echo '' >> $HTMLFILE -else - echo 'HTTP/1.1 200 OK' >> $HTMLFILE - echo 'Date: '"$(date)" >> $HTMLFILE - echo 'Server: httpd' >> $HTMLFILE - echo 'Content-Type: '"$CONTENT" >> $HTMLFILE - echo '' >> $HTMLFILE -fi +echo "$ANSWER" >> $OUTFILE +echo 'Date: '"$(date)" >> $OUTFILE +echo 'Server: httpd' >> $OUTFILE +echo 'Content-Type: '"$CONTENTTYPE" >> $OUTFILE +echo '' >> $OUTFILE diff --git a/init.sh b/init.sh index 0de45ea..d8420da 100644 --- a/init.sh +++ b/init.sh @@ -1,3 +1,3 @@ #! /bin/bash -export HTMLFILEID="$RANDOM" +export OUTFILEID="$RANDOM" diff --git a/main.sh b/main.sh index 6f00a64..a9eba16 100644 --- a/main.sh +++ b/main.sh @@ -12,11 +12,14 @@ # Eine kurze sicherheutsüberprüfung... . ./urlcheck.sh -# Schreibe fertiges HTML-Dokument -. ./writehtml.sh +# Wenn das Dokument schon fertig ist, dann den folgenden Schritt überspringen +if [ "$DONE" != "true" ]; then + # Schreibe fertiges HTML-Dokument + . ./sendfile.sh +fi # Verwende unix2dos auf das Dokument... -unix2dos $HTMLFILE &> /dev/null +unix2dos $OUTFILE &> /dev/null # Gebe fertiges HTML-Dokument aus -cat $HTMLFILE +cat $OUTFILE diff --git a/sendfile.sh b/sendfile.sh new file mode 100644 index 0000000..79660af --- /dev/null +++ b/sendfile.sh @@ -0,0 +1,19 @@ +#! /bin/bash + +# Überprüfe: Muss eine Dateiliste ausgegeben werden? Ist es ein PHP-script? +if [[ "$FILE" == *.php ]]; then + export ANSWER="HTTP/1.0 200 OK" + export CONTENTTYPE="text/html" + . ./httpheaders.sh + php "$FILE" >> $OUTFILE +elif [ -f "${FILE}" ]; then + export ANSWER="HTTP/1.0 200 OK" + export CONTENTTYPE="$DEFAULTCONTENTTYPE" + . ./httpheaders.sh + cat "${FILE}" >> ${OUTFILE} +else + export ANSWER="HTTP/1.0 200 OK" + export CONTENTTYPE="text/html" + . ./httpheaders.sh + . ./filelist.sh +fi diff --git a/urlcheck.sh b/urlcheck.sh index 9daa261..99f07d1 100644 --- a/urlcheck.sh +++ b/urlcheck.sh @@ -8,12 +8,23 @@ fi # Verhindere "/"-bug if [ -d "$FILE" ]; then -if [[ "$URL" != */ ]]; then - #newURL="$URL"'/' - #export URL="$newURL" - #newFILE="$FILE"'/' - #export FILE="$newFILE" - echo 'HTTP/1.0 302 Moved permanently + if [[ "$URL" != */ ]]; then + export ANSWER='HTTP/1.0 302 Moved permanently Location: '"${WEBSITE}${URL}"'/' + export CONTENTTYPE="$DEFAULTCONTENTTYPE" + . ./httpheaders.sh + export DONE=true + fi fi + +# Erkenne index.html +if [ -f "${FILE}index.html" ]; then + export URL="${URL}index.html" + export FILE="${FILE}index.html" +fi + +# Erkenne index.php +if [ -f "${FILE}index.php" ]; then + export URL="${URL}index.php" + export FILE="${FILE}index.php" fi