From 5f9e224c3df74c226cb1da09eae1b11c5a268895 Mon Sep 17 00:00:00 2001 From: niansa Date: Thu, 9 Mar 2017 09:00:09 +0100 Subject: [PATCH] Add files via upload --- config.sh | 19 +++++++++++++++++++ htmlfilelist.sh | 22 ++++++++++++++++++++++ httpheaders.sh | 14 ++++++++++++++ init.sh | 3 +++ readrequest.sh | 14 ++++++++++++++ start-socat.sh | 5 +++++ urlcheck.sh | 6 ++++++ writehtml.sh | 20 ++++++++++++++++++++ 8 files changed, 103 insertions(+) create mode 100644 config.sh create mode 100644 htmlfilelist.sh create mode 100644 httpheaders.sh create mode 100644 init.sh create mode 100644 readrequest.sh create mode 100644 start-socat.sh create mode 100644 urlcheck.sh create mode 100644 writehtml.sh diff --git a/config.sh b/config.sh new file mode 100644 index 0000000..9d5bec8 --- /dev/null +++ b/config.sh @@ -0,0 +1,19 @@ +#! /bin/bash + +# Wo ist der zu nutzende Speicherplatz? +export FILES="/var/www/html" + +# Wie soll der titel der Seite 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/storage.${HTMLFILEID}.html" + +# Welcher Content-Type soll bei einer Unbekannten Datei gesendet werden? +export DEFAULTCONTENT="text/html" + +# Port zum lauschen (Falls start-socat.sh als startscript verwendet wird) +export PORT=8888 + +# Wie heisst die Webseite (URL des obersten Verzeichnis)? +export WEBSITE="http://localhost:$PORT" diff --git a/htmlfilelist.sh b/htmlfilelist.sh new file mode 100644 index 0000000..971f93a --- /dev/null +++ b/htmlfilelist.sh @@ -0,0 +1,22 @@ +#! /bin/bash + +status="$URL" + +# Statisches HTML +echo ' + + '"${HTMLTITLE}"' + + +

'"$status"'

+

Directory list:


+ ..
' >> $HTMLFILE + +# Erstelle Dateiliste im HTML-Format +for i in $( ls "${FILE}" ); do + echo ' '"${i}"'
' >> $HTMLFILE +done + +# Statisches HTML +echo ' +' >> $HTMLFILE diff --git a/httpheaders.sh b/httpheaders.sh new file mode 100644 index 0000000..ac5bcb5 --- /dev/null +++ b/httpheaders.sh @@ -0,0 +1,14 @@ +#! /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 diff --git a/init.sh b/init.sh new file mode 100644 index 0000000..0de45ea --- /dev/null +++ b/init.sh @@ -0,0 +1,3 @@ +#! /bin/bash + +export HTMLFILEID="$RANDOM" diff --git a/readrequest.sh b/readrequest.sh new file mode 100644 index 0000000..16c090c --- /dev/null +++ b/readrequest.sh @@ -0,0 +1,14 @@ +#! /bin/bash + +# Notwendige Variablen definieren +header=' ' + +# Falls im nächsten Bereich keine Datein ausgewertet werden, bleiben folgende Variablen gesetzt +export URL='/' + +# Lese anfrage... +read header + +URL="${header#GET }" +URL="${URL% HTTP/*}" +export FILE="$FILES$URL" diff --git a/start-socat.sh b/start-socat.sh new file mode 100644 index 0000000..e2374ad --- /dev/null +++ b/start-socat.sh @@ -0,0 +1,5 @@ +#! /bin/bash + +. ./config.sh +socat TCP-LISTEN:$PORT,reuseaddr,fork SYSTEM:"./main.sh" || exit 1 +echo "Listening at Port: $PORT" diff --git a/urlcheck.sh b/urlcheck.sh new file mode 100644 index 0000000..bd5e6d2 --- /dev/null +++ b/urlcheck.sh @@ -0,0 +1,6 @@ +#! /bin/bash + +# Überprüfe auf Versuche, das restliche Dateisystem zu lesen +if [ "$URL" = "*..*" ]; then + export URL='/' +fi diff --git a/writehtml.sh b/writehtml.sh new file mode 100644 index 0000000..ec0a82e --- /dev/null +++ b/writehtml.sh @@ -0,0 +1,20 @@ +#! /bin/bash + +# Überprüfe: Ist $FILE ein Verzeichniss und enthält es eine index.* ? +# TODO + + +# Überprüfe: Datei oder Verzeichniss? +if [[ "$FILE" == *.php ]]; then + export CONTENTTYPE="html" + . ./httpheaders.sh + php "$FILE" >> $HTMLFILE +elif [ -f "${FILE}" ]; then + export CONTENTTYPE="$DEFAULTCONTENT" + . ./httpheaders.sh + cat "${FILE}" >> ${HTMLFILE} +else + export CONTENTTYPE="html" + . ./httpheaders.sh + . ./htmlfilelist.sh +fi