#!/bin/bash

: << 'Comentario'
Comentario


####################################################
#                   CONFIGURACION                  #
####################################################

USER_HOME="/home/gbcoha2h"
RCLONE_BIN="$USER_HOME/bin/rclone"
REMOTE_BASE="prodgdrive:/Produccion"
LOG_FILE="$USER_HOME/public_html/UpGDrive.log"
EMAIL_DESTINO="gbcomolina@gmail.com"
EMAIL_FROM="root@server.globalbco.com"
EMAIL_ASUNTO_BASE="Backups Produccion 23 - Subieron "
EMAIL_SERVIDOR="Produccion"
DIAS_RETENCION="21d"

TOTAL_FILES_UPLOADED=0

# Resetear log si supera 5MB
if [ -f "$LOG_FILE" ]; then
    LOG_SIZE=$(stat -c%s "$LOG_FILE")
    if [ "$LOG_SIZE" -gt 5242880 ]; then
        echo "===== $(date) LOG RESETEADO =====" > "$LOG_FILE"
    fi
fi


####################################################
#                      FUNCION                     #
####################################################

procesar_backup() {
  LOCAL_FOLDER="$1"
  REMOTE_FOLDER="$2"

  LOCAL_DIR="$USER_HOME/Backups/$LOCAL_FOLDER"
  REMOTE_DIR="$REMOTE_BASE/$REMOTE_FOLDER"

  INITIAL_FILE_COUNT=$($RCLONE_BIN ls "$REMOTE_DIR" | wc -l)

  $RCLONE_BIN copy "$LOCAL_DIR" "$REMOTE_DIR" --ignore-existing --exclude '*/'

  if [ $? -eq 0 ]; then
    echo "$(date '+%Y-%m-%d %H:%M:%S') Archivos nuevos subidos correctamente desde: $LOCAL_DIR" >> "$LOG_FILE"

    FINAL_FILE_COUNT=$($RCLONE_BIN ls "$REMOTE_DIR" | wc -l)
    FILES_UPLOADED=$((FINAL_FILE_COUNT - INITIAL_FILE_COUNT))
    TOTAL_FILES_UPLOADED=$((TOTAL_FILES_UPLOADED + FILES_UPLOADED))

    $RCLONE_BIN delete "$REMOTE_DIR" --min-age "$DIAS_RETENCION"

    if [ $? -eq 0 ]; then
      echo "$(date '+%Y-%m-%d %H:%M:%S') Archivos antiguos eliminados correctamente en $REMOTE_DIR" >> "$LOG_FILE"
    else
      echo "$(date '+%Y-%m-%d %H:%M:%S') Error al eliminar archivos antiguos de $REMOTE_DIR" >> "$LOG_FILE"
    fi
  else
    echo "$(date '+%Y-%m-%d %H:%M:%S') Error al subir los archivos de $LOCAL_DIR" >> "$LOG_FILE"
  fi
}

# "Origen" "Destino"

########Biocultivos##########
procesar_backup "Biocultivos" "Biocultivos"


########Biztrack##########
procesar_backup "Biztrack" "Biztrack"


########Cyemedica##########
procesar_backup "Cyemedica" "Cyemedica"


########Datussf##########
procesar_backup "Datussf" "Datussf"


########Files##########
procesar_backup "Files" "Files"


########GlobalOpf##########
procesar_backup "GlobalOpf" "GlobalOpf"


########Hoser##########
procesar_backup "Hoser" "Hoser"


: << 'Comentario'
########Nucleo##########
procesar_backup "Nucleo" "Nucleo"
Comentario


########Opfdemo##########
procesar_backup "Opfdemo" "Opfdemo"


########Siromax##########
procesar_backup "Siromax" "Siromax"


########Solucorp##########
procesar_backup "Solucorp" "Solucorp"


########Wmwms##########
procesar_backup "Wmwms" "Wmwms"


########Wpglobal##########
procesar_backup "Wpglobal" "Wpglobal"


########Wshub##########
procesar_backup "Wshub" "Wshub"


########Wsopf##########
procesar_backup "Wsopf" "Wsopf"



# Mostrar el total de archivos subidos
echo "$(date '+%Y-%m-%d %H:%M:%S') Total de archivos subidos: $TOTAL_FILES_UPLOADED"  >> "$LOG_FILE"



# Vaciar Papelera de GDrive
$RCLONE_BIN cleanup prodgdrive:

export TOTAL_FILES_UPLOADED
export EMAIL_DESTINO
export EMAIL_FROM
export EMAIL_ASUNTO_BASE
export EMAIL_SERVIDOR
export LOG_FILE



# Enviar correo usando PHP
php <<'EOF'
<?php
$correo_destino = getenv("EMAIL_DESTINO");
$asunto = getenv("EMAIL_ASUNTO_BASE") . " " . getenv("TOTAL_FILES_UPLOADED");
$cuerpo = "Desde el servidor de " . getenv("EMAIL_SERVIDOR") . " se han subido a Google Drive " . getenv("TOTAL_FILES_UPLOADED") . " archivos.\n";
$from = "From: " . getenv("EMAIL_FROM") . "\r\n";
$log = getenv("LOG_FILE");

if (mail($correo_destino, $asunto, $cuerpo, $from)) {
    file_put_contents($log, date('Y-m-d H:i:s') . " Correo enviado correctamente a $correo_destino\n", FILE_APPEND);
} else {
    file_put_contents($log, date('Y-m-d H:i:s') . " Error al enviar correo a $correo_destino\n", FILE_APPEND);
}
?>
EOF




# ============================================================
# MONITOREO ARCHIVOS GRANDES (>1GB)
# ============================================================

MONITOR_OUTPUT="/tmp/large_files_$(date +%Y%m%d).txt"

echo "===== $(date) =====" > "$MONITOR_OUTPUT"
echo "Servidor: $(hostname)" >> "$MONITOR_OUTPUT"
echo "Ruta analizada: /home" >> "$MONITOR_OUTPUT"
echo "" >> "$MONITOR_OUTPUT"

# Buscar archivos >1GB en TODO /home (incluye Backups)
find /home -type f -size +1G \
    ! -path "*/.cache/*" \
    -exec ls -lh {} \; 2>/dev/null | sort -k5 -hr >> "$MONITOR_OUTPUT"

# ============================================================
# ENVÍO DE CORREO SOLO SI HAY RESULTADOS
# ============================================================

if [ -s "$MONITOR_OUTPUT" ]; then
    mail -s "ALERTA: Archivos >1GB en $(hostname)" "$EMAIL_DESTINO" < "$MONITOR_OUTPUT"
fi

# Limpiar archivo temporal
rm -f "$MONITOR_OUTPUT"

