FE+BE: fake MAC standardization (FA:CE) #1344

Signed-off-by: jokob-sk <jokob.sk@gmail.com>
This commit is contained in:
jokob-sk
2025-12-30 10:55:55 +11:00
parent eb125a84fe
commit f3aebbfb31
21 changed files with 55 additions and 8 deletions

View File

@@ -231,6 +231,13 @@ function getDeviceData() {
</a> </a>
</span>`; </span>`;
} }
// handle FAKE mac
if (setting.setKey == "NEWDEV_devMac" && isFakeMac(deviceData["devMac"])) {
inlineControl += `<span class="input-group-addon"
title="${getString("FakeMAC_hover")}">
<i class="fa-solid fa-dice"></i>
</span>`;
}
// handle generate MAC for new device // handle generate MAC for new device
if (setting.setKey == "NEWDEV_devMac" && deviceData["devMac"] == "") { if (setting.setKey == "NEWDEV_devMac" && deviceData["devMac"] == "") {
inlineControl += `<span class="input-group-addon pointer" inlineControl += `<span class="input-group-addon pointer"

View File

@@ -449,6 +449,27 @@ function addOptionFromModalInput() {
} }
/**
* Check if a given MAC address is a "fake" MAC used internally.
*
* A MAC is considered fake if it starts with:
* - "FA:CE" (new synthetic devices)
* - "00:1A" (legacy placeholder devices)
*
* The check is case-insensitive.
*
* @param {string} macAddress - The MAC address to check.
* @returns {boolean} True if the MAC is fake, false otherwise.
*/
function isFakeMac(macAddress) {
// Normalize to lowercase for consistent comparison
macAddress = macAddress.toLowerCase();
// Check if MAC starts with FA:CE or 00:1a
return macAddress.startsWith("fa:ce") || macAddress.startsWith("00:1a");
}
// -------------------------------------------------------- // --------------------------------------------------------
// Generate a random MAC address starting FA:CE // Generate a random MAC address starting FA:CE
function generate_NEWDEV_devMac() { function generate_NEWDEV_devMac() {

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "طول الجدول", "Events_Tablelenght": "طول الجدول",
"Events_Tablelenght_all": "الكل", "Events_Tablelenght_all": "الكل",
"Events_Title": "الأحداث", "Events_Title": "الأحداث",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "منفذ خادم GraphQL", "GRAPHQL_PORT_description": "منفذ خادم GraphQL",
"GRAPHQL_PORT_name": "منفذ GraphQL", "GRAPHQL_PORT_name": "منفذ GraphQL",
"Gen_Action": "إجراء", "Gen_Action": "إجراء",

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "Veure_entrades_MENU", "Events_Tablelenght": "Veure_entrades_MENU",
"Events_Tablelenght_all": "Tot", "Events_Tablelenght_all": "Tot",
"Events_Title": "Esdeveniments", "Events_Title": "Esdeveniments",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "El número de port del servidor GraphQL. Comprova que el port és únic en totes les aplicacions d'aquest servidor i en totes les instàncies de NetAlertX.", "GRAPHQL_PORT_description": "El número de port del servidor GraphQL. Comprova que el port és únic en totes les aplicacions d'aquest servidor i en totes les instàncies de NetAlertX.",
"GRAPHQL_PORT_name": "Port GraphQL", "GRAPHQL_PORT_name": "Port GraphQL",
"Gen_Action": "Acció", "Gen_Action": "Acció",
@@ -762,4 +763,4 @@
"settings_system_label": "Sistema", "settings_system_label": "Sistema",
"settings_update_item_warning": "Actualitza el valor sota. Sigues curós de seguir el format anterior. <b>No hi ha validació.</b>", "settings_update_item_warning": "Actualitza el valor sota. Sigues curós de seguir el format anterior. <b>No hi ha validació.</b>",
"test_event_tooltip": "Deseu els canvis primer abans de comprovar la configuració." "test_event_tooltip": "Deseu els canvis primer abans de comprovar la configuració."
} }

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "", "Events_Tablelenght": "",
"Events_Tablelenght_all": "", "Events_Tablelenght_all": "",
"Events_Title": "", "Events_Title": "",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "", "GRAPHQL_PORT_description": "",
"GRAPHQL_PORT_name": "", "GRAPHQL_PORT_name": "",
"Gen_Action": "", "Gen_Action": "",

View File

@@ -294,6 +294,7 @@
"Events_Tablelenght": "Zeige _MENU_ Einträge", "Events_Tablelenght": "Zeige _MENU_ Einträge",
"Events_Tablelenght_all": "Alle", "Events_Tablelenght_all": "Alle",
"Events_Title": "Ereignisse", "Events_Title": "Ereignisse",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "Die Portnummer des GraphQL-Servers. Stellen Sie sicher, dass dieser Port von keiner anderen Anwendung oder NetAlertX Instanz verwendet wird.", "GRAPHQL_PORT_description": "Die Portnummer des GraphQL-Servers. Stellen Sie sicher, dass dieser Port von keiner anderen Anwendung oder NetAlertX Instanz verwendet wird.",
"GRAPHQL_PORT_name": "GraphQL-Port", "GRAPHQL_PORT_name": "GraphQL-Port",
"Gen_Action": "Action", "Gen_Action": "Action",

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "Show _MENU_ entries", "Events_Tablelenght": "Show _MENU_ entries",
"Events_Tablelenght_all": "All", "Events_Tablelenght_all": "All",
"Events_Title": "Events", "Events_Title": "Events",
"FakeMAC_hover": "Autodetected - indicates if the device uses a FAKE MAC address (starting with FA:CE or 00:1A), typically generated by a plugin that cannot detect the real MAC or when creating a dummy device.",
"GRAPHQL_PORT_description": "The port number of the GraphQL server. Make sure the port is unique across all your applications on this host and NetAlertX instances.", "GRAPHQL_PORT_description": "The port number of the GraphQL server. Make sure the port is unique across all your applications on this host and NetAlertX instances.",
"GRAPHQL_PORT_name": "GraphQL port", "GRAPHQL_PORT_name": "GraphQL port",
"Gen_Action": "Action", "Gen_Action": "Action",

View File

@@ -292,6 +292,7 @@
"Events_Tablelenght": "Mostrando entradas del MENÚ", "Events_Tablelenght": "Mostrando entradas del MENÚ",
"Events_Tablelenght_all": "Todos", "Events_Tablelenght_all": "Todos",
"Events_Title": "Eventos", "Events_Title": "Eventos",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "El número de puerto del servidor GraphQL. Asegúrese de que el puerto sea único en todas sus aplicaciones en este host y en las instancias de NetAlertX.", "GRAPHQL_PORT_description": "El número de puerto del servidor GraphQL. Asegúrese de que el puerto sea único en todas sus aplicaciones en este host y en las instancias de NetAlertX.",
"GRAPHQL_PORT_name": "Puerto GraphQL", "GRAPHQL_PORT_name": "Puerto GraphQL",
"Gen_Action": "Acción", "Gen_Action": "Acción",

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "", "Events_Tablelenght": "",
"Events_Tablelenght_all": "", "Events_Tablelenght_all": "",
"Events_Title": "", "Events_Title": "",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "", "GRAPHQL_PORT_description": "",
"GRAPHQL_PORT_name": "", "GRAPHQL_PORT_name": "",
"Gen_Action": "", "Gen_Action": "",

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "Afficher _MENU_ entrées", "Events_Tablelenght": "Afficher _MENU_ entrées",
"Events_Tablelenght_all": "Tous", "Events_Tablelenght_all": "Tous",
"Events_Title": "Évènements", "Events_Title": "Évènements",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "Le numéro de port du serveur GraphQL. Assurez vous sue le port est unique a l'échelle de toutes les applications sur cet hôte et vos instances NetAlertX.", "GRAPHQL_PORT_description": "Le numéro de port du serveur GraphQL. Assurez vous sue le port est unique a l'échelle de toutes les applications sur cet hôte et vos instances NetAlertX.",
"GRAPHQL_PORT_name": "Port GraphQL", "GRAPHQL_PORT_name": "Port GraphQL",
"Gen_Action": "Action", "Gen_Action": "Action",
@@ -762,4 +763,4 @@
"settings_system_label": "Système", "settings_system_label": "Système",
"settings_update_item_warning": "Mettre à jour la valeur ci-dessous. Veillez à bien suivre le même format qu'auparavant. <b>Il n'y a pas de pas de contrôle.</b>", "settings_update_item_warning": "Mettre à jour la valeur ci-dessous. Veillez à bien suivre le même format qu'auparavant. <b>Il n'y a pas de pas de contrôle.</b>",
"test_event_tooltip": "Enregistrer d'abord vos modifications avant de tester vôtre paramétrage." "test_event_tooltip": "Enregistrer d'abord vos modifications avant de tester vôtre paramétrage."
} }

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "Mostra _MENU_ elementi", "Events_Tablelenght": "Mostra _MENU_ elementi",
"Events_Tablelenght_all": "Tutti", "Events_Tablelenght_all": "Tutti",
"Events_Title": "Eventi", "Events_Title": "Eventi",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "Il numero di porta del server GraphQL. Assicurati che la porta sia univoca in tutte le tue applicazioni su questo host e nelle istanze di NetAlertX.", "GRAPHQL_PORT_description": "Il numero di porta del server GraphQL. Assicurati che la porta sia univoca in tutte le tue applicazioni su questo host e nelle istanze di NetAlertX.",
"GRAPHQL_PORT_name": "Porta GraphQL", "GRAPHQL_PORT_name": "Porta GraphQL",
"Gen_Action": "Azione", "Gen_Action": "Azione",
@@ -762,4 +763,4 @@
"settings_system_label": "Sistema", "settings_system_label": "Sistema",
"settings_update_item_warning": "Aggiorna il valore qui sotto. Fai attenzione a seguire il formato precedente. <b>La convalida non viene eseguita.</b>", "settings_update_item_warning": "Aggiorna il valore qui sotto. Fai attenzione a seguire il formato precedente. <b>La convalida non viene eseguita.</b>",
"test_event_tooltip": "Salva le modifiche prima di provare le nuove impostazioni." "test_event_tooltip": "Salva le modifiche prima di provare le nuove impostazioni."
} }

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "表示中 _MENU_ 件", "Events_Tablelenght": "表示中 _MENU_ 件",
"Events_Tablelenght_all": "全て", "Events_Tablelenght_all": "全て",
"Events_Title": "イベント", "Events_Title": "イベント",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "GraphQLサーバーのポート番号。このホスト上のすべてのアプリケーションおよびNetAlertXインスタンスにおいて、ポートが一意であることを確認してください。", "GRAPHQL_PORT_description": "GraphQLサーバーのポート番号。このホスト上のすべてのアプリケーションおよびNetAlertXインスタンスにおいて、ポートが一意であることを確認してください。",
"GRAPHQL_PORT_name": "GraphQLポート", "GRAPHQL_PORT_name": "GraphQLポート",
"Gen_Action": "アクション", "Gen_Action": "アクション",
@@ -762,4 +763,4 @@
"settings_system_label": "システム", "settings_system_label": "システム",
"settings_update_item_warning": "以下の値を更新してください。以前のフォーマットに従うよう注意してください。<b>検証は行われません。</b>", "settings_update_item_warning": "以下の値を更新してください。以前のフォーマットに従うよう注意してください。<b>検証は行われません。</b>",
"test_event_tooltip": "設定をテストする前に、まず変更を保存してください。" "test_event_tooltip": "設定をテストする前に、まず変更を保存してください。"
} }

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "Show _MENU_ entries", "Events_Tablelenght": "Show _MENU_ entries",
"Events_Tablelenght_all": "Alle", "Events_Tablelenght_all": "Alle",
"Events_Title": "Hendelser", "Events_Title": "Hendelser",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "", "GRAPHQL_PORT_description": "",
"GRAPHQL_PORT_name": "", "GRAPHQL_PORT_name": "",
"Gen_Action": "Handling", "Gen_Action": "Handling",

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "Pokaż_wpisy_MENU", "Events_Tablelenght": "Pokaż_wpisy_MENU",
"Events_Tablelenght_all": "Wszystkie", "Events_Tablelenght_all": "Wszystkie",
"Events_Title": "Zdarzenia", "Events_Title": "Zdarzenia",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "Numer portu serwera GraphQL. Upewnij się, że port jest unikalny na wszystkich twoich aplikacjach na tym hoście i instancjach NetAlertX.", "GRAPHQL_PORT_description": "Numer portu serwera GraphQL. Upewnij się, że port jest unikalny na wszystkich twoich aplikacjach na tym hoście i instancjach NetAlertX.",
"GRAPHQL_PORT_name": "Port GraphQL", "GRAPHQL_PORT_name": "Port GraphQL",
"Gen_Action": "Akcja", "Gen_Action": "Akcja",

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "Mostrar entradas do _MENU_", "Events_Tablelenght": "Mostrar entradas do _MENU_",
"Events_Tablelenght_all": "Todos", "Events_Tablelenght_all": "Todos",
"Events_Title": "Eventos", "Events_Title": "Eventos",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "O número da porta do servidor GraphQL. Certifique-se de que a porta seja exclusiva em todos os seus aplicativos neste host e nas instâncias do NetAlertX.", "GRAPHQL_PORT_description": "O número da porta do servidor GraphQL. Certifique-se de que a porta seja exclusiva em todos os seus aplicativos neste host e nas instâncias do NetAlertX.",
"GRAPHQL_PORT_name": "Porta GraphQL", "GRAPHQL_PORT_name": "Porta GraphQL",
"Gen_Action": "Ação", "Gen_Action": "Ação",

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "Mostrar entradas do _MENU_", "Events_Tablelenght": "Mostrar entradas do _MENU_",
"Events_Tablelenght_all": "Todos", "Events_Tablelenght_all": "Todos",
"Events_Title": "Eventos", "Events_Title": "Eventos",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "O número da porta do servidor GraphQL. Certifique-se de que a porta seja exclusiva em todas as suas aplicações neste host e nas instâncias do NetAlertX.", "GRAPHQL_PORT_description": "O número da porta do servidor GraphQL. Certifique-se de que a porta seja exclusiva em todas as suas aplicações neste host e nas instâncias do NetAlertX.",
"GRAPHQL_PORT_name": "Porta GraphQL", "GRAPHQL_PORT_name": "Porta GraphQL",
"Gen_Action": "Ação", "Gen_Action": "Ação",
@@ -310,8 +311,8 @@
"Gen_Error": "Erro", "Gen_Error": "Erro",
"Gen_Filter": "Filtro", "Gen_Filter": "Filtro",
"Gen_Generate": "Gerar", "Gen_Generate": "Gerar",
"Gen_Invalid_Value": "",
"Gen_InvalidMac": "Endereço MAC Inválido.", "Gen_InvalidMac": "Endereço MAC Inválido.",
"Gen_Invalid_Value": "",
"Gen_LockedDB": "ERRO - A base de dados pode estar bloqueada - Verifique F12 Ferramentas de desenvolvimento -> Console ou tente mais tarde.", "Gen_LockedDB": "ERRO - A base de dados pode estar bloqueada - Verifique F12 Ferramentas de desenvolvimento -> Console ou tente mais tarde.",
"Gen_NetworkMask": "Máscara de Rede", "Gen_NetworkMask": "Máscara de Rede",
"Gen_Offline": "Offline", "Gen_Offline": "Offline",
@@ -762,4 +763,4 @@
"settings_system_label": "", "settings_system_label": "",
"settings_update_item_warning": "", "settings_update_item_warning": "",
"test_event_tooltip": "Guarde as alterações antes de testar as definições." "test_event_tooltip": "Guarde as alterações antes de testar as definições."
} }

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "Показать _MENU_ записей", "Events_Tablelenght": "Показать _MENU_ записей",
"Events_Tablelenght_all": "Все", "Events_Tablelenght_all": "Все",
"Events_Title": "События", "Events_Title": "События",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "Номер порта сервера GraphQL. Убедитесь, что порт уникален для всех ваших приложений на этом хосте и экземпляров NetAlertX.", "GRAPHQL_PORT_description": "Номер порта сервера GraphQL. Убедитесь, что порт уникален для всех ваших приложений на этом хосте и экземпляров NetAlertX.",
"GRAPHQL_PORT_name": "Порт GraphQL", "GRAPHQL_PORT_name": "Порт GraphQL",
"Gen_Action": "Действия", "Gen_Action": "Действия",
@@ -762,4 +763,4 @@
"settings_system_label": "Система", "settings_system_label": "Система",
"settings_update_item_warning": "Обновить значение ниже. Будьте осторожны, следуя предыдущему формату. <b>Проверка не выполняется.</b>", "settings_update_item_warning": "Обновить значение ниже. Будьте осторожны, следуя предыдущему формату. <b>Проверка не выполняется.</b>",
"test_event_tooltip": "Сначала сохраните изменения, прежде чем проверять настройки." "test_event_tooltip": "Сначала сохраните изменения, прежде чем проверять настройки."
} }

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "", "Events_Tablelenght": "",
"Events_Tablelenght_all": "", "Events_Tablelenght_all": "",
"Events_Title": "", "Events_Title": "",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "", "GRAPHQL_PORT_description": "",
"GRAPHQL_PORT_name": "", "GRAPHQL_PORT_name": "",
"Gen_Action": "", "Gen_Action": "",

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "Show _MENU_ entries", "Events_Tablelenght": "Show _MENU_ entries",
"Events_Tablelenght_all": "Hepsi", "Events_Tablelenght_all": "Hepsi",
"Events_Title": "Olaylar", "Events_Title": "Olaylar",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "GraphQL sunucusunun port numarası. Portun, bu anahtardaki tüm uygulamalar ve NetAlertX örnekleri arasında benzersiz olduğundan emin olun.", "GRAPHQL_PORT_description": "GraphQL sunucusunun port numarası. Portun, bu anahtardaki tüm uygulamalar ve NetAlertX örnekleri arasında benzersiz olduğundan emin olun.",
"GRAPHQL_PORT_name": "GraphQL port", "GRAPHQL_PORT_name": "GraphQL port",
"Gen_Action": "Komut", "Gen_Action": "Komut",

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "Показати записи _МЕНЮ_", "Events_Tablelenght": "Показати записи _МЕНЮ_",
"Events_Tablelenght_all": "Все", "Events_Tablelenght_all": "Все",
"Events_Title": "Події", "Events_Title": "Події",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "Номер порту сервера GraphQL. Переконайтеся, що порт є унікальним для всіх ваших програм на цьому хості та екземплярах NetAlertX.", "GRAPHQL_PORT_description": "Номер порту сервера GraphQL. Переконайтеся, що порт є унікальним для всіх ваших програм на цьому хості та екземплярах NetAlertX.",
"GRAPHQL_PORT_name": "Порт GraphQL", "GRAPHQL_PORT_name": "Порт GraphQL",
"Gen_Action": "Дія", "Gen_Action": "Дія",
@@ -762,4 +763,4 @@
"settings_system_label": "Система", "settings_system_label": "Система",
"settings_update_item_warning": "Оновіть значення нижче. Слідкуйте за попереднім форматом. <b>Перевірка не виконана.</b>", "settings_update_item_warning": "Оновіть значення нижче. Слідкуйте за попереднім форматом. <b>Перевірка не виконана.</b>",
"test_event_tooltip": "Перш ніж перевіряти налаштування, збережіть зміни." "test_event_tooltip": "Перш ніж перевіряти налаштування, збережіть зміни."
} }

View File

@@ -290,6 +290,7 @@
"Events_Tablelenght": "显示_MENU_条", "Events_Tablelenght": "显示_MENU_条",
"Events_Tablelenght_all": "全部", "Events_Tablelenght_all": "全部",
"Events_Title": "事件", "Events_Title": "事件",
"FakeMAC_hover": "",
"GRAPHQL_PORT_description": "GraphQL服务器的端口号。请确保该端口在该主机和 NetAlertX 实例上的所有应用程序中都是唯一的。", "GRAPHQL_PORT_description": "GraphQL服务器的端口号。请确保该端口在该主机和 NetAlertX 实例上的所有应用程序中都是唯一的。",
"GRAPHQL_PORT_name": "GraphQL端口", "GRAPHQL_PORT_name": "GraphQL端口",
"Gen_Action": "动作", "Gen_Action": "动作",