import os
import sys
import time
from playwright.sync_api import sync_playwright

def login_ventraip():
    print("🚀 Starting VentraIP 2FA Login Session (HEADLESS)...")
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        context = browser.new_context(
            user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
        )
        page = context.new_page()
        
        try:
            print("Navigating to VentraIP VIPControl...")
            page.goto('https://vip.ventraip.com.au/login/', timeout=60000)
            page.wait_for_load_state('networkidle')
            
            print("Filling credentials...")
            page.fill('input[name="email"]', 'kinan@protonmail.com')
            page.fill('input[name="password"]', '9iphQKcIv0#2J0Ce')
            
            # Click login
            login_btn = page.query_selector('button:has-text("Login")') or page.query_selector('input[type="submit"]')
            if login_btn:
                login_btn.click()
            else:
                page.keyboard.press('Enter')
                
            print("Login submitted. Waiting for 2FA screen...")
            time.sleep(8)
            
            # Save screenshot of the 2FA challenge
            screenshot_path = 'reports/ventraip_2fa_challenge.png'
            page.screenshot(path=screenshot_path)
            print(f"✅ Screenshot saved to {screenshot_path}")
            
            # Wait for user to give code in a file (we'll look for 2fa_code.txt)
            print("Waiting for 2FA code... (Create a file named 'ventra_code.txt' with the 6-digit code)")
            
            for i in range(120): # 2 minute window
                code_file = Path("ventra_code.txt")
                if code_file.exists():
                    code = code_file.read_text().strip()
                    print(f"Found code: {code}. Submitting...")
                    # Find code input - common selectors
                    code_input = page.query_selector("input[name='code']") or page.query_selector("input[id='2fa_code']") or page.query_selector("input[type='text']")
                    if code_input:
                        code_input.fill(code)
                        page.keyboard.press("Enter")
                        time.sleep(5)
                        if "dashboard" in page.url.lower():
                            print("✅ VentraIP Login Success!")
                            context.storage_state(path="data/ventraip_session.json")
                            code_file.unlink()
                            break
                time.sleep(1)
                    
        except Exception as e:
            print(f"Error: {e}")
            page.screenshot(path='reports/ventraip_error.png')
        finally:
            browser.close()

if __name__ == '__main__':
    from pathlib import Path
    os.makedirs('reports', exist_ok=True)
    os.makedirs('data', exist_ok=True)
    login_ventraip()
