#!/bin/bash
# ==============================================================================
# 🚀 Instalador Customizado - TOP IPTV (Limpeza + Firewall + FFmpeg + RAM Disk)
# ==============================================================================

clear
echo "======================================================="
echo "🚀 Instalador TOP IPTV (Motor FFmpeg Restream + Nginx/Apache)"
echo "======================================================="
sleep 2

# === CAPTURA DE DADOS E IP ===
IPV4=$(curl -s ifconfig.me)
read -p "🌍 Digite o domínio do painel (ex: painel.brtvs.top): " DOMAIN
read -p "✉️ Digite seu e-mail de admin para o SSL: " ADMIN_EMAIL

DB_NAME="officextream"
DB_USER="user_officextream"
DB_PASS="pass_officextream"
ROOT_DB_PASS="root123" 

PHP_VERSION="8.1"
WWW_DIR="/var/www/html"

echo ""
echo "======================================================="
# === 0. LIMPEZA PROFUNDA (CUIDADO!) ===
echo "⚠️ ATENÇÃO: Este instalador vai APAGAR COMPLETAMENTE qualquer painel"
echo "e banco de dados que já esteja rodando nesta máquina!"
read -p "Tem certeza que deseja continuar e formatar tudo? (s/n): " CONFIRM

if [[ "$CONFIRM" != "s" && "$CONFIRM" != "S" ]]; then
    echo "❌ Instalação cancelada pelo usuário. Nada foi alterado."
    exit 1
fi

echo "🧹 Passo 0/8: Iniciando limpeza do sistema antigo..."

# 1. Mata todos os processos de vídeo ativos para liberar a memória
killall -9 ffmpeg >/dev/null 2>&1

# 2. Desmonta a pasta de streams da memória RAM (se existir)
umount ${WWW_DIR}/streams >/dev/null 2>&1

# 3. Apaga TODOS os arquivos da pasta web
rm -rf ${WWW_DIR}/* >/dev/null 2>&1

# 4. Apaga o banco de dados antigo
mysql -u root -p"${ROOT_DB_PASS}" -e "DROP DATABASE IF EXISTS ${DB_NAME};" >/dev/null 2>&1
mysql -u root -e "DROP DATABASE IF EXISTS ${DB_NAME};" >/dev/null 2>&1 

echo "✨ Limpeza concluída! A máquina está zerada para o novo painel."
sleep 2

# === 1. ATUALIZAÇÃO E DEPENDÊNCIAS ===
echo "🔧 Passo 1/8: Atualizando o sistema e instalando dependências..."
export DEBIAN_FRONTEND=noninteractive
apt-get update -y && apt-get upgrade -y >/dev/null 2>&1

apt-get install -y software-properties-common curl wget unzip apache2 mariadb-server ufw ffmpeg \
php${PHP_VERSION} php${PHP_VERSION}-cli php${PHP_VERSION}-mysql php${PHP_VERSION}-curl php${PHP_VERSION}-xml \
php${PHP_VERSION}-mbstring php${PHP_VERSION}-zip php${PHP_VERSION}-gd \
libapache2-mod-php${PHP_VERSION} certbot python3-certbot-apache mailutils postfix >/dev/null 2>&1

echo "✅ Dependências e FFmpeg instalados."
sleep 1

# === 2. CONFIGURANDO O FIREWALL (UFW) ===
echo "🔒 Passo 2/8: Configurando o firewall..."
ufw allow ssh >/dev/null 2>&1
ufw allow 80/tcp >/dev/null 2>&1
ufw allow 443/tcp >/dev/null 2>&1
ufw allow 8080/tcp >/dev/null 2>&1
ufw --force enable >/dev/null 2>&1
echo "✅ Firewall ativado."
sleep 1

# === 3. CONFIGURAÇÕES DO PHP ===
echo "⚙️ Passo 3/8: Ajustando os limites do PHP..."
PHP_INI="/etc/php/${PHP_VERSION}/apache2/php.ini"
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 800M/" $PHP_INI
sed -i "s/post_max_size = .*/post_max_size = 800M/" $PHP_INI
sed -i "s/memory_limit = .*/memory_limit = 1024M/" $PHP_INI
sed -i "s/max_execution_time = .*/max_execution_time = 600/" $PHP_INI
sed -i "s/max_input_time = .*/max_input_time = 600/" $PHP_INI
echo "✅ Limites do PHP ajustados."
sleep 1

# === 4. INSTALANDO PHPMYADMIN ===
echo "🧩 Passo 4/8: Instalando o phpMyAdmin..."
cd /usr/share/ && rm -rf phpmyadmin
wget -q https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip -O phpmyadmin.zip
unzip -q phpmyadmin.zip && mv phpMyAdmin-5.2.1-all-languages phpmyadmin && rm phpmyadmin.zip
chown -R www-data:www-data phpmyadmin && chmod -R 755 phpmyadmin

cat <<EOF > /etc/apache2/conf-available/phpmyadmin.conf
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All
    Require all granted
</Directory>
EOF

a2enconf phpmyadmin >/dev/null 2>&1 && a2enmod rewrite >/dev/null 2>&1
echo "✅ phpMyAdmin instalado."
sleep 1

# === 5. CONFIGURANDO BANCO DE DADOS ===
echo "🗄️ Passo 5/8: Configurando o banco de dados MariaDB..."
systemctl restart mariadb && systemctl enable mariadb >/dev/null 2>&1

mysql -u root <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED BY '${ROOT_DB_PASS}';
DROP USER IF EXISTS ''@'localhost';
DROP DATABASE IF EXISTS test;
FLUSH PRIVILEGES;
EOF

mysql -u root -p"${ROOT_DB_PASS}" <<EOF
DROP DATABASE IF EXISTS ${DB_NAME};
CREATE DATABASE ${DB_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
DROP USER IF EXISTS '${DB_USER}'@'localhost';
CREATE USER '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_PASS}';
GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost';
FLUSH PRIVILEGES;
EOF
echo "✅ Banco de dados configurado."
sleep 1

# === 6. CRIANDO DIRETÓRIOS E RAM DISK PARA O FFMPEG ===
echo "📂 Passo 6/8: Criando diretório de Streams em Memória RAM..."
mkdir -p ${WWW_DIR}/streams

# Monta a pasta na memória RAM e adiciona no fstab para não sumir ao reiniciar a VPS
mount -t tmpfs -o size=2G tmpfs ${WWW_DIR}/streams
if ! grep -q "${WWW_DIR}/streams" /etc/fstab; then
    echo "tmpfs ${WWW_DIR}/streams tmpfs defaults,size=2G 0 0" >> /etc/fstab
fi

chown -R www-data:www-data ${WWW_DIR}
chmod -R 777 ${WWW_DIR}/streams
echo "✅ RAM Disk criado com sucesso. Seu SSD está protegido!"
sleep 1

# === 7. CONFIGURANDO DOMÍNIO E SSL ===
echo "🌐 Passo 7/8: Configurando o domínio e instalando o SSL..."
VHOST_FILE="/etc/apache2/sites-available/${DOMAIN}.conf"
cat <<EOF > $VHOST_FILE
<VirtualHost *:80>
    ServerName ${DOMAIN}
    DocumentRoot ${WWW_DIR}
    <Directory ${WWW_DIR}>
        AllowOverride All
    </Directory>
</VirtualHost>
EOF

a2dissite 000-default.conf >/dev/null 2>&1 && a2ensite ${DOMAIN}.conf >/dev/null 2>&1
systemctl restart apache2 && systemctl enable apache2 >/dev/null 2>&1

certbot --apache --non-interactive --agree-tos -d ${DOMAIN} -m ${ADMIN_EMAIL} --redirect >/dev/null 2>&1
echo "✅ Domínio configurado."
sleep 1

# === 8. FINALIZAÇÃO ===
echo "🔄 Passo 8/8: Reiniciando serviços..."
systemctl restart apache2 mariadb postfix >/dev/null 2>&1

clear
echo "======================================================"
echo "✅ AMBIENTE DA VPS PREPARADO COM SUCESSO!"
echo "======================================================"
echo "A máquina está pronta para receber os arquivos do seu painel."
echo "Faça o upload dos seus arquivos PHP e o banco .sql para a VPS."
echo ""
echo "--- ACESSO AO PAINEL DE GERENCIAMENTO IPTV ---"
echo "🔗 Link Painel (Domínio): https://${DOMAIN}/"
echo "🔗 Link Painel (IPv4): http://${IPV4}/"
echo "👤 Usuário: admin  (Padrão do seu arquivo .sql)"
echo "🔑 Senha: admin  (Padrão do seu arquivo .sql)"
echo ""
echo "--- ACESSO AO PHPMYADMIN (Banco de Dados) ---"
echo "🌍 Link: https://${DOMAIN}/phpmyadmin"
echo "👤 Usuário: root"
echo "🔑 Senha: ${ROOT_DB_PASS}"
echo ""
echo "--- CONFIGURE ISSO NO SEU config.php ---"
echo "Nome do Banco: ${DB_NAME}"
echo "Usuário: ${DB_USER}"
echo "Senha: ${DB_PASS}"
echo "======================================================"
