#!/bin/bash

# Ska e-post skickas? (ja eller nej)
SEND_EMAIL="nej"

# Funktion för att översätta veckodag till svenska
translate_day() {
    case $1 in
        Monday)    echo "Måndag"   ;;
        Tuesday)   echo "Tisdag"   ;;
        Wednesday) echo "Onsdag"   ;;
        Thursday)  echo "Torsdag"  ;;
        Friday)    echo "Fredag"   ;;
        Saturday)  echo "Lördag"   ;;
        Sunday)    echo "Söndag"   ;;
        *)         echo "$1"       ;;
    esac
}

# Funktion för att rensa gamla backups (> 30 dagar)
cleanup_old_backups() {
    find "$1" -mindepth 1 -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;
}

# Datum & tid
ENGLISH_DAY=$(date +"%A")
SWEDISH_DAY=$(translate_day "$ENGLISH_DAY")
TIMESTAMP=$(date +"%F")
TIMESTAMP2=$(LANG=sv_SE.UTF-8 date +"$SWEDISH_DAY %F %T")

# Käll- och målmappar
SOURCE_DIR="/webbserver"
DESTINATION_DIR="/webbackup"          # befintlig
DESTINATION_DIR1="/webbackup1"        # NY
DESTINATION_DIR2="/webbackup2/$TIMESTAMP"

# Skapa målmappar vid behov
mkdir -p "$DESTINATION_DIR" "$DESTINATION_DIR1" "$DESTINATION_DIR2"

# Loggfil
TEMP_LOG=$(mktemp)

########################
#       BACKUP         #
########################

# 1. Kopiera endast innehållet till /webbackup
rclone copy -v --exclude "backup/**" "$SOURCE_DIR/" "$DESTINATION_DIR"  >> /var/log/rclone.log 2>&1
RCLONE_EXIT_CODE=$?

# 2. Kopiera endast innehållet till /webbackup1 (samma metod)
rclone copy -v --exclude "backup/**" "$SOURCE_DIR/" "$DESTINATION_DIR1" >> /var/log/rclone.log 2>&1
RCLONE_EXIT_CODE1=$?

# 3. Kopiera till datumstämplad mapp i /webbackup2
rclone copy -v --exclude "backup/**" "$SOURCE_DIR"  "$DESTINATION_DIR2" >> /var/log/rclone.log 2>&1
RCLONE_EXIT_CODE2=$?

########################
#     RESULTAT         #
########################

if [ $RCLONE_EXIT_CODE -eq 0 ] && [ $RCLONE_EXIT_CODE1 -eq 0 ] && [ $RCLONE_EXIT_CODE2 -eq 0 ]; then
    # Alla tre lyckades
    curl -d "✅ Säkerhetskopiering lyckades: $TIMESTAMP2" https://ntfy.engfeldt.nu/sqlbackup

    if [ "$SEND_EMAIL" == "ja" ]; then
        SUBJECT="Säkerhetskopiering slutförd!"
        EMAIL_BODY=$(cat <<EOF
<html><body>
<img src='https://kksb-cases.com/cdn/shop/products/DSC02415_dbedaf58-9306-4e5d-a349-e5204666a706_800x544.jpg?v=1678785138'><br>
<p>Säkerhetskopiering</p>
<p>Källmapp: $SOURCE_DIR</p>
<p>Backup-mappar:</p>
<ul>
<li>$DESTINATION_DIR</li>
<li>$DESTINATION_DIR1</li>
<li>$DESTINATION_DIR2</li>
</ul>
<p>Utförd: $TIMESTAMP2</p>
</body></html>
EOF
)
        swaks --server "mailout.privat.bahnhof.se" --port 587 --tls --auth LOGIN \
              --auth-user "mc344084" --auth-password "He35273527" \
              --to "hansengfeldt@gmail.com" --from "noreply@engfeldt.st" \
              --header "Subject: $SUBJECT" --body "$EMAIL_BODY" --header "Content-Type: text/html; charset=UTF-8"
    fi

    # Rensa gamla kataloger i /webbackup och /webbackup1
    cleanup_old_backups "$DESTINATION_DIR"
    cleanup_old_backups "$DESTINATION_DIR1"
else
    ERROR_MSG=$(tail -n 20 "$TEMP_LOG")
    curl -d "❌ Backup misslyckades: $TIMESTAMP2\n\nFel:\n$ERROR_MSG" https://ntfy.engfeldt.nu/sqlbackup
    echo "Säkerhetskopieringen misslyckades!"
fi

rm "$TEMP_LOG"
