#!/usr/bin/env python3
"""
Fichier        : send_folder_to_synology.py
Chemin         : /var/www/html/web_orders/send_folder_to_synology.py
Description    : Transfert SCP + archivage local. Renomme "order_" → "commande_" sur le NAS.
Auteur         : Sylvain SCATTOLINI
Version        : 1.4
"""

import os
import shutil
import paramiko
from scp import SCPClient
from datetime import datetime

# === Configuration
base_folder = "/var/www/html/web_orders"
local_folder = os.path.join(base_folder, "orders")
archive_folder = os.path.join(local_folder, "archive")
remote_path = "/volume1/DATAS/4DDocuments/WebOrders/FTP/"
ssh_host = "192.168.1.13"
ssh_port = 34322
ssh_user = "edi"
ssh_key_path = os.path.join(base_folder, "id_rsa")
log_file = os.path.join(local_folder, "web_order.log")

# === Logger
def log(msg):
    with open(log_file, "a") as f:
        f.write(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] {msg}\n")

# === Transfert + archivage
def transfer_folder():
    log("🔐 Connexion SSH au NAS...")

    # Créer dossier archive si absent
    os.makedirs(archive_folder, exist_ok=True)

    try:
        key = paramiko.RSAKey.from_private_key_file(ssh_key_path)
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(ssh_host, port=ssh_port, username=ssh_user, pkey=key)

        with SCPClient(ssh.get_transport()) as scp:
            for file in os.listdir(local_folder):
                if file.endswith(".xml"):
                    full_path = os.path.join(local_folder, file)
                    if not os.path.isfile(full_path):
                        continue

                    # Nom distant renommé si nécessaire
                    remote_name = file.replace("order_", "commande_", 1) if file.startswith("order_") else file

                    try:
                        scp.put(full_path, remote_path=os.path.join(remote_path, remote_name))
                        log(f"✅ Transféré : {file} → {remote_name}")

                        # Archiver
                        archive_path = os.path.join(archive_folder, file)
                        shutil.move(full_path, archive_path)
                        log(f"📦 Archivé localement : {file}")

                    except Exception as e:
                        log(f"❌ Échec transfert {file} : {e}")

        ssh.close()
        log("📁 Transfert terminé.")
    except Exception as e:
        log(f"❌ Erreur globale : {e}")
        raise

if __name__ == "__main__":
    transfer_folder()