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