import subprocess
from config import RUNNING_ON_MAIN_SERVER, MAIN_SERVER_IP

def run_command(command):
    """Run command on main server (directly or via SSH)"""
    if RUNNING_ON_MAIN_SERVER:
        try:
            result = subprocess.run(command, shell=True, capture_output=True, text=True, timeout=30)
            return result.stdout, result.stderr
        except subprocess.TimeoutExpired:
            return "", "Command timeout"
        except Exception as e:
            return "", str(e)
    else:
        ssh_cmd = [
            "ssh",
            "-o", "StrictHostKeyChecking=no",
            "-o", "ConnectTimeout=10",
            "-o", "BatchMode=yes",
            f"root@{MAIN_SERVER_IP}",
            command
        ]
        try:
            result = subprocess.run(ssh_cmd, capture_output=True, text=True, timeout=30)
            return result.stdout, result.stderr
        except subprocess.TimeoutExpired:
            return "", "Connection timeout"
        except Exception as e:
            return "", str(e)

def run_ssh_to_vm(command):
    """Run command on VM via reverse tunnel"""
    from config import VM_PASSWORD
    import os
    
    cmd = f"sshpass -p '{VM_PASSWORD}' ssh -p 2223 -o StrictHostKeyChecking=no -o ConnectTimeout=5 root@localhost '{command}'"
    result = os.popen(cmd).read()
    return result
