connect('127.0.0.1', 6379); if ($redis->exists($cacheKey)) $js = $redis->get($cacheKey); } } catch (Exception $e) { error_log("Redis unavailable: " . $e->getMessage()); } if (!is_string($js)) { $ch = curl_init($remoteUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); $js = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($redis && $code === 200 && $js) $redis->setex($cacheKey, $ttl, $js); } if (!is_string($js) || trim($js) === '') { $js = '// Failed to fetch remote script'; $code = 502; } http_response_code($code); header('Content-Type: application/javascript; charset=UTF-8'); header('Cache-Control: public, max-age=60'); echo $js; exit; } $headers = [ 'Content-Type: application/json', 'Accept: application/json', ]; if (isset($_SERVER['HTTP_USER_AGENT'])) $headers[] = 'User-Agent: ' . $_SERVER['HTTP_USER_AGENT']; $ch = curl_init($targetUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if ($method === 'POST') { $body = file_get_contents('php://input'); $data = json_decode($body, true); if (strpos($forwardPath, '/api/send') === 0 && is_array($data)) $data['payload'] = array_merge($data['payload'] ?? [], [ 'ip' => $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0', ]); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } else { curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); curl_close($ch); http_response_code($httpCode); if ($contentType) header("Content-Type: $contentType"); echo $response ?: '';