Kompetenztool
Dokumentation Kompetenztool
Diese Domkumation soll einen kurzen Überblick der Anwendung vermitteln, so wie den Einstieg in die Programmierung vereinfachen.
Allgemeines
- Die Anwendung ist eine WebApp welche auf moderne Browser (Firefox, Chrome) ausgelegt ist. (IE wurde nicht getestet, macht aber wohl bei manchen eingaben Probleme)
- Programmiert wurde in Javascript (Frontend und Backend).
- Als Datenbank wird MySql (mariaDb) verwendet
- Die Zugangsdaten des Backends zur Datenbank können in der Datei "/s_uitl/sqlHandler.js" angepasst werden
- Jede Seite im Frontend liegt als einzelne Datei unter "/web/js/sites/...". Jede Seite im Frontend hat ein Gegenstück im Backend: "/s_sites/...".
Routing
Routing findet über das jeweilige Hashtag in der URL statt. Für "https://kompetenztool.reutlingen-university.de/#fakultaeten" würde die Seite "/web/js/sites/fakultaeten.js" geladen werden. Bei jeder Ajax anfrage wird diese Zeichenkette autoatisch als Indikator mit übermittelt um im Backend eine Zuordnung herzustellen.
Frontend
Das Frontend holt sich für jede geladene Seite die passenden Inhalte des Backends und stellt diese dar. Verwendete Haupt-Libs:
- Jquery
- DataTables
- Bootstrap
Es wurde kein MVC oder anderes Framework wie ReactJs oder sonstiges verwendet. Alles plain Javascript mit paar Libs.
Backend
Um die Anwendung auszuliefern wird ein simpler Http Server erzeugt. Die Anwendung läuft hinter einem Reverse Proxy, siehe "Installationsumgebung".
Das Backend wird über eine REST API gesteuert. Alle Anfragen laufen jedoch über GET und die "ajax" funktion welche in der "/web/js/main.js" definiert ist.
Datenbank
Die Datenbank ist über PhpMyAdmin (http://134.103.72.187:8080/index.php) konfigurierbar.
Rechtesystem
Beim Login werden nur Benutzer der Hochschule Reutlingen zugelassen. Diese Werden, mit ihrer Email und Password gegen den SMTP Server der Hochschule getestet. (Siehe server.js -> checkLoginAgainstExchange). Nach Erfolgreichem login wird eine Session erzeugt und an der Client gesendet. Dieser muss seine Email und die Session bei jeder Anfrage erneute mitschicken um sich zu Authentifizieren.
Installationsumgebung und Zugänge
Sowohl die Datenbank als auch die Software selbst laufen in Docker. Die Container wurden mit folgenden Befehlen gestartet:
docker run --name=nginx --net=dockernet --restart=always -v /home/nginx:/opt -p 80:80 -p 443:443 -d nginx
docker run --name=mariadb --net=dockernet --restart=always -v /home/mariadb/config:/etc/mysql/conf.d -v /home/mariadb/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=XbKNXfRSb3 -d mariadb
docker run --name=myadmin --net=dockernet --restart=always -p 8080:80 -d --link mariadb:db phpmyadmin/phpmyadmin
Start und Update der Anwendung
Nach dem Änderungen auf den Masterbranch gepushed wurden, kann die Anwendung gestartet bzw. aktuallisiert werden. Dazu muss das Script "updateKomp.sh" unter "/home/updateKomp.sh" ausgeführt werden. Inhalt von "updateKomp.sh":
#!/bin/bash
echo "Update Komp!"
cd /home/komp/
git pull origin master
docker build -t komp .
docker rm -f komp
docker run -d --name komp --restart=always --net=dockernet -v /home/kompConfig:/opt/app/config komp
echo "REMOVING UNTAGged DOCKER IMAGES"
docker rmi -f $(docker images | grep "<none>" | awk "{print \$3}")
echo "ALL DONE! HF :)"
Zugangsdaten
WebUrl: http://kompetenztool.reutlingen-university.de SSH IP: 134.103.72.187 User: fritsrap Password: ****
Nginx Config
server {
listen 80;
listen [::]:80;
server_name *.reutlingen-university.de;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name kompetenztool.reutlingen-university.de;
ssl_certificate /opt/cert/cert.pem;
ssl_certificate_key /opt/cert/key.pem;
ssl_session_cache shared:SSL:10m;
ssl_ciphers !RC4:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
proxy_hide_header X-Powered-By;
server_tokens off;
location / {
proxy_set_header HOST $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_pass http://komp:8080/;
}
}