fix milton keynes

This commit is contained in:
Heidi
2026-05-16 11:05:25 +01:00
parent a13266d06c
commit 2123027e49
+28 -6
View File
@@ -573,17 +573,39 @@ function numberHeader(req, name, min, max) {
return value return value
} }
const CITY_COORDINATE_OVERRIDES = new Map([
['GB|ENGLAND|MILTON KEYNES', { latitude: 52.0406, longitude: -0.7594 }],
])
function normalizedLocationKey(location) {
return [
String(location.country || '').trim().toUpperCase(),
String(location.region || '').trim().toUpperCase(),
String(location.city || '').trim().toUpperCase(),
].join('|')
}
function normalizeLocationSignal(location) {
const override = CITY_COORDINATE_OVERRIDES.get(normalizedLocationKey(location))
if (!override) return location
return {
...location,
latitude: override.latitude,
longitude: override.longitude,
}
}
function locationFromHeaders(req) { function locationFromHeaders(req) {
if (!requestPeerIsTrusted(req) || TRUST_PROXY !== 'cloudflare') { if (!requestPeerIsTrusted(req) || TRUST_PROXY !== 'cloudflare') {
return { country: countryFromHeaders(req), region: '', city: '', latitude: null, longitude: null } return normalizeLocationSignal({ country: countryFromHeaders(req), region: '', city: '', latitude: null, longitude: null })
} }
return { return normalizeLocationSignal({
country: countryFromHeaders(req), country: countryFromHeaders(req),
region: headerValue(req, 'cf-region', 120), region: headerValue(req, 'cf-region', 120),
city: headerValue(req, 'cf-ipcity', 120), city: headerValue(req, 'cf-ipcity', 120),
latitude: numberHeader(req, 'cf-iplatitude', -90, 90), latitude: numberHeader(req, 'cf-iplatitude', -90, 90),
longitude: numberHeader(req, 'cf-iplongitude', -180, 180), longitude: numberHeader(req, 'cf-iplongitude', -180, 180),
} })
} }
function sanitizeAnalyticsValue(value, depth = 0) { function sanitizeAnalyticsValue(value, depth = 0) {
@@ -1076,7 +1098,7 @@ function viewerDashboard() {
city: row.city, city: row.city,
latitude: row.latitude, latitude: row.latitude,
longitude: row.longitude, longitude: row.longitude,
})) })).map(normalizeLocationSignal)
const activePageMap = new Map() const activePageMap = new Map()
for (const viewer of active) { for (const viewer of active) {
@@ -1363,7 +1385,7 @@ function viewerDashboard() {
group by country, region, city, latitude, longitude, timezone, language group by country, region, city, latitude, longitude, timezone, language
order by visitors desc, events desc order by visitors desc, events desc
limit 32 limit 32
`).all(daySince) `).all(daySince).map(normalizeLocationSignal)
const locations = db.prepare(` const locations = db.prepare(`
select select
@@ -1383,7 +1405,7 @@ function viewerDashboard() {
group by country, region, city, latitude, longitude, timezone, language group by country, region, city, latitude, longitude, timezone, language
order by visitors desc, events desc order by visitors desc, events desc
limit 32 limit 32
`).all(thirtyDaysSince) `).all(thirtyDaysSince).map(normalizeLocationSignal)
const totals = db.prepare(` const totals = db.prepare(`
select select