}> = ({ geo }) => {
+ if (geo?.country?.code) {
+ const flag = countries[geo.country.code]?.flag;
+ if (!flag) {
+ return ;
+ }
+ return (
+
+ {[
+ `Country: ${countries[geo.country.code]?.name || geo.country.code}`,
+ geo.region?.code ? `Region: ${geo.region?.code}` : undefined,
+ geo.city?.name ? `City: ${geo.city.name}` : undefined,
+ ]
+ .filter(s => !!s)
+ .join("\n")}
+ {"\n\n"}
+ {geo.location && geo.location.latitude && geo.location.latitude ? (
+ <>
+ Location:{" "}
+
+ {geo.location.latitude}, {geo.location.longitude}
+
+ >
+ ) : undefined}
+
+ }
+ >
+ {/* Without the space after the tag below, tooltip doesn't work. Don't delete it! */}
+ {" "}
+
+ );
+ }
+ return ;
+};
+
type IncomingEvent = {
id: string;
date: string;
@@ -971,22 +1024,42 @@ const IncomingEventsTable = ({ loadEvents, loading, streamType, entityType, acto
},
{
title: "Type",
- width: "8em",
- dataIndex: "type",
+ width: "12em",
+ //dataIndex: "type",
+ render: (d: IncomingEvent) => {
+ const eventName = d.type === "track" ? d.event?.event || d.type : d.type;
+ const isDeviceEvent = d.pagePath;
+ return (
+
+ (isDeviceEvent ? : )}
+ />
+ }
+ className={"whitespace-nowrap"}
+ >
+ {trimMiddle(eventName || "", 16)}
+
+
+ );
+ },
},
{
title: "Page Path",
width: "20em",
ellipsis: true,
key: "pagePath",
- render: (d: IncomingEvent) => (
-
- ),
+ render: (d: IncomingEvent) =>
+ d.pageURL && (
+
+ ),
},
{
title: "Summary",
@@ -995,17 +1068,7 @@ const IncomingEventsTable = ({ loadEvents, loading, streamType, entityType, acto
render: (d: IncomingEvent) => {
return (
- {d.event?.event && (
-
- }
- className={"whitespace-nowrap"}
- >
- {d.event?.event}
-
-
- )}
+
{d.host && (
} className={"whitespace-nowrap"}>
diff --git a/webapps/console/lib/shared/countries.ts b/webapps/console/lib/shared/countries.ts
new file mode 100644
index 000000000..50f6bb837
--- /dev/null
+++ b/webapps/console/lib/shared/countries.ts
@@ -0,0 +1,158 @@
+export const countries = {
+ US: { flag: "๐บ๐ธ", name: "United States" },
+ GB: { flag: "๐ฌ๐ง", name: "United Kingdom" },
+ CA: { flag: "๐จ๐ฆ", name: "Canada" },
+ DE: { flag: "๐ฉ๐ช", name: "Germany" },
+ FR: { flag: "๐ซ๐ท", name: "France" },
+ IT: { flag: "๐ฎ๐น", name: "Italy" },
+ ES: { flag: "๐ช๐ธ", name: "Spain" },
+ RU: { flag: "๐ท๐บ", name: "Russia" },
+ CN: { flag: "๐จ๐ณ", name: "China" },
+ JP: { flag: "๐ฏ๐ต", name: "Japan" },
+ IN: { flag: "๐ฎ๐ณ", name: "India" },
+ BR: { flag: "๐ง๐ท", name: "Brazil" },
+ AU: { flag: "๐ฆ๐บ", name: "Australia" },
+ ZA: { flag: "๐ฟ๐ฆ", name: "South Africa" },
+ AR: { flag: "๐ฆ๐ท", name: "Argentina" },
+ MX: { flag: "๐ฒ๐ฝ", name: "Mexico" },
+ NL: { flag: "๐ณ๐ฑ", name: "Netherlands" },
+ SE: { flag: "๐ธ๐ช", name: "Sweden" },
+ NO: { flag: "๐ณ๐ด", name: "Norway" },
+ FI: { flag: "๐ซ๐ฎ", name: "Finland" },
+ DK: { flag: "๐ฉ๐ฐ", name: "Denmark" },
+ PL: { flag: "๐ต๐ฑ", name: "Poland" },
+ GR: { flag: "๐ฌ๐ท", name: "Greece" },
+ IE: { flag: "๐ฎ๐ช", name: "Ireland" },
+ PT: { flag: "๐ต๐น", name: "Portugal" },
+ BE: { flag: "๐ง๐ช", name: "Belgium" },
+ CH: { flag: "๐จ๐ญ", name: "Switzerland" },
+ AT: { flag: "๐ฆ๐น", name: "Austria" },
+ TR: { flag: "๐น๐ท", name: "Turkey" },
+ SA: { flag: "๐ธ๐ฆ", name: "Saudi Arabia" },
+ AE: { flag: "๐ฆ๐ช", name: "United Arab Emirates" },
+ IL: { flag: "๐ฎ๐ฑ", name: "Israel" },
+ EG: { flag: "๐ช๐ฌ", name: "Egypt" },
+ NG: { flag: "๐ณ๐ฌ", name: "Nigeria" },
+ KE: { flag: "๐ฐ๐ช", name: "Kenya" },
+ GH: { flag: "๐ฌ๐ญ", name: "Ghana" },
+ TZ: { flag: "๐น๐ฟ", name: "Tanzania" },
+ UG: { flag: "๐บ๐ฌ", name: "Uganda" },
+ ZW: { flag: "๐ฟ๐ผ", name: "Zimbabwe" },
+ MZ: { flag: "๐ฒ๐ฟ", name: "Mozambique" },
+ AO: { flag: "๐ฆ๐ด", name: "Angola" },
+ CM: { flag: "๐จ๐ฒ", name: "Cameroon" },
+ BJ: { flag: "๐ง๐ฏ", name: "Benin" },
+ TG: { flag: "๐น๐ฌ", name: "Togo" },
+ CI: { flag: "๐จ๐ฎ", name: "Ivory Coast" },
+ SN: { flag: "๐ธ๐ณ", name: "Senegal" },
+ ML: { flag: "๐ฒ๐ฑ", name: "Mali" },
+ BF: { flag: "๐ง๐ซ", name: "Burkina Faso" },
+ NE: { flag: "๐ณ๐ช", name: "Niger" },
+ TD: { flag: "๐น๐ฉ", name: "Chad" },
+ MR: { flag: "๐ฒ๐ท", name: "Mauritania" },
+ SD: { flag: "๐ธ๐ฉ", name: "Sudan" },
+ ER: { flag: "๐ช๐ท", name: "Eritrea" },
+ DJ: { flag: "๐ฉ๐ฏ", name: "Djibouti" },
+ ET: { flag: "๐ช๐น", name: "Ethiopia" },
+ SO: { flag: "๐ธ๐ด", name: "Somalia" },
+ GM: { flag: "๐ฌ๐ฒ", name: "Gambia" },
+ GW: { flag: "๐ฌ๐ผ", name: "Guinea-Bissau" },
+ GN: { flag: "๐ฌ๐ณ", name: "Guinea" },
+ SL: { flag: "๐ธ๐ฑ", name: "Sierra Leone" },
+ LR: { flag: "๐ฑ๐ท", name: "Liberia" },
+ CF: { flag: "๐จ๐ซ", name: "Central African Republic" },
+ GA: { flag: "๐ฌ๐ฆ", name: "Gabon" },
+ CG: { flag: "๐จ๐ฌ", name: "Congo - Brazzaville" },
+ CD: { flag: "๐จ๐ฉ", name: "Congo - Kinshasa" },
+ IO: { flag: "๐ฎ๐ด", name: "British Indian Ocean Territory" },
+ AC: { flag: "๐ฆ๐จ", name: "Ascension Island" },
+ CP: { flag: "๐จ๐ต", name: "Clipperton Island" },
+ EA: { flag: "๐ช๐ฆ", name: "Ceuta & Melilla" },
+ DG: { flag: "๐ฉ๐ฌ", name: "Diego Garcia" },
+ IC: { flag: "๐ฎ๐จ", name: "Canary Islands" },
+ TA: { flag: "๐น๐ฆ", name: "Tristan da Cunha" },
+ HK: { flag: "๐ญ๐ฐ", name: "Hong Kong" },
+ UA: { flag: "๐บ๐ฆ", name: "Ukraine" },
+ BY: { flag: "๐ง๐พ", name: "Belarus" },
+ MD: { flag: "๐ฒ๐ฉ", name: "Moldova" },
+ LV: { flag: "๐ฑ๐ป", name: "Latvia" },
+ LT: { flag: "๐ฑ๐น", name: "Lithuania" },
+ EE: { flag: "๐ช๐ช", name: "Estonia" },
+ GE: { flag: "๐ฌ๐ช", name: "Georgia" },
+ AM: { flag: "๐ฆ๐ฒ", name: "Armenia" },
+ XK: { flag: "๐ฝ๐ฐ", name: "Kosovo" },
+ RS: { flag: "๐ท๐ธ", name: "Serbia" },
+ ME: { flag: "๐ฒ๐ช", name: "Montenegro" },
+ MK: { flag: "๐ฒ๐ฐ", name: "North Macedonia" },
+ AL: { flag: "๐ฆ๐ฑ", name: "Albania" },
+ RO: { flag: "๐ท๐ด", name: "Romania" },
+ BG: { flag: "๐ง๐ฌ", name: "Bulgaria" },
+ CY: { flag: "๐จ๐พ", name: "Cyprus" },
+ MT: { flag: "๐ฒ๐น", name: "Malta" },
+ TH: { flag: "๐น๐ญ", name: "Thailand" },
+ PK: { flag: "๐ต๐ฐ", name: "Pakistan" },
+ KR: { flag: "๐ฐ๐ท", name: "South Korea" },
+ ID: { flag: "๐ฎ๐ฉ", name: "Indonesia" },
+ MY: { flag: "๐ฒ๐พ", name: "Malaysia" },
+ PH: { flag: "๐ต๐ญ", name: "Philippines" },
+ SG: { flag: "๐ธ๐ฌ", name: "Singapore" },
+ VN: { flag: "๐ป๐ณ", name: "Vietnam" },
+ NZ: { flag: "๐ณ๐ฟ", name: "New Zealand" },
+ CL: { flag: "๐จ๐ฑ", name: "Chile" },
+ CO: { flag: "๐จ๐ด", name: "Colombia" },
+ PE: { flag: "๐ต๐ช", name: "Peru" },
+ VE: { flag: "๐ป๐ช", name: "Venezuela" },
+ IR: { flag: "๐ฎ๐ท", name: "Iran" },
+ KZ: { flag: "๐ฐ๐ฟ", name: "Kazakhstan" },
+ UZ: { flag: "๐บ๐ฟ", name: "Uzbekistan" },
+ BD: { flag: "๐ง๐ฉ", name: "Bangladesh" },
+ LK: { flag: "๐ฑ๐ฐ", name: "Sri Lanka" },
+ NP: { flag: "๐ณ๐ต", name: "Nepal" },
+ BT: { flag: "๐ง๐น", name: "Bhutan" },
+ MM: { flag: "๐ฒ๐ฒ", name: "Myanmar" },
+ AF: { flag: "๐ฆ๐ซ", name: "Afghanistan" },
+ IS: { flag: "๐ฎ๐ธ", name: "Iceland" },
+ CZ: { flag: "๐จ๐ฟ", name: "Czech Republic" },
+ HU: { flag: "๐ญ๐บ", name: "Hungary" },
+ SK: { flag: "๐ธ๐ฐ", name: "Slovakia" },
+ SI: { flag: "๐ธ๐ฎ", name: "Slovenia" },
+ HR: { flag: "๐ญ๐ท", name: "Croatia" },
+ BA: { flag: "๐ง๐ฆ", name: "Bosnia and Herzegovina" },
+ LU: { flag: "๐ฑ๐บ", name: "Luxembourg" },
+ MC: { flag: "๐ฒ๐จ", name: "Monaco" },
+ LI: { flag: "๐ฑ๐ฎ", name: "Liechtenstein" },
+ SM: { flag: "๐ธ๐ฒ", name: "San Marino" },
+ VA: { flag: "๐ป๐ฆ", name: "Vatican City" },
+ AD: { flag: "๐ฆ๐ฉ", name: "Andorra" },
+ MA: { flag: "๐ฒ๐ฆ", name: "Morocco" },
+ DZ: { flag: "๐ฉ๐ฟ", name: "Algeria" },
+ TN: { flag: "๐น๐ณ", name: "Tunisia" },
+ LY: { flag: "๐ฑ๐พ", name: "Libya" },
+ TW: { flag: "๐น๐ผ", name: "Taiwan" },
+ UY: { flag: "๐บ๐พ", name: "Uruguay" },
+ PY: { flag: "๐ต๐พ", name: "Paraguay" },
+ BO: { flag: "๐ง๐ด", name: "Bolivia" },
+ EC: { flag: "๐ช๐จ", name: "Ecuador" },
+ CR: { flag: "๐จ๐ท", name: "Costa Rica" },
+ PA: { flag: "๐ต๐ฆ", name: "Panama" },
+ GT: { flag: "๐ฌ๐น", name: "Guatemala" },
+ HN: { flag: "๐ญ๐ณ", name: "Honduras" },
+ SV: { flag: "๐ธ๐ป", name: "El Salvador" },
+ NI: { flag: "๐ณ๐ฎ", name: "Nicaragua" },
+ DO: { flag: "๐ฉ๐ด", name: "Dominican Republic" },
+ HT: { flag: "๐ญ๐น", name: "Haiti" },
+ JM: { flag: "๐ฏ๐ฒ", name: "Jamaica" },
+ TT: { flag: "๐น๐น", name: "Trinidad and Tobago" },
+ BB: { flag: "๐ง๐ง", name: "Barbados" },
+ BS: { flag: "๐ง๐ธ", name: "Bahamas" },
+ CU: { flag: "๐จ๐บ", name: "Cuba" },
+ AG: { flag: "๐ฆ๐ฌ", name: "Antigua and Barbuda" },
+ AQ: { flag: "๐ฆ๐ถ", name: "Antarctica" },
+ AS: { flag: "๐ฆ๐ธ", name: "American Samoa" },
+ AW: { flag: "๐ฆ๐ผ", name: "Aruba" },
+ AX: { flag: "๐ฆ๐ฝ", name: "ร
land Islands" },
+ AZ: { flag: "๐ฆ๐ฟ", name: "Azerbaijan" },
+ BH: { flag: "๐ง๐ญ", name: "Bahrain" },
+ BI: { flag: "๐ง๐ฎ", name: "Burundi" },
+ SW: { flag: "๐ธ๐ฟ", name: "Eswatini" },
+};
diff --git a/webapps/console/pages/api/s/[...type].ts b/webapps/console/pages/api/s/[...type].ts
index 06fdba3d5..229ba3ef9 100644
--- a/webapps/console/pages/api/s/[...type].ts
+++ b/webapps/console/pages/api/s/[...type].ts
@@ -224,7 +224,8 @@ export async function sendEventToBulker(req: NextApiRequest, ingestType: IngestT
const loc = getDataLocator(req, ingestType, event);
const type = event.type;
const message: IngestMessage = {
- geo: fromHeaders(req.headers),
+ //getting geo make sense only for browser events, otherwise it will based on ip of a server
+ geo: ingestType === "browser" ? fromHeaders(req.headers) : {},
connectionId: "",
ingestType,
@@ -393,8 +394,12 @@ export function patchEvent(
event.context = event.context || {};
if (ingestType === "browser") {
- //if ip comes from browser, don't trust i
+ //if ip comes from browser, don't trust it!
event.context.ip = event.request_ip;
+ //get geo from headers, so we can display it in the console
+ //we do it only for calls fron browser, otherwise it's pointless, the geo
+ //will contain ip of the server
+ event.context.geo = fromHeaders(req.headers);
}
if (context) {
event.context = { ...context, ...event.context };
@@ -405,8 +410,6 @@ export function patchEvent(
if (!event.context.locale) {
event.context.locale = (req.headers["accept-language"] as string | undefined)?.split(",")[0]?.trim() || undefined;
}
- //get geo from headers, so we can display it in the console
- event.context.geo = fromHeaders(req.headers);
const nowIsoDate = new Date().toISOString();
event.receivedAt = nowIsoDate;