import paramiko
import sys
import os
import time

HOST = "135.125.102.180"
USER = "ubuntu"
PASS = "BotPascal2026!"
LOCAL_FILE = "public/action.php"
REMOTE_FILE = "/var/www/html/repondeur_mail_grok/public/action.php"

def main():
    print("Waiting 5s for connection cooldown...")
    time.sleep(5)
    
    for attempt in range(3):
        try:
            print(f"Attempt {attempt+1}/3: Connecting to {HOST}...")
            ssh = paramiko.SSHClient()
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            ssh.connect(HOST, username=USER, password=PASS, banner_timeout=30)
            
            # 1. Upload to /tmp
            tmp_remote = "/tmp/action.php"
            sftp = ssh.open_sftp()
            local_path = os.path.abspath(LOCAL_FILE)
            print(f"Uploading {local_path} -> {tmp_remote}")
            sftp.put(local_path, tmp_remote)
            sftp.close()
            
            # 2. Sudo Move
            print("Moving to target...")
            ssh.exec_command(f"sudo mv {tmp_remote} {REMOTE_FILE}")
            ssh.exec_command(f"sudo chown www-data:www-data {REMOTE_FILE}")
            
            ssh.close()
            print("Deployment Complete.")
            return
        except Exception as e:
            print(f"Error: {e}")
            if attempt < 2:
                print("Retrying in 5s...")
                time.sleep(5)
            else:
                sys.exit(1)

if __name__ == "__main__":
    main()
