#!/bin/bash
set -e

# Verifica se está rodando como root
if [ "$EUID" -ne 0 ]; then
  echo "Execute este script como root (sudo)."
  exit 1
fi

# Configurar repositórios para mirrors da UFSCar e USP
sed -i -E 's|http://packages\.linuxmint\.com\|http://linuxmint\.c3sl\.ufpr\.br|https://mirror.ufscar.br/mint-archive|g' /etc/apt/sources.list.d/official-package-repositories.list || true
sed -i -E 's|http://archive\.ubuntu\.com/ubuntu\|http://br\.archive\.ubuntu\.com/ubuntu|http://sft.if.usp.br/ubuntu|g' /etc/apt/sources.list.d/official-package-repositories.list || true

# Atualizar cache com os novos mirrors e fazer dist-upgrade
apt-get update -y
apt-get dist-upgrade -y

# Remover arquivo de bloqueio do snap
rm -f /etc/apt/preferences.d/nosnap.pref

# Garantir que o diretório keyrings exista
mkdir -p /etc/apt/keyrings
chmod 0755 /etc/apt/keyrings

# Baixar chave GPG e adicionar repositório do AnyDesk
wget -q --show-progress -O /etc/apt/keyrings/anydesk.asc https://keys.anydesk.com/repos/DEB-GPG-KEY
echo "deb [signed-by=/etc/apt/keyrings/anydesk.asc] http://deb.anydesk.com/ all main" > /etc/apt/sources.list.d/anydesk-stable.list

# Adicionar PPAs forçando o codinome da base (noble)
add-apt-repository -y ppa:atareao/telegram
add-apt-repository -y ppa:tomtomtom/woeusb
sed -i -E 's/jammy|mantic|lunar|focal|bionic/noble/g' /etc/apt/sources.list.d/atareao-ubuntu-telegram*.list || true
sed -i -E 's/jammy|mantic|lunar|focal|bionic/noble/g' /etc/apt/sources.list.d/tomtomtom-ubuntu-woeusb*.list || true

# Atualizar cache e fazer dist-upgrade
apt-get update -y
apt-get dist-upgrade -y

# Instalar pacotes base via APT
apt-get install -y \
    net-tools \
    ssh \
    vim \
    htop \
    screen \
    aptitude \
    gparted \
    gimp \
    inkscape \
    clementine \
    cifs-utils \
    p7zip \
    p7zip-full \
    p7zip-rar \
    rar \
    unrar \
    unrar-free \
    whois \
    filezilla \
    vlc \
    mc \
    sshpass \
    remmina \
    remmina-plugin-rdp \
    remmina-plugin-secret \
    remmina-plugin-spice \
    remmina-plugin-vnc \
    remmina-plugin-exec \
    nfs-common \
    software-properties-common \
    samba \
    gprename \
    cheese snapd \
    tree \
    anydesk \
    telegram \
    woeusb \
    woeusb-frontend-wxgtk \
    wimtools \
    copyq \
    gpg \
    handbrake \
    apt-transport-https \
    ffmpeg \
    hydrapaper \
    flameshot \
    default-jre \
    mtr \
    nala \
    network-manager-fortisslvpn-gnome \
    audacity \
    vokoscreen-ng \
    xwayland \
    gnome-clocks \
    gnupg \
    openssl \
    ansible

# Preenche a aceitação da licença e instala silenciosamente apenas este pacote
echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | debconf-set-selections
DEBIAN_FRONTEND=noninteractive apt-get install -y ttf-mscorefonts-installer

# Instalar VirtualBox 7.1.4 e Extension Pack
wget -q --show-progress -O /tmp/virtualbox.deb https://download.virtualbox.org/virtualbox/7.1.4/virtualbox-7.1_7.1.4-165100~Ubuntu~noble_amd64.deb
apt-get install -y /tmp/virtualbox.deb
wget -q --show-progress -O /tmp/Oracle_VirtualBox_Extension_Pack-7.1.4.vbox-extpack https://download.virtualbox.org/virtualbox/7.1.4/Oracle_VirtualBox_Extension_Pack-7.1.4.vbox-extpack
echo "y" | VBoxManage extpack install --replace /tmp/Oracle_VirtualBox_Extension_Pack-7.1.4.vbox-extpack
rm -f /tmp/virtualbox.deb /tmp/Oracle_VirtualBox_Extension_Pack-7.1.4.vbox-extpack

# Instalar pacotes via arquivos .deb avulsos
wget -q --show-progress -O /tmp/appimage.deb https://github.com/TheAssassin/AppImageLauncher/releases/download/v3.0.0-beta-3/appimagelauncher_3.0.0-beta-2-gha287.96cb937_amd64.deb
wget -q --show-progress -O /tmp/chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
wget -q --show-progress -O /tmp/teamviewer.deb https://download.teamviewer.com/download/linux/teamviewer_amd64.deb
wget -q --show-progress -O /tmp/bitwarden.deb "https://vault.bitwarden.com/download/?app=desktop&platform=linux&variant=deb"
apt-get install -y /tmp/appimage.deb /tmp/chrome.deb /tmp/teamviewer.deb /tmp/bitwarden.deb
rm -f /tmp/appimage.deb /tmp/chrome.deb /tmp/teamviewer.deb /tmp/bitwarden.deb

# Instalar Brave Browser
if [ ! -f /etc/apt/sources.list.d/brave-browser-release.sources ]; then
  curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
  curl -fsSLo /etc/apt/sources.list.d/brave-browser-release.sources https://brave-browser-apt-release.s3.brave.com/brave-browser.sources
fi
apt-get update -y && apt-get install -y brave-browser

# Configura o repositório e instala o Opera aceitando a atualização automática silenciosamente
if [ ! -f /etc/apt/sources.list.d/opera-stable.list ]; then
  wget -q --show-progress -O- https://deb.opera.com/archive.key | apt-key add -
  echo "deb https://deb.opera.com/opera-stable/ stable non-free" > /etc/apt/sources.list.d/opera-stable.list
fi

echo "opera-stable opera-stable/add-repo boolean true" | debconf-set-selections
apt-get update -y
DEBIAN_FRONTEND=noninteractive apt-get install -y opera-stable

# Configurar chaves, repositórios e instalar Microsoft Edge e VS Code
if [ ! -f /etc/apt/keyrings/packages.microsoft.gpg ]; then
  curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg
  curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/keyrings/packages.microsoft.gpg
fi
if [ ! -f /etc/apt/sources.list.d/vscode.list ]; then
  echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list
  echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list
fi
apt-get update -y && apt-get install -y microsoft-edge-stable code

# Limpar artefatos da Microsoft e sincronizar chaves
rm -f /etc/apt/trusted.gpg.d/microsoft.gpg
rm -f /etc/apt/sources.list.d/microsoft-edge-dev.list
cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d || true

# Purgar Thunderbird antigo e instalar versão nativa em PT-BR
dpkg --purge $(dpkg -l | awk '/thunderbird/ {print $2}') || true
apt-get update -y && apt-get install -y thunderbird thunderbird-locale-pt-br

# Configurar /etc/screenrc
cat << 'EOF' > /etc/screenrc
attrcolor b ".I"
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
termcapinfo xterm* ti@:te@
defbce "on"
term xterm-256color
defscrollback 30000
hardstatus alwayslastline 
hardstatus string '%{= Kd} %{= Kd}%-w%{= Kr}[%{= KW}%n %t%{= Kr}]%{= Kd}%+w %-= %{KG} %H%{KW}|%{KY}%101`%{KW}|%D %M %d %Y%{= Kc} %C%A%{-}'
bind f eval "hardstatus ignore"
bind F eval "hardstatus alwayslastline"
EOF

# Backup e sobrescrita do SSH Client
cp /etc/ssh/ssh_config "/etc/ssh/ssh_config.bkp.$(date +%Y-%m-%d_%H-%M-%S)" || true
cat << 'EOF' > /etc/ssh/ssh_config
Include /etc/ssh/ssh_config.d/*.conf
Host *
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
HostKeyAlgorithms=+ssh-dss
HashKnownHosts no
GSSAPIDelegateCredentials no
LogLevel ERROR
PubkeyAcceptedKeyTypes +ssh-rsa
EOF

# Instalar Rclone via script oficial
if [ ! -f /usr/bin/rclone ]; then
  curl https://rclone.org/install.sh | bash
fi

# Instalar e configurar Winbox
mkdir -p /opt/winbox
chmod 0755 /opt/winbox
wget -q --show-progress -O /tmp/WinBox_Linux.zip https://downloads.aprendendolinux.com/programas/WinBox_Linux.zip
unzip -o /tmp/WinBox_Linux.zip -d /opt/winbox
chmod 0755 /opt/winbox/WinBox
cat << 'EOF' > /usr/share/applications/winbox.desktop
[Desktop Entry]
Name=Winbox MikroTik
Exec=/opt/winbox/WinBox
Comment=
Terminal=false
PrefersNonDefaultGPU=false
Icon=/opt/winbox/assets/img/winbox.png
Type=Application
Categories=Other;
EOF
chmod 0644 /usr/share/applications/winbox.desktop

# Corrigir lançador do WoeUSB-GUI
sed -i 's/^Exec=woeusbgui/Exec=env WXSUPPRESS_SIZER_FLAGS_CHECK=1 woeusbgui/g' /usr/share/applications/woeusbgui.desktop || true

# Configurar Flathub e instalar Sessions
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak install -y flathub com.pojtinger.felicitas.Sessions

# Remover Docker antigo e instalar Docker CE atualizado
apt-get remove -y docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc || true
wget -q --show-progress -O /etc/apt/keyrings/docker.asc https://download.docker.com/linux/ubuntu/gpg
chmod 0644 /etc/apt/keyrings/docker.asc
ARCH=$(dpkg --print-architecture)
echo "deb [arch=${ARCH} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable" > /etc/apt/sources.list.d/docker.list
apt-get update -y
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
echo 'alias list='docker ps -a --format "{{.ID}} : {{.State}} : {{.Status}} : {{.Names}}"'' >> /root/.bashrc

# Limpar o cache completo do APT
apt-get clean -y
