<?php
// HATALI YAPILI KODU GÖRMEK İÇİN
error_reporting(E_ALL);
ini_set('display_errors', 1);

if (!file_exists('config.php')) {
    header("Location: /gcrsiz", true, 301);
    exit();
}

require_once 'config.php';

$code = isset($_GET['code']) ? trim($_GET['code']) : '';

if (empty($code)) {
    header("Location: index.php", true, 301);
    exit();
}

function getRealIP() {
    if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
        return $_SERVER['HTTP_CF_CONNECTING_IP'];
    }
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        return trim($ips[0]);
    }
    if (!empty($_SERVER['HTTP_X_FORWARDED_IP'])) {
        return $_SERVER['HTTP_X_FORWARDED_IP'];
    }
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        return $_SERVER['HTTP_CLIENT_IP'];
    }
    return $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';
}

$referrer = $_SERVER['HTTP_REFERER'] ?? 'direct';

$postData = [
    'secret_key'  => $api_secret_key,
    'site_key'    => $site_key,
    'type'        => 'link',
    'code'        => $code,
    'ip'          => getRealIP(),
    'user_agent'  => $_SERVER['HTTP_USER_AGENT'] ?? 'Unknown',
    'referrer'    => $referrer
];

if (!function_exists('curl_init')) {
    die("❌ cURL YÜKLÜ DEĞİL!");
}

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => $api_base_url . '/api/click-check',
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query($postData),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSL_VERIFYHOST => false,
    CURLOPT_TIMEOUT => 5,
    CURLOPT_CONNECTTIMEOUT => 3,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/x-www-form-urlencoded',
        'User-Agent: LinkService/1.0'
    ]
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curlError = curl_error($ch);
curl_close($ch);

if ($curlError) {
    die("❌ cURL HATA: $curlError");
}

if (!$response) {
    die("❌ API RESPONSE BOŞ!");
}

if ($httpCode != 200) {
    if ($code !== 'gcrsiz') {
        $postData['code'] = 'gcrsiz';
        
        $ch = curl_init();
        curl_setopt_array($ch, [
            CURLOPT_URL => $api_base_url . '/api/click-check',
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => http_build_query($postData),
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_SSL_VERIFYHOST => false,
            CURLOPT_TIMEOUT => 5,
            CURLOPT_CONNECTTIMEOUT => 3,
            CURLOPT_HTTPHEADER => [
                'Content-Type: application/x-www-form-urlencoded',
                'User-Agent: LinkService/1.0'
            ]
        ]);
        
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        
        if ($httpCode == 200) {
            $result = json_decode($response, true);
            if (isset($result['status']) && $result['status'] == 'success' && !empty($result['url'])) {
                redirectToUrl($result['url']);
                exit();
            }
        }
    }
    
    die("❌ HTTP KODU: $httpCode - RESPONSE: $response");
}

$result = json_decode($response, true);

if (!$result) {
    die("❌ JSON PARSE HATASI: $response");
}

if (isset($result['status']) && $result['status'] == 'success' && !empty($result['url'])) {
    redirectToUrl($result['url']);
    exit();
} else {
    if ($code !== 'gcrsiz') {
        $postData['code'] = 'gcrsiz';
        
        $ch = curl_init();
        curl_setopt_array($ch, [
            CURLOPT_URL => $api_base_url . '/api/click-check',
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => http_build_query($postData),
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_SSL_VERIFYHOST => false,
            CURLOPT_TIMEOUT => 5,
            CURLOPT_CONNECTTIMEOUT => 3,
            CURLOPT_HTTPHEADER => [
                'Content-Type: application/x-www-form-urlencoded',
                'User-Agent: LinkService/1.0'
            ]
        ]);
        
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        
        if ($httpCode == 200) {
            $result = json_decode($response, true);
            if (isset($result['status']) && $result['status'] == 'success' && !empty($result['url'])) {
                redirectToUrl($result['url']);
                exit();
            }
        }
    }
    
    die("❌ Link bulunamadı: " . json_encode($result));
}

// ============================================
// REDIRECT FONKSİYONU - CUTT.LY TARZI
// ============================================
function redirectToUrl($finalUrl) {
    $userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
    
    // Instagram, Facebook, TikTok gibi in-app browser'ları algıla
    $isInAppBrowser = (
        stripos($userAgent, 'Instagram') !== false ||
        stripos($userAgent, 'FBAN') !== false ||
        stripos($userAgent, 'FBAV') !== false ||
        stripos($userAgent, 'TikTok') !== false
    );
    
    if ($isInAppBrowser) {
        // ✅ IN-APP BROWSER - CUTT.LY/LINKTW.IN TARZI TAM ÇÖZÜM
        ?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="robots" content="noindex">
<title>Redirecting...</title>
<script>
(function() {
    var targetUrl = <?php echo json_encode($finalUrl); ?>;
    var userAgent = navigator.userAgent || navigator.vendor || window.opera;
    
    // Platform detection - cutt.ly tarzı
    var isAndroid = /android/i.test(userAgent);
    var isIOS = /iPad|iPhone|iPod/.test(userAgent) && !window.MSStream;
    var isAndroidChrome = /android/i.test(userAgent) && /chrome/i.test(userAgent) && !/FBAN|FBAV|Instagram|wv\)/i.test(userAgent);
    var isFbBrowser = /FBAN|FBAV/i.test(userAgent);
    var isInstagramBrowser = /Instagram/i.test(userAgent);
    var isMobileSafari = /iPad|iPhone|iPod/.test(userAgent) && /Safari/i.test(userAgent) && !/CriOS|FxiOS/i.test(userAgent);
    var isMobileBrowser = /CriOS|FxiOS|chrome.*mobile|firefox.*mobile|opera.*mobile/i.test(userAgent) || isMobileSafari;
    var isChromeMob = /CriOS/i.test(userAgent);
    var isSafari = /safari/i.test(userAgent) && !/CriOS|FxiOS/i.test(userAgent);
    
    var timeoutId, timeoutId2, timeoutId3;
    
    // Cancel all fallbacks if page becomes hidden
    function cancelAllFallbacks() {
        if (typeof timeoutId !== 'undefined') clearTimeout(timeoutId);
        if (typeof timeoutId2 !== 'undefined') clearTimeout(timeoutId2);
        if (typeof timeoutId3 !== 'undefined') clearTimeout(timeoutId3);
    }
    
    document.addEventListener('visibilitychange', function() {
        if (document.hidden) {
            cancelAllFallbacks();
        }
    });
    
    window.addEventListener('pagehide', cancelAllFallbacks);
    
    function redirect() {
        if (isAndroid) {
            // ✅ ANDROID - BASÄ°T ÇÖZÜM: Default browser'da aç
            setTimeout(function() {
                window.location = targetUrl;
            }, 300);
        } else if (isIOS) {
            // ✅ iOS - SAFARI'DE AÇ (DEFAULT BROWSER)
            
            // x-safari-https: Instagram için 500ms (daha hızlı)
            if (isInstagramBrowser) {
                timeoutId = setTimeout(function() {
                    window.location = 'x-safari-' + targetUrl;
                }, 500);
            }
            
            // Final fallback: 800ms (daha hızlı)
            timeoutId2 = setTimeout(function() {
                window.location = targetUrl;
            }, 800);
        } else {
            // Desktop - immediate redirect
            window.location = targetUrl;
        }
    }
    
    // Start redirect when page loads
    if (document.readyState === 'complete') {
        redirect();
    } else {
        window.addEventListener('load', redirect);
    }
})();
</script>
</head>
<body></body>
</html>
        <?php
        exit();
    } else {
        // Normal browser → Direkt 301 redirect
        header("Location: " . $finalUrl, true, 301);
        exit();
    }
}
?>