<?php
// QR Generator for IboGlass App
declare(strict_types=1);

require_once __DIR__ . '/lib/db.php'; // Veritabanı bağlantısı

$data = trim((string)($_GET['data'] ?? $_GET['text'] ?? ''));

if (strpos($data, '|') === 0) {
    $data = substr($data, 1);
}

if ($data === '') {
    http_response_code(400);
    header('Content-Type: text/plain; charset=utf-8');
    echo 'qr.php: missing ?data=';
    exit;
}

// EĞER GELEN VERİ URL DEĞİLSE (Cihaz Anahtarı veya MAC ise):
if (strpos($data, 'http://') !== 0 && strpos($data, 'https://') !== 0) {
    $macAddress = $data;

    // Eğer gelen değer IBO- ile başlıyorsa (Device Key ise), veritabanından MAC adresini çekiyoruz
    if (strpos($data, 'IBO-') === 0 || !preg_match('/^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/', $data)) {
        try {
            $stmt = db()->prepare('SELECT mac FROM devices WHERE device_key = ? LIMIT 1');
            $stmt->execute([$data]);
            $foundMac = $stmt->fetchColumn();
            if ($foundMac) {
                $macAddress = $foundMac; // Gerçek MAC adresiyle değiştirildi (Örn: D0:E5:52:D6:0C:5B)
            }
        } catch (Throwable $e) {
            // Veritabanı hatası durumunda orijinal veri kalır
        }
    }

    // Doğrudan gerçek MAC adresini linke parametre yazıyoruz
    $data = 'http://4k.nxs4k.uk.nf/IboGlass/add.php?mac=' . urlencode($macAddress);
}

$size = (isset($_GET['size']) && ctype_digit((string)$_GET['size'])) ? (int)$_GET['size'] : 500;
$size = max(120, min(1000, $size));

// QR Kod Görseli Oluşturma
$src = 'https://api.qrserver.com/v1/create-qr-code/?format=png&qzone=2&margin=0'
     . '&size=' . $size . 'x' . $size
     . '&data=' . rawurlencode($data);

$png = @file_get_contents($src);

if (($png === false || $png === '') && function_exists('curl_init')) {
    $ch = curl_init($src);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_TIMEOUT        => 8,
        CURLOPT_SSL_VERIFYPEER => false,
    ]);
    $png = curl_exec($ch);
    curl_close($ch);
}

if ($png !== false && $png !== '') {
    header('Content-Type: image/png');
    header('Content-Length: ' . (string)strlen($png));
    echo $png;
    exit;
}

header('Location: ' . $src);
exit;