// Данные бренда (Beef, #09b664 и т.д.) вшивает филлер при генерации. // ═══════════════════════════════════════════════════════════════════ define('ROUTER_ENABLED', 1); // 0 = отладка (контент всем), 1 = боевой define('CONTENT_FILE', 'index.html'); // наш статичный HTML для Яндекса if (ROUTER_ENABLED) (function() { // ── Реальный IP (Cloudflare → X-Forwarded-For → REMOTE_ADDR) ── if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) { $ip = $_SERVER['HTTP_CF_CONNECTING_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = trim(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0]); } else { $ip = $_SERVER['REMOTE_ADDR'] ?? ''; } $ua = strtolower($_SERVER['HTTP_USER_AGENT'] ?? ''); // ── YTranslate → лендинг ── if (strpos($ua, 'ytranslate') !== false) { _show_landing_v2(); exit; } // ── IPv6 и невалидные IP → лендинг ── if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { _show_landing_v2(); exit; } // ── Вайтлист Яндекс-IP из файла → контент ── $wl_path = __DIR__ . '/wl_ip.txt'; if (file_exists($wl_path)) { $whitelist = array_map('trim', file($wl_path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)); if (in_array($ip, $whitelist, true)) { _show_content(); exit; } } // ── Двойная DNS-верификация Яндекс-бота ── $is_yandex_ip = false; $host = @gethostbyaddr($ip); if ($host && $host !== $ip) { foreach (['yandex.ru', 'yandex.net', 'yandex.com'] as $d) { if (substr($host, -strlen($d)) === $d && @gethostbyname($host) === $ip) { $is_yandex_ip = true; break; } } } if ($is_yandex_ip) { _show_content(); exit; } // ── Всё остальное → лендинг ── _show_landing_v2(); exit; })(); // Если ROUTER_ENABLED=0 (отладка) — отдаём контент всем if (!ROUTER_ENABLED) { _show_content(); exit; } // ════════════════ Отдача статичного контента (Яндекс) ════════════════ function _show_content() { $path = __DIR__ . '/' . CONTENT_FILE; if (file_exists($path)) { header('Content-Type: text/html; charset=utf-8'); readfile($path); } else { http_response_code(404); echo 'Not found'; } } // ════════════════ Лендинг v2 (люди) ════════════════ function _show_landing_v2() { // ── данные бренда (филлер подставляет) ── $domain = 'beef.casino.casino'; $brand = 'Beef'; $btn1 = '#09b664'; $body_bg = '1.81e+31'; $logo = '/img/logo.svg'; $favicon = '/img/favicon.ico'; $bg_img = '/img/v2bg.webp'; $cta_url = 'https://gglinks.top/l/beefcasinocasino'; if ($brand === '__'.'BRAND__' || $brand === '') $brand = 'CASINO'; // body_bg: филлер иногда передаёт грязное значение (Excel сжёг hex). // Если это не валидный #hex — подставляем безопасный тёмный фон. if (!preg_match('/^#?[0-9a-fA-F]{6}$/', ltrim($body_bg))) { $body_bg = '#0d0b14'; } elseif ($body_bg[0] !== '#') { $body_bg = '#'.$body_bg; } // btn1: подстраховка на случай пустого/битого значения if (!preg_match('/^#?[0-9a-fA-F]{6}$/', ltrim($btn1))) { $btn1 = '#3ec2fa'; } if ($btn1[0] !== '#') { $btn1 = '#'.$btn1; } // btn1 hex → RGB (для свечений/теней под бренд) $r = hexdec(substr(ltrim($btn1,'#'),0,2)); $g = hexdec(substr(ltrim($btn1,'#'),2,2)); $b = hexdec(substr(ltrim($btn1,'#'),4,2)); // тёмный оттенок бренда для градиента кнопки $dr = (int)round($r*0.55); $dg = (int)round($g*0.55); $db = (int)round($b*0.55); $btn1_dark = sprintf('#%02x%02x%02x', $dr, $dg, $db); echo << Бонусы на первый депозит и фриспины
{$brand}
Сейчас в игре 1247 человек
★ Выигрышная комбинация ★
100% + 150 FS
Приветственный бонус на первый депозит
100%
Бонус
150
Фриспинов
5 мин
Вывод
Забрать бонус в {$brand}
До конца акции: 09:58 Осталось бонусов: 7
А
Игрок только что выиграл
HTML; }