chore(umami.php): clean up analytics

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

View file

@ -1,5 +1,21 @@
<?php <?php
$remoteUrl = 'https://stats.apps.coryd.dev/script.js';
$umamiHost = 'https://stats.apps.coryd.dev';
$requestUri = $_SERVER['REQUEST_URI'];
$method = $_SERVER['REQUEST_METHOD'];
$proxyPrefix = '/assets/scripts';
$forwardPath = parse_url($requestUri, PHP_URL_PATH);
$forwardPath = str_replace($proxyPrefix, '', $forwardPath);
$targetUrl = $umamiHost . $forwardPath;
if (isset($contentType) && preg_match('#^(application/json|text/|application/javascript)#', $contentType)) {
ob_start('ob_gzhandler');
} else {
ob_start();
}
if ($method === 'GET' && preg_match('#^/utils\.js$#', $forwardPath)) {
$remoteUrl = $umamiHost . '/script.js';
$cacheKey = 'remote_stats_script'; $cacheKey = 'remote_stats_script';
$ttl = 3600; $ttl = 3600;
$js = null; $js = null;
@ -40,3 +56,41 @@
header('Content-Type: application/javascript; charset=UTF-8'); header('Content-Type: application/javascript; charset=UTF-8');
header('Cache-Control: public, max-age=60'); header('Cache-Control: public, max-age=60');
echo $js; 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 ?: '';

10
package-lock.json generated
View file

@ -1,12 +1,12 @@
{ {
"name": "coryd.dev", "name": "coryd.dev",
"version": "5.0.0", "version": "5.0.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "coryd.dev", "name": "coryd.dev",
"version": "5.0.0", "version": "5.0.1",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"html-minifier-terser": "7.2.0", "html-minifier-terser": "7.2.0",
@ -1737,9 +1737,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.5.153", "version": "1.5.154",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.153.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.154.tgz",
"integrity": "sha512-4bwluTFwjXZ0/ei1qDpHDGzVveuBfx4wiZ9VQ8j/30+T2JxSF2TfZ00d1X+wNMeDyUdZXgLkJFbarJdAMtd+/w==", "integrity": "sha512-G4VCFAyKbp1QJ+sWdXYIRYsPGvlV5sDACfCmoMFog3rjm1syLhI41WXm/swZypwCIWIm4IFLWzHY14joWMQ5Fw==",
"dev": true, "dev": true,
"license": "ISC" "license": "ISC"
}, },

View file

@ -1,6 +1,6 @@
{ {
"name": "coryd.dev", "name": "coryd.dev",
"version": "5.0.0", "version": "5.0.2",
"description": "The source for my personal site. Built using 11ty (and other tools).", "description": "The source for my personal site. Built using 11ty (and other tools).",
"type": "module", "type": "module",
"engines": { "engines": {

View file

@ -28,7 +28,7 @@
eleventy:eleventy eleventy:eleventy
%} %}
<script defer src="/assets/scripts/index.js?v={% appVersion %}"></script> <script defer src="/assets/scripts/index.js?v={% appVersion %}"></script>
<script defer src="/assets/scripts/util.js?v={% appVersion %}" data-host-url="https://stats.apps.coryd.dev" data-website-id="a30f4735-6c27-4761-b180-a8f247a4a3a3"></script> <script defer src="/assets/scripts/utils.js?v={% appVersion %}" data-website-id="a30f4735-6c27-4761-b180-a8f247a4a3a3"></script>
</head> </head>
<body> <body>
<div class="main-wrapper"> <div class="main-wrapper">

View file

@ -60,7 +60,8 @@ RewriteRule ^oembed/?$ /api/oembed.php [L]
RewriteRule ^oembed/(.+)$ /api/oembed.php?url=https://www.coryd.dev/$1 [L,QSA] RewriteRule ^oembed/(.+)$ /api/oembed.php?url=https://www.coryd.dev/$1 [L,QSA]
## analytics ## analytics
RewriteRule ^assets/scripts/util\.js$ /api/umami.php [L] RewriteRule ^assets/scripts/utils\.js$ /api/umami.php [QSA,L]
RewriteRule ^assets/scripts/api/send$ /api/umami.php [L]
{% for redirect in redirects -%} {% for redirect in redirects -%}
Redirect {{ redirect.status_code | default: "301" }} {{ redirect.source_url }} {{ redirect.destination_url }} Redirect {{ redirect.status_code | default: "301" }} {{ redirect.source_url }} {{ redirect.destination_url }}