#!/bin/bash

# Last update 2020/10/19 by pavroo

# get default's locale file
DEFLOCDIR="/usr/share/pearl/pearl-aptus"
if [ "`cat /etc/default/locale | grep LANG= | grep de`" != "" ]; then
. $DEFLOCDIR/de
elif [ "`cat /etc/default/locale | grep LANG= | grep el`" != "" ]; then
. $DEFLOCDIR/el
elif [ "`cat /etc/default/locale | grep LANG= | grep es`" != "" ]; then
. $DEFLOCDIR/es
elif [ "`cat /etc/default/locale | grep LANG= | grep fr`" != "" ]; then
. $DEFLOCDIR/fr
elif [ "`cat /etc/default/locale | grep LANG= | grep hu`" != "" ]; then
. $DEFLOCDIR/hu
elif [ "`cat /etc/default/locale | grep LANG= | grep id_ID`" != "" ]; then
. $DEFLOCDIR/id_ID
elif [ "`cat /etc/default/locale | grep LANG= | grep it`" != "" ]; then
. $DEFLOCDIR/it
elif [ "`cat /etc/default/locale | grep LANG= | grep ja`" != "" ]; then
. $DEFLOCDIR/ja
elif [ "`cat /etc/default/locale | grep LANG= | grep pl`" != "" ]; then
. $DEFLOCDIR/pl
elif [ "`cat /etc/default/locale | grep LANG= | grep pt_BR`" != "" ]; then
. $DEFLOCDIR/pt_BR
elif [ "`cat /etc/default/locale | grep LANG= | grep pt_PT`" != "" ]; then
. $DEFLOCDIR/pt_PT
elif [ "`cat /etc/default/locale | grep LANG= | grep ru`" != "" ]; then
. $DEFLOCDIR/ru
elif [ "`cat /etc/default/locale | grep LANG= | grep zh_CN`" != "" ]; then
. $DEFLOCDIR/zh_CN
else
. $DEFLOCDIR/en
fi

testroot="`whoami`"
if [ "$testroot" != "root" ]; then
	echo "Must be root... Exiting now..."
	exit 1
fi

DIALOG="yad --window-icon=system-software-install --width=450 --height=200 --center"
TITLE="--always-print-result --dialog-sep --image=system-software-install --title="
TEXT="--text="
OKEXIT=" --button=Ok:0 --button=$LOCAL24:1 "
MSGBOX=" --button=Ok:0 "
BUTTONREMOVE="--button=$LOCAL3:3"
BUTTONREINSTALL="--button=$LOCAL85:4"
BUTTONINSTALL="--button=$LOCAL2:0"
BUTTONEXIT="--button=$LOCAL24:1"
TITLETEXT="APTus"
if [ -f /usr/bin/pearl-xterm ];then
	PEARLXTERM="/usr/bin/pearl-xterm"
else
	echo "pearl-xterm is missing... Exiting..."
	exit 1
fi
INSTALL="apt-get install"
REINSTALL="apt-get install --reinstall"
UNINSTALL="apt-get purge"
UPDATE="apt-get update"
ARCH64="`uname -m | grep x86_64`"
ARCH32="`uname -m | grep 686`"
ARCHARM="`uname -m | grep arm`"
#PEARLVERCHECK4="`cat /etc/lsb-release | grep Tyche`"
#PEARLVERCHECK5="`cat /etc/lsb-release | grep Nibiru`"
#PEARLVERCHECK6="`cat /etc/lsb-release | grep Tolo`"
PINGTEST=$(ping -c 1 debian.org | grep [0-9])

# recive package name
case $1 in
#####security##############################################
  clamtk)
	PACKAGE="clamtk"
     ;;
  fwbuilder)
	PACKAGE="fwbuilder"
     ;;
  gtomb)
	PACKAGE="gtomb"
     ;;
  gufw)
	PACKAGE="gufw"
     ;;
  putty)
	PACKAGE="putty"
     ;;
  remmina)
	PACKAGE="remmina"
     ;;
  teamviewer)
	if [ "$ARCHARM" != "" ]; then
		$DIALOG $TEXT"\n$LOCAL100\n\n$LOCAL24" $TITLE"$TITLETEXT" $MSGBOX
		exit 1
	fi
	PACKAGE="teamviewer"
     ;;
  tor)
	PACKAGE="tor"
     ;;
  veracrypt)
	PACKAGE="veracrypt"
     ;;
  zulucrypt-gui)
	PACKAGE="zulucrypt-gui"
     ;;
#####system##################################################
  anydesk)
	if [ "$ARCHARM" != "" ]; then
		$DIALOG $TEXT"\n$LOCAL100\n\n$LOCAL24" $TITLE"$TITLETEXT" $MSGBOX
		exit 1
	fi
	PACKAGE="anydesk"
     ;;
  bleachbit)
	PACKAGE="bleachbit"
     ;;
  clonezilla)
	PACKAGE="clonezilla"
     ;;
  debi-tool)
	PACKAGE="debi-tool"
     ;;
  docker)
	PACKAGE="docker.io"
     ;;
  etcher)
	if [ "$ARCHARM" != "" ]; then
		$DIALOG $TEXT"\n$LOCAL100\n\n$LOCAL24" $TITLE"$TITLETEXT" $MSGBOX
		exit 1
	fi
	PACKAGE="balena-etcher-electron"
     ;;
  flatpak)
	PACKAGE="flatpak"
     ;;
   gdebi)
	PACKAGE="gdebi"
     ;;
  gitkraken)
	if [ "$ARCH64" = "" ]; then
		$DIALOG $TEXT"\n$LOCAL100\n\n$LOCAL24" $TITLE"$TITLETEXT" $MSGBOX
		exit 1
	fi
	PACKAGE="gitkraken"
     ;;
  luckybackup)
	PACKAGE="luckybackup"
     ;;
  mintstick)
	PACKAGE="mintstick"
     ;;
  mkusb)
	PACKAGE="mkusb"
     ;;
  multibootusb)
	PACKAGE="python3-multibootusb"
     ;;
  netdata)
	PACKAGE="netdata"
     ;;
  nvidia-settings)
	PACKAGE="nvidia-settings"
     ;;
  qt-fsarchiver)
	PACKAGE="qt-fsarchiver"
     ;;
  pearl-backup-sys)
	PACKAGE="pearl-backup-sys"
     ;;
  pearl-eraser)
	PACKAGE="pearl-eraser"
     ;;
  pearl-live-usb-creator)
	PACKAGE="pearl-live-usb-creator"
     ;;
  pearl-usb-formatter)
	PACKAGE="pearl-usb-formatter"
     ;;
  snapd)
	PACKAGE="snapd"
     ;;
  timekpr)
	PACKAGE="timekpr-next"
     ;;
  timeshift)
	PACKAGE="timeshift"
     ;;
  virtualbox)
	if [ "$ARCH64" = "" ]; then
		$DIALOG $TEXT"\n$LOCAL100\n\n$LOCAL24" $TITLE"$TITLETEXT" $MSGBOX
		exit 1
	fi
	PACKAGE="virtualbox-qt"
     ;;
  vulkan-utils)
	PACKAGE="vulkan-tools"
     ;;
  webmin)
	PACKAGE="webmin"
     ;;
  woeusb)
	PACKAGE="woeusb"
     ;;
esac

if [ "$1" = "virtualbox" ]; then
	CHECKPACKAGE="/usr/share/doc/$PACKAGE"
	#VBOX60="/usr/share/doc/virtualbox-6.0"
elif [ "$1" = "anydesk" ]; then
	CHECKPACKAGE="/usr/share/anydesk"
else
	CHECKPACKAGE="/usr/share/doc/$PACKAGE"
fi

# install, reinstall or remove virtualbox
if [ "$1" = "virtualbox" ]; then

	CHECKSERVERDEB=`apt-cache policy $PACKAGE | head -n3 | tail -n1 | grep [0-9]`

	if [ -d "$CHECKPACKAGE" ]; then
		$DIALOG $TEXT"\n$LOCAL89\n$LOCAL90" $TITLE"$TITLETEXT" $BUTTONREMOVE $BUTTONREINSTALL $BUTTONEXIT
		ret=$?
		if [[ $ret -eq 3 ]]; then
			$PEARLXTERM "$UNINSTALL $PACKAGE*"
		elif [[ $ret -eq 4 ]]; then
			if [ "$PINGTEST" = "" ]; then
				$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL16 \n\n$LOCAL24"
				exit 1
			fi
			# check is deb available in the repository
			if [ "$CHECKSERVERDEB" = "" ]; then
				if [ -f /etc/apt/sources.list.d/debian-stable-backports.list ]; then
					rm -f /etc/apt/sources.list.d/debian-stable-backports.list
				fi
				$PEARLXTERM "$UPDATE"
			fi
			$PEARLXTERM "$REINSTALL $PACKAGE"
		else
			exit 1
		fi
	elif [ ! -d "$CHECKPACKAGE" ]; then
		$DIALOG $TEXT"\n$LOCAL91" $TITLE"$TITLETEXT" $BUTTONINSTALL $BUTTONEXIT
		if [ "$?" = "0" ]; then
			if [ "$PINGTEST" = "" ]; then
				$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL16 \n\n$LOCAL24"
				exit 1
			fi
			# check is deb available in the repository
			if [ "$CHECKSERVERDEB" = "" ]; then
				if [ -f /etc/apt/sources.list.d/debian-stable-backports.list ]; then
					rm -f /etc/apt/sources.list.d/debian-stable-backports.list
				fi
				$PEARLXTERM "$UPDATE"
			fi
			#if [ -d "$VBOX60" ]; then
			#	$PEARLXTERM "$UNINSTALL virtualbox-6.0 -y"
			#fi
			$PEARLXTERM "$INSTALL $PACKAGE"
			USER1000=`cat /etc/passwd | grep 1000 | awk -F: '{ print $1 }'`
			if [ "$USER1000" != " " ]; then 
				adduser $USER1000 vboxusers
			fi
			if [ ! -d "$CHECKPACKAGE" ]; then
				$DIALOG $TEXT"\n$LOCAL20" $TITLE"$TITLETEXT" $MSGBOX
				exit 1
			else
				$DIALOG $TEXT"\n$LOCAL87\n\n$LOCAL24" $TITLE"$TITLETEXT" $MSGBOX
				exit 1
			fi

		elif [ "$?" != "0" ]; then
			exit 1
		fi
	fi

# install, reinstall or remove anything else
else

	if [ -d "$CHECKPACKAGE" ]; then
		$DIALOG $TEXT"\n$LOCAL89\n$LOCAL90" $TITLE"$TITLETEXT" $BUTTONREMOVE $BUTTONREINSTALL $BUTTONEXIT
		ret=$?
		if [[ $ret -eq 3 ]]; then
			$PEARLXTERM "$UNINSTALL $PACKAGE"
		elif [[ $ret -eq 4 ]]; then
			if [ "$PINGTEST" = "" ]; then
				$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL16 \n\n$LOCAL24"
				exit 1
			fi
			$PEARLXTERM "$REINSTALL $PACKAGE"
		else
			exit 1
		fi
	elif [ ! -d "$CHECKPACKAGE" ]; then
		$DIALOG $TEXT"\n$LOCAL91" $TITLE"$TITLETEXT" $BUTTONINSTALL $BUTTONEXIT
		if [ "$?" = "0" ]; then
			if [ "$PINGTEST" = "" ]; then
				$DIALOG $TITLE"$TITLETEXT" $MSGBOX $TEXT"$LOCAL16 \n\n$LOCAL24"
				exit 1
			fi
			$PEARLXTERM "$INSTALL $PACKAGE"
			if [ ! -d "$CHECKPACKAGE" ]; then
				$DIALOG $TEXT"\n$LOCAL20" $TITLE"$TITLETEXT" $MSGBOX
				exit 1
			else
				$DIALOG $TEXT"\n$LOCAL87\n\n$LOCAL24" $TITLE"$TITLETEXT" $MSGBOX
				exit 1
			fi

		elif [ "$?" != "0" ]; then
			exit 1
		fi
	fi

fi

exit 0
