From 7904a27e77cc983719c7e69a5dab520777126b2d Mon Sep 17 00:00:00 2001 From: Thomas-xDo Date: Fri, 13 Jun 2025 10:14:22 +0700 Subject: [PATCH] feat(customize-header): add customize header --- src/lib/detect.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/lib/detect.ts b/src/lib/detect.ts index 522b46c75..785c256c5 100644 --- a/src/lib/detect.ts +++ b/src/lib/detect.ts @@ -76,6 +76,31 @@ export async function getLocation(ip: string, req: NextApiRequestCollect) { log('Localhost:', ip); return; } + const envHeaders = { + country: process.env.X_UMAMI_IP_COUNTRY?.toLowerCase(), + region: process.env.X_UMAMI_IP_COUNTRY_REGION?.toLowerCase(), + city: process.env.X_UMAMI_IP_CITY?.toLowerCase(), + lat: process.env.X_UMAMI_IP_LATITUDE?.toLowerCase(), + lng: process.env.X_UMAMI_IP_LONGITUDE?.toLowerCase(), + }; + + const hasCustomHeaders = + envHeaders.country && + envHeaders.region && + envHeaders.city && + req.headers[envHeaders.country] && + req.headers[envHeaders.region] && + req.headers[envHeaders.city]; + + if (hasCustomHeaders) { + return { + country: safeDecodeURIComponent(req.headers[envHeaders.country]), + subdivision1: safeDecodeURIComponent(req.headers[envHeaders.region]), + city: safeDecodeURIComponent(req.headers[envHeaders.city]), + lat: safeDecodeURIComponent(req.headers[envHeaders.lat]), + lng: safeDecodeURIComponent(req.headers[envHeaders.lng]), + }; + } // Cloudflare headers if (req.headers['cf-ipcountry']) {