ソースを参照

rename fio field to description in user_list

Dmitriev Roman 3 ヶ月 前
コミット
4f7e30f990

+ 1 - 1
docs/databases/mysql/en/create_db.sql

@@ -395,7 +395,7 @@ CREATE TABLE `user_list` (
   `id` bigint(20) UNSIGNED NOT NULL,
   `ts` timestamp NOT NULL DEFAULT current_timestamp(),
   `login` varchar(255) DEFAULT NULL,
-  `fio` varchar(255) DEFAULT NULL,
+  `description` varchar(255) DEFAULT NULL,
   `enabled` tinyint(1) NOT NULL DEFAULT 1,
   `blocked` tinyint(1) NOT NULL DEFAULT 0,
   `deleted` tinyint(1) NOT NULL DEFAULT 0,

+ 1 - 1
docs/databases/mysql/ru/create_db.sql

@@ -395,7 +395,7 @@ CREATE TABLE `user_list` (
   `id` bigint(20) UNSIGNED NOT NULL,
   `ts` timestamp NOT NULL DEFAULT current_timestamp(),
   `login` varchar(255) DEFAULT NULL,
-  `fio` varchar(255) DEFAULT NULL,
+  `description` varchar(255) DEFAULT NULL,
   `enabled` tinyint(1) NOT NULL DEFAULT 1,
   `blocked` tinyint(1) NOT NULL DEFAULT 0,
   `deleted` tinyint(1) NOT NULL DEFAULT 0,

+ 2 - 2
docs/databases/postgres/en/create_db.sql

@@ -517,7 +517,7 @@ CREATE TABLE user_list (
 id BIGSERIAL PRIMARY KEY,
 ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
 login VARCHAR(255),
-fio VARCHAR(255),
+description VARCHAR(255),
 enabled SMALLINT NOT NULL DEFAULT 1,
 blocked SMALLINT NOT NULL DEFAULT 0,
 deleted SMALLINT NOT NULL DEFAULT 0,
@@ -530,7 +530,7 @@ month_quota INTEGER NOT NULL DEFAULT 0,
 permanent SMALLINT NOT NULL DEFAULT 0
 );
 COMMENT ON TABLE user_list IS 'User accounts in the system';
-COMMENT ON COLUMN user_list.fio IS 'Full name';
+COMMENT ON COLUMN user_list.description IS 'Full name';
 COMMENT ON COLUMN user_list.permanent IS 'Permanent (non-dynamic) user';
 
 -- User web sessions

+ 2 - 2
docs/databases/postgres/ru/create_db.sql

@@ -518,7 +518,7 @@ CREATE TABLE user_list (
 id BIGSERIAL PRIMARY KEY,
 ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
 login VARCHAR(255),
-fio VARCHAR(255),
+description VARCHAR(255),
 enabled SMALLINT NOT NULL DEFAULT 1,
 blocked SMALLINT NOT NULL DEFAULT 0,
 deleted SMALLINT NOT NULL DEFAULT 0,
@@ -531,7 +531,7 @@ month_quota INTEGER NOT NULL DEFAULT 0,
 permanent SMALLINT NOT NULL DEFAULT 0
 );
 COMMENT ON TABLE user_list IS 'Учетные записи пользователей в системе';
-COMMENT ON COLUMN user_list.fio IS 'Фамилия Имя Отчество';
+COMMENT ON COLUMN user_list.description IS 'Фамилия Имя Отчество';
 COMMENT ON COLUMN user_list.permanent IS 'Это постоянный пользователь (не динамический)';
 
 -- Сессии пользователей (веб-интерфейс)

+ 1 - 1
html/admin/devices/index-passive.php

@@ -22,7 +22,7 @@ if ($unknown) { $unknown_checked='checked="checked"'; }
 
 $sort_table = 'A';
 if ($sort_field == 'login') { $sort_table = 'L'; }
-if ($sort_field == 'fio') { $sort_table = 'L'; }
+if ($sort_field == 'description') { $sort_table = 'L'; }
 if ($sort_field == 'model_name') { $sort_table = 'M'; }
 
 $sort_url = "<a href=index-passive.php?ou=" . $rou;

+ 6 - 4
html/admin/iplist/index.php

@@ -16,7 +16,7 @@ require_once ($_SERVER['DOCUMENT_ROOT']."/inc/dhcpfilter.php");
 
 $sort_table = 'user_auth';
 if ($sort_field == 'login') { $sort_table = 'user_list'; }
-if ($sort_field == 'fio') { $sort_table = 'user_list'; }
+if ($sort_field == 'description') { $sort_table = 'user_list'; }
 if ($sort_field == 'ou_name') { $sort_table = 'ou'; }
 
 $params=[];
@@ -79,9 +79,11 @@ if (!empty($f_search_str)) {
     	    $ip_where =" and mac=?"; 
     	    $params[]= mac_dotted($f_search_str);
     	    } else {
-            $ip_where =" and (mac like ? or login like ? or description like ? or dns_name like ? or dhcp_hostname like ?)"; 
-            $params[]=mac_dotted($f_search);
-            $parmas[]=$f_search.'%';
+            $ip_where =" and (mac LIKE ? or login LIKE ? or user_auth.description LIKE ? or user_list.description LIKE ? or dns_name LIKE ? or dhcp_hostname LIKE ?)";
+            $mac_search = MaybeMac($f_search);
+            if (!empty($mac_search)) { $params[]=MaybeMac($f_search).'%'; } else { $params[]=$f_search_str.'%'; }
+            $params[]=$f_search.'%';
+            $params[]=$f_search.'%';
             $params[]=$f_search.'%';
             $params[]=$f_search.'%';
             $params[]=$f_search.'%';

+ 1 - 1
html/admin/iplist/nagios.php

@@ -12,7 +12,7 @@ require_once ($_SERVER['DOCUMENT_ROOT']."/inc/enabledfilter.php");
 
 $sort_table = 'user_auth';
 if ($sort_field == 'login') { $sort_table = 'user_list'; }
-if ($sort_field == 'fio') { $sort_table = 'user_list'; }
+if ($sort_field == 'description') { $sort_table = 'user_list'; }
 
 $sort_url = "<a href=nagios.php?ou=" . $rou; 
 

+ 9 - 9
html/admin/users/edituser.php

@@ -33,7 +33,7 @@ if (getPOST("edituser") !== null) {
         $new["login"] = $user_name;
     }
     
-    $new["fio"] = trim(getPOST("f_fio", null, ''));
+    $new["description"] = trim(getPOST("f_description", null, ''));
 
     // Настройки по OU
     if (get_const('default_user_ou_id') == ($new["ou_id"] ?? 0) || 
@@ -63,11 +63,11 @@ if (getPOST("edituser") !== null) {
     }
 
     // Обновляем описание в user_auth
-    if (!empty($new["fio"])) {
+    if (!empty($new["description"])) {
         update_records($db_link, 'user_auth',
             "user_id = ? AND deleted = 0 AND (description IS NULL OR description = '' OR description = ?)",
-            ['description' => $new["fio"]],
-            [$id, $user_info["fio"]]
+            ['description' => $new["description"]],
+            [$id, $user_info["description"]]
         );
     }
 
@@ -289,11 +289,11 @@ if (getPOST("new_user") !== null) {
                     'ou_id' => $ou_id
                 ];
                 if (!empty($auth_info["description"])) {
-                    $new_user_data["fio"] = $auth_info["description"];
+                    $new_user_data["description"] = $auth_info["description"];
                 } elseif (!empty($auth_info["dns_name"])) {
-                    $new_user_data["fio"] = $auth_info["dns_name"];
+                    $new_user_data["description"] = $auth_info["dns_name"];
                 } elseif (!empty($auth_info["dhcp_hostname"])) {
-                    $new_user_data["fio"] = $auth_info["dhcp_hostname"];
+                    $new_user_data["description"] = $auth_info["dhcp_hostname"];
                 }
 
                 $new_user_data["enabled"] = $auth_info["enabled"];
@@ -328,13 +328,13 @@ require_once($_SERVER["DOCUMENT_ROOT"] . "/inc/header.php");
         <table class="data">
             <tr>
                 <td colspan=2><?php print WEB_cell_login; ?></td>
-                <td colspan=2><?php print WEB_cell_fio; ?></td>
+                <td colspan=2><?php print WEB_cell_description; ?></td>
                 <td colspan=2><?php print WEB_cell_ou; ?></td>
                 <td ><?php print WEB_user_permanent; ?></td>
             </tr>
             <tr>
                 <td colspan=2><input type="text" name="f_login" value="<?php print $user_info["login"]; ?>" size=25></td>
-                <td colspan=2><input type="text" name="f_fio" value="<?php print $user_info["fio"]; ?>" size=25></td>
+                <td colspan=2><input type="text" name="f_description" value="<?php print $user_info["description"]; ?>" size=25></td>
                 <td colspan=2><?php print_ou_set($db_link, 'f_ou', $user_info["ou_id"]); ?></td>
                 <td><?php print_qa_select('f_permanent', $user_info["permanent"]); ?></td>
             </tr>

+ 4 - 4
html/admin/users/index.php

@@ -133,7 +133,7 @@ if ($rou != 0) {
 $whereClause = implode(' AND ', $conditions);
 
 // === 2. Безопасная сортировка (БЕЛЫЙ СПИСОК!) ===
-$allowed_sort_fields = ['id', 'login', 'fio', 'ou_name', 'enabled', 'day_quota', 'month_quota', 'blocked', 'permanent'];
+$allowed_sort_fields = ['id', 'login', 'description', 'ou_name', 'enabled', 'day_quota', 'month_quota', 'blocked', 'permanent'];
 $allowed_order = ['ASC', 'DESC'];
 
 $sort_field = in_array($sort_field, $allowed_sort_fields, true) ? $sort_field : 'id';
@@ -158,7 +158,7 @@ $dataParams = array_merge($params, [$limit, $offset]);
 
 $sSQL = "
     SELECT 
-        U.id, U.login, U.fio, O.ou_name, U.enabled, 
+        U.id, U.login, U.description, O.ou_name, U.enabled, 
         U.day_quota, U.month_quota, U.blocked, U.permanent
     FROM user_list U
     JOIN ou O ON U.ou_id = O.id
@@ -178,7 +178,7 @@ $users = get_records_sql($db_link, $sSQL, $dataParams);
 <td><input type="checkbox" onClick="checkAll(this.checked);"></td>
 <td><b><?php print $sort_url . "sort=id&order=$new_order>id</a>"; ?></b></td>
 <td><b><?php print $sort_url . "sort=login&order=$new_order>" . WEB_cell_login . "</a>"; ?></b></td>
-<td><b><?php print $sort_url . "sort=fio&order=$new_order>" . WEB_cell_fio . "</a>"; ?></b></td>
+<td><b><?php print $sort_url . "sort=description&order=$new_order>" . WEB_cell_description . "</a>"; ?></b></td>
 <td><b><?php print WEB_cell_rule; ?></b></td>
 <td><b><?php print WEB_cell_ou; ?></b></td>
 <td><b><?php print WEB_cell_enabled; ?></b></td>
@@ -211,7 +211,7 @@ foreach ($users as $row) {
     print "<td class=\"$cl_id\">".$row['id']."</td>\n";
     if (empty($row['login'])) { $row['login']=$row['id']; }
     print "<td class=\"$cl\" align=left><a href=edituser.php?id=".$row['id'].">" . $row['login'] . "</a></td>\n";
-    print "<td class=\"$cl\">".$row['fio']."</td>\n";
+    print "<td class=\"$cl\">".$row['description']."</td>\n";
     $rules_count = get_count_records($db_link,"auth_rules","user_id=?", [$row['id']]);
     print "<td class=\"$cl\">".$rules_count."</td>\n";
     print "<td class=\"$cl\">".$row['ou_name']."</td>\n";

+ 1 - 1
html/api.php

@@ -173,7 +173,7 @@ if (!empty($action)) {
         
         // Разрешённые поля для обновления
         $allowed_fields = [
-            'login', 'fio', 'enabled', 'blocked', 'ou_id', 
+            'login', 'description', 'enabled', 'blocked', 'ou_id', 
             'filter_group_id', 'queue_id', 'day_quota', 'month_quota', 'permanent'
         ];
         

+ 9 - 9
html/inc/common.php

@@ -2090,12 +2090,12 @@ function print_auth_select($db, $login_name, $current_auth)
     echo "<select id=\"" . htmlspecialchars($login_name) . "\" name=\"" . htmlspecialchars($login_name) . "\" class=\"js-select-single\">\n";
     
     $params = [];
-    $sql = "SELECT U.login, U.fio, A.ip, A.id 
+    $sql = "SELECT U.login, U.description, A.ip, A.id 
             FROM user_list AS U, user_auth AS A 
             WHERE A.user_id = U.id 
               AND A.deleted = 0 
               AND (A.id NOT IN (SELECT device_ports.auth_id FROM device_ports) OR A.id = ?) 
-            ORDER BY U.login, U.fio, A.ip";
+            ORDER BY U.login, U.description, A.ip";
     
     $params[] = (int)$current_auth;
     $t_login = get_records_sql($db, $sql, $params);
@@ -2103,7 +2103,7 @@ function print_auth_select($db, $login_name, $current_auth)
     print_select_item('Empty', 0, $current_auth);
     
     foreach ($t_login as $row) {
-        $display = htmlspecialchars($row['login']) . "[" . htmlspecialchars($row['fio']) . "] - " . htmlspecialchars($row['ip']);
+        $display = htmlspecialchars($row['login']) . "[" . htmlspecialchars($row['description']) . "] - " . htmlspecialchars($row['ip']);
         print_select_item($display, $row['id'], $current_auth);
     }
     echo "</select>\n";
@@ -2114,12 +2114,12 @@ function print_auth_select_mac($db, $login_name, $current_auth)
     echo "<select id=\"" . htmlspecialchars($login_name) . "\" name=\"" . htmlspecialchars($login_name) . "\" class=\"js-select-single\">\n";
     
     $params = [];
-    $sql = "SELECT U.login, U.fio, A.ip, A.mac, A.id 
+    $sql = "SELECT U.login, U.description, A.ip, A.mac, A.id 
             FROM user_list AS U, user_auth AS A 
             WHERE A.user_id = U.id 
               AND A.deleted = 0 
               AND (A.id NOT IN (SELECT device_ports.auth_id FROM device_ports) OR A.id = ?) 
-            ORDER BY U.login, U.fio, A.ip";
+            ORDER BY U.login, U.description, A.ip";
     
     $params[] = (int)$current_auth;
     $t_login = get_records_sql($db, $sql, $params);
@@ -2886,8 +2886,8 @@ function apply_auth_rule($db, $auth_record, $user_id)
     $auth_record['changed'] = 1;
     
     // Maybe fill description?
-    if (!empty($user_rec['fio']) && empty($auth_record['description'])) {
-        $auth_record['description'] = $user_rec['fio'];
+    if (!empty($user_rec['description']) && empty($auth_record['description'])) {
+        $auth_record['description'] = $user_rec['description'];
     }
     
     return $auth_record;
@@ -2927,9 +2927,9 @@ function new_user($db, $user_info)
     }
     
     if (!empty($user_info['dhcp_hostname'])) {
-        $user['fio'] = ($user_info['ip'] ?? '') . '[' . $user_info['dhcp_hostname'] . ']';
+        $user['description'] = ($user_info['ip'] ?? '') . '[' . $user_info['dhcp_hostname'] . ']';
     } else {
-        $user['fio'] = $user_info['ip'] ?? '';
+        $user['description'] = $user_info['ip'] ?? '';
     }
     
     // Проверяем существование логина и формируем уникальный

+ 1 - 1
html/inc/languages/english.php

@@ -175,7 +175,7 @@ define("WEB_title_itog","Total");
 
 /* table cell names */
 define("WEB_cell_login","Login");
-define("WEB_cell_fio","Full name");
+define("WEB_cell_description","Full name");
 define("WEB_cell_ou","Group");
 define("WEB_cell_enabled","Enabled");
 define("WEB_cell_blocked","Blocking");

+ 1 - 1
html/inc/languages/russian.php

@@ -175,7 +175,7 @@ define("WEB_title_itog","Итого");
 
 /* table cell names */
 define("WEB_cell_login","Логин");
-define("WEB_cell_fio","ФИО");
+define("WEB_cell_description","ФИО");
 define("WEB_cell_ou","Группа");
 define("WEB_cell_enabled","Включен");
 define("WEB_cell_blocked","Блокировка");

+ 1 - 1
html/inc/sql.php

@@ -693,7 +693,7 @@ function allow_update($table, $action = 'update', $field = '')
                 'Wikiname' => true
             ],
             'user_list' => [
-                'fio' => true,
+                'description' => true,
                 'login' => true
             ]
         ];

+ 3 - 3
html/public/blocked.php

@@ -24,7 +24,7 @@ $sql = "
     SELECT 
         ul.id AS user_id,
         ul.login,
-        ul.fio,
+        ul.description,
         ul.enabled AS user_enabled,
         ul.blocked AS user_blocked,
         ul.month_quota,
@@ -119,8 +119,8 @@ $month_user_sum_out = $month_traffic['user_out'] ?? 0;
     <td><?php print htmlspecialchars($record['login'], ENT_QUOTES); ?></td>
 </tr>
 <tr>
-    <td><b><?php echo WEB_cell_fio; ?></b></td>
-    <td><?php print htmlspecialchars($record['fio'], ENT_QUOTES); ?></td>
+    <td><b><?php echo WEB_cell_description; ?></b></td>
+    <td><?php print htmlspecialchars($record['description'], ENT_QUOTES); ?></td>
 </tr>
 <tr>
     <td><?php echo WEB_msg_access_login; ?></td>

+ 5 - 5
scripts/eyelib/common.pm

@@ -166,7 +166,7 @@ my $db = shift;
 my $user_id = shift;
 my $user_record = get_record_sql($db,'SELECT * FROM user_list WHERE id='.$user_id);
 my $user_ident = 'id:'. $user_record->{'id'} . ' '. $user_record->{'login'};
-$user_ident = $user_ident . '[' . $user_record->{'fio'} . ']' if ($user_record->{'fio'});
+$user_ident = $user_ident . '[' . $user_record->{'description'} . ']' if ($user_record->{'description'});
 my $msg = "Amnistuyemo blocked by traffic user $user_ident \nInternet access for the user's IP address has been restored:\n";
 my @user_auth = get_records_sql($db,'SELECT * FROM user_auth WHERE deleted=0 AND user_id='.$user_id);
 my $send_alert = 0;
@@ -1055,8 +1055,8 @@ if ($user_info->{mac}) {
     $user->{login}=$user_info->{ip};
     }
 
-if ($user_info->{dhcp_hostname}) { $user->{fio}=$user_info->{dhcp_hostname}; } 
-if (!$user->{fio}) { $user->{fio}=$user_info->{ip}; }
+if ($user_info->{dhcp_hostname}) { $user->{description}=$user_info->{dhcp_hostname}; } 
+if (!$user->{description}) { $user->{description}=$user_info->{ip}; }
 
 my $login_count = get_count_records($db,"user_list","(login LIKE '".$user->{login}."(%)') OR (login='".$user->{login}."')");
 if ($login_count) { $login_count++; $user->{login} .="(".$login_count.")"; }
@@ -1280,7 +1280,7 @@ if ($cur_auth_id) {
                     $new_record->{'end_life'} = $end_life->strftime('%Y-%m-%d %H:%M:%S');
 		    }
 	    $new_record->{ou_id}=$user_record->{ou_id};
-	    $new_record->{description}=$user_record->{fio};
+	    $new_record->{description}=$user_record->{description};
 	    $new_record->{filter_group_id}=$user_record->{filter_group_id};
 	    $new_record->{queue_id}=$user_record->{queue_id};
 	    $new_record->{enabled}="$user_record->{enabled}";
@@ -1325,7 +1325,7 @@ $new_record->{ou_id}=$user_record->{ou_id};
 $new_record->{filter_group_id}=$user_record->{filter_group_id};
 $new_record->{queue_id}=$user_record->{queue_id};
 $new_record->{enabled}="$user_record->{enabled}";
-if ($user_record->{fio}) { $new_record->{description}=$user_record->{fio}; }
+if ($user_record->{description}) { $new_record->{description}=$user_record->{description}; }
 
 my $cur_auth_id=insert_record($db,'user_auth',$new_record);
 if ($cur_auth_id) {

+ 1 - 1
scripts/gen_nagios_config.pl

@@ -165,7 +165,7 @@ if (scalar(@auth_list)>0) {
         my $login = get_record_sql($dbh,"SELECT * FROM user_list WHERE id=?",$auth->{'user_id'});
     
         $devices{$device_id}{user_login} = $login->{login};
-        $devices{$device_id}{user_fio} = $login->{fio};
+        $devices{$device_id}{user_description} = $login->{description};
         $devices{$device_id}{ou_id} = 0;
 	if ($login and $login->{ou_id} and $ou{$login->{ou_id}}->{nagios_dir}) { $devices{$device_id}{ou_id} = $login->{ou_id}; }
         $devices{$device_id}{ou}=$ou{$devices{$device_id}{ou_id}};

+ 2 - 2
scripts/updates/3-0-1/migration.msql

@@ -53,6 +53,7 @@ ALTER TABLE unknown_mac     CHANGE COLUMN `timestamp` ts TIMESTAMP NOT NULL DEFA
 ALTER TABLE user_auth_alias CHANGE COLUMN `timestamp` ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
 
 -- time/date → ts
+DELETE FROM wan_stats WHERE `time` <= '1970-01-01 03:00:00' OR `time` = '0000-00-00 00:00:00';
 ALTER TABLE wan_stats     CHANGE COLUMN `time` ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
 ALTER TABLE remote_syslog CHANGE COLUMN `date` ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
 
@@ -66,7 +67,6 @@ ALTER TABLE filter_list      ADD COLUMN comment VARCHAR(250);
 ALTER TABLE group_list       ADD COLUMN comment VARCHAR(250);
 ALTER TABLE ou               ADD COLUMN comment VARCHAR(250);
 ALTER TABLE subnets          ADD COLUMN comment VARCHAR(250);
-ALTER TABLE user_list        ADD COLUMN comment VARCHAR(255);
 ALTER TABLE vendors          ADD COLUMN comment VARCHAR(255);
 
 -- Теперь безопасно переименовываем `comment` → `description`
@@ -79,7 +79,7 @@ ALTER TABLE filter_list      CHANGE COLUMN `comment` description VARCHAR(250);
 ALTER TABLE group_list       CHANGE COLUMN `comment` description VARCHAR(250);
 ALTER TABLE ou               CHANGE COLUMN `comment` description VARCHAR(250);
 ALTER TABLE subnets          CHANGE COLUMN `comment` description VARCHAR(250);
-ALTER TABLE user_list        CHANGE COLUMN `comment` description VARCHAR(255);
+ALTER TABLE user_list        CHANGE COLUMN `fio` description VARCHAR(255);
 ALTER TABLE vendors          CHANGE COLUMN `comment` description VARCHAR(255);
 
 -- user_auth.comments → description

+ 2 - 2
scripts/utils/import/import_auth.pl

@@ -137,7 +137,7 @@ for my $record (@rows) {
         }
 
         if (exists $record->{description}) {
-            update_record($dbh, 'user_list', { fio => $record->{description} }, 'id = ?', $user_id);
+            update_record($dbh, 'user_list', { description => $record->{description} }, 'id = ?', $user_id);
         }
 
         next;
@@ -165,7 +165,7 @@ for my $record (@rows) {
         }
 
         if (exists $record->{description}) {
-            update_record($dbh, 'user_list', { fio => $record->{description} }, 'id = ?', $user_id);
+            update_record($dbh, 'user_list', { description => $record->{description} }, 'id = ?', $user_id);
         }
     }
 }

+ 41 - 0
scripts/utils/mac-oids/manuf.csv

@@ -17557,6 +17557,7 @@
 04:5C:8E;gosundGROUP;gosund GROUP CO.,LTD
 04:5D:4B;Sony;Sony Corporation
 04:5D:56;camtronindus;camtron industrial inc.
+04:5E:0A;TranschanTec;Shenzhen Transchan Technology Limited
 04:5E:A4;NetisTechnol;Netis Technology Co., Ltd.
 04:5F:A6;SDMCTechnolo;Shenzhen SDMC Technology CP,.LTD
 04:5F:A7;YichenTechno;Shenzhen Yichen Technology Development Co.,LTD
@@ -19459,6 +19460,7 @@
 10:CB:33;NXPSemicondu;NXP Semiconductors Taiwan Ltd.
 10:CC:1B;Liverocktech;Liverock technologies,INC
 10:CC:DB;AximumProdui;Aximum Produits Electroniques
+10:CD:54;HuaweiTechno;Huawei Technologies Co.,Ltd
 10:CD:6E;Fisys;Fisys
 10:CD:AE;Avaya;Avaya Inc
 10:CD:B6;EssentialPro;Essential Products, Inc.
@@ -21365,6 +21367,7 @@
 20:9A:E9;Volacomm;Volacomm Co., Ltd
 20:9B:A5;JIAXINGGLEAD;JIAXING GLEAD Electronics Co.,Ltd
 20:9B:CD;Apple;Apple, Inc.
+20:9B:DD;HuaweiTechno;Huawei Technologies Co.,Ltd
 20:9B:E6;GuangzhouShi;Guangzhou Shiyuan Electronic Technology Company Limited
 20:9C:B4;HewlettPacka;Hewlett Packard Enterprise
 20:9E:79;UniversalEle;Universal Electronics, Inc.
@@ -22314,6 +22317,7 @@
 28:AF:FD;Cisco;Cisco Systems, Inc
 28:B0:CC;Xenyadoo;Xenya d.o.o.
 28:B1:33;SHINEMANTech;SHINEMAN(SHENZHEN) Tech. Cor., Ltd.
+28:B2:0B;NXPUSA;NXP USA, Inc
 28:B2:21;SiendaMultim;Sienda Multimedia Ltd
 28:B2:7C;SailingNorth;Sailing Northern Technology
 28:B2:BD;Intel;Intel Corporate
@@ -22918,6 +22922,7 @@
 2C:AC:44;Conextop;Conextop
 2C:AD:13;ZhiluTechnol;Shenzhen Zhilu Technology Co.,Ltd
 2C:AE:2B;SamsungElect;Samsung Electronics Co.,Ltd
+2C:AE:46;CloudNetwork;Cloud Network Technology Singapore Pte. Ltd.
 2C:AF:C4;Private;Private
 2C:B0:5D;Netgear;Netgear
 2C:B0:DF;SolitonTechn;Soliton Technologies Pvt Ltd
@@ -23630,6 +23635,7 @@
 34:1B:2D;Cisco;Cisco Systems, Inc
 34:1C:F0;XiaomiCommun;Xiaomi Communications Co Ltd
 34:1E:6B;HuaweiTechno;Huawei Technologies Co.,Ltd
+34:1F:C4;VLinkTechnol;Shenzhen V-Link Technology CO., LTD.
 34:1F:E4;Commscope;Commscope
 34:20:03;FeitengyunTe;Shenzhen Feitengyun Technology Co.,LTD
 34:20:E3;RuckusWirele;Ruckus Wireless
@@ -24261,6 +24267,7 @@
 38:45:54;HarmanBecker;Harman/Becker Automotive Systems GmbH
 38:45:8C;MyCloudTechn;MyCloud Technology corporation
 38:46:08;zte;zte corporation
+38:47:12;LuxotticaTri;Luxottica Tristar (Dongguan) Optical Co.,Ltd
 38:47:BC;HuaweiTechno;Huawei Technologies Co.,Ltd
 38:47:F2;Recogni;Recogni Inc
 38:48:4C;Apple;Apple, Inc.
@@ -24858,6 +24865,7 @@
 3C:62:78;JetnetTechno;Shenzhen Jetnet Technology Co.,Ltd.
 3C:62:F0;Sercomm;Sercomm Corporation.
 3C:64:CF;TPLink;TP-Link Systems Inc
+3C:65:D1;HuaweiTechno;Huawei Technologies Co.,Ltd
 3C:67:16;LilyRobotics;Lily Robotics
 3C:67:2C;Sciovid;Sciovid Inc.
 3C:67:8C;HuaweiTechno;Huawei Technologies Co.,Ltd
@@ -27792,6 +27800,7 @@
 50:5F:B5;AskeyCompute;Askey Computer Corp
 50:60:28;Xirrus;Xirrus Inc.
 50:61:3F;eero;eero inc.
+50:61:7E;MiaoMingInte;Shenzhen MiaoMing Intelligent Technology Co.,Ltd
 50:61:84;Avaya;Avaya Inc
 50:61:BF;Cisco;Cisco Systems, Inc
 50:61:D6;InduSol;Indu-Sol GmbH
@@ -28204,6 +28213,7 @@
 54:22:E0;Adtran;Adtran Inc
 54:22:F8;zte;zte corporation
 54:25:EA;HuaweiTechno;Huawei Technologies Co.,Ltd
+54:26:18;HuaweiTechno;Huawei Technologies Co.,Ltd
 54:26:3D;Sony;Sony Corporation
 54:26:96;Apple;Apple, Inc.
 54:27:1E;AzureWaveTec;AzureWave Technology Inc.
@@ -28311,6 +28321,7 @@
 54:69:90;HuaweiTechno;Huawei Technologies Co.,Ltd
 54:6A:D8;ElsterWaterM;Elster Water Metering
 54:6C:0E;TexasInstrum;Texas Instruments
+54:6C:50;NanjingQinhe;Nanjing Qinheng Microelectronics Co., Ltd.
 54:6C:AC;Intelbras;Intelbras
 54:6C:EB;Intel;Intel Corporate
 54:6D:52;TopviewOptro;Topview Optronics Corp.
@@ -29185,6 +29196,7 @@
 5C:46:B0;SIMComWirele;SIMCom Wireless Solutions Limited
 5C:47:5E;Ring;Ring LLC
 5C:48:42;AnysoftInfor;Hangzhou Anysoft Information Technology Co. , Ltd
+5C:48:79;HuaweiTechno;Huawei Technologies Co.,Ltd
 5C:49:79;AVMAudiovisu;AVM Audiovisuelles Marketing und Computersysteme GmbH
 5C:49:7D;SamsungElect;Samsung Electronics Co.,Ltd
 5C:49:FA;GuoweiShidai;Shenzhen Guowei Shidai Communication Equipement Co., Ltd
@@ -29582,6 +29594,7 @@
 5C:FC:E1;Resideo;Resideo
 5C:FE:9E;WiwynnTainan;Wiwynn Corporation Tainan Branch
 5C:FF:35;Wistron;Wistron Corporation
+5C:FF:A9;zte;zte corporation
 5C:FF:FF;KezhonglongO;Shenzhen Kezhonglong Optoelectronic Technology Co., Ltd
 60:01:94;Espressif;Espressif Inc.
 60:01:B1;HuaweiTechno;Huawei Technologies Co.,Ltd
@@ -30143,6 +30156,7 @@
 64:2C:AC;HuaweiTechno;Huawei Technologies Co.,Ltd
 64:2D:B7;SeungilElect;Seungil Electronics
 64:2E:41;HuaweiTechno;Huawei Technologies Co.,Ltd
+64:2F:1C;HuaweiTechno;Huawei Technologies Co.,Ltd
 64:2F:C7;NewH3CTechno;New H3C Technologies Co., Ltd
 64:31:35;Apple;Apple, Inc.
 64:31:39:00;EmeetIntelli;Shenzhen Emeet Intelligent Technology Co., Ltd.
@@ -30383,6 +30397,7 @@
 64:B3:70;PowerCommSol;PowerComm Solutions LLC
 64:B3:79;JiangsuVisco;Jiangsu Viscore Technologies Co.,Ltd
 64:B4:73;XiaomiCommun;Xiaomi Communications Co Ltd
+64:B4:E8;DRobotics;Shenzhen D-Robotics Co., Ltd.
 64:B5:C6;Nintendo;Nintendo Co.,Ltd
 64:B5:F2;SamsungElect;Samsung Electronics Co.,Ltd
 64:B6:23;SchrackSecon;Schrack Seconet Care Communication GmbH
@@ -31223,6 +31238,7 @@
 6C:76:37;HuaweiDevice;Huawei Device Co., Ltd.
 6C:76:60;Kyocera;Kyocera Corporation
 6C:76:F7;MainStreamin;MainStreaming SpA
+6C:77:42;zte;zte corporation
 6C:77:F0;HuaweiDevice;Huawei Device Co., Ltd.
 6C:78:C1;JuniperNetwo;Juniper Networks
 6C:79:B8;TexasInstrum;Texas Instruments
@@ -36324,6 +36340,7 @@
 74:80:3F;RenesasElect;Renesas Electronics (Penang) Sdn. Bhd.
 74:81:14;Apple;Apple, Inc.
 74:81:9A;PTHartonoIst;PT. Hartono Istana Teknologi
+74:83:A0;MiaoMingInte;Shenzhen MiaoMing Intelligent Technology Co.,Ltd
 74:83:C2;Ubiquiti;Ubiquiti Inc
 74:83:EF;AristaNetwor;Arista Networks
 74:84:69;Nintendo;Nintendo Co.,Ltd
@@ -36517,6 +36534,7 @@
 74:E5:F9;Intel;Intel Corporate
 74:E6:0F;TecnoMobile;Tecno Mobile Limited
 74:E6:B8;LGElectronic;LG Electronics
+74:E6:C7;LUXSHAREICT;LUXSHARE-ICT Co., Ltd.
 74:E6:E2;Dell;Dell Inc.
 74:E7:98;JuniperNetwo;Juniper Networks
 74:E7:C6;Commscope;Commscope
@@ -37917,7 +37935,10 @@
 80:76:77;puwellcloudt;hangzhou puwell cloud tech co., ltd.
 80:76:93;Newag;Newag SA
 80:76:C2;GDMideaAirCo;GD Midea Air-Conditioning Equipment Co.,Ltd.
+80:77:86:10;Raycon;Raycon
 80:77:86:20;Wintec;Wintec Co., Ltd
+80:77:86:30;Demeas;Demeas
+80:77:86:40;RealtimeBiom;Realtime Biometrics India (P) limited
 80:77:A4;TecnoMobile;Tecno Mobile Limited
 80:78:71;AskeyCompute;Askey Computer Corp
 80:79:33;AigentecTech;Aigentec Technology(Zhejiang) Co., Ltd.
@@ -38033,6 +38054,7 @@
 80:AE:3C;TaicangT&WEl;Taicang T&W Electronics
 80:AE:54;TpLinkTechno;Tp-Link Technologies Co.,Ltd.
 80:AF:19;Apple;Apple, Inc.
+80:AF:9F;eero;eero inc.
 80:AF:CA;CudyTechnolo;Shenzhen Cudy Technology Co., Ltd.
 80:B0:3D;Apple;Apple, Inc.
 80:B0:7B;zte;zte corporation
@@ -38213,6 +38235,7 @@
 84:15:71;TCTmobile;TCT mobile ltd
 84:15:D3;HuaweiTechno;Huawei Technologies Co.,Ltd
 84:16:0C;Broadcom;Broadcom Limited
+84:16:23;zte;zte corporation
 84:16:F9;TpLinkTechno;Tp-Link Technologies Co.,Ltd.
 84:17:15;GPElectronic;GP Electronics (HK) Ltd.
 84:17:66;WeifangGoert;Weifang Goertek Electronics Co.,Ltd
@@ -39446,6 +39469,7 @@
 8C:1F:64:13:30;Vtron;Vtron Pty Ltd
 8C:1F:64:13:50;YuvalFichman;Yuval Fichman
 8C:1F:64:13:80;Vissavisp;Vissavi sp. z o.o.
+8C:1F:64:13:B0;SDELcc;SDELcc
 8C:1F:64:13:C0;SiFive;SiFive Inc
 8C:1F:64:13:E0;BtecIndustri;Btec Industrial Instrument Sdn. Bhd.
 8C:1F:64:13:F0;Elsist;Elsist Srl
@@ -40194,6 +40218,7 @@
 8C:1F:64:5E:C0;NvBekaert;Nv Bekaert Sa
 8C:1F:64:5E:D0;DEUTAWerke;DEUTA Werke GmbH
 8C:1F:64:5F:10;HDLink;HD Link Co., Ltd.
+8C:1F:64:5F:20;CMCAppliedTe;CMC Applied Technology institute
 8C:1F:64:5F:50;HongSeok;HongSeok Ltd.
 8C:1F:64:5F:60;ForwardEdgeA;Forward Edge.AI
 8C:1F:64:5F:70;EagleHarborT;Eagle Harbor Technologies, Inc.
@@ -40283,6 +40308,7 @@
 8C:1F:64:68:00;Mitrol;Mitrol S.R.L.
 8C:1F:64:68:10;wayfiwireles;wayfiwireless.com
 8C:1F:64:68:30;Slat;Slat
+8C:1F:64:68:40;PotterElectr;Potter Electric Signal Co. LLC
 8C:1F:64:68:50;SancharWirel;Sanchar Wireless Communications Ltd
 8C:1F:64:68:60;Pazzk;Pazzk
 8C:1F:64:68:70;Lamontec;Lamontec
@@ -40433,6 +40459,7 @@
 8C:1F:64:76:80;mapnagroup;mapna group
 8C:1F:64:76:90;Vonamic;Vonamic GmbH
 8C:1F:64:76:A0;DorletSau;Dorlet Sau
+8C:1F:64:76:B0;WheribleGPS;Wherible GPS, Inc.
 8C:1F:64:76:C0;GuanShowTech;Guan Show Technologe Co., Ltd.
 8C:1F:64:76:E0;develogic;develogic GmbH
 8C:1F:64:76:F0;INVENTIASp;INVENTIA Sp. z o.o.
@@ -40566,6 +40593,7 @@
 8C:1F:64:83:80;Drimaes;Drimaes Inc.
 8C:1F:64:83:90;CEDARAudio;CEDAR Audio Ltd
 8C:1F:64:83:A0;Grossenbache;Grossenbacher Systeme AG
+8C:1F:64:83:B0;StarviewAsia;Starview Asia Company
 8C:1F:64:83:C0;XtendTechnol;Xtend Technologies Pvt Ltd
 8C:1F:64:83:D0;Lsignature;L-signature
 8C:1F:64:83:E0;Sicon;Sicon srl
@@ -40972,6 +41000,7 @@
 8C:1F:64:AD:20;YUYAMAMFG;YUYAMA MFG Co.,Ltd
 8C:1F:64:AD:30;WorkingSetSo;Working Set Software Solutions
 8C:1F:64:AD:40;FlextronicsI;Flextronics International Kft
+8C:1F:64:AD:60;Internationa;International Security Systems W.L.L.
 8C:1F:64:AD:70;Monnit;Monnit Corporation
 8C:1F:64:AD:80;NovantaIMS;Novanta IMS
 8C:1F:64:AD:B0;HebeiWeijiEl;Hebei Weiji Electric Co.,Ltd
@@ -41790,6 +41819,7 @@
 8C:1F:64:FF:C0;InvendisTech;Invendis Technologies India Pvt Ltd
 8C:1F:94;RFSurgicalSy;RF Surgical System Inc.
 8C:21:0A;TpLinkTechno;Tp-Link Technologies Co.,Ltd.
+8C:22:D2;HikvisionDig;Hangzhou Hikvision Digital Technology Co.,Ltd.
 8C:25:05;HuaweiTechno;Huawei Technologies Co.,Ltd
 8C:25:5E;VoltServer;VoltServer
 8C:26:AA;Apple;Apple, Inc.
@@ -42325,6 +42355,7 @@
 90:20:3A;BYDPrecision;BYD Precision Manufacture Co.,Ltd
 90:20:83;GeneralEngin;General Engine Management Systems Ltd.
 90:20:C2;HewlettPacka;Hewlett Packard Enterprise
+90:20:D7;Microsoft;Microsoft Corporation
 90:21:06;SkyUk;Sky Uk Limited
 90:21:2E;ApptionLabs;Apption Labs Ltd
 90:21:55;HTC;HTC Corporation
@@ -43045,6 +43076,7 @@
 94:A0:7D;HuaweiDevice;Huawei Device Co., Ltd.
 94:A0:81;SiliconLabor;Silicon Laboratories
 94:A1:A2;AMPAKTechnol;AMPAK Technology, Inc.
+94:A2:5D;HuaweiTechno;Huawei Technologies Co.,Ltd
 94:A3:CA;KonnectONE;KonnectONE, LLC
 94:A4:08;TrolinkTechn;Shenzhen Trolink Technology CO, LTD
 94:A4:0C;DiehlMeterin;Diehl Metering GmbH
@@ -43385,6 +43417,7 @@
 98:29:3F;FujianStartC;Fujian Start Computer Equipment Co.,Ltd
 98:29:A6;CompalInform;Compal Information (Kunshan) Co., Ltd.
 98:2A:0A;Intelbras;Intelbras
+98:2A:FD;HuaweiTechno;Huawei Technologies Co.,Ltd
 98:2C:BC;Intel;Intel Corporate
 98:2C:BE;2Wire;2Wire Inc
 98:2C:C6;SernetTechno;Sernet (Suzhou) Technologies Corporation
@@ -45517,6 +45550,7 @@ A8:6A:6F;Rim;Rim
 A8:6A:86;XiaomiCommun;Xiaomi Communications Co Ltd
 A8:6A:BB;SagemcomBroa;Sagemcom Broadband SAS
 A8:6A:C1;HanbitEDS;HanbitEDS Co., Ltd.
+A8:6A:CB;Evar;Evar
 A8:6B:7C;FenglianTech;Shenzhen Fenglian Technology Co., Ltd.
 A8:6B:AD;HonHaiPrecis;Hon Hai Precision Ind. Co.,Ltd.
 A8:6D:04;Siemens;Siemens AG
@@ -47069,6 +47103,7 @@ B4:C1:70;YichipMicroe;Yi chip Microelectronics (Hangzhou) Co., Ltd
 B4:C2:6A;GarminIntern;Garmin International
 B4:C2:E0;BouffaloLab;Bouffalo Lab (Nanjing) Co., Ltd.
 B4:C2:F7;HuaweiDevice;Huawei Device Co., Ltd.
+B4:C3:D9;HuaweiTechno;Huawei Technologies Co.,Ltd
 B4:C4:4E;VXLeTech;VXL eTech Pvt Ltd
 B4:C4:76;MaritimeComm;Wuhan Maritime Communication Research Institute
 B4:C4:FC;XiaomiCommun;Xiaomi Communications Co Ltd
@@ -47458,6 +47493,7 @@ B8:B7:DB;GOIPGlobalSe;GOIP Global Services Pvt. Ltd.
 B8:B7:F1;WNC;WNC Corporation
 B8:B8:1E;Intel;Intel Corporate
 B8:B9:4E;iBabyLabs;Shenzhen iBaby Labs, Inc.
+B8:BA:66;Microsoft;Microsoft Corporation
 B8:BA:68;XianJizhongD;Xi'an Jizhong Digital Communication Co.,Ltd
 B8:BA:72;Cynove;Cynove
 B8:BB:23;NufrontCSC;Guangdong Nufront CSC Co., Ltd
@@ -50694,6 +50730,7 @@ D0:F4:F7;HuaweiDevice;Huawei Device Co., Ltd.
 D0:F5:20;KYOCERA;KYOCERA Corporation
 D0:F7:3B;HelmutMauell;Helmut Mauell GmbH Werk Weida
 D0:F7:6E;YOUHUATechno;Shenzhen YOUHUA Technology Co., Ltd
+D0:F8:15;HuaweiTechno;Huawei Technologies Co.,Ltd
 D0:F8:65;ItelMobile;Itel Mobile Limited
 D0:F8:8C;MotorolaMobi;Motorola (Wuhan) Mobility Technologies Communication Co., Ltd.
 D0:F8:E7;ShutongSpace;Shenzhen Shutong Space Technology Co., Ltd
@@ -51331,6 +51368,7 @@ D8:3B:DA;Espressif;Espressif Inc.
 D8:3C:69;TINNOMobileT;Shenzhen TINNO Mobile Technology Corp.
 D8:3D:3F;JOYNED;JOYNED GmbH
 D8:3D:CC;UDDTechnolog;shenzhen UDD Technologies,co.,Ltd
+D8:3E:EB;AltoBeam;AltoBeam Inc.
 D8:3E:EF;CooseaGroup;Coosea Group (Hk) Company Limited
 D8:40:08;HuaweiTechno;Huawei Technologies Co.,Ltd
 D8:42:AC;FeixunCommun;Shanghai Feixun Communication Co.,Ltd.
@@ -51843,6 +51881,7 @@ DC:56:7B;CloudNetwork;Cloud Network Technology Singapore Pte. Ltd.
 DC:56:E6;BococomTechn;Shenzhen Bococom Technology Co.,LTD
 DC:56:E7;Apple;Apple, Inc.
 DC:57:26;PowerOne;Power-One
+DC:57:5C;PRElectronic;PR Electronics A/S
 DC:58:BC;ThomasKrenn;Thomas-Krenn.AG
 DC:5E:36;PatersonTech;Paterson Technology
 DC:60:A1;TeledyneDALS;Teledyne DALSA Professional Imaging
@@ -52821,6 +52860,7 @@ E4:84:29;NewH3CTechno;New H3C Technologies Co., Ltd
 E4:84:2B;SoftelOptic;Hangzhou Softel Optic Co., Ltd
 E4:84:D3;XiaomiCommun;Xiaomi Communications Co Ltd
 E4:85:01;GeberitInter;Geberit International AG
+E4:85:FB;QuectelWirel;Quectel Wireless Solutions Co.,Ltd.
 E4:89:CA;Cisco;Cisco Systems, Inc
 E4:8A:93;HisenseVisua;Hisense Visual Technology Co.,Ltd
 E4:8A:D5;RfWindow;Rf Window Co., Ltd.
@@ -54830,6 +54870,7 @@ F4:9F:F3;HuaweiTechno;Huawei Technologies Co.,Ltd
 F4:A1:7F;MarquardtEle;Marquardt Electronics Technology (Shanghai) Co.Ltd
 F4:A2:94;EagleWorldDe;Eagle World Development Co., Limited
 F4:A3:10;Apple;Apple, Inc.
+F4:A3:C2;iCommSemicon;Shenzhen iComm Semiconductor CO.,LTD
 F4:A4:54:00;NKTPhotonics;NKT Photonics A/S
 F4:A4:54:10;PTTelkomIndo;PT Telkom Indonesia
 F4:A4:54:20;TriWorks;Tri Works