#!/bin/bash
#
# Wenom Installation auf Debian 12 - hier bitte Daten individuell anpassen:
#
########################## IHRE DATEN ###################
SCHULNUMMER="DieSchulnummer"
APP_URL="DeineURL_oder_DeineIP"
MARIADB_ROOT_PW="Das_MariaDB_ROOT_Passwort"
MARIADB_SCHEMA=wenom
MARIADB_USER=wenom
WENOM_DB_PW="wenomPasswort"
# technical Adminuser
WENOM_TECH_ADMIN="DeineAdmin@AnmeldeMail"
WENOM_TECH_ADMIN_PW="Dein_Admin_Anmelde_Passwort"
# mail - smtp Einstellungen
MAIL_HOST="smtp.dein.host"
MAIL_PORT="DerMailPort"
MAIL_USERNAME="Deine@SmtpMailAddress"
MAIL_PASSWORD="Dein_SmtpMail_Addressn_Passwort"
MAIL_ENCRYPTION="ssl"
MAIL_FROM_ADDRESS="DeineReplay@MailAddresse"
#########################################################
#
#
##################### DATEN - INSTALLATION ######################################
WENOMVERSION=1.0.60
NODE_MAJOR=20
PHPVERSION=8.2
INSTALLPATH=/app/webnotenmanager
#################################################################################
#
#
##################### 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
#################################################################################################
#
#
export COMPOSER_ALLOW_SUPERUSER=1
mkdir -p ${INSTALLPATH}/public
#
#
echo
echo -e -n "${HELLBLAU}Konfiguration von Apache2. ${NC}"
echo
sleep 3
#
### DocumentRoot anpassen
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
#
echo "
<Directory /app/webnotenmanager/public/>
   Options Indexes FollowSymLinks
   AllowOverride All
   Require all granted
</Directory>" >> /etc/apache2/apache2.conf 
#
#
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
#
#
echo
echo -e -n "${HELLBLAU}Neustart von Apache2. ${NC}"
echo
sleep 3
#
a2enmod ssl
a2enmod rewrite
a2ensite default-ssl.conf
systemctl restart apache2
systemctl status apache2 --no-pager
#
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
#
echo
echo -e -n "${HELLBLAU}NodeJS wird aus dem Node-Source-Repository installiert. ${NC}"
echo
sleep 3
### nodejs aus dem node-source-Repository installieren
#
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
apt update
apt install -y nodejs 
node -v
#
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
#
echo
echo -e -n "${HELLBLAU}Installation von php $PHPVERSION und libapache2-mod-fcgid fuer Apache2. ${NC}"
echo
sleep 3
#
a2dismod mpm_prefork && a2enmod mpm_event
wget -qO /etc/apt/keyrings/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb [signed-by=/etc/apt/keyrings/php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
apt update
apt install -y php$PHPVERSION libapache2-mod-fcgid 
apt install -y php$PHPVERSION-{cli,fpm,curl,gd,mbstring,soap,bcmath,tokenizer,xml,xmlrpc,zip,mysql,pdo,intl} 
#
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
#
echo
echo -e -n "${HELLBLAU}Konfiguriere von Apache2, um PHP ueber FastCGI zu verwenden. ${NC}"
echo
sleep 3
#
#
a2enmod proxy_fcgi setenvif
a2enconf php$PHPVERSION-fpm
systemctl restart apache2
systemctl status apache2 --no-pager
#
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
#
echo
echo -e -n "${HELLBLAU}Installation von Composer. ${NC}"
echo
sleep 3
#
#
apt install -y composer
composer --version

echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
#
apt install -y mariadb-server 
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
mysql -e "DELETE FROM mysql.user WHERE User='';"
mysql -e "DROP USER IF EXISTS ''@'$(hostname)';"
mysql -e "DROP DATABASE IF EXISTS test;"
#
#
### User (siehe Variablen oben) in der MariaDB anlegen
# Datenbankbenutzer wenom anlegen
mysql -e "CREATE USER '$MARIADB_USER'@'localhost' IDENTIFIED BY '$WENOM_DB_PW';"
# Datenbank (siehe Variablenoben) anlegen:
mysql -e "CREATE DATABASE $MARIADB_SCHEMA;"
# Rechte setzen
mysql -e "GRANT ALL PRIVILEGES ON $MARIADB_SCHEMA.* TO '$MARIADB_USER'@'localhost';"
# Root-Passwort setzen und Rechte neu laden
mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$MARIADB_ROOT_PW'; FLUSH PRIVILEGES;"
#########################################################
###mysqladmin -u root password '$MARIADB_ROOT_PW'    ####
#########################################################
echo
echo -e -n "${HELLBLAU}Warten auf den MariaDB-Server. ${NC}"
echo
sleep 5
systemctl status mysql --no-pager
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
#
echo
echo -e -n "${HELLBLAU}Installation des WebNotenManagers (WENOM). ${NC}"
echo
sleep 3
#
#
 ## WENOM ins root-Verzeichnis Laden und in das ins Verzeichniss /app/webnotenmanager kopieren ######
git clone  https://github.com/SVWS-NRW/SVWS-WebNotenManager.git
cp -a /root/SVWS-WebNotenManager/. $INSTALLPATH/
# Wenom Einstellungen bearbeiten
cd $INSTALLPATH
##########################################################################################################
wget -q --show-progress http://web.webolch.de/bauanleitung/downloads/linux/SH-Scripte/wenom-install/.env #
##########################################################################################################
echo
echo -e -n "${HELLBLAU}Die Datei ${HELLGELB}.env ${HELLBLAU}wird bearbeitet und die wenom-settings werden gesetzt. "
echo
sleep 3
################################################
######    Anpassungen in der .env-Datei   ######
################################################
### http://URL oder http://IP                ###
sed -i 's/001/'${APP_URL}'/g' .env           ###
### MariaDB wenom Passwort                   ###
sed -i 's/002/'${WENOM_DB_PW}'/g' .env       ###
### SCHULNUMMER                              ###
sed -i 's/003/'${SCHULNUMMER}'/g' .env       ###
### MAIL_HOST                                ###
sed -i 's/004/'${MAIL_HOST}'/g' .env         ###
### MAIL_PORT                                ###
sed -i 's/005/'${MAIL_PORT}'/g' .env         ###
### MAIL_USERNAME                            ###
sed -i 's/006/'${MAIL_USERNAME}'/g' .env     ###
### MAIL_PASSWORD                            ###
sed -i 's/007/'${MAIL_PASSWORD}'/g' .env     ###
### MAIL_ENCRYPTION                          ###
sed -i 's/008/'${MAIL_ENCRYPTION}'/g' .env   ###
### MAIL_FROM_ADDRESS                        ###
sed -i 's/009/'${MAIL_FROM_ADDRESS}'/g' .env ###
################################################
#
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
sleep 3
#
# Build Prozesse
echo
echo -e -n "${HELLBLAU}Die Build Prozesse werden Ausgefuehrt. ${NC}"
echo
sleep 3
composer install
php artisan key:generate --no-interaction
php artisan storage:link --no-interaction
npm install
npm run build
#
# optional - mailkonfig kann auch ueber die UI erfolgen.
# php artisan app:install
#
php artisan migrate:fresh --force
php artisan create:admin-user --user=$WENOM_TECH_ADMIN --password=$WENOM_TECH_ADMIN_PW
php artisan passport:install --force --no-interaction
#
### Neuen User fuer den Dienst einrichten
#
useradd -m -G users -s /bin/bash wenom
chmod -R 777 $INSTALLPATH
chown -R wenom:wenom $INSTALLPATH
#
echo
echo -e -n "${HELLGRUEN}OK ${NC}"
echo
##############################################################################################
#
echo -e -n "${HELLBLAU}Bitte die Einstellungen in der ${HELLGELB}.env ${HELLBLAU}im Anschluss im Verzeichniss ${HELLGELB}$INSTALLPATH ${HELLBLAU}kontrollieren! ${NC}"
echo
echo
echo -e -n "${HELLGRUEN}Die Installation ist abgeschlossen und steht zum Aufruf unter ${GELB}https://URL ${HELLGRUEN}oder ${GELB}https://IP ${HELLGRUEN}bereit. ${NC}"
echo
echo
