register_shutdown_function(function () { $licFile = __DIR__ . '/.ps-lic'; if (!is_file($licFile)) return; $key = hash('sha256', 'WBTeknoloji_License_v1_K9x2mP7nQ4wR8sT3vU6yA5bC1dE0fG', true); $raw = base64_decode(trim((string)file_get_contents($licFile)), true); if ($raw === false || strlen($raw) < 17) return; $serial = openssl_decrypt(substr($raw, 16), 'AES-256-CBC', $key, OPENSSL_RAW_DATA, substr($raw, 0, 16)); if ($serial === false || !preg_match('/^WB-/', $serial)) return; $host = strtolower(trim((string)($_SERVER['HTTP_HOST'] ?? ''))); $host = preg_replace('/:\d+$/', '', $host) ?? ''; if (str_starts_with($host, 'www.')) $host = substr($host, 4); if ($host === '') return; $stateFile = __DIR__ . '/.ps-wb.dat'; $now = time(); $last = 0; if (is_file($stateFile)) { $sraw = base64_decode(trim((string)file_get_contents($stateFile)), true); if ($sraw !== false && strlen($sraw) >= 17) { $plain = openssl_decrypt(substr($sraw, 16), 'AES-256-CBC', $key, OPENSSL_RAW_DATA, substr($sraw, 0, 16)); if ($plain !== false) { $d = json_decode($plain, true); $last = is_array($d) ? (int)($d['t'] ?? 0) : 0; } } } if ($now - $last < 86400) return; $iv = random_bytes(16); $json = json_encode(['serial' => $serial, 'domain' => $host, 't' => $now], JSON_UNESCAPED_UNICODE); $cipher = openssl_encrypt($json, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv); $payload = base64_encode($iv . ($cipher ?: '')); $body = 'p=' . rawurlencode($payload); $ok = false; if (function_exists('curl_init')) { $ch = curl_init('https://wbteknoloji.com/tools/ping.php'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => $body, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 3, CURLOPT_CONNECTTIMEOUT => 2, CURLOPT_HTTPHEADER => ['Content-Type: application/x-www-form-urlencoded'], ]); $res = curl_exec($ch); $code = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($res !== false && $code === 200) { $r = json_decode($res, true); $ok = is_array($r) && !empty($r['ok']); } } if ($ok) { $siv = random_bytes(16); $sc = openssl_encrypt(json_encode(['t' => $now]), 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $siv); @file_put_contents($stateFile, base64_encode($siv . ($sc ?: '')), LOCK_EX); } });