<?php
// /v6/og.php
// Proxy d'image très simple avec cache local pour masquer l'hôte d'origine.

$src = isset($_GET['src']) ? $_GET['src'] : '';
if (!$src) { http_response_code(400); exit('missing src'); }

// Sécurité basique
$u = filter_var($src, FILTER_VALIDATE_URL);
if (!$u || !preg_match('~^https?://~i', $u)) { http_response_code(400); exit('bad url'); }

// Dossier cache (assurez-vous qu'il soit inscriptible)
$cacheDir = __DIR__ . '/cache/og';
if (!is_dir($cacheDir)) @mkdir($cacheDir, 0775, true);
$hash = md5($u);
$cacheFile = $cacheDir . "/$hash.jpg";

// Servez depuis le cache si dispo (< 7 jours)
if (is_file($cacheFile) && filemtime($cacheFile) > time() - 7*24*3600) {
  header('Content-Type: image/jpeg');
  header('Cache-Control: public, max-age=604800');
  readfile($cacheFile); exit;
}

// Récupération distante
$ctx = stream_context_create([
  'http' => ['timeout' => 6, 'follow_location' => 1, 'user_agent' => 'OGProxy/1.0'],
  'https'=> ['timeout' => 6, 'follow_location' => 1, 'user_agent' => 'OGProxy/1.0']
]);
$data = @file_get_contents($u, false, $ctx);
if ($data === false) {
  http_response_code(502);
  exit('fetch failed');
}

// Optionnel: vous pourriez convertir/normaliser en JPEG ici.
// On enregistre brut, on envoie.
@file_put_contents($cacheFile, $data);
header('Content-Type: image/jpeg');
header('Cache-Control: public, max-age=604800');
echo $data;
