From cddfd47a07a6f2173d669b6f59a207d876b2d472 Mon Sep 17 00:00:00 2001
From: Yannic Nevado Hidalgo <yannic.hidalgo@stud.h-da.de>
Date: Thu, 3 Mar 2022 22:36:11 +0100
Subject: [PATCH] add(setup): initiale Einrichtung der API inklusive Datenbank

---
 .docker/api/Dockerfile             |  10 ++++
 .docker/database/Dockerfile        |   7 +++
 .docker/database/initial_setup.sql |  18 +++++++
 .gitignore                         |  26 ++++++++++
 Aufgabenstellung.pdf               | Bin 0 -> 22356 bytes
 README.adoc                        |  80 +++++++++++++++++++++++++++++
 README.md                          |   3 --
 app/app.py                         |  12 +++++
 docker-compose.yml                 |  34 ++++++++++++
 requirements.txt                   |   1 +
 10 files changed, 188 insertions(+), 3 deletions(-)
 create mode 100644 .docker/api/Dockerfile
 create mode 100644 .docker/database/Dockerfile
 create mode 100644 .docker/database/initial_setup.sql
 create mode 100644 .gitignore
 create mode 100644 Aufgabenstellung.pdf
 create mode 100644 README.adoc
 delete mode 100644 README.md
 create mode 100644 app/app.py
 create mode 100644 docker-compose.yml
 create mode 100644 requirements.txt

diff --git a/.docker/api/Dockerfile b/.docker/api/Dockerfile
new file mode 100644
index 0000000..31d01a0
--- /dev/null
+++ b/.docker/api/Dockerfile
@@ -0,0 +1,10 @@
+FROM python:3.9.6
+
+WORKDIR /app
+
+COPY requirements.txt requirements.txt
+RUN pip3 install -r requirements.txt
+
+COPY ./app .
+
+CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]
\ No newline at end of file
diff --git a/.docker/database/Dockerfile b/.docker/database/Dockerfile
new file mode 100644
index 0000000..c87bf97
--- /dev/null
+++ b/.docker/database/Dockerfile
@@ -0,0 +1,7 @@
+FROM postgres:13.6
+
+RUN localedef -i de_DE -c -f UTF-8 -A /usr/share/locale/locale.alias de_DE.UTF-8
+
+ENV LANG de_DE.utf8
+
+COPY initial_setup.sql /docker-entrypoint-initdb.d/
\ No newline at end of file
diff --git a/.docker/database/initial_setup.sql b/.docker/database/initial_setup.sql
new file mode 100644
index 0000000..8e31549
--- /dev/null
+++ b/.docker/database/initial_setup.sql
@@ -0,0 +1,18 @@
+CREATE DATABASE "web-sec";
+
+ \c web-sec;
+
+CREATE TABLE "benutzer" (
+    customerID SERIAL NOT NULL,
+    vorname text NOT NULL,
+    nachname text NOT NULL,
+    email varchar(255) NOT NULL,
+    PRIMARY KEY(customerID)
+);
+
+INSERT INTO 
+    "benutzer" (vorname, nachname, email)
+VALUES
+    ('Alice','Apple', 'alice@apple.net'),
+    ('Bob','Banana', 'bob@banana.net'),
+    ('Mallory','Mango', 'mallory@mango.net');
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..647a52b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,26 @@
+.DS_Store
+.env
+.flaskenv
+*.pyc
+*.pyo
+env/
+venv/
+.venv/
+env*
+dist/
+build/
+*.egg
+*.egg-info/
+_mailinglist
+.tox/
+.cache/
+.pytest_cache/
+.idea/
+docs/_build/
+.vscode
+
+# Coverage reports
+htmlcov/
+.coverage
+.coverage.*
+*,cover
\ No newline at end of file
diff --git a/Aufgabenstellung.pdf b/Aufgabenstellung.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..58df0970f6d183bd57288d6cd45f6686e1d6e629
GIT binary patch
literal 22356
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
J)z#mP3jmnWmNftX

literal 0
HcmV?d00001

diff --git a/README.adoc b/README.adoc
new file mode 100644
index 0000000..cc2b416
--- /dev/null
+++ b/README.adoc
@@ -0,0 +1,80 @@
+= Task1 Security Of Web Applications
+
+Aufgabe 1 des Security of Web Applications Ferienkurses.
+
+== Lokales setup
+
+* Docker und docker-compose installieren
+
+== Anwendung starten
+
+[source,bash]
+----
+# Docker Images bauen
+docker-compose build
+
+# Starten der Datenbank und API
+docker-compose up
+----
+
+* Nach dem Initialen Starten der Datenbank werden folgende Benutzer angelegt:
+
+[cols="4", options="header"]
+|===
+| customerID
+| Vorname
+| Vorname
+| E-Mail
+
+| 1
+| Alice
+| Apple
+| alice@apple.net
+
+| 2
+| Bob
+| Banana
+| bob@banana.net
+
+| 3
+| Mallory
+| Mango
+| mallory@mango.net
+|===
+
+
+== Routen
+
+Die Routen sind Passwort geschützt.
+
+[source,bash]
+----
+# benutzername: admin
+# passwort: admin
+----
+
+=== GET
+
+* `http://localhost:5000/api/user/:customerID`
+** Gibt die E-Mail Adresse eines Benutzers zurück
+
+
+=== POST
+
+* `http://localhost:5000/api/user`
+** Erstellt einen Benutzer mit dem übergebenen Body
+
+[source,bash]
+----
+{
+    "vorname":"max",
+    "nachname":"mustermann",
+    "email":"max@mustermann.net"
+}
+----
+
+
+=== DELETE
+
+* `http://localhost:5000/api/user/:customerID`
+** Löscht einen Benutzer anhand seiner `customerID`
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 100644
index d0b6616..0000000
--- a/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Task1 Security Of Web Applications
-
-Aufgabe 1 des Security of Web Applications Ferienkurses.
\ No newline at end of file
diff --git a/app/app.py b/app/app.py
new file mode 100644
index 0000000..4834b42
--- /dev/null
+++ b/app/app.py
@@ -0,0 +1,12 @@
+import json
+from flask import Flask
+app = Flask(__name__)
+
+
+@app.route('/')
+def index():
+    return json.dumps({'name': 'alice',
+                       'email': 'alice@outlook.com'})
+
+if __name__ == "__main__":
+    app.run()
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..cae7187
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,34 @@
+# Use postgres/example user/password credentials
+version: '3.9'
+
+services:
+
+  database:
+    container_name: postgres
+    build:
+      context: .docker/database
+    restart: always
+    environment:
+      POSTGRES_PASSWORD: postgres
+    ports:
+      - 5432:5432
+
+  adminer:
+    image: adminer
+    restart: always
+    depends_on:
+      - database
+    ports:
+      - 8080:8080
+
+  app:
+    container_name: flask-api
+    build:
+      context: .
+      dockerfile: .docker/api/Dockerfile
+    restart: always
+    depends_on:
+      - database
+    ports:
+      - 5000:5000
+    
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..fb0dec5
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1 @@
+Flask==2.0.3
\ No newline at end of file
-- 
GitLab