import type { Request } from "express";
import { getServerSettings } from "@cocalc/database/settings/server-settings";
import { ANALYTICS_COOKIE_NAME } from "@cocalc/util/consts";
import { getClientIpAddress } from "@cocalc/util/get-client-ip-address";
import { isValidAnonymousID } from "@cocalc/util/misc";
export async function getAnonymousID(
req: Request,
): Promise<string | undefined> {
const { analytics_cookie: analytics_enabled } = await getServerSettings();
if (analytics_enabled) {
const cookie = req.cookies[ANALYTICS_COOKIE_NAME];
if (isValidAnonymousID(cookie)) {
return cookie;
}
}
const connectingIp = getClientIpAddress(req);
if (isValidAnonymousID(connectingIp)) {
return connectingIp;
}
return undefined;
}