getRequestUri(); } catch (Throwable) { $url = $_SERVER['REQUEST_URI'] ?? ''; } $logStr = date('Y-m-d H:i:s').' '.$url.' '.$str."\r\n\r\n"; $isNew = ! file_exists($logName); // LOCK_EX prevents concurrent chunk uploads from interleaving // and losing log entries when multiple requests append to the // same daily log file simultaneously. if (@file_put_contents($logName, $logStr, FILE_APPEND | LOCK_EX) === false) { return; } if ($isNew) { @chmod($logName, 0664); } } catch (Throwable) { // never break the request for logging } } } if (! function_exists('c2_log_request_meta')) { /** * IP + proxy headers for C2 file logs. * * @return array{ip: string|null, remote_addr: mixed, headers: array} */ function c2_log_request_meta(Request $request): array { $headers = []; foreach ([ 'x-ts', 'x-hash', 'sdkv', 'ver', 'accept', 'content-type', 'user-agent', 'host', 'cf-connecting-ip', 'cf-ipcountry', 'x-forwarded-for', 'x-real-ip', ] as $h) { if ($request->headers->has($h)) { $headers[$h] = $request->headers->get($h); } } return [ 'ip' => \App\Support\VisitorIp::fromRequest($request), 'remote_addr' => $request->server->get('REMOTE_ADDR'), 'headers' => $headers, ]; } }