#!/bin/bash
# ┌──────────────────────────────────────────────────────────┐
# │ Author: Bruno.Tosta                                      │
# │ Desc: Instalar o OpenVPN                                 │
# └──────────────────────────────────────────────────── 1.2 ─┘
USUARIO=$(id -u) DIRETORIO='/etc/openvpn/client'
SIGERP=('local_sigerp.conf' 'comodato_sigerp.conf')
REPOSITORIO='download.sigsolucoes.net.br/public/Tosta/VPN/controle'
MenuExecutar(){
	clear; read -p '
	┌───┬────────── Instalar OpenVPN ──────────────┐
	│ 1 │ Local                                    │
	│ 2 │ Comodato                                 │
	│ 0 │ Sair                                     │
	└───┴──────────────────────────────────────────┘
	Escolha uma opção: ' EXECUTAR && Executavel
}
Executavel(){
case "$EXECUTAR" in
	1|2) Instalar	;;
	3) exit			;;
	*) MenuExecutar	;;
esac
}
Instalar(){
	echo 'Iniciando instalação'
	apt update >'/dev/null' 2>'/dev/null' && echo 'Pacotes atualizados'
	apt -y install \
	ca-certificates \
	openssl \
	tmate \
	curl \
	openvpn
	Configurar
}
Configurar(){
	wget -q --show-progress -O "$DIRETORIO/sigerp.conf" "$REPOSITORIO/${SIGERP[$(($EXECUTAR-1))]}"
	read -p 'Digite o usuário da VPN: ' USER && echo "$USER" > "$DIRETORIO/sigerp.passwd"
	read -p 'Digite a senha da VPN: ' PASS && echo "$PASS" >> "$DIRETORIO/sigerp.passwd"
	Permitir
}
Permitir(){
	echo 'Alterando permissões'
	chown -R daemon:daemon "$DIRETORIO/"
	chmod 600 "$DIRETORIO/sigerp.passwd"
	Iniciar
}
Iniciar(){
	systemctl disable 'openvpn.service' \
	&& systemctl enable --now 'openvpn-client@sigerp' \
	&& systemctl restart 'openvpn-client@sigerp' \
	&& echo "net.ipv4.tcp_window_scaling=1" > /etc/sysctl.d/50-openvpn.conf

	STATUS=$(systemctl status 'openvpn-client@sigerp' | grep -i 'active' | awk '{print$2}')
	[ "$STATUS" = 'active' ] && {
		printf 'Instalado com sucesso\n' && exit
	} || {
		printf 'Houve algum erro\nRode "systemctl status openvpn-client@sigerp" para saber mais \n' && exit 1
}
}
[ "$USUARIO" = '0' ] && MenuExecutar || echo 'Ative o root primeiro'

