Actual prod

This commit is contained in:
mac 2026-06-28 13:15:15 +03:00
parent 2574e898b5
commit 37527b1c99

View File

@ -1,11 +1,9 @@
<?php <?php
/** /**
* Proxy class for forwarding Deal API requests. * Proxy class for forwarding Deal API requests.
* Compatible with PHP 5.6.
*/ */
class DealProxy class DealProxy
{ {
/** Path to log file */
private $logFile; private $logFile;
public function __construct() public function __construct()
@ -13,31 +11,61 @@ class DealProxy
$this->logFile = __DIR__ . '/proxy.log'; $this->logFile = __DIR__ . '/proxy.log';
} }
/** Simple logger */
private function logMessage($message) private function logMessage($message)
{ {
$date = date('Y-m-d H:i:s'); $date = date('Y-m-d H:i:s');
file_put_contents($this->logFile, "[$date] $message\n", FILE_APPEND); file_put_contents($this->logFile, "[$date] $message\n", FILE_APPEND);
} }
/** Build the target URL based on incoming request */ // private function buildTargetUrl()
// {
// $path = isset($_GET['path']) ? $_GET['path'] : '';
// unset($_GET['path']);
// $query = http_build_query($_GET);
//
// //$apiUrl = "https://api.joywork.ru/" . ltrim($path, '/');
//
// $baseUrl = 'https://10.91.76.101';
//
// $apiUrl = rtrim($baseUrl, '/') . '/' . ltrim($path, '/');
//
// if ($query) {
// $apiUrl .= '?' . $query;
// }
// return $apiUrl;
// }
private function buildTargetUrl() private function buildTargetUrl()
{ {
$path = isset($_GET['path']) ? $_GET['path'] : ''; $path = isset($_GET['path']) ? $_GET['path'] : '';
unset($_GET['path']); unset($_GET['path']);
$query = http_build_query($_GET);
$apiUrl = "https://llar.joyworkdev.ru/api/" . ltrim($path, '/'); $pathParts = explode('?', $path, 2);
$cleanPath = ltrim($pathParts[0], '/');
$queryParams = $_GET;
if (isset($pathParts[1]) && $pathParts[1]) {
parse_str($pathParts[1], $pathQuery);
$queryParams = array_merge($queryParams, $pathQuery);
}
$query = http_build_query($queryParams);
$baseUrl = 'https://10.91.76.101';
$apiUrl = rtrim($baseUrl, '/') . '/' . $cleanPath;
if ($query) { if ($query) {
$apiUrl .= '?' . $query; $apiUrl .= '?' . $query;
} }
return $apiUrl; return $apiUrl;
} }
/** Build headers for the forwarded request */
private function buildHeaders() private function buildHeaders()
{ {
$headers = array( $headers = array(
'Accept: application/json', 'Accept: application/json',
'Host: api.joywork.ru',
); );
// Preserve original Content-Type if present // Preserve original Content-Type if present
@ -60,7 +88,6 @@ class DealProxy
return $headers; return $headers;
} }
/** Forward the request using cURL and output the response */
private function forwardRequest($targetUrl, $headers, $method, $body) private function forwardRequest($targetUrl, $headers, $method, $body)
{ {
$ch = curl_init(); $ch = curl_init();
@ -73,11 +100,23 @@ class DealProxy
CURLOPT_HEADER => false, CURLOPT_HEADER => false,
)); ));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$verbose = fopen('php://temp', 'w+');
curl_setopt($ch, CURLOPT_STDERR, $verbose);
$response = curl_exec($ch); $response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curlError = curl_error($ch); $curlError = curl_error($ch);
if ($curlError) { if ($curlError) {
rewind($verbose);
$verboseLog = stream_get_contents($verbose);
$this->logMessage('cURL VERBOSE: ' . $verboseLog);
$this->logMessage('cURL Error: ' . $curlError); $this->logMessage('cURL Error: ' . $curlError);
} else {
$this->logMessage('cURL Response (first 200 chars): ' . substr($response, 0, 200));
$this->logMessage('HTTP Code: ' . $httpCode);
} }
curl_close($ch); curl_close($ch);
@ -85,10 +124,16 @@ class DealProxy
echo $response; echo $response;
} }
/** Main handler called from index.php */
public function handle() public function handle()
{ {
// CORS headers must be sent before any output $this->logMessage('=== PROXY REQUEST START ===');
$this->logMessage('Method: ' . $_SERVER['REQUEST_METHOD']);
$this->logMessage('GET params: ' . print_r($_GET, true));
$this->logMessage('HTTP_X_SESSION_ID: ' . (isset($_SERVER['HTTP_X_SESSION_ID']) ? $_SERVER['HTTP_X_SESSION_ID'] : 'NOT SET'));
$this->logMessage('HTTP_COOKIE: ' . (isset($_SERVER['HTTP_COOKIE']) ? $_SERVER['HTTP_COOKIE'] : 'NOT SET'));
$this->logMessage('Raw input: ' . file_get_contents('php://input'));
// CORS headers
header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Credentials: true'); header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS'); header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');