From 1bcee0a35e630007d599ae27475149c9b9bb76e1 Mon Sep 17 00:00:00 2001 From: mikusa Date: Wed, 12 Jul 2023 21:54:54 +0800 Subject: [PATCH 1/7] Update zh-CN.json --- lang/zh-CN.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lang/zh-CN.json b/lang/zh-CN.json index 33eb5d856..7a2117c1d 100644 --- a/lang/zh-CN.json +++ b/lang/zh-CN.json @@ -2,8 +2,8 @@ "label.access-code": "访问代码", "label.actions": "用户行为", "label.activity-log": "活动日志", - "label.add": "Add", - "label.add-description": "Add description", + "label.add": "添加", + "label.add-description": "添加描述", "label.add-website": "添加网站", "label.admin": "管理员", "label.all": "所有", @@ -127,15 +127,15 @@ "label.website": "Website", "label.website-id": "网站 ID", "label.websites": "网站", - "label.window": "Window", + "label.window": "窗口", "label.yesterday": "昨天", "labels.after": "After", "labels.average": "Average", "labels.before": "Before", "labels.breakdown": "Breakdown", "labels.contains": "Contains", - "labels.create-report": "Create report", - "labels.description": "Description", + "labels.create-report": "创建报告", + "labels.description": "描述", "labels.does-not-contain": "Does not contain", "labels.does-not-equal": "Does not equal", "labels.equals": "Equals", @@ -154,14 +154,14 @@ "labels.true": "True", "labels.type": "Type", "labels.unique": "Unique", - "labels.untitled": "Untitled", + "labels.untitled": "未命名", "labels.value": "Value", "message.active-users": "当前在线 {x} 人", "message.confirm-delete": "你确定要删除 {target} 吗?", "message.confirm-leave": "你确定要离开 {target} 吗?", "message.confirm-reset": "您确定要重置 {target} 的数据吗?", - "message.delete-account": "To delete this account, type {confirmation} in the box below to confirm.", - "message.delete-website": "To delete this website, type {confirmation} in the box below to confirm.", + "message.delete-account": "确定删除该账户, 请在下面的输入框中输入 {confirmation} 进行二次确认。", + "message.delete-website": "确定删除该网站, 请在下面的输入框中输入 {confirmation} 进行二次确认。", "message.delete-website-warning": "所有相关数据将会被删除。", "message.error": "出现错误。", "message.event-log": "{event} on {url}", @@ -175,7 +175,7 @@ "message.no-teams": "你还没有创建任何团队。", "message.no-users": "没有任何用户。", "message.page-not-found": "网页未找到。", - "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", + "message.reset-website": "确定重置该网站, 请在下面的输入框中输入 {confirmation} 进行二次确认。", "message.reset-website-warning": "本网站的所有统计数据将被删除,但您的跟踪代码将保持不变。", "message.saved": "保存成功。", "message.share-url": "这是 {target} 的共享链接。", @@ -184,7 +184,7 @@ "message.tracking-code": "跟踪代码", "message.user-deleted": "User detected.", "message.visitor-log": "来自{country}的访客在搭载 {os} 的{device}上使用 {browser} 浏览器进行访问。", - "messages.no-results-found": "No results were found.", + "messages.no-results-found": "没有找到任何结果。", "messages.no-team-websites": "这个团队没有任何网站。", "messages.no-websites-configured": "你还没有设置任何网站。", "messages.team-websites-info": "团队中的任何人都可查看网站。" From fe4667175645db40db89e3be8ef061a41a13d516 Mon Sep 17 00:00:00 2001 From: Jacek Maciejak <18230443+RikoDEV@users.noreply.github.com> Date: Wed, 12 Jul 2023 21:07:03 +0200 Subject: [PATCH 2/7] i18n: update pl-PL translations --- lang/pl-PL.json | 88 ++++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/lang/pl-PL.json b/lang/pl-PL.json index 38b808fc1..e2fc8b7bb 100644 --- a/lang/pl-PL.json +++ b/lang/pl-PL.json @@ -2,7 +2,7 @@ "label.access-code": "Kod dostępu", "label.actions": "Działania", "label.activity-log": "Dziennik aktywności", - "label.add": "Add", + "label.add": "Dodaj", "label.add-description": "Add description", "label.add-website": "Dodaj witrynę", "label.admin": "Administrator", @@ -42,13 +42,13 @@ "label.edit": "Edytuj", "label.edit-dashboard": "Edytuj panel", "label.enable-share-url": "Włącz udostępnianie adresu URL", - "label.event-data": "Event data", + "label.event-data": "Dane zdarzenia", "label.events": "Zdarzenia", - "label.field": "Field", - "label.fields": "Fields", + "label.field": "Pole", + "label.fields": "Pola", "label.filter-combined": "Połączone", "label.filter-raw": "Surowe dane", - "label.funnel": "Funnel", + "label.funnel": "Lejek", "label.join": "Dołącz", "label.join-team": "Dołącz do zespołu", "label.language": "Język", @@ -74,7 +74,7 @@ "label.powered-by": "Obsługiwane przez {name}", "label.profile": "Profil", "label.queries": "Zapytania", - "label.query": "Query", + "label.query": "Zapytanie", "label.query-parameters": "Parametry query", "label.realtime": "Czas rzeczywisty", "label.referrers": "Źródła odsyłające", @@ -82,15 +82,15 @@ "label.regenerate": "Wygeneruj ponownie", "label.regions": "Regiony", "label.remove": "Usuń", - "label.reports": "Reports", + "label.reports": "Raporty", "label.required": "Wymagany", "label.reset": "Zresetuj", "label.reset-website": "Zresetuj statystyki", - "label.role": "Role", - "label.run-query": "Run query", + "label.role": "Rola", + "label.run-query": "Uruchom zapytanie", "label.save": "Zapisz", "label.screens": "Ekrany", - "label.select-date": "Select date", + "label.select-date": "Wybierz datę", "label.select-website": "Wybierz witrynę", "label.sessions": "Sesje", "label.settings": "Ustawienia", @@ -114,54 +114,54 @@ "label.tracking-code": "Kod śledzenia", "label.unique-visitors": "Unikalni odwiedzający", "label.unknown": "Nieznany", - "label.url": "URL", - "label.urls": "URLs", + "label.url": "Link", + "label.urls": "Linki", "label.user": "Użytkownik", "label.username": "Nazwa użytkownika", "label.users": "Użytkownicy", "label.view": "Zobacz", "label.view-details": "Pokaż szczegóły", - "label.view-only": "View only", + "label.view-only": "Wyświetl tylko", "label.views": "Wyświetlenia", "label.visitors": "Odwiedzający", - "label.website": "Website", + "label.website": "Witryna", "label.website-id": "ID witryny", "label.websites": "Witryny", - "label.window": "Window", + "label.window": "Okno", "label.yesterday": "Wczoraj", - "labels.after": "After", - "labels.average": "Average", - "labels.before": "Before", - "labels.breakdown": "Breakdown", - "labels.contains": "Contains", - "labels.create-report": "Create report", - "labels.description": "Description", - "labels.does-not-contain": "Does not contain", - "labels.does-not-equal": "Does not equal", - "labels.equals": "Equals", - "labels.false": "False", - "labels.filters": "Filters", - "labels.greater-than": "Greater than", - "labels.greater-than-equals": "Greater than or equals", - "labels.less-than": "Less than", - "labels.less-than-equals": "Less than or equals", + "labels.after": "Po", + "labels.average": "Średnia", + "labels.before": "Przed", + "labels.breakdown": "Podział", + "labels.contains": "Zawiera", + "labels.create-report": "Utwórz raport", + "labels.description": "Opis", + "labels.does-not-contain": "Nie zawiera", + "labels.does-not-equal": "Nie równa się", + "labels.equals": "Równa się", + "labels.false": "Fałsz", + "labels.filters": "Filtry", + "labels.greater-than": "Wiekszy niż", + "labels.greater-than-equals": "Większy lub równy", + "labels.less-than": "Mniejszy niż", + "labels.less-than-equals": "Mniejszy lub równy", "labels.max": "Max", "labels.min": "Min", - "labels.overview": "Overview", - "labels.sum": "Sum", - "labels.total": "Total", - "labels.total-records": "Total records", - "labels.true": "True", - "labels.type": "Type", - "labels.unique": "Unique", - "labels.untitled": "Untitled", - "labels.value": "Value", + "labels.overview": "Przegląd", + "labels.sum": "Suma", + "labels.total": "Łącznie", + "labels.total-records": "Łączna liczba rekordów", + "labels.true": "Prawda", + "labels.type": "Typ", + "labels.unique": "Unikalne", + "labels.untitled": "Bez tytułu", + "labels.value": "Wartość", "message.active-users": "{x} aktualnie {x, plural, one {odwiedzający} other {odwiedzających}}", "message.confirm-delete": "Czy na pewno chcesz usunąć {target}?", "message.confirm-leave": "Czy na pewno chcesz opuścić {target}?", "message.confirm-reset": "Czy na pewno chcesz zresetować statystyki {target}?", - "message.delete-account": "To delete this account, type {confirmation} in the box below to confirm.", - "message.delete-website": "To delete this website, type {confirmation} in the box below to confirm.", + "message.delete-account": "Aby usunąć to konto, wpisz {confirmation} w polu poniżej w celu potwierdzenia.", + "message.delete-website": "Aby usunąć tę stronę, wpisz {confirmation} w polu poniżej w celu potwierdzenia.", "message.delete-website-warning": "Wszystkie powiązane dane również zostaną usunięte.", "message.error": "Coś poszło nie tak.", "message.event-log": "{event} na {url}", @@ -170,7 +170,7 @@ "message.invalid-domain": "Nieprawidłowa witryna", "message.min-password-length": "Minimalna długość {n} znaków", "message.no-data-available": "Brak dostępnych danych.", - "message.no-event-data": "No event data is available.", + "message.no-event-data": "Dane dotyczące zdarzeń nie są dostępne.", "message.no-match-password": "Hasła się nie zgadzają", "message.no-teams": "Nie stworzyłeś żadnych zespołów.", "message.no-users": "Nie ma żadnych użytkowników.", @@ -184,7 +184,7 @@ "message.tracking-code": "Kod śledzenia", "message.user-deleted": "Użytkownik usunięty.", "message.visitor-log": "Odwiedzający z {country} używa {browser} na {os} {device}", - "messages.no-results-found": "No results were found.", + "messages.no-results-found": "Nie znaleziono żadnych wyników.", "messages.no-team-websites": "Ten zespół nie ma żadnych witryn internetowych.", "messages.no-websites-configured": "Nie masz skonfigurowanych żadnych witryn internetowych.", "messages.team-websites-info": "Strony internetowe mogą być przeglądane przez każdego członka zespołu." From 35cf1498763759a3cd5cbf3a8b019e24e7cf5e68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=86=E6=9C=A8?= <43062104+yumusb@users.noreply.github.com> Date: Thu, 13 Jul 2023 12:27:38 +0800 Subject: [PATCH 3/7] Check the hostname value for legality to eliminate dirty data Check the hostname value for legality to eliminate dirty data --- lib/session.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/session.ts b/lib/session.ts index 29ff694f6..2725f04cd 100644 --- a/lib/session.ts +++ b/lib/session.ts @@ -30,6 +30,13 @@ export async function findSession(req: NextApiRequestCollect) { // Verify payload const { website: websiteId, hostname, screen, language } = payload; + + // Check the hostname value for legality to eliminate dirty data + const validHostnameRegex = /^[\w-.]+$/; + if (!validHostnameRegex.test(hostname)) { + throw new Error('Invalid hostname.'); + } + if (!validate(websiteId)) { throw new Error('Invalid website ID.'); } From bdd941fd6be7710a5353f21101dc0e63fdf4ec2b Mon Sep 17 00:00:00 2001 From: Maxime-J Date: Thu, 13 Jul 2023 10:02:35 +0000 Subject: [PATCH 4/7] Fix toggle charts in dashboard --- components/pages/websites/WebsiteChartList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/pages/websites/WebsiteChartList.js b/components/pages/websites/WebsiteChartList.js index 42079a53a..62b05a4d9 100644 --- a/components/pages/websites/WebsiteChartList.js +++ b/components/pages/websites/WebsiteChartList.js @@ -41,7 +41,7 @@ export default function WebsiteChartList({ websites, showCharts, limit }) { - + {showCharts && } ) : null; })} From 31a11be1ac8f29660bb2cf920e9fdc8cbf43e044 Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Thu, 13 Jul 2023 10:11:08 -0700 Subject: [PATCH 5/7] fix event data column order to match psql --- db/mysql/schema.prisma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/mysql/schema.prisma b/db/mysql/schema.prisma index 98ee8ae00..a25405dff 100644 --- a/db/mysql/schema.prisma +++ b/db/mysql/schema.prisma @@ -97,8 +97,8 @@ model WebsiteEvent { model EventData { id String @id() @map("event_data_id") @db.VarChar(36) - websiteEventId String @map("website_event_id") @db.VarChar(36) websiteId String @map("website_id") @db.VarChar(36) + websiteEventId String @map("website_event_id") @db.VarChar(36) eventKey String @map("event_key") @db.VarChar(500) stringValue String? @map("string_value") @db.VarChar(500) numberValue Decimal? @map("number_value") @db.Decimal(19, 4) From 198c555d1eded289f44ed0fe8456633132b4cdf2 Mon Sep 17 00:00:00 2001 From: Maxime-J Date: Thu, 13 Jul 2023 19:41:35 +0000 Subject: [PATCH 6/7] Update fr-FR --- lang/fr-FR.json | 84 ++++++++++++++++++++++++------------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/lang/fr-FR.json b/lang/fr-FR.json index ff6de17bd..89f4e72ba 100644 --- a/lang/fr-FR.json +++ b/lang/fr-FR.json @@ -2,8 +2,8 @@ "label.access-code": "Code d'accès", "label.actions": "Actions", "label.activity-log": "Journal d'activité", - "label.add": "Add", - "label.add-description": "Add description", + "label.add": "Ajouter", + "label.add-description": "Ajouter une description", "label.add-website": "Ajouter un site", "label.admin": "Administrateur", "label.all": "Tout", @@ -42,13 +42,13 @@ "label.edit": "Modifier", "label.edit-dashboard": "Modifier le tableau de bord", "label.enable-share-url": "Activer l'URL de partage", - "label.event-data": "Event data", + "label.event-data": "Données d'événements", "label.events": "Événements", - "label.field": "Field", - "label.fields": "Fields", + "label.field": "Champ", + "label.fields": "Champs", "label.filter-combined": "Combiné", "label.filter-raw": "Brut", - "label.funnel": "Funnel", + "label.funnel": "Entonnoir", "label.join": "Rejoindre", "label.join-team": "Rejoindre une équipe", "label.language": "Langue", @@ -73,24 +73,24 @@ "label.password": "Mot de passe", "label.powered-by": "Propulsé par {name}", "label.profile": "Profil", - "label.queries": "Queries", - "label.query": "Query", + "label.queries": "Requêtes", + "label.query": "Requête", "label.query-parameters": "Paramètres d'URL", "label.realtime": "Temps réel", - "label.referrers": "Sources", + "label.referrers": "Sites référents", "label.refresh": "Rafraîchir", "label.regenerate": "Régénérer", "label.regions": "Régions", "label.remove": "Retirer", - "label.reports": "Reports", + "label.reports": "Rapports", "label.required": "Requis", "label.reset": "Réinitialiser", "label.reset-website": "Réinitialiser les statistiques", "label.role": "Rôle", - "label.run-query": "Run query", + "label.run-query": "Éxécuter la requête", "label.save": "Enregistrer", "label.screens": "Résolutions d'écran", - "label.select-date": "Select date", + "label.select-date": "Choisir une période", "label.select-website": "Choisir un site", "label.sessions": "Sessions", "label.settings": "Paramètres", @@ -121,46 +121,46 @@ "label.users": "Utilisateurs", "label.view": "Voir", "label.view-details": "Voir les détails", - "label.view-only": "View only", + "label.view-only": "Consultation", "label.views": "Vues", "label.visitors": "Visiteurs", "label.website": "Website", "label.website-id": "ID de site", "label.websites": "Sites", - "label.window": "Window", + "label.window": "Fenêtre", "label.yesterday": "Hier", - "labels.after": "After", - "labels.average": "Average", - "labels.before": "Before", - "labels.breakdown": "Breakdown", - "labels.contains": "Contains", - "labels.create-report": "Create report", + "labels.after": "Après", + "labels.average": "Moyenne", + "labels.before": "Avant", + "labels.breakdown": "Répartition", + "labels.contains": "Contient", + "labels.create-report": "Créer un rapport", "labels.description": "Description", - "labels.does-not-contain": "Does not contain", - "labels.does-not-equal": "Does not equal", - "labels.equals": "Equals", - "labels.false": "False", - "labels.filters": "Filters", - "labels.greater-than": "Greater than", - "labels.greater-than-equals": "Greater than or equals", - "labels.less-than": "Less than", - "labels.less-than-equals": "Less than or equals", + "labels.does-not-contain": "Ne contient pas", + "labels.does-not-equal": "N'est pas égal", + "labels.equals": "Est égal", + "labels.false": "Faux", + "labels.filters": "Filtres", + "labels.greater-than": "Supérieur à", + "labels.greater-than-equals": "Supérieur ou égal à", + "labels.less-than": "Inférieur à", + "labels.less-than-equals": "Inférieur ou égal à", "labels.max": "Max", "labels.min": "Min", - "labels.overview": "Overview", - "labels.sum": "Sum", + "labels.overview": "Vue d'ensemble", + "labels.sum": "Somme", "labels.total": "Total", - "labels.total-records": "Total records", - "labels.true": "True", + "labels.total-records": "Nombre d'enregistrements", + "labels.true": "Vrai", "labels.type": "Type", "labels.unique": "Unique", - "labels.untitled": "Untitled", - "labels.value": "Value", + "labels.untitled": "Sans titre", + "labels.value": "Valeur", "message.active-users": "{x} {x, plural, one {visiteur} other {visiteurs}} actuellement", "message.confirm-delete": "Êtes-vous sûr de vouloir supprimer {target} ?", "message.confirm-leave": "Êtes-vous sûr de vouloir quitter {target} ?", "message.confirm-reset": "Êtes-vous sûr de vouloir réinitialiser les statistiques de {target} ?", - "message.delete-account": "To delete this account, type {confirmation} in the box below to confirm.", + "message.delete-account": "Pour supprimer ce compte, taper {confirmation} ci-dessous pour confirmer.", "message.delete-website": "Pour supprimer ce site, taper {confirmation} ci-dessous pour confirmer.", "message.delete-website-warning": "Toutes les données associées seront supprimées.", "message.error": "Un problème est survenu.", @@ -170,12 +170,12 @@ "message.invalid-domain": "Domaine invalide", "message.min-password-length": "Taille minimale de {n} caractères", "message.no-data-available": "Aucune donnée disponible.", - "message.no-event-data": "No event data is available.", + "message.no-event-data": "Aucune donnée d'événement disponible.", "message.no-match-password": "Les mots de passe ne correspondent pas", - "message.no-teams": "Vous n'avez créé aucune équipe.", - "message.no-users": "Il n'y aucun utilisateur.", + "message.no-teams": "Vous n'avez pas créé d'équipe.", + "message.no-users": "Aucun utilisateur.", "message.page-not-found": "Page non trouvée.", - "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", + "message.reset-website": "Pour réinitialiser ce site, taper {confirmation} ci-dessous pour confirmer.", "message.reset-website-warning": "Toutes les statistiques pour ce site seront supprimées, mais votre code de suivi restera intact.", "message.saved": "Enregistré avec succès.", "message.share-url": "Les statistiques de votre site sont accessibles publiquement sur cette URL :", @@ -184,8 +184,8 @@ "message.tracking-code": "Code de suivi", "message.user-deleted": "Utilisateur supprimé.", "message.visitor-log": "Visiteur de {country} utilisant {browser} sur {os} {device}", - "messages.no-results-found": "No results were found.", + "messages.no-results-found": "Aucun résultat n'a été trouvé.", "messages.no-team-websites": "Cette équipe n'a aucun site.", - "messages.no-websites-configured": "Vous n'avez configuré aucun site.", + "messages.no-websites-configured": "Vous n'avez pas configuré de site.", "messages.team-websites-info": "Les sites peuvent être vus par tout utilisateur dans l'équipe." } From 74bd4d53669b11520c44e639ee145afce6c87512 Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Thu, 13 Jul 2023 16:30:10 -0700 Subject: [PATCH 7/7] add missing semi-colons --- db/clickhouse/schema.sql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/db/clickhouse/schema.sql b/db/clickhouse/schema.sql index a33db3c43..dceb0d1ee 100644 --- a/db/clickhouse/schema.sql +++ b/db/clickhouse/schema.sql @@ -70,7 +70,7 @@ SETTINGS kafka_broker_list = 'domain:9092,domain:9093,domain:9094', -- input bro kafka_group_name = 'event_consumer_group', kafka_format = 'JSONEachRow', kafka_max_block_size = 1048576, - kafka_handle_error_mode = 'stream' + kafka_handle_error_mode = 'stream'; CREATE MATERIALIZED VIEW umami.website_event_queue_mv TO umami.website_event AS SELECT website_id, @@ -108,7 +108,7 @@ SETTINGS index_granularity = 8192 AS SELECT _error AS error, _raw_message AS raw FROM umami.website_event_queue -WHERE length(_error) > 0 +WHERE length(_error) > 0; CREATE TABLE umami.event_data ( @@ -151,7 +151,7 @@ SETTINGS kafka_broker_list = 'domain:9092,domain:9093,domain:9094', -- input bro kafka_group_name = 'event_data_consumer_group', kafka_format = 'JSONEachRow', kafka_max_block_size = 1048576, - kafka_handle_error_mode = 'stream' + kafka_handle_error_mode = 'stream'; CREATE MATERIALIZED VIEW umami.event_data_queue_mv TO umami.event_data AS SELECT website_id, @@ -178,4 +178,4 @@ SETTINGS index_granularity = 8192 AS SELECT _error AS error, _raw_message AS raw FROM umami.event_data_queue -WHERE length(_error) > 0 \ No newline at end of file +WHERE length(_error) > 0; \ No newline at end of file