mirror of
https://github.com/kremalicious/umami.git
synced 2025-02-14 21:10:34 +01:00
Merge pull request #3096 from delemeator/bugfix/cf-header-encoding
Fix Cloudflare header encoding issue
This commit is contained in:
commit
8f4075164d
@ -67,6 +67,14 @@ function getRegionCode(country: string, region: string) {
|
|||||||
return region.includes('-') ? region : `${country}-${region}`;
|
return region.includes('-') ? region : `${country}-${region}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function safeDecodeCfHeader(s: string | undefined | null): string | undefined | null {
|
||||||
|
if (s === undefined || s === null) {
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Buffer.from(s, 'latin1').toString('utf-8');
|
||||||
|
}
|
||||||
|
|
||||||
export async function getLocation(ip: string, req: NextApiRequestCollect) {
|
export async function getLocation(ip: string, req: NextApiRequestCollect) {
|
||||||
// Ignore local ips
|
// Ignore local ips
|
||||||
if (await isLocalhost(ip)) {
|
if (await isLocalhost(ip)) {
|
||||||
@ -75,9 +83,9 @@ export async function getLocation(ip: string, req: NextApiRequestCollect) {
|
|||||||
|
|
||||||
// Cloudflare headers
|
// Cloudflare headers
|
||||||
if (req.headers['cf-ipcountry']) {
|
if (req.headers['cf-ipcountry']) {
|
||||||
const country = safeDecodeURIComponent(req.headers['cf-ipcountry']);
|
const country = safeDecodeCfHeader(req.headers['cf-ipcountry']);
|
||||||
const subdivision1 = safeDecodeURIComponent(req.headers['cf-region-code']);
|
const subdivision1 = safeDecodeCfHeader(req.headers['cf-region-code']);
|
||||||
const city = safeDecodeURIComponent(req.headers['cf-ipcity']);
|
const city = safeDecodeCfHeader(req.headers['cf-ipcity']);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
country,
|
country,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user