#!/usr/bin/env python3
"""
Serveur local pour la Visite VR Maya
Compatible Denver VR-21 / Cardboard

UTILISATION :
  1. Double-cliquez sur ce fichier (ou : python3 serveur-local.py)
  2. Notez l'adresse affichée, ex : http://192.168.1.42:8000
  3. Sur le smartphone (même Wi-Fi), ouvrez Chrome et tapez cette adresse
  4. Tapez sur 'visite-vr-archeologie.html' pour lancer la visite
"""

import http.server
import socketserver
import socket
import os
import webbrowser

PORT = 8000

def get_local_ip():
    """Récupère l'adresse IP locale sur le réseau Wi-Fi"""
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(("8.8.8.8", 80))
        ip = s.getsockname()[0]
        s.close()
        return ip
    except Exception:
        return "127.0.0.1"

# Aller dans le dossier du script
os.chdir(os.path.dirname(os.path.abspath(__file__)))

local_ip = get_local_ip()

print("\n" + "="*55)
print("  🏛  SERVEUR VR MAYA — Site Archéologique Maya")
print("="*55)
print(f"\n  ✅  Serveur démarré !")
print(f"\n  📱  Sur votre smartphone (même Wi-Fi), ouvrez Chrome")
print(f"      et tapez cette adresse :")
print(f"\n      👉  http://{local_ip}:{PORT}/visite-vr-archeologie.html\n")
print(f"  💻  Accès local (ordinateur) :")
print(f"      http://localhost:{PORT}/visite-vr-archeologie.html\n")
print("  ℹ️   Appuyez sur Ctrl+C pour arrêter le serveur\n")
print("="*55 + "\n")

class QuietHandler(http.server.SimpleHTTPRequestHandler):
    """Handler silencieux (sans logs pour chaque requête)"""
    def log_message(self, format, *args):
        # Affiche seulement les erreurs
        if args and len(args) > 1 and str(args[1]).startswith(('4', '5')):
            print(f"  ⚠️  {args[0]} — {args[1]}")

    def end_headers(self):
        # CORS pour permettre les requêtes cross-origin
        self.send_header('Access-Control-Allow-Origin', '*')
        self.send_header('Cross-Origin-Opener-Policy', 'same-origin')
        self.send_header('Cross-Origin-Embedder-Policy', 'require-corp')
        # Cache court pour les images
        self.send_header('Cache-Control', 'max-age=3600')
        super().end_headers()

try:
    with socketserver.TCPServer(("", PORT), QuietHandler) as httpd:
        httpd.allow_reuse_address = True
        httpd.serve_forever()
except KeyboardInterrupt:
    print("\n  👋  Serveur arrêté. À bientôt !\n")
except OSError as e:
    if "already in use" in str(e).lower():
        print(f"\n  ⚠️  Le port {PORT} est déjà utilisé.")
        print(f"     Essayez d'abord : kill $(lsof -ti:{PORT})\n")
    else:
        raise
