#!/bin/bash
# Script para fazer uma instalação de pacotes adicionais após uma instalação limpa do Linux Mint
# Autor: jarbas.junior@gmail.com, 23/Jul/2020
# 22/Jul/2026, jarbas, adaptação para Linux Mint 22.3

# Verificar se o script está sendo executado como root
if [[ $EUID -ne 0 ]]; then
   echo "Este script deve ser executado como root."
   exit 1
fi

# Não pedir confirmação na instalação/atualização
export DEBIAN_FRONTEND=noninteractive

# Desabilitar o samba
systemctl disable --now smbd

apt-get update -yq
apt-get install -yq ssh vim htop tree chrony command-not-found figlet apt-transport-https curl wget \
    realmd sssd sssd-tools libnss-sss libpam-sss samba attr acl smbclient ldb-tools adcli samba-common-bin \
    winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user oddjob oddjob-mkhomedir packagekit \
    net-tools dnsutils screen rsync nmap mc ldap-utils speedtest-cli git \
    apt-transport-https ca-certificates gnupg-agent software-properties-common \
    network-manager-l2tp network-manager-l2tp-gnome libreswan \
    smartmontools nvme-cli boxes duf cockpit copyq xclip ffmpeg sysstat

sed -i 's/ENABLED="false"/ENABLED="true"/g' /etc/default/sysstat

if [ ! -s /etc/apt/sources.list.d/google-chrome.list ]; then
	# Instalar o Google Chrome 64bits
	wget -c https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -O /tmp/google-chrome-stable_current_amd64.deb
	dpkg -i /tmp/google-chrome-stable_current_amd64.deb
	apt-get install -yq -f
fi

if [ ! -s /etc/apt/sources.list.d/vbrave-browser-release.list ]; then
	# Adicionar repositório do Brave https://brave.com/linux/
	curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
	echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main" > /etc/apt/sources.list.d/brave-browser-release.list
    apt-get install -yq brave-browser
fi

if [ ! -s /etc/apt/sources.list.d/vscode.list ]; then
	# Adicionar repositório do VisualCode
	curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg
	install -o root -g root -m 644 /tmp/microsoft.gpg /etc/apt/trusted.gpg.d/
	echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list
    apt-get install -yq code
fi

if [ ! -s /etc/apt/sources.list.d/docker.sources ]; then
    # Adicionar repositório do Docker
    # Add Docker's official GPG key:
    install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    chmod a+r /etc/apt/keyrings/docker.asc
    # Add the repository to Apt sources:

    cat << _EOF_ > /etc/apt/sources.list.d/docker.sources
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
_EOF_

    apt-get update -yq
    apt-get install -yq docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
fi

if [ ! -s /etc/apt/sources.list.d/anydesk-stable.list ]; then
	# Adicionar AnyDesk DEB repository
	echo "deb http://deb.anydesk.com/ all main" > /etc/apt/sources.list.d/anydesk-stable.list
	wget -qO - https://keys.anydesk.com/repos/DEB-GPG-KEY | apt-key add -
fi


if [ ! -s /etc/apt/sources.list.d/teamviewer.list ]; then
	# Instalar TeamViewer 64bits
	wget -c https://download.teamviewer.com/download/linux/teamviewer_amd64.deb -O /tmp/teamviewer_amd64.deb
	dpkg -i /tmp/teamviewer_amd64.deb
	apt-get install -yq -f
fi

# Acesso remoto proprietário
apt-get -yq install anydesk
apt-get -yq install teamviewer

#touch /etc/securetty # O Ubuntu 20.04 vem SEM esse arquivo e fica alarmendo no syslog

# Criar o home do usuário no primeiro login
pam-auth-update --enable mkhomedir

# Possibilitar entrar com usuário do domínio na tela de login
cat << _EOF_  > /etc/lightdm/lightdm.conf.d/70-linuxmint.conf
[SeatDefaults]
user-session=cinnamon
greeter-show-manual-login=true
_EOF_

# Instalar zabbix-agent2
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
apt update
apt-get install -yq zabbix-get zabbix-sender zabbix-agent2 zabbix-agent2-plugin-* zabbix-proxy-sqlite3
cat << _EOF_ > /etc/zabbix/zabbix_agent2.conf
PidFile=/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
#ServerActive=127.0.0.1
#Hostname=hostname
AllowKey=system.run[*]
Plugins.SystemRun.LogRemoteCommands=1
Include=/etc/zabbix/zabbix_agent2.d/*.conf
PluginSocket=/run/zabbix/agent.plugin.sock
ControlSocket=/run/zabbix/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf
_EOF_

cat << '_EOF_' > /etc/sudoers.d/zabbix-nopasswd
zabbix ALL=(ALL) NOPASSWD: ALL
_EOF_

# Install Rustdesk
ARCHITECTURE=`uname -m`
if [ "$ARCHITECTURE" == 'arm64' ]; then ARCHITECTURE='aarch64'; fi
LATEST=`curl -sI https://github.com/rustdesk/rustdesk/releases/latest | awk -F'/' '/^location/ {sub("\r","",$NF); print $NF }'`
curl -# -L "https://github.com/rustdesk/rustdesk/releases/download/${LATEST}/rustdesk-${LATEST}-${ARCHITECTURE}.deb" -o rustdesk-${LATEST}-${ARCHITECTURE}.deb
apt-get install -yq ./rustdesk-${LATEST}-${ARCHITECTURE}.deb

curl -fsSL https://xlionjuan.github.io/rustdesk-apt-repo-latest/gpg.key | gpg --yes --dearmor --output /usr/share/keyrings/xlion-repo.gpg
curl -fsSl https://xlionjuan.github.io/rustdesk-apt-repo-latest/latest.sources | tee /etc/apt/sources.list.d/xlion-rustdesk-repo.sources

# Mostrar versão, id e definir senha mestre
rustdesk --version
rustdesk --get-id
rustdesk --password RustDeskPassword
#RUSTDESK_CFG="rustdesk.grupoimagetech.com.br"
#rustdesk --option custom-rendezvous-server $RUSTDESK_CFG

# Atualização Geral do SO
apt-get dist-upgrade -yq
apt-get autoremove -yq --purge

# Dar permissões para o primeiro usuário ao sudo e docker
export FIRST_USER=`getent passwd 1000 | awk -F'[:]' '{ print $1 }'`
usermod -aG sudo,docker $FIRST_USER
cat << _EOF_ > /etc/sudoers.d/$FIRST_USER-nopasswd
$FIRST_USER ALL=(ALL) NOPASSWD: ALL
_EOF_

export FIRST_HOME=`getent passwd 1000 | awk -F'[:]' '{ print $6 }'`
cd $FIRST_HOME
mkdir -p ~/.docker
cat << '_EOF_' > ~/.docker/config.json
{
    "imagesFormat": "table"
}
_EOF_

# Perguntar quais usuários irão logar nesse computador
while true; do
   echo "Entre com seu login. Deixe em branco para sair..."
   read user_name
   if [[ "$user_name" == "" ]]; then
      break # Exits the while loop
   fi
   useradd -m -p $(openssl passwd -1 "$user_name") $user_name
   usermod -aG sudo,docker $user_name
    cat << _EOF_ > /etc/sudoers.d/$user_name-nopasswd
$user_name ALL=(ALL) NOPASSWD: ALL
_EOF_
done

cat << '_EOF' > /etc/profile.d/zz-welcome.sh
echo -e "\nwiki.TiozaoDoLinux.com" | boxes -d dog -a c -s 80
neofetch
echo -e "Desktop - $HOSTNAME\n\n`date`" | boxes -d parchment -a c -s 80
duf --only local
_EOF

cat << '_EOF' > ~/.bash_aliases
alias remove-comments="grep -v -E '^(#|$|[[:space:]])'"
alias meuip='curl -s http://ipinfo.io/json/ | jq'
_EOF

cat << '_EOF' >> ~/.bashrc
# 'history' personalization
HISTCONTROL=ignoredups:ignorespace
shopt -s histappend
HISTSIZE=1000
HISTFILESIZE=2000
HISTTIMEFORMAT="%F %T "
export TERM=xterm

# Root Prompt
PS1='\[\e[1;31m\]\342\224\214\342\224\200\[\e[1;31m\][\[\e[1;33m\]\u\[\e[1;37m\]@\[\e[1;36m\]\h\[\e[1;31m\]]\[\e[1;31m\]\342\224\200\[\e[1;31m\][\[\e[1;33m\]\w\[\e[1;31m\]]\[\e[1;31m\]\342\224\200[\[\e[1;37m\]\d \t\[\e[1;31m\]]\n\[\e[1;31m\]\342\224\224\342\224\200\342\224\200\342\225\274\[\e[1;37m\] \$ \[\e[0m\]'
_EOF

cat << '_EOF' >> /root/.vimrc
" Disable vim automatic visual mode on mouse select
"
" issue: :set mouse-=a
" add to ~/.vimrc: set mouse-=a
"
"my ~/.vimrc for preserving global defaults and only changing one option:
"
" Referência: https://gist.github.com/u0d7i/01f78999feff1e2a8361
"
source $VIMRUNTIME/defaults.vim
set mouse-=a
_EOF

# Visulizar o domínio do Active Directory disponível
realm discover --verbose

figlet "Por Favor Reboot NOW"


