#!/bin/bash
#
# SVWS-Server Installation auf Debian 12 - hier bitte Daten individuell anpassen:
#
########################## IHRE DATEN ###################
MARIADB_ROOT_PW="Passwort"
SERVERNAME=IP  ### IP Anpassen ###
DB_PATH_MDB="/root/gynmasium-schulungen.mdb"
##DB_PATH_SQLITE="/root/gynmasium-schulungen.sqlite"
DB_NAME="Gymnasium"
MARIADB_USER="Gymnasium"
MARIADB_PASSWORD="Gymnasium"
MDB_PW="kakadu"
INSTALLPATH=/var/www/html
PHPVERSION=8.2
SVWSPort=8443
Apache2Port=7443
URL=https://github.com/SVWS-NRW/SVWS-Server
#########################################################
#
##################### AUF BENUZER ROOT PRUEFEN #########################################################
if ! [ $( id -u ) = 0 ]; then
    echo -e -n "${HELLROT}Bitte fuehren Sie dieses Script als root im root-Verzeichniss aus! ${NC}" 1>&2
    echo
    exit 1
fi
#
# Farbdefinitionen zur Ausgabe ####################################################################
ROT='\033[0;31m' 
HELLROT='\033[1;31m'
GRUEN='\033[0;32m'
HELLGRUEN='\033[1;32m'
GELB='\033[1;33m'
BLAU='\033[0;34m'
HELLBLAU='\033[1;34m'
LILA='\033[0;35m'
HELLLILA='\033[1;35m'
DUNKELESTUERKIS='\033[0;36m'
TUERKIS='\033[1;36m'
HELLGRAU='\033[0;37m'
WEISS='\033[1;37m'
NC='\033[0m' # No Color
#################################################################################################
#
echo
echo -e -n "${HELLBLAU}Installation des MariaDB-Servers. ${NC}"
echo
sleep 3
#
apt update
# Herunterladen des Skripts zum Einrichten des MariaDB-Repositorys und Ausführen des Skripts
curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash -s -- --mariadb-server-version=11.7 --skip-maxscale --skip-tools
# Installieren der MariaDB-Datenbank
apt-get -y install mariadb-server
# Ausgabe der Erfolgsmeldung
echo
echo -e -n "${HELLBLAU}MariaDB 11.7 erfolgreich installiert. ${NC}"
echo
systemctl start mysql
systemctl enable mysql
#
#
### Sicherheitsrelevante Einstellungen in der DB vornehmen
#
echo
echo -e -n "${HELLBLAU}Sicherheitsrelevante Einstellungen in der DB vornehmen. ${NC}"
echo
sleep 3
#
wget -q --show-progress http://web.webolch.de/bauanleitung/downloads/linux/SH-Scripte/svws-install/50-server.cnf
mv 50-server.cnf /etc/mysql/mariadb.conf.d
mysqladmin -u root password $MARIADB_ROOT_PW
#
echo
echo -e -n "${HELLBLAU}Warten auf den MariaDB-Server. ${NC}"
echo
sleep 3
systemctl status mysql --no-pager
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
##############################################################################################
echo
echo -e -n "${HELLBLAU}temurin-21-jdk Installieren ${NC}"
echo
sleep 3
#
echo "deb [arch=amd64] https://some.repository.url focal main" | tee /etc/apt/sources.list.d/adoptium.list > /dev/null
apt install -y wget apt-transport-https gpg
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
apt update && apt install -y temurin-21-jdk
#
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
############################################################################################################
echo
echo -e -n "${HELLBLAU}SVWS-Server vom Github herunterladen und Installieren. ${NC}"
echo
sleep 3
#
git clone $URL
mkdir -p /app/SVWS-Server
cp -a /root/SVWS-Server/. /app/SVWS-Server/
cd /app/SVWS-Server/svws-server-app/
wget -q --show-progress http://web.webolch.de/bauanleitung/downloads/linux/SH-Scripte/svws-install/keystore
wget -q --show-progress http://web.webolch.de/bauanleitung/downloads/linux/SH-Scripte/svws-install/svwsconfig.json
cd /app/SVWS-Server/
./gradlew build
#
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
#
echo
echo -e -n "${HELLBLAU}Die svws.service Datei wird erstellt. ${NC}"
echo
sleep 3
echo "
[Unit]
Description=SVWS Server
#After=mysql.service

[Service]
WorkingDirectory=/app/SVWS-Server/svws-server-app
ExecStart=/app/SVWS-Server/svws-server-app/start_server.sh
User=root
Type=simple
Restart=on-failure   # optional-auskommentieren, wenn gewuenscht
RestartSec=10        # optional-auskommentieren, wenn gewuenscht

[Install]
WantedBy=multi-user.target
" > /etc/systemd/system/svws.service
systemctl enable svws
#
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
#
echo
echo -e -n "${HELLBLAU}Den SVWS-Server starten. ${NC}"
echo
sleep 3
#
systemctl daemon-reload
systemctl start svws
echo
echo -e -n "${HELLBLAU}Auf den SVWS-Server warten. ${NC}"
echo
sleep 3
systemctl status svws --no-pager
#
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
echo
echo -e -n "${HELLBLAU}Ein SVWS-Schema Hinzufuegen. ${NC}"
echo
sleep 3
#
cd /root
##sleep 2
wget -q --show-progress http://web.webolch.de/bauanleitung/downloads/linux/SH-Scripte/svws-install/gynmasium-schulungen.mdb
wget -q --show-progress http://web.webolch.de/bauanleitung/downloads/linux/SH-Scripte/svws-install/Gym01-OriginalGroesse.sqlite
##sleep 2
echo
echo -e -n "${HELLROT}###!?!?!ACHTUNG DAS DAUERT JETZT ETWAS!?!?!###${WEISS}###!?!?!ACHTUNG DAS DAUERT JETZT ETWAS!?!?!###${HELLROT}###!?!?!ACHTUNG DAS DAUERT JETZT ETWAS!?!?!### ${NC}"
echo
sleep 3
curl --user "root:${MARIADB_ROOT_PW}" \
  -k --insecure \
  -X "POST" "https://${SERVERNAME}:${SVWSPort}/api/schema/root/migrate/mdb/${DB_NAME}" \
  -H "accept: application/json" \
  -H "Content-Type: multipart/form-data" \
  -F "database=@${DB_PATH_MDB}" \
  -F "databasePassword=${MDB_PW}" \
  -F "schemaUsername=${MARIADB_USER}" \
  -F "schemaUserPassword=${MARIADB_PASSWORD}"
clear
#
## --user "root:${MARIADB_ROOT_PW}" \
##  -k --insecure \
##  -X "POST" "https://${SERVERNAME}:${SVWSPort}/api/schema/root/import/sqlite/${DB_NAME}" \
##  -H "accept: application/json" \
##  -H "Content-Type: multipart/form-data" \
##  -F "database=@${DB_PATH_SQLITE}" \
##  -F "schemaUsername=${MARIADB_USER}" \
##  -F "schemaUserPassword=${MARIADB_PASSWORD}"
##clear
#
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
#
echo
echo -e -n "${HELLBLAU}Webnotenmanager (wenom) installieren ${NC}"
echo
sleep 3
#
sed -i "s|;extension=pdo_sqlite.*$|extension=pdo_sqlite|" /etc/php/${PHPVERSION}/apache2/php.ini
#
echo "
<Directory ${INSTALLPATH}>
   Options Indexes FollowSymLinks Includes ExecCGI
   AllowOverride All
   Require all granted
</Directory>" >> /etc/apache2/apache2.conf
#
### DocumentRoot anpassen
mkdir -p ${INSTALLPATH}/public
sed -i "s|DocumentRoot.*$|DocumentRoot ${INSTALLPATH}/public|" /etc/apache2/sites-available/000-default.conf
sed -i "s|DocumentRoot.*$|DocumentRoot ${INSTALLPATH}/public|" /etc/apache2/sites-available/default-ssl.conf
sed -i 's/443/'$Apache2Port'/g' /etc/apache2/sites-available/default-ssl.conf
sed -i 's/443/'$Apache2Port'/g' /etc/apache2/ports.conf
#
systemctl reload apache2.service
systemctl status apache2.service --no-pager
#
mkdir -p $INSTALLPATH/public/laufbahnplanung
cd /app/SVWS-Server
mv svws-webclient/enmserver/build/*.zip $INSTALLPATH/enmserver.zip
mv svws-webclient/laufbahnplanung/build/*.zip $INSTALLPATH/public/laufbahnplanung/laufbahnplanung.zip
cd $INSTALLPATH
unzip enmserver.zip
cd $INSTALLPATH/public/laufbahnplanung
unzip laufbahnplanung.zip
#####################################################################
##wget -q --show-progress https://wenom.svws-nrw.de/enmserver.zip ###
##unzip enmserver.zip                                             ###
#####################################################################
chmod -R 777 $INSTALLPATH
chown -R www-data:www-data $INSTALLPATH
curl --request GET --url http://localhost/api/setup --header "Content-Type: application/x-www-form-urlencoded"
cp /var/www/html/db/client.sec /var/www/html/public/secret.html
#
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
echo
echo -e -n "${HELLBLAU}phpmyadmin installieren ${NC}"
echo
sleep 3
apt install -y phpmyadmin
#
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
#
echo -e -n "${HELLGRUEN}Die Installation ist abgeschlossen und steht zum Aufruf unter ${GELB}https://${SERVERNAME}:8443 ${HELLGRUEN}bereit. ${NC}"
echo
echo -e -n "${HELLTURKIS}Die Installation ist abgeschlossen und der SchemaAdmin steht zum Aufruf unter ${GELB}https://${SERVERNAME}:8443/admin ${HELLGRUEN}bereit. ${NC}"
echo
