#!/bin/bash
clear
export LC_ALL=C
export DEBIAN_FRONTEND=noninteractive
echo "This will launch the Major upgrade to EVE 5.0"
echo "Requirements:"
echo "- EVE must be up to date ( 4.0.1-86 )"
echo "- All Ubuntu packages must be up to date"
echo "- External repositories are no supported ( only ubuntu and eve-ng are valids )"
echo -n  "type yes to continue: "
read confirm
if [ "$confirm" != "yes" ] ; then exit 0 ; fi
dpkg -l eve-ng-pro | grep -q 4.0.1-86
if [ $? -ne 0 ]
 then echo  "Upgrade REJECT !!!!!"
 echo  "Upgrade to latest EVE Pro version first. Use 'apt update; apt dist-upgrade'"
 echo
 echo  "Retry when condition is met"
 exit 0
fi
apt update 
apt list --upgradable | grep -q from
if [ $? -eq 0 ]
 then echo  "Upgrade REJECT !!!!!"
 echo "First use 'apt update ; apt upgrade; apt dist-upgrade ; reboot'"
 echo
 echo  "Retry when condition is met"
 exit 0
fi
E=$(ls /var/lib/apt/lists/*Packages | grep -v 'eve-ng.net\|ubuntu.com' | wc -l)
if [ $E -gt 0 ]
	then echo  "Upgrade REJECT !!!!!"
	echo "external repository detected"
	echo "Fresh install is recommended"
	echo "rejected repository:" 
	ls -1 /var/lib/apt/lists/*Packages | grep -v 'eve-ng.net\|ubuntu.com' 
	exit 0
fi
cat > /etc/apt/apt.conf.d/local << EOF
Dpkg::Options {
   "--force-confdef";
   "--force-confold";
}
EOF

apt remove -y -q netplan.io
apt autoremove -y -q
apt-mark hold ifupdown
apt install ubuntu-release-upgrader-core -y -q
do-release-upgrade -f DistUpgradeViewNonInteractive 
lsb_release -r -s | grep -q 20.04
if [ $? -ne 0 ]
	then echo "Cleaning Server to recover valid state for upgrade..."
	apt install --reinstall grub-pc
	apt remove -y eve-ng-pro
	chattr -i -R /opt/qemu*
	apt autoremove -y
	apt install -y eve-ng-pro
	apt purge $(dpkg -l | grep ^rc | awk '{print $2}' )
	apt purge linux-image-4.9.40-eve-ng-kms 2>/dev/null
	apt purge linux-image-4.9.40-eve-ng-ukms 2>/dev/null
        apt purge linux-image-4.20.17-eve-ng-ukms 2>/dev/null
        apt purge linux-image-4.20.17-eve-ng-uksm 2>/dev/null
        apt purge linux-image-4.20.17-eve-ng-uksm-wg 2>/dev/null
	do-release-upgrade -f DistUpgradeViewNonInteractive
	lsb_release -r -s | grep -q 20.04
	if [ $? -ne 0 ]
		then echo  "Upgrade REJECT !!!!!"
		echo "dist upgrade failed"
		echo "check /var/log/distupgrade log files for details"
		exit 0
	fi
fi
apt-get -y -q install software-properties-common
wget -O - http://www.eve-ng.net/focal-test/eczema@ecze.com.gpg.key | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64]  http://www.eve-ng.net/focal-test focal main"
apt update
cp /opt/unetlab/evedb.gz /root/evedb-$(date +%Y%m%d%H%M%S).gz
apt purge -y tomcat* php7.2*
rm -fr /var/lib/tomcat9/webapps || true
rm -fr /usr/share/tomcat9/.guacamole || true 
rm /etc/guacamole || true
apt-get -y -q install docker-ce
apt-get -y -q install eve-ng-pro
apt-get -y -q install eve-ng-dockers
apt-mark unhold ifupdown
apt dist-upgrade -y -q
apt autoremove -y -q
rm /etc/apt/apt.conf.d/local || true
rm /etc/guacamole || true
ln -s  /usr/share/tomcat9/.guacamole /etc/guacamole
echo -n  "Upgrade process done. Press Enter to reboot "
read confirm
reboot
