# NetGescon Auto-Sync Configuration
# Configurazione per la sincronizzazione automatica tra WSL/Windows e server remoto
# Versione: 2.0
# Data: 2025-01-17

# =============================================================================
# CONFIGURAZIONE PERCORSI
# =============================================================================

# Percorso locale del progetto Laravel
LOCAL_PATH="U:\home\michele\netgescon\netgescon-laravel"

# Configurazione server remoto
REMOTE_HOST="192.168.0.43"
REMOTE_USER="michele"
REMOTE_PATH="/var/www/netgescon"

# Percorsi di backup e log
BACKUP_DIR="U:\home\michele\netgescon\backup\sync"
LOG_FILE="U:\home\michele\netgescon\log\auto-sync.log"

# =============================================================================
# CONFIGURAZIONE SICUREZZA SSH
# =============================================================================

# File chiave SSH (se diverso da default)
SSH_KEY_FILE=""

# Timeout connessione SSH (secondi)
SSH_TIMEOUT=10

# Porta SSH (se diversa da 22)
SSH_PORT=22

# =============================================================================
# CONFIGURAZIONE SINCRONIZZAZIONE
# =============================================================================

# Pattern di esclusione per rsync (uno per riga)
EXCLUDE_PATTERNS=(
    "node_modules/"
    "vendor/"
    "storage/logs/"
    "storage/framework/cache/"
    "storage/framework/sessions/"
    "storage/framework/views/"
    ".git/"
    "*.log"
    ".env.local"
    ".env.backup"
    ".vscode/"
    "*.tmp"
    "*.temp"
    ".DS_Store"
    "Thumbs.db"
    "__pycache__/"
    "*.pyc"
    ".pytest_cache/"
    "coverage/"
    ".coverage"
    ".nyc_output/"
    "dist/"
    "build/"
    ".next/"
    ".nuxt/"
    ".svelte-kit/"
)

# Opzioni rsync aggiuntive
RSYNC_OPTIONS=(
    "--compress"
    "--archive"
    "--verbose"
    "--human-readable"
    "--progress"
    "--stats"
    "--delete"
    "--delete-excluded"
)

# =============================================================================
# CONFIGURAZIONE DEPLOY
# =============================================================================

# Comandi da eseguire durante il deploy remoto
DEPLOY_COMMANDS=(
    "cd $REMOTE_PATH"
    "sudo chown -R www-data:www-data ."
    "sudo chmod -R 755 ."
    "sudo chmod -R 777 storage/"
    "sudo chmod -R 777 bootstrap/cache/"
    "composer install --no-dev --optimize-autoloader --no-interaction"
    "php artisan config:cache"
    "php artisan route:cache"
    "php artisan view:cache"
    "php artisan storage:link"
)

# Comandi per riavvio servizi (se AUTO_RESTART=true)
RESTART_COMMANDS=(
    "sudo systemctl restart nginx"
    "sudo systemctl restart php8.3-fpm"
    "sudo systemctl restart mysql"
)

# =============================================================================
# CONFIGURAZIONE BACKUP
# =============================================================================

# Numero massimo di backup da mantenere
MAX_BACKUPS=10

# Compressione backup (true/false)
COMPRESS_BACKUP=true

# Estensione file backup compressi
BACKUP_EXTENSION=".tar.gz"

# =============================================================================
# CONFIGURAZIONE NOTIFICHE
# =============================================================================

# Abilita notifiche email (true/false)
EMAIL_NOTIFICATIONS=false

# Configurazione email (se abilitata)
EMAIL_FROM="netgescon@example.com"
EMAIL_TO="admin@example.com"
EMAIL_SUBJECT="NetGescon Auto-Sync Report"

# Abilita notifiche Slack (true/false)
SLACK_NOTIFICATIONS=false

# URL webhook Slack (se abilitato)
SLACK_WEBHOOK_URL=""

# =============================================================================
# CONFIGURAZIONE MONITORAGGIO
# =============================================================================

# Abilita monitoraggio performance (true/false)
PERFORMANCE_MONITORING=true

# Soglia di allerta per tempo di sincronizzazione (secondi)
SYNC_TIME_THRESHOLD=300

# Soglia di allerta per dimensione transfer (MB)
TRANSFER_SIZE_THRESHOLD=100

# =============================================================================
# CONFIGURAZIONE AVANZATA
# =============================================================================

# Modalità debug (true/false)
DEBUG_MODE=false

# Timeout per operazioni lunghe (secondi)
OPERATION_TIMEOUT=1800

# Retry automatico in caso di fallimento
AUTO_RETRY=true

# Numero massimo di retry
MAX_RETRY_ATTEMPTS=3

# Delay tra retry (secondi)
RETRY_DELAY=30

# =============================================================================
# CONFIGURAZIONE ENVIRONMENT-SPECIFIC
# =============================================================================

# Configurazioni specifiche per ambiente di sviluppo
DEV_CONFIG=(
    "APP_ENV=local"
    "APP_DEBUG=true"
    "LOG_LEVEL=debug"
)

# Configurazioni specifiche per ambiente di produzione
PROD_CONFIG=(
    "APP_ENV=production"
    "APP_DEBUG=false"
    "LOG_LEVEL=error"
)

# =============================================================================
# CONFIGURAZIONE HOOKS
# =============================================================================

# Comandi da eseguire prima della sincronizzazione
PRE_SYNC_HOOKS=(
    # "php artisan down"
    # "php artisan queue:restart"
)

# Comandi da eseguire dopo la sincronizzazione
POST_SYNC_HOOKS=(
    # "php artisan up"
    # "php artisan optimize"
)

# Comandi da eseguire prima del deploy
PRE_DEPLOY_HOOKS=(
    # "php artisan config:clear"
    # "php artisan cache:clear"
)

# Comandi da eseguire dopo il deploy
POST_DEPLOY_HOOKS=(
    # "php artisan migrate --force"
    # "php artisan db:seed --force"
)

# =============================================================================
# CONFIGURAZIONE VALIDAZIONE
# =============================================================================

# Comandi per validare il deploy
VALIDATION_COMMANDS=(
    "php artisan --version"
    "php artisan migrate:status"
    "php artisan route:list --compact"
    "curl -s -o /dev/null -w \"%{http_code}\" http://localhost"
)

# Soglia di successo per validazione HTTP
HTTP_SUCCESS_THRESHOLD=200

# =============================================================================
# CONFIGURAZIONE ROLLBACK
# =============================================================================

# Abilita rollback automatico in caso di errore
AUTO_ROLLBACK=true

# Comandi per rollback
ROLLBACK_COMMANDS=(
    "cd $REMOTE_PATH"
    "php artisan migrate:rollback"
    "php artisan config:clear"
    "php artisan cache:clear"
)

# =============================================================================
# FINE CONFIGURAZIONE
# =============================================================================

# Nota: Questo file può essere personalizzato per ambienti specifici
# Creare copie come config-dev.conf, config-prod.conf, etc.
