#!/bin/bash


echo "apt update"
sudo apt-get update

echo "apt upgrade"
sudo apt-get upgrade -q=2 -y

echo "remove firefox and libpam-chksshpwd"
sudo apt purge libpam-chksshpwd firefox-esr -y

echo "install required packages. It will take a while, please wait"

sudo apt-get -q=2 -y install vim bc apache2 php php-gd php-curl php-xml php-json libapache2-mod-php jq raspberrypi-kernel-headers i2c-tools git mosquitto mosquitto-clients socat python-pip python3-pip sshpass chromium-browser xscreensaver xdotool mc libxslt1-dev screen

echo "install required packages. It will take a while, please wait for second batch"

sudo apt-get -q=2 install -y openssl libcurl4 curl libgcrypt20 libgnutls30 libssl1.1 libcurl3-gnutls libssl1.0.2 php7.3-cli php7.3-gd php7.3-opcache php7.3 php7.3-common php7.3-json php7.3-readline php7.3-xml php7.3-curl libapache2-mod-php7.3


echo "Removing junk"
sudo apt-get autoremove -y
sudo apt-get autoclean -y

echo "Install pip requests paho-mqtt"
sudo sudo pip3 install requests paho-mqtt docopt certifi aiohttp pymodbus jq pparser bs4 pkce

echo "Install pip requests Adafruit_MCP4725 evdev 1.6.0 pyserial sysv_ipc 1.0.1"

sudo pip install requests Adafruit_MCP4725 pyserial "sysv_ipc == 1.0.1" "evdev == 1.6.0" urllib3


echo "...done"

echo "check for timezone"
if  grep -Fxq "Europe/Berlin" /etc/timezone
then
	echo "...ok"
else
	echo 'Europe/Berlin' > /etc/timezone
	dpkg-reconfigure -f noninteractive tzdata
	cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime
	echo "...changed"
fi

echo "check for i2c bus"
if grep -Fxq "i2c-bcm2835" /etc/modules
then
	echo "...ok"
else
	echo "i2c-dev" >> /etc/modules
	echo "i2c-bcm2708" >> /etc/modules
	echo "snd-bcm2835" >> /etc/modules
	echo "dtparam=i2c1=on" >> /etc/modules
	echo "dtparam=i2c_arm=on" >> /etc/modules
fi

echo "check for initial git clone"
if [ ! -d /var/www/html/openWB/web ]; then
	cd /var/www/html/
	git clone https://github.com/snaptec/openWB.git --branch master
	chown -R pi:pi openWB 
	echo "... git cloned"
else
	echo "...ok"
fi

if ! grep -Fq "bootmodus=" /var/www/html/openWB/openwb.conf
then
	echo "bootmodus=3" >> /var/www/html/openWB/openwb.conf
fi

echo "check for ramdisk" 
if grep -Fxq "tmpfs /var/www/html/openWB/ramdisk tmpfs nodev,nosuid,size=32M 0 0" /etc/fstab 
then
	echo "...ok"
else
	mkdir -p /var/www/html/openWB/ramdisk
	echo "tmpfs /var/www/html/openWB/ramdisk tmpfs nodev,nosuid,size=32M 0 0" >> /etc/fstab
	mount -a
	echo "0" > /var/www/html/openWB/ramdisk/ladestatus
	echo "0" > /var/www/html/openWB/ramdisk/llsoll
	echo "0" > /var/www/html/openWB/ramdisk/soc
	echo "...created"
fi

# start mosquitto
sudo service mosquitto start

# check for mosquitto configuration
if [ ! -f /etc/mosquitto/conf.d/openwb.conf ]; then
	echo "updating mosquitto config file"
	sudo cp /var/www/html/openWB/web/files/mosquitto.conf /etc/mosquitto/conf.d/openwb.conf
	sudo service mosquitto reload
fi

echo "disable cronjob logging"
if grep -Fxq "EXTRA_OPTS=\"-L 0\"" /etc/default/cron
then
	echo "...ok"
else
	echo "EXTRA_OPTS=\"-L 0\"" >> /etc/default/cron
fi

#prepare for Buster
echo -n "fix upload limit..."
if [ -d "/etc/php/7.0/" ]; then
	echo "OS Stretch"
	sudo /bin/su -c "echo 'upload_max_filesize = 300M' > /etc/php/7.0/apache2/conf.d/20-uploadlimit.ini"
	sudo /bin/su -c "echo 'post_max_size = 300M' >> /etc/php/7.0/apache2/conf.d/20-uploadlimit.ini"
elif [ -d "/etc/php/7.3/" ]; then
	echo "OS Buster"
	sudo /bin/su -c "echo 'upload_max_filesize = 400M' > /etc/php/7.3/apache2/conf.d/20-uploadlimit.ini"
	sudo /bin/su -c "echo 'post_max_size = 400M' >> /etc/php/7.3/apache2/conf.d/20-uploadlimit.ini"
fi

echo "installing pymodbus"
sudo pip install  -U pymodbus

echo "check for paho-mqtt"
if python3 -c "import paho.mqtt.publish as publish" &> /dev/null; then
	echo 'mqtt installed...'
else
	sudo pip3 install paho-mqtt
fi

#Adafruit install
echo "check for MCP4725"
if python -c "import Adafruit_MCP4725" &> /dev/null; then
	echo 'Adafruit_MCP4725 installed...'
else
	sudo pip install Adafruit_MCP4725
fi

echo "enabling Display power management"

sudo echo "@xset dpms" | sudo tee --append /etc/xdg/lxsession/LXDE-pi/autostart

echo "done enabling Display power management"

sudo echo "www-data ALL=(ALL) NOPASSWD: ALL" | sudo tee --append /etc/sudoers.d/010_pi-nopasswd
sudo echo "ServerName 127.0.0.1" | sudo tee --append /etc/apache2/apache2.conf

echo "restarting apache2.service"
sudo systemctl reload apache2.service

echo "done restarting apache2.service"

echo "starting some permission settings"
chmod 777 /var/www/html/openWB/openwb.conf
chmod +x /var/www/html/openWB/modules/*
chmod +x /var/www/html/openWB/runs/*
chmod +x /var/www/html/openWB/*.sh
touch /var/log/openWB.log
sudo chmod 777 /var/log/openWB.log

echo "end permission settings"

echo "running atreboot script. It will take a while, please WAIT"

sudo -u pi /var/www/html/openWB/runs/atreboot.sh


echo "all done! Do not forget to add the cron jobs to crontab and to reboot!"