#!/bin/bash

echo "dieses Skript installiert die Abhängigkeiten für die Nextcloud auf einem Raspbian 64Bit"
echo "Bitte eine Taste drücken um fort zu fahren!"
read -p ">:" pressedkey

function step1(){

echo "Schritt Nr.1"
echo "SSL-Zeugs zum Laden weiterer Abhängigkeiten Laden"
read -p ">:" pressedkey 
apt install apt-transport-https git wget gnupg2 dirmngr lsb-release ssl-cert ca-certificates tree sudo -y

echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "dieser Schritt ist abgeschlossen, gab es fehler ?"
read -p "abbrechen ja/nein >:" break1
##if [ ${break1} == "y"]; do exit; done ;
}

function step2(){
echo "Schritt Nr.2"
echo "Software Eigenschaften Abhängigkeiten & ffmpeg-Codecs Installation"
read -p ">:" pressedkey
apt install software-properties-common zip unzip screen curl git ffmpeg libfile-fcntllock-perl -y

echo "*" 
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "dieser Schritt ist abgeschlossen, gab es fehler ?"
read -p "abbrechen ja/nein >:" break1
##if [ ${break1} == "y"]; do exit; done ;
}

function step3(){
echo "Schritt Nr.3"
echo "Mariadb (SQL-Daten)"


read -p ">:" pressedkey
apt update && apt install mariadb-server -y
echo "*" 
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "dieser Schritt ist abgeschlossen, gab es fehler ?"
read -p "abbrechen ja/nein >:" break1
##if [ ${break1} == "y"]; do exit; done ;
}

function step4(){
echo "Schritt Nr.4"
echo "Apache2-Webserver und saemtliche php.Libaries"


read -p ">:" pressedkey 
apt install libapache2-mod-php7.3 -y
apt-get install php7.3-cli php7.3-common php7.3-mbstring php7.3-gd php7.3-intl php7.3-xml -y
apt-get install php7.3-mysql php7.3-zip php7.3-dev php7.3-curl php7.3-fpm php7.3-json php7.3-bz2 -y
apt-get install php7.3-ldap php-dompdf php-apcu imagemagick php-imagick php-smbclient redis-server php-redis unzip -y
apt-get install sqlite3 php7.3-sqlite3 -y 

echo "*" 
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "dieser Schritt ist abgeschlossen, gab es fehler ?"
read -p "abbrechen ja/nein >:" break1
##if [ ${break1} == "y"]; do exit; done ;
}


function step5(){
echo "Schritt Nr.5"
echo "Nexcloud-Dateien laden"


read -p ">:" pressedkey
echo " in das endverzeichnis wechseln,"
cd /var/www/html/
echo "dateien Herunter laden"
wget https://download.nextcloud.com/server/releases/latest.zip
echo "Dateien danach entpacken "

unzip latest.zip && chown -R www-data:www-data /var/www/html/nextcloud && rm -f latest.zip

echo "*" 
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "dieser Schritt ist abgeschlossen, gab es fehler ?"
read -p "abbrechen ja/nein >:" break1
##if [ ${break1} == "y"]; do exit; done ;
}
function Step5a(){
chown -R www-data:www-data /var/www/html/nextcloud 
step5b
}
function step5b(){
echo "Jetzt gilt zu Ueberpruefen ob alle Ordner auch angelegt wurden!"
ls /var/www/html/
ls -la /var/www/html/
ls /var/www/html/nextcloud
ls -la /var/www/html/nextcloud
echo "sind alle Ordner angelegt worden??"
echo "sind alle benoetigten Berechtigungen: www-data:www-data (<user>:<group>)"
echo "ansonsten ggf mittels Step 5a neu setzen lassen"
read -p "y/n/f(fehler)>:" break1
##if [ ${break1} == "y"]; do exit; done ;
##if [ ${break1} == "n"]; do echo "gut"; done ;
##if [ ${break1} == "f"]; do step5a; done ;


}

function step6(){
echo "Schritt Nr.6"
echo "Webmin installieren"

echo "teilschritt, das Repository in eine eigenes Listfile in der Virtuellen Source.list.d erzeugen und den REpo-Link dort hinterlegen." 
echo "deb https://download.webmin.com/download/repository sarge contrib" > /etc/apt/sources.list.d/webmin.list 

echo "Schlüssel des Repos in das Heimverzeichnis des root laden,"
cd /root
wget https://download.webmin.com/jcameron-key.asc
echo "schlüssel mittels apt zum Repository Schluesselbund hinzufuegen"
apt-key add jcameron-key.asc 
echo "Hinzufuegen der Transport-Schicht (SSL) fuer apt"
apt-get install apt-transport-https -y
echo "Aktualisierung!"
apt-get update
echo "Installation des Webmin"
apt-get install webmin -y


echo "*" 
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "dieser Schritt ist abgeschlossen, gab es fehler ?"
read -p "abbrechen ja/nein >:" break1
##if [ ${break1} == "y"]; do exit; done ;
}

function step7a(){

echo "Im Verzeichnis etc/apache2 pruefen ob Dateien angelegt wurden"
ls /etc/apache2
echo "sind alle angelegt?"
read -p "abbrechen ja/nein >:" break1
##if [ ${break1} == "y"]; do exit; done;
ls /etc/apache2/mods-available/
echo "Ist das benoetigte Modul dabei?"
read -p "ja/nein >:" break1
ls /etc/apache2/mods-enabled/
echo "Ist das genannte Modul aktiviert?? (ssl.conf + ssl.load)"
read -p "ja/nein >:" break1
echo "...leider nicht aktiviert? Dann...."
a2enmod ssl
##a2enconf ssl
echo "nach dem enablen der Module noch den apacheserver neu starten"
service apache2 restart
echo "pruefen des apache2servers"
service apache2 status
echo "alles Okay?"
read -p "ja/nein >:" break1
}

function step7b(){

echo "Damit wir gültige SSL-Zertifikate haben, sollten wir noch Let´s Encrypt konfigurieren"
echo  "damit Certbot funktionieren kann muss der http-port ueber die fritzbox weitergeleitet sein um die Validitaet des anfragenden zu pruefen."
echo "certbot installieren"
apt-get install certbot python-certbot-apache
read -p "certbot ausfuehren, hiernach bitte die Parameter eingeben >:" break1
certbot --apache

echo "Certbot wurde Konfiguriert, ab jetzt nur noch updaten"
echo " alles gut gelaufen oder ein benoetigter Portforward auf den http des apache vergessen?"

}
function 7c(){
echo  "erneuern des Zertifikates"
certbot renew # zum erneuern
# certbot renew --dry-run # zum testen
echo "alles gut verlaufen"
}



function step7d(){

echo "FPM-Apache-Modul ist standardmaessig deaktiviert"
echo "deshald aktivieren wir es ueber Apache2 a2en* Hilfsskripte!"
echo "Das Komplementaer dazu ist a2dis* !"
read -p "fortfahren ?>:" presskey
a2enmod proxy_fcgi setenvif
a2enconf php7.3-fpm
echo "nach dem enablen der Module noch den apacheserver neu starten"
service apache2 restart

echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "*"
echo "hat alles geklappt?"
read -p "abbrechen ja/nein >:" break1

}

###############################################################################################
# Scriptsteuerung (Control)

#step1
#step2
#step3
#step4
#step5
#step5b
#step6
#step7a
#step7b
#step7c
step7d
