#!/bin/bash
#author:Cristiano Siqueira
#descricao:Automatiza a instalação do TEF da SkyTEF no caixa.
#Revisao:

confirmapdvconfig(){
	echo "╔═══════════════════════════════════════════════════════════════════════════╗"
	echo "║ Existe algo errado na configuração do TEF no arquivo pdvconfig.cfg (s/n)? ║"
	echo "╚═══════════════════════════════════════════════════════════════════════════╝"
	read -p "R: " pdvconfig
	echo " "
	case "$pdvconfig" in s )
        echo "╔═════════════════╗"
		echo "║ Corrija o erro! ║"
		echo "╚═════════════════╝"
		sleep 3
		vi /usr/local/sigpdv/pdvconfig.cfg
		confirmapdvconfig
	;; n )
        echo "╔═════╗"
		echo "║ OK! ║"
		echo "╚═════╝"
	;; * )
        echo "╔════════════════════════════════════════════════════╗"
		echo "║ Opção errada. Digite 's' para SIM ou 'n' para NÃO. ║"
		echo "╚════════════════════════════════════════════════════╝"
		confirmapdvconfig
	;;
	esac
}

user=`whoami`
if [[ $user == "root" ]];then

	if [[ -e /usr/local/sigpdv/pdvconfig.cfg ]];then
		echo "╔═══════════════════════════════════╗"
		echo "║ Aquivo pdvconfig.cfg encontrado!! ║"
		echo "╚═══════════════════════════════════╝"
		sleep 3
	else
		clear
		echo "╔══════════════════════════════════════════════╗"
		echo "║ O frente parece não estar instalado, pois    ║"
		echo "║ não foi encontrado a arquivo pdvconfig.cfg.  ║"
		echo "╚══════════════════════════════════════════════╝"
		exit
	fi
	echo "╔═══════════════════════════════════════╗"
	echo "║ Iniciando instalação do TEF no caixa. ║"
	echo "╚═══════════════════════════════════════╝"
	sleep 3
	apt update
	echo "╔══════════════════╗"
	echo "║ Instalando CURL. ║"
	echo "╚══════════════════╝"
	sleep 2
	apt -y install curl nmap bc netcat
	echo "╔════════════════════════════════════════════╗"
	echo "║ Liberando pacotes para prevenção de erros. ║"
	echo "╚════════════════════════════════════════════╝"
	sleep 2
	apt-mark unhold python-sqlalchemy
	apt-mark unhold python-sqlalchemy-doc
	apt-mark unhold python-sqlalchemy-ext
	apt-mark unhold python-elixir
	apt-mark unhold python-serial
	echo "╔══════════════════════════════════════╗"
	echo "║ Baixando arquivos para a instalação. ║"
	echo "╚══════════════════════════════════════╝"
	sleep 2
	cd /tmp
	mkdir /install_tef
	chown caixa:caixa /install_tef/
	chmod 777 /install_tef/


	echo "╔═══════════════════════════════════════╗"
	echo "║ Descompactando arquivo de instalação. ║"
	echo "╚═══════════════════════════════════════╝"
	sleep 2
	unzip tef1.0.zip
	dpkg -i tef1.0.deb
	echo "╔═════════════════════════════════════════════════════════════╗"
	echo "║ Dando permissões e copiando arquivo para a pasta designada. ║"
	echo "╚═════════════════════════════════════════════════════════════╝"
	sleep 2
	chmod 777 chmod wnbmonitor
	cp wnbmonitor /usr/bin/
	echo "╔════════════════════════════════════╗"
	echo "║ Deletando arquivos desnecessários. ║"
	echo "╚════════════════════════════════════╝"
	sleep 2
	rm -rf /etc/wnbtlscli.old
	rm -rf /etc/wnbtlscli
	rm -rf /var/log/wnb.old
	rm -rf /var/log/wnb
	echo "╔═══════════════════════╗"
	echo "║ Copiando bibliotecas. ║"
	echo "╚═══════════════════════╝"
	sleep 2

	echo "╠══════════════════════════════════════════════════════════════════════════╣"
	ls -lha /usr/local/sigpdv/sigtef/
	rm -rf /usr/local/sigpdv/sigtef/lib
	rm -rf /usr/local/sigpdv/sigtef/lib_x86_64
	echo "╠══════════════════════════════════════════════════════════════════════════╣"

	sleep 2
	echo "╠══════════════════════════════════════════════════════════════════════════╣"
	ls -lha /usr/local/sigpdv/sigtef/
	echo "╠══════════════════════════════════════════════════════════════════════════╣"
	sleep 3

	unzip libs_tef_7.0_att.zip
	cp -r -v lib_x86_64 /usr/local/sigpdv/sigtef/
	cp -r -v lib /usr/local/sigpdv/sigtef/
	sleep 3

	echo "╔════════════════════════════════════╗"
	echo "║ Deletando arquivos desnecessários! ║"
	echo "╚════════════════════════════════════╝"
	rm -rf lib_x86_64
	rm -rf lib
	rm -rf tef1.0.deb
	rm -rf wnbmonitor

	sleep 2
	echo "╠══════════════════════════════════════════════════════════════════════════╣"
	ls -lha /usr/local/sigpdv/sigtef/
	echo "╠══════════════════════════════════════════════════════════════════════════╣"

	echo "╔══════════════════════════════════════════════════════╗"
	echo "║ Será necessário a key do TEF para registrar o caixa. ║"
	echo "║ Copie a key da SkyTef para poder registrar o caixa.  ║"
    echo "╚══════════════════════════════════════════════════════╝"
	sleep 4

    echo "╔═══════════════════════════════════════════════════════════════╗"
	echo "║ Iniciando atualização do TEF e processo de registro do caixa. ║"
    echo "╚═══════════════════════════════════════════════════════════════╝"
	unzip tef2.0.zip
	chmod 777 wnbupdate-amd64
	./wnbupdate-amd64 -i
	echo "╔═══════════════════════╗"
	echo "║ Habilitando serviços. ║"
	echo "╚═══════════════════════╝"
	sleep 2
	systemctl enable wnbmonitor
	systemctl enable wnbtlscli
	rm -rf wnbupdate-amd64
	echo "╔═════════════════════╗"
	echo "║ Iniciando serviços. ║"
	echo "╚═════════════════════╝"
	sleep 2
	systemctl start wnbmonitor
	systemctl start wnbtlscli
	echo "╔═══════════════════╗"
	echo "║ Fechando pacotes. ║"
	echo "╚═══════════════════╝"
	sleep 2
	apt-mark hold python-sqlalchemy
	apt-mark hold python-sqlalchemy-doc
	apt-mark hold python-sqlalchemy-ext
	apt-mark hold python-elixir
	apt-mark hold python-serial

	echo " "
	echo " "
	echo " "
    echo "╔═══════════════════════════════════════════════════════════════════════╗"
	echo "║ Configure o (pdvconfig.cfg) com o numero da loja e o IP 127.0.0.1.    ║"
	echo "║ Siga o Exemplo a baixo:                                               ║"
	echo "║                                                                       ║"
	echo "║ [Tef]                                                                 ║"
	echo "║ empresa = 00017542                                                    ║"
	echo "║ qtdvias = 2                                                           ║"
	echo "║ servidor = 127.0.0.1                                                  ║"
	echo "║                                                                       ║"
	echo "║ Não se esqueça de verificar se o Pinpad está comunicando normalmente. ║"
	echo "╚═══════════════════════════════════════════════════════════════════════╝"
	echo " "
	echo " "
	echo " "
	sleep 6
	echo "         = = Abrindo arquivo (pdvconfig.cfg) para ser alterado. = = "
	sleep 3
	vi /usr/local/sigpdv/pdvconfig.cfg
	clear
	echo "╔═════════════════════════════════════════════╗"
	echo "║ Confirmando dados salvos no (pdvconfig.cfg) ║"
	echo "╚═════════════════════════════════════════════╝"
	echo " "
	cat -n /usr/local/sigpdv/pdvconfig.cfg | grep -n ^ | grep ^192: | cut -d: -f2
	cat -n /usr/local/sigpdv/pdvconfig.cfg | grep -n ^ | grep ^191: | cut -d: -f2
	cat -n /usr/local/sigpdv/pdvconfig.cfg | grep -n ^ | grep ^190: | cut -d: -f2

	confirmapdvconfig
	sleep 4

	echo " "
	echo " "
	echo "            = = Abra o Frente e envie a carga forçada para o Pinpad. = = "
	echo " "
	echo " "
	echo "                             ╔══════════════════════╗"
	echo "                             ║ INSTALAÇÃO CONCLUIDA ║"
	echo "                             ╚══════════════════════╝"
	exit

	sleep 3
	exit

else
	clear
	echo " "
    echo "          ╔══════════════════════════════════════════════╗"
    echo "          ║ Execute este aplicatvo como Root, por favor. ║"
    echo "          ╚══════════════════════════════════════════════╝"
    exit
fi
