chore(umami.php): clean up analytics

This commit is contained in:
Cory Dransfeldt 2025-05-14 20:06:45 -07:00
parent 60be0ed01d
commit f4a995e8bf
No known key found for this signature in database
5 changed files with 41 additions and 40 deletions

View file

@ -1,42 +1,42 @@
<?php
$remoteUrl = 'https://stats.apps.coryd.dev/script.js';
$cacheKey = 'remote_stats_script';
$ttl = 3600;
$js = null;
$code = 200;
$redis = null;
try {
if (extension_loaded('redis')) {
$redis = new Redis();
$redis->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 ?: '';