mirror of
https://github.com/umami-software/umami.git
synced 2026-02-18 19:45:35 +01:00
Compare commits
2 commits
c9f522b24d
...
79e324aace
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
79e324aace | ||
|
|
684863d6c7 |
3 changed files with 20 additions and 15 deletions
|
|
@ -42,7 +42,7 @@ RUN set -x \
|
||||||
&& apk add --no-cache curl
|
&& apk add --no-cache curl
|
||||||
|
|
||||||
# Script dependencies
|
# Script dependencies
|
||||||
RUN pnpm add npm-run-all dotenv chalk semver prisma@6.16.3 @prisma/adapter-pg@6.16.3
|
RUN pnpm add npm-run-all dotenv chalk semver prisma@6.18.0 @prisma/adapter-pg@6.18.0
|
||||||
|
|
||||||
# Permissions for prisma
|
# Permissions for prisma
|
||||||
RUN chown -R nextjs:nodejs node_modules/.pnpm/
|
RUN chown -R nextjs:nodejs node_modules/.pnpm/
|
||||||
|
|
|
||||||
|
|
@ -30,10 +30,18 @@ const PROVIDER_HEADERS = [
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
export function getDevice(userAgent: string) {
|
export function getDevice(userAgent: string, screen: string = '') {
|
||||||
const { device } = UAParser(userAgent);
|
const { device } = UAParser(userAgent);
|
||||||
|
|
||||||
return device?.type || 'desktop';
|
const [width] = screen.split('x');
|
||||||
|
|
||||||
|
const type = device?.type || 'desktop';
|
||||||
|
|
||||||
|
if (type === 'desktop' && screen && +width <= 1920) {
|
||||||
|
return 'laptop';
|
||||||
|
}
|
||||||
|
|
||||||
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRegionCode(country: string, region: string) {
|
function getRegionCode(country: string, region: string) {
|
||||||
|
|
@ -108,7 +116,7 @@ export async function getClientInfo(request: Request, payload: Record<string, an
|
||||||
const city = safeDecodeURIComponent(location?.city);
|
const city = safeDecodeURIComponent(location?.city);
|
||||||
const browser = browserName(userAgent);
|
const browser = browserName(userAgent);
|
||||||
const os = detectOS(userAgent) as string;
|
const os = detectOS(userAgent) as string;
|
||||||
const device = getDevice(userAgent);
|
const device = getDevice(userAgent, payload?.screen);
|
||||||
|
|
||||||
return { userAgent, browser, os, ip, country, region, city, device };
|
return { userAgent, browser, os, ip, country, region, city, device };
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,16 @@
|
||||||
// The order here is important and influences how IPs are detected by lib/detect.ts
|
|
||||||
// Please do not change the order unless you know exactly what you're doing - read https://developers.cloudflare.com/fundamentals/reference/http-headers/
|
|
||||||
export const IP_ADDRESS_HEADERS = [
|
export const IP_ADDRESS_HEADERS = [
|
||||||
'x-client-ip',
|
|
||||||
'x-forwarded-for',
|
|
||||||
'cf-connecting-ip', // This should be *after* x-forwarded-for, so that x-forwarded-for is respected if present
|
|
||||||
'do-connecting-ip',
|
|
||||||
'fastly-client-ip',
|
|
||||||
'true-client-ip',
|
|
||||||
'x-real-ip',
|
'x-real-ip',
|
||||||
|
'x-forwarded-for',
|
||||||
|
'cf-connecting-ip', // Cloudflare
|
||||||
|
'fastly-client-ip', // Fastly
|
||||||
|
'true-client-ip', // Akamai
|
||||||
|
'x-nf-client-connection-ip', // Netlify
|
||||||
|
'do-connecting-ip', // Digital Ocean
|
||||||
|
'x-appengine-user-ip', // Google App Ending
|
||||||
|
'x-client-ip',
|
||||||
'x-cluster-client-ip',
|
'x-cluster-client-ip',
|
||||||
'x-forwarded',
|
'x-forwarded',
|
||||||
'forwarded',
|
'forwarded',
|
||||||
'x-appengine-user-ip',
|
|
||||||
'x-nf-client-connection-ip',
|
|
||||||
'x-real-ip',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export function getIpAddress(headers: Headers) {
|
export function getIpAddress(headers: Headers) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue