$value) { if (is_array($value)) { $lines[] = $key . ':'; $lines[] = print_r($value, true); } else { $lines[] = $key . ': ' . (string)$value; } } echo implode(PHP_EOL, $lines) . PHP_EOL; exit; } function getClientIp() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) return $_SERVER['HTTP_CLIENT_IP']; if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) return trim(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0]); return $_SERVER['REMOTE_ADDR'] ?? ''; } function detectPublicIp() { $services = ['https://api.ipify.org', 'https://ifconfig.me/ip', 'https://icanhazip.com']; foreach ($services as $url) { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_CONNECTTIMEOUT => 5, CURLOPT_TIMEOUT => 8, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_SSL_VERIFYHOST => 2, ]); $response = curl_exec($ch); $httpCode = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($response !== false && $httpCode >= 200 && $httpCode < 300) { $ip = trim($response); if (filter_var($ip, FILTER_VALIDATE_IP)) return $ip; } } return ''; } function postJson($url, $payload) { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTPHEADER => ['Content-Type: application/json'], CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_SLASHES), CURLOPT_SSL_VERIFYPEER => true, CURLOPT_SSL_VERIFYHOST => 2, ]); $raw = curl_exec($ch); $httpCode = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE); $curlError = curl_error($ch); curl_close($ch); if ($raw === false || $httpCode < 200 || $httpCode >= 300) { return [false, null, $curlError ?: "HTTP $httpCode", $raw, $httpCode]; } $decoded = json_decode($raw, true); if (!is_array($decoded)) { return [false, null, 'Invalid JSON from target API', $raw, $httpCode]; } return [true, $decoded, null, $raw, $httpCode]; } $domainKey = trim($_GET['authkey'] ?? ''); $apiKey = trim($_GET['apikey'] ?? ''); if ($domainKey === '' || $apiKey === '') respond(false, 'Missing required params: authkey, apikey'); $serverPublicIp = detectPublicIp(); if ($serverPublicIp === '' || !filter_var($serverPublicIp, FILTER_VALIDATE_IP)) respond(false, 'Unable to validate server public IP'); $targetApi = trim($_GET['target_api'] ?? ''); if ($targetApi === '') $targetApi = 'https://matkaapi.com/apis/market_api.php'; $domain = trim((string)preg_replace('/:\\d+$/', '', (string)($_SERVER['HTTP_HOST'] ?? ''))); if ($domain === '') respond(false, 'Unable to detect domain from request URL.'); $payload = [ 'api_key' => $apiKey, 'domain' => $domain, 'domain_key' => $domainKey, 'starline' => 'all', ]; if (isset($_GET['date']) && $_GET['date'] !== '') $payload['date'] = trim((string)$_GET['date']); if (isset($_GET['old']) && $_GET['old'] !== '') { $oldVal = strtolower(trim((string)$_GET['old'])); $payload['old'] = in_array($oldVal, ['1', 'true', 'yes'], true); } list($ok, $apiResponse, $apiError, $rawResponse, $httpCode) = postJson($targetApi, $payload); if (!$ok) { respond(false, 'Target API call failed.', [ 'error' => $apiError, 'http_code' => $httpCode, 'target_api' => $targetApi, 'raw_response' => is_string($rawResponse) ? trim($rawResponse) : '', ]); } if (isset($apiResponse['status']) && $apiResponse['status'] === false) { $apiMessage = isset($apiResponse['message']) && $apiResponse['message'] !== '' ? (string)$apiResponse['message'] : 'Target API returned an error.'; respond(false, $apiMessage); } $dataForClientDb = (isset($apiResponse['data']) && is_array($apiResponse['data'])) ? $apiResponse['data'] : []; $totalItems = count($dataForClientDb); respond(true, 'Data fetched successfully.', [ 'source' => 'STARLINE', 'items' => $totalItems, 'note' => 'Yaha aapko STARLINE data mil raha hai. Is data ko apne DB me insert/update kar lo.', 'data' => $dataForClientDb, 'server_client_ip' => getClientIp(), 'server_public_ip' => $serverPublicIp, ]); ?>