diff --git a/api/umami.php b/api/umami.php index eb2a3c2..8788214 100644 --- a/api/umami.php +++ b/api/umami.php @@ -1,42 +1,42 @@ connect('127.0.0.1', 6379); + $umamiHost = 'https://stats.apps.coryd.dev'; + $requestUri = $_SERVER['REQUEST_URI']; + $method = $_SERVER['REQUEST_METHOD']; + $targetUrl = $umamiHost . $requestUri; + $headers = [ + 'Content-Type: application/json', + 'Accept: application/json', + ]; + $ch = curl_init($targetUrl); - if ($redis->exists($cacheKey)) $js = $redis->get($cacheKey); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + + if (isset($_SERVER['HTTP_USER_AGENT'])) $headers[] = 'User-Agent: ' . $_SERVER['HTTP_USER_AGENT']; + + if ($method === 'POST') { + $body = file_get_contents('php://input'); + $data = json_decode($body, true); + + if (strpos($requestUri, '/api/send') === 0 && is_array($data)) { + $data['payload']['ip'] = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0'; + $data['payload']['website'] = 'a30f4735-6c27-4761-b180-a8f247a4a3a3'; } - } catch (Exception $e) { - error_log("Redis unavailable: " . $e->getMessage()); + + 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); } - if (!is_string($js)) { - $ch = curl_init($remoteUrl); + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_HEADER, false); + curl_close($ch); + http_response_code($httpCode); - $js = curl_exec($ch); - $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + if ($contentType) header("Content-Type: $contentType"); - 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; + echo $response ?: ''; diff --git a/package-lock.json b/package-lock.json index fb12e1c..a727cee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "coryd.dev", - "version": "5.0.0", + "version": "5.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "coryd.dev", - "version": "5.0.0", + "version": "5.0.1", "license": "MIT", "dependencies": { "html-minifier-terser": "7.2.0", @@ -1737,9 +1737,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.153", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.153.tgz", - "integrity": "sha512-4bwluTFwjXZ0/ei1qDpHDGzVveuBfx4wiZ9VQ8j/30+T2JxSF2TfZ00d1X+wNMeDyUdZXgLkJFbarJdAMtd+/w==", + "version": "1.5.154", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.154.tgz", + "integrity": "sha512-G4VCFAyKbp1QJ+sWdXYIRYsPGvlV5sDACfCmoMFog3rjm1syLhI41WXm/swZypwCIWIm4IFLWzHY14joWMQ5Fw==", "dev": true, "license": "ISC" }, diff --git a/package.json b/package.json index 0034e27..b9dfa4b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "coryd.dev", - "version": "5.0.0", + "version": "5.0.1", "description": "The source for my personal site. Built using 11ty (and other tools).", "type": "module", "engines": { diff --git a/src/layouts/base.liquid b/src/layouts/base.liquid index a739fb9..5b89a35 100644 --- a/src/layouts/base.liquid +++ b/src/layouts/base.liquid @@ -28,7 +28,7 @@ eleventy:eleventy %} - +