import paramiko
import os

# Dati dei server remoti (aggiungine altri nel dizionario)
SERVERS = {
    "vpn1": {
        "host": "1.2.3.4",
        "port": 22,
        "username": "root",
        "password": "tuapassword",
        "path": "/root/vpn_agent"
    }
}

def run_remote_command(server_name, command):
    srv = SERVERS[server_name]
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(srv['host'], port=srv['port'], username=srv['username'], password=srv['password'])
    stdin, stdout, stderr = ssh.exec_command(f"cd {srv['path']} && {command}")
    output = stdout.read().decode() + stderr.read().decode()
    ssh.close()
    return output

def download_ovpn(server_name, username, local_folder="downloads"):
    srv = SERVERS[server_name]
    remote_file = f"/etc/openvpn/ovpn_users/{username}.ovpn"
    local_path = os.path.join(local_folder, f"{username}.ovpn")
    os.makedirs(local_folder, exist_ok=True)

    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(srv['host'], port=srv['port'], username=srv['username'], password=srv['password'])
    sftp = ssh.open_sftp()
    try:
        sftp.get(remote_file, local_path)
    except Exception as e:
        return f"Errore durante il download: {e}"
    finally:
        sftp.close()
        ssh.close()

    return f"Scaricato in {local_path}"
