#!/bin/bash
# 🔧 NETGESCON - CONFIGURAZIONE POST-TRASFERIMENTO VM
# Creato: 19/07/2025 - Setup completo su VM target

echo "🔧 === NETGESCON - CONFIGURAZIONE VM POST-TRASFERIMENTO ==="
echo "📅 $(date '+%Y-%m-%d %H:%M:%S')"
echo ""

# Da eseguire SULLA VM 192.168.0.200 dopo il trasferimento

# === 1. AGGIORNAMENTO SISTEMA ===
echo "🔄 1. Aggiornamento sistema Ubuntu..."
sudo apt update && sudo apt upgrade -y

# === 2. INSTALLAZIONE STACK LAMP ===
echo ""
echo "📦 2. Installazione stack LAMP..."

# Apache
sudo apt install -y apache2
sudo systemctl enable apache2
sudo systemctl start apache2

# MySQL
sudo apt install -y mysql-server
sudo systemctl enable mysql
sudo systemctl start mysql

# PHP 8.1
sudo apt install -y php8.1 php8.1-mysql php8.1-xml php8.1-mbstring php8.1-zip php8.1-gd php8.1-curl php8.1-dom php8.1-common php8.1-cli

# Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer

# Node.js
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

echo "   ✅ Stack LAMP installato"

# === 3. CONFIGURAZIONE GIT ===
echo ""
echo "🔧 3. Configurazione Git..."

cd /home/michele/netgescon

# Configura Git globalmente
git config --global user.name "NetGescon VM Master"
git config --global user.email "master@netgescon.local"
git config --global init.defaultBranch master

# Inizializza repository se necessario
if [ ! -d ".git" ]; then
    git init
    echo "   📦 Repository Git inizializzato"
fi

# Commit tutto
git add .
git commit -m "🚀 NETGESCON - Primo commit su VM Master

📋 Migrazione completa da Windows WSL
🔄 Primo setup su VM Linux 192.168.0.200
📅 $(date '+%Y-%m-%d %H:%M:%S')
🎯 Repository master operativo"

echo "   ✅ Git configurato e commit iniziale creato"

# === 4. CONFIGURAZIONE LARAVEL ===
echo ""
echo "🔧 4. Configurazione Laravel..."

cd /home/michele/netgescon/netgescon-laravel

# Installa dipendenze
if [ -f "composer.json" ]; then
    composer install --no-dev --optimize-autoloader
    echo "   ✅ Dipendenze Composer installate"
fi

# Configura .env
if [ ! -f ".env" ] && [ -f ".env.example" ]; then
    cp .env.example .env
    php artisan key:generate
    echo "   ✅ File .env configurato"
fi

# Configura database in .env
sed -i 's/DB_DATABASE=.*/DB_DATABASE=netgescon/' .env
sed -i 's/DB_USERNAME=.*/DB_USERNAME=netgescon/' .env
sed -i 's/DB_PASSWORD=.*/DB_PASSWORD=netgescon2025/' .env

# Permessi
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache

echo "   ✅ Laravel configurato"

# === 5. CONFIGURAZIONE DATABASE ===
echo ""
echo "🗄️ 5. Configurazione database MySQL..."

# Configura MySQL
sudo mysql << 'EOF'
CREATE DATABASE IF NOT EXISTS netgescon;
CREATE USER IF NOT EXISTS 'netgescon'@'localhost' IDENTIFIED BY 'netgescon2025';
GRANT ALL PRIVILEGES ON netgescon.* TO 'netgescon'@'localhost';
FLUSH PRIVILEGES;
EXIT;
EOF

echo "   ✅ Database MySQL configurato"

# Esegui migrazioni
cd /home/michele/netgescon/netgescon-laravel
if [ -f "artisan" ]; then
    php artisan migrate --force
    echo "   ✅ Migrazioni database eseguite"
fi

# === 6. CONFIGURAZIONE APACHE ===
echo ""
echo "🌐 6. Configurazione Apache VirtualHost..."

# Crea VirtualHost
sudo tee /etc/apache2/sites-available/netgescon.conf > /dev/null << 'EOF'
<VirtualHost *:80>
    ServerName netgescon.local
    ServerAlias 192.168.0.200
    DocumentRoot /home/michele/netgescon/netgescon-laravel/public
    
    <Directory /home/michele/netgescon/netgescon-laravel/public>
        AllowOverride All
        Require all granted
        DirectoryIndex index.php
    </Directory>
    
    <Directory /home/michele/netgescon/netgescon-laravel>
        AllowOverride None
        Require all denied
    </Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/netgescon_error.log
    CustomLog ${APACHE_LOG_DIR}/netgescon_access.log combined
</VirtualHost>
EOF

# Abilita moduli e sito
sudo a2enmod rewrite
sudo a2ensite netgescon
sudo a2dissite 000-default
sudo systemctl reload apache2

echo "   ✅ Apache VirtualHost configurato"

# === 7. INSTALLAZIONE DOCKER PER GITEA ===
echo ""
echo "🐳 7. Installazione Docker per Gitea..."

# Installa Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl enable docker
sudo systemctl start docker

# Aggiunge utente al gruppo docker
sudo usermod -aG docker michele

echo "   ✅ Docker installato"

# === 8. SETUP GITEA ===
echo ""
echo "🏢 8. Setup Gitea (Git Server)..."

# Crea directory
sudo mkdir -p /var/lib/gitea

# Avvia Gitea con Docker
sudo docker run -d \
  --name=gitea \
  --restart=unless-stopped \
  -p 3000:3000 \
  -p 2222:22 \
  -v /var/lib/gitea:/data \
  -e USER_UID=1000 \
  -e USER_GID=1000 \
  gitea/gitea:1.21.0

echo "   ✅ Gitea avviato"

# === 9. CONFIGURAZIONE FIREWALL ===
echo ""
echo "🔥 9. Configurazione firewall UFW..."

sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 3000/tcp
sudo ufw allow 2222/tcp
sudo ufw --force enable

echo "   ✅ Firewall configurato"

# === 10. TEST FINALE ===
echo ""
echo "🧪 10. Test configurazione finale..."

echo "📊 === STATUS SERVIZI ==="
echo "Apache: $(sudo systemctl is-active apache2)"
echo "MySQL: $(sudo systemctl is-active mysql)"
echo "Docker: $(sudo systemctl is-active docker)"
echo "Gitea: $(sudo docker ps --filter name=gitea --format "table {{.Status}}" | tail -1)"
echo ""

echo "📋 === INFORMAZIONI ACCESSO ==="
echo "🌐 NetGescon: http://192.168.0.200"
echo "🏢 Gitea: http://192.168.0.200:3000"
echo "📂 Progetto: /home/michele/netgescon"
echo ""

echo "📋 === PROSSIMI PASSI ==="
echo "1. 🌐 Aprire http://192.168.0.200:3000 per configurare Gitea"
echo "2. 🏢 Creare organizzazione 'netgescon' in Gitea"
echo "3. 📦 Creare repository 'netgescon-main' in Gitea"
echo "4. 🔄 Configurare remote Git e push del codice"
echo "5. 🧪 Testare NetGescon su http://192.168.0.200"
echo ""

echo "🎯 Configurazione VM completata!"
echo "📅 $(date '+%Y-%m-%d %H:%M:%S')"
