Many access control fixes.

Ylian Saint-Hilaire committed Apr 17, 2020 at 15:02 UTC 6ca8a392c6831d7a59c00d808468411ca7197b43
4 files changed +637 -611
meshuser.js
+33 -15
@@ -291,8 +291,10 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
291 // If we have the rights to see users in a group, send the group as is.
292 ws.send(JSON.stringify({ action: 'event', event: event }));
293 } else {
294 - // We don't have the rights to see user groups, remove the links.
295 - ws.send(JSON.stringify({ action: 'event', event: { ugrpid: event.ugrpid, domain: event.domain, time: event.time, name: event.name, action: event.action, username: event.username, h: event.h } }));
294 + // We don't have the rights to see otehr users in the user group, remove the links that are not for ourselves.
295 + var links = {};
296 + if (event.links) { for (var i in event.links) { if ((i == user._id) || i.startsWith('mesh/') || i.startsWith('node/')) { links[i] = event.links[i]; } } }
297 + ws.send(JSON.stringify({ action: 'event', event: { ugrpid: event.ugrpid, domain: event.domain, time: event.time, name: event.name, action: event.action, username: event.username, links: links, h: event.h } }));
298 }
299 } else {
300 // This is not a device group event, we can get this event.
@@ -2455,7 +2457,6 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2457 command.userids = [];
2458 for (var i in command.usernames) { command.userids.push('user/' + domain.id + '/' + command.usernames[i].toLowerCase()); }
2459 }
2458 -
2460 var unknownUsers = [], successCount = 0, failCount = 0, msgs = [];
2461 for (var i in command.userids) {
2462 // Check if the user exists
@@ -2471,11 +2472,20 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2472
2473 if (newuser != null) {
2474 // Can't add or modify self
2474 - if (newuserid == obj.user._id) { errors.push("Can't add self."); continue; }
2475 -
2476 - // Add mesh to user or user group
2477 - if (newuser.links == null) { newuser.links = {}; }
2478 - if (newuser.links[command.meshid]) { newuser.links[command.meshid].rights = command.meshadmin; } else { newuser.links[command.meshid] = { rights: command.meshadmin }; }
2475 + if (newuserid == obj.user._id) { errors.push("Can't change self."); continue; }
2476 +
2477 + if (command.remove === true) {
2478 + // Remove mesh from user or user group
2479 + var selfMeshRights = parent.GetMeshRights(user, mesh);
2480 + var delmeshrights = 0;
2481 + if (newuser.links[command.meshid]) { delmeshrights = newuser.links[command.meshid].rights; }
2482 + if ((delmeshrights == 0xFFFFFFFF) && (selfMeshRights != 0xFFFFFFFF)) { console.log('ttt', delmeshrights, selfMeshRights); errors.push("Can't remove device group administrator."); continue; } // A non-admin can't kick out an admin
2483 + delete newuser.links[command.meshid];
2484 + } else {
2485 + // Add mesh to user or user group
2486 + if (newuser.links == null) { newuser.links = {}; }
2487 + if (newuser.links[command.meshid]) { newuser.links[command.meshid].rights = command.meshadmin; } else { newuser.links[command.meshid] = { rights: command.meshadmin }; }
2488 + }
2489 if (newuserid.startsWith('user/')) { db.SetUser(newuser); }
2490 else if (newuserid.startsWith('ugrp/')) { db.Set(newuser); }
2491 parent.parent.DispatchEvent([newuser._id], obj, 'resubscribe');
@@ -2494,15 +2504,23 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2504 parent.parent.DispatchEvent(targets, obj, event);
2505 }
2506
2497 - // Add userid to the mesh
2498 - mesh.links[newuserid] = { name: newuser.name, rights: command.meshadmin };
2499 - db.Set(mesh);
2507 + var event;
2508 + if (command.remove === true) {
2509 + // Remove userid from the mesh
2510 + delete mesh.links[newuserid];
2511 + db.Set(mesh);
2512 + event = { etype: 'mesh', username: newuser.name, userid: user._id, meshid: mesh._id, name: mesh.name, mtype: mesh.mtype, desc: mesh.desc, action: 'meshchange', links: mesh.links, msg: 'Removed user ' + newuser.name + ' from mesh ' + mesh.name, domain: domain.id, invite: mesh.invite };
2513 + } else {
2514 + // Add userid to the mesh
2515 + mesh.links[newuserid] = { name: newuser.name, rights: command.meshadmin };
2516 + db.Set(mesh);
2517 + event = { etype: 'mesh', username: newuser.name, userid: user._id, meshid: mesh._id, name: mesh.name, mtype: mesh.mtype, desc: mesh.desc, action: 'meshchange', links: mesh.links, msg: 'Added user ' + newuser.name + ' to mesh ' + mesh.name, domain: domain.id, invite: mesh.invite };
2518 + }
2519
2520 // Notify mesh change
2502 - var event = { etype: 'mesh', username: newuser.name, userid: user._id, meshid: mesh._id, name: mesh.name, mtype: mesh.mtype, desc: mesh.desc, action: 'meshchange', links: mesh.links, msg: 'Added user ' + newuser.name + ' to mesh ' + mesh.name, domain: domain.id, invite: mesh.invite };
2521 if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the mesh. Another event will come.
2522 parent.parent.DispatchEvent(parent.CreateMeshDispatchTargets(mesh, [user._id, newuserid]), obj, event);
2505 - msgs.push("Added user " + newuserid.split('/')[2]);
2523 + if (command.remove === true) { msgs.push("Removed user " + newuserid.split('/')[2]); } else { msgs.push("Added user " + newuserid.split('/')[2]); }
2524 successCount++;
2525 } else {
2526 msgs.push("Unknown user " + newuserid.split('/')[2]);
@@ -2580,7 +2598,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2598 // Add this user to the dispatch target list
2599 dispatchTargets.push(newuser._id);
2600
2583 - if (command.rights == 0) {
2601 + if (command.remove === true) {
2602 // Remove link to this user
2603 if (newuser.links != null) {
2604 delete newuser.links[command.nodeid];
@@ -2692,7 +2710,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2710 // Remove mesh from user
2711 if (deluser.links != null && deluser.links[command.meshid] != null) {
2712 var delmeshrights = deluser.links[command.meshid].rights;
2695 - if ((delmeshrights == 0xFFFFFFFF) && (mesh.links[deluserid].rights != 0xFFFFFFFF)) return; // A non-admin can't kick out an admin
2713 + if ((delmeshrights == 0xFFFFFFFF) && (parent.GetMeshRights(user, mesh) != 0xFFFFFFFF)) return; // A non-admin can't kick out an admin
2714 delete deluser.links[command.meshid];
2715 if (deluserid.startsWith('user/')) { db.SetUser(deluser); }
2716 else if (deluserid.startsWith('ugrp/')) { db.Set(deluser); }
package.json
+1 -1
@@ -1,6 +1,6 @@
1 {
2 "name": "meshcentral",
3 - "version": "0.5.3",
3 + "version": "0.5.4",
4 "keywords": [
5 "Remote Management",
6 "Intel AMT",
translate/translate.json
+482 -473
@@ -192,7 +192,7 @@
192 "zh-chs": " 用戶需要先登錄到該服務器一次,然後才能將其添加到設備組。",
193 "xloc": [
194 "default.handlebars->29->1203",
195 - "default.handlebars->29->1499"
195 + "default.handlebars->29->1500"
196 ]
197 },
198 {
@@ -309,7 +309,7 @@
309 "ru": "(",
310 "xloc": [
311 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3createMeshLink1",
312 - "default.handlebars->container->column_l->p2->p2createMeshLink1"
312 + "default.handlebars->container->column_l->p2->p2info->p2createMeshLink1"
313 ]
314 },
315 {
@@ -341,7 +341,7 @@
341 "ru": ")",
342 "xloc": [
343 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3createMeshLink1",
344 - "default.handlebars->container->column_l->p2->p2createMeshLink1"
344 + "default.handlebars->container->column_l->p2->p2info->p2createMeshLink1"
345 ]
346 },
347 {
@@ -408,7 +408,7 @@
408 "zh-chs": ",",
409 "xloc": [
410 "default-mobile.handlebars->9->331",
411 - "default.handlebars->29->1268"
411 + "default.handlebars->29->1269"
412 ]
413 },
414 {
@@ -604,8 +604,8 @@
604 "xloc": [
605 "default-mobile.handlebars->9->244",
606 "default-mobile.handlebars->9->70",
607 - "default.handlebars->29->1307",
608 - "default.handlebars->29->1603",
607 + "default.handlebars->29->1308",
608 + "default.handlebars->29->1604",
609 "default.handlebars->29->712"
610 ]
611 },
@@ -654,7 +654,7 @@
654 "ru": "1 активная сессия",
655 "zh-chs": "1個活動會話",
656 "xloc": [
657 - "default.handlebars->29->1554"
657 + "default.handlebars->29->1555"
658 ]
659 },
660 {
@@ -673,7 +673,7 @@
673 "xloc": [
674 "default-mobile.handlebars->9->335",
675 "default-mobile.handlebars->9->80",
676 - "default.handlebars->29->1326"
676 + "default.handlebars->29->1327"
677 ]
678 },
679 {
@@ -709,7 +709,7 @@
709 "ru": "1 группа",
710 "zh-chs": "1組",
711 "xloc": [
712 - "default.handlebars->29->1524"
712 + "default.handlebars->29->1525"
713 ]
714 },
715 {
@@ -781,7 +781,7 @@
781 "ru": "Еще 1 пользователь не показан, используйте поиск чтобы найти пользователей...",
782 "zh-chs": "未再顯示1個用戶,請使用搜索框查找用戶...",
783 "xloc": [
784 - "default.handlebars->29->1361"
784 + "default.handlebars->29->1362"
785 ]
786 },
787 {
@@ -832,7 +832,7 @@
832 "ru": "1 сессия",
833 "zh-chs": "1節",
834 "xloc": [
835 - "default.handlebars->29->1365"
835 + "default.handlebars->29->1366"
836 ]
837 },
838 {
@@ -1100,8 +1100,8 @@
1100 "ru": "двухфакторная аутентификация включена",
1101 "zh-chs": "啟用第二因素身份驗證",
1102 "xloc": [
1103 - "default.handlebars->29->1378",
1104 - "default.handlebars->29->1545"
1103 + "default.handlebars->29->1379",
1104 + "default.handlebars->29->1546"
1105 ]
1106 },
1107 {
@@ -1847,7 +1847,7 @@
1847 "ru": "Доступ к файлам сервера",
1848 "zh-chs": "訪問服務器文件",
1849 "xloc": [
1850 - "default.handlebars->29->1505"
1850 + "default.handlebars->29->1506"
1851 ]
1852 },
1853 {
@@ -1942,7 +1942,7 @@
1942 "ru": "Действия учетной записи",
1943 "zh-chs": "帳戶動作",
1944 "xloc": [
1945 - "default.handlebars->container->column_l->p2->p2AccountActions->1->0"
1945 + "default.handlebars->container->column_l->p2->p2info->p2AccountActions->1->0"
1946 ]
1947 },
1948 {
@@ -1956,8 +1956,8 @@
1956 "zh-chs": "帐户已被锁定",
1957 "es": "La cuenta esta bloqueada",
1958 "xloc": [
1959 - "default.handlebars->29->1379",
1960 - "default.handlebars->29->1502"
1959 + "default.handlebars->29->1380",
1960 + "default.handlebars->29->1503"
1961 ]
1962 },
1963 {
@@ -2028,7 +2028,7 @@
2028 "ru": "Безопасность учетной записи",
2029 "zh-chs": "帳號安全",
2030 "xloc": [
2031 - "default.handlebars->container->column_l->p2->p2AccountSecurity->1->0"
2031 + "default.handlebars->container->column_l->p2->p2info->p2AccountSecurity->1->0"
2032 ]
2033 },
2034 {
@@ -2230,8 +2230,8 @@
2230 "zh-chs": "添加設備",
2231 "es": "Agregar Dispositivo",
2232 "xloc": [
2233 - "default.handlebars->29->1479",
2234 - "default.handlebars->29->1583"
2233 + "default.handlebars->29->1480",
2234 + "default.handlebars->29->1584"
2235 ]
2236 },
2237 {
@@ -2266,8 +2266,8 @@
2266 "zh-chs": "添加設備組",
2267 "xloc": [
2268 "default.handlebars->29->1235",
2269 - "default.handlebars->29->1473",
2270 - "default.handlebars->29->1571",
2269 + "default.handlebars->29->1474",
2270 + "default.handlebars->29->1572",
2271 "default.handlebars->29->189"
2272 ]
2273 },
@@ -2289,8 +2289,8 @@
2289 "zh-chs": "添加设备权限",
2290 "es": "Agregar permisos de dispositivo",
2291 "xloc": [
2292 - "default.handlebars->29->1236",
2293 - "default.handlebars->29->1238"
2292 + "default.handlebars->29->1237",
2293 + "default.handlebars->29->1239"
2294 ]
2295 },
2296 {
@@ -2375,7 +2375,7 @@
2375 "ru": "Добавить участие",
2376 "zh-chs": "添加會員",
2377 "xloc": [
2378 - "default.handlebars->29->1599"
2378 + "default.handlebars->29->1600"
2379 ]
2380 },
2381 {
@@ -2446,8 +2446,7 @@
2446 "zh-chs": "添加用户设备权限",
2447 "es": "Agregar permisos del usuario del dispositivo",
2448 "xloc": [
2449 - "default.handlebars->29->1241",
2450 - "default.handlebars->29->1243"
2449 + "default.handlebars->29->1242"
2450 ]
2451 },
2452 {
@@ -2466,10 +2465,16 @@
2465 "xloc": [
2466 "default.handlebars->29->1135",
2467 "default.handlebars->29->1234",
2469 - "default.handlebars->29->1577",
2468 + "default.handlebars->29->1578",
2469 "default.handlebars->29->547"
2470 ]
2471 },
2472 + {
2473 + "en": "Add User Group Device Permissions",
2474 + "xloc": [
2475 + "default.handlebars->29->1244"
2476 + ]
2477 + },
2478 {
2479 "en": "Add User to Device Group",
2480 "nl": "Gebruiker toevoegen aan apparaatgroep",
@@ -2506,7 +2511,7 @@
2511 "zh-chs": "添加用戶",
2512 "xloc": [
2513 "default.handlebars->29->1134",
2509 - "default.handlebars->29->1468"
2514 + "default.handlebars->29->1469"
2515 ]
2516 },
2517 {
@@ -2540,7 +2545,7 @@
2545 "ru": "Добавить пользователей в группу",
2546 "zh-chs": "將用戶添加到用戶組",
2547 "xloc": [
2543 - "default.handlebars->29->1501"
2548 + "default.handlebars->29->1502"
2549 ]
2550 },
2551 {
@@ -2738,7 +2743,7 @@
2743 "ru": "Области администратора",
2744 "zh-chs": "管理領域",
2745 "xloc": [
2741 - "default.handlebars->29->1528"
2746 + "default.handlebars->29->1529"
2747 ]
2748 },
2749 {
@@ -2773,7 +2778,7 @@
2778 "ru": "Административные области",
2779 "zh-chs": "行政領域",
2780 "xloc": [
2776 - "default.handlebars->29->1426"
2781 + "default.handlebars->29->1427"
2782 ]
2783 },
2784 {
@@ -2790,7 +2795,7 @@
2795 "ru": "Администратор",
2796 "zh-chs": "管理員",
2797 "xloc": [
2793 - "default.handlebars->29->1372"
2798 + "default.handlebars->29->1373"
2799 ]
2800 },
2801 {
@@ -2827,8 +2832,8 @@
2832 "default-mobile.handlebars->9->124",
2833 "default-mobile.handlebars->9->177",
2834 "default-mobile.handlebars->9->193",
2830 - "default.handlebars->29->1295",
2831 - "default.handlebars->29->1301",
2835 + "default.handlebars->29->1296",
2836 + "default.handlebars->29->1302",
2837 "default.handlebars->29->168",
2838 "default.handlebars->29->361",
2839 "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->1"
@@ -2848,8 +2853,8 @@
2853 "ru": "Агент + Intel AMT",
2854 "zh-chs": "代理+英特爾AMT",
2855 "xloc": [
2851 - "default.handlebars->29->1297",
2852 - "default.handlebars->29->1303"
2856 + "default.handlebars->29->1298",
2857 + "default.handlebars->29->1304"
2858 ]
2859 },
2860 {
@@ -2884,7 +2889,7 @@
2889 "zh-chs": "代理控制台",
2890 "xloc": [
2891 "default-mobile.handlebars->9->316",
2887 - "default.handlebars->29->1251"
2892 + "default.handlebars->29->1252"
2893 ]
2894 },
2895 {
@@ -2901,7 +2906,7 @@
2906 "ru": "Счетчик ошибок агента",
2907 "zh-chs": "座席錯誤計數器",
2908 "xloc": [
2904 - "default.handlebars->29->1612"
2909 + "default.handlebars->29->1613"
2910 ]
2911 },
2912 {
@@ -2970,7 +2975,7 @@
2975 "ru": "Сессии агентов",
2976 "zh-chs": "座席會議",
2977 "xloc": [
2973 - "default.handlebars->29->1628"
2978 + "default.handlebars->29->1629"
2979 ]
2980 },
2981 {
@@ -3005,7 +3010,7 @@
3010 "ru": "Типы агента",
3011 "zh-chs": "代理類型",
3012 "xloc": [
3008 - "default.handlebars->29->1299",
3013 + "default.handlebars->29->1300",
3014 "default.handlebars->container->column_l->p21->3->1->meshOsChartDiv->1"
3015 ]
3016 },
@@ -3093,7 +3098,7 @@
3098 "ru": "Агенты",
3099 "zh-chs": "代理商",
3100 "xloc": [
3096 - "default.handlebars->29->1641"
3101 + "default.handlebars->29->1642"
3102 ]
3103 },
3104 {
@@ -3183,7 +3188,7 @@
3188 "zh-chs": "允許用戶管理此設備組和該組中的設備。",
3189 "xloc": [
3190 "default.handlebars->29->1201",
3186 - "default.handlebars->29->1498"
3191 + "default.handlebars->29->1499"
3192 ]
3193 },
3194 {
@@ -3285,7 +3290,7 @@
3290 "zh-chs": "始終通知",
3291 "xloc": [
3292 "default.handlebars->29->1115",
3288 - "default.handlebars->29->1537",
3293 + "default.handlebars->29->1538",
3294 "default.handlebars->29->495"
3295 ]
3296 },
@@ -3304,7 +3309,7 @@
3309 "zh-chs": "總是提示",
3310 "xloc": [
3311 "default.handlebars->29->1116",
3307 - "default.handlebars->29->1538",
3312 + "default.handlebars->29->1539",
3313 "default.handlebars->29->496"
3314 ]
3315 },
@@ -3903,7 +3908,7 @@
3908 "ru": "Вы уверенны, что {0} плагин: {1}",
3909 "zh-chs": "您確定要{0}插件嗎:{1}",
3910 "xloc": [
3906 - "default.handlebars->29->1681"
3911 + "default.handlebars->29->1682"
3912 ]
3913 },
3914 {
@@ -3985,7 +3990,7 @@
3990 "ru": "Приложение аутентификации",
3991 "zh-chs": "身份驗證應用",
3992 "xloc": [
3988 - "default.handlebars->29->1541"
3993 + "default.handlebars->29->1542"
3994 ]
3995 },
3996 {
@@ -4243,8 +4248,8 @@
4248 "ru": "Фоновый и интерактивный",
4249 "zh-chs": "背景與互動",
4250 "xloc": [
4246 - "default.handlebars->29->1278",
4247 - "default.handlebars->29->1285",
4251 + "default.handlebars->29->1279",
4252 + "default.handlebars->29->1286",
4253 "default.handlebars->29->286"
4254 ]
4255 },
@@ -4262,8 +4267,8 @@
4267 "ru": "Только фоновый",
4268 "zh-chs": "僅背景",
4269 "xloc": [
4265 - "default.handlebars->29->1279",
4266 - "default.handlebars->29->1286",
4270 + "default.handlebars->29->1280",
4271 + "default.handlebars->29->1287",
4272 "default.handlebars->29->287",
4273 "default.handlebars->29->309"
4274 ]
@@ -4299,7 +4304,7 @@
4304 "ru": "Резервные коды",
4305 "zh-chs": "備用碼",
4306 "xloc": [
4302 - "default.handlebars->29->1543"
4307 + "default.handlebars->29->1544"
4308 ]
4309 },
4310 {
@@ -4316,7 +4321,7 @@
4321 "ru": "Плохой ключ",
4322 "zh-chs": "錯誤的簽名",
4323 "xloc": [
4319 - "default.handlebars->29->1619"
4324 + "default.handlebars->29->1620"
4325 ]
4326 },
4327 {
@@ -4333,7 +4338,7 @@
4338 "ru": "Плохой веб-сертификат",
4339 "zh-chs": "錯誤的網絡證書",
4340 "xloc": [
4336 - "default.handlebars->29->1618"
4341 + "default.handlebars->29->1619"
4342 ]
4343 },
4344 {
@@ -4469,7 +4474,7 @@
4474 "ru": "Отправить сообщение",
4475 "zh-chs": "廣播",
4476 "xloc": [
4472 - "default.handlebars->29->1466",
4477 + "default.handlebars->29->1467",
4478 "default.handlebars->container->column_l->p4->3->1->0->3->1"
4479 ]
4480 },
@@ -4487,7 +4492,7 @@
4492 "ru": "Отправить сообщение",
4493 "zh-chs": "廣播消息",
4494 "xloc": [
4490 - "default.handlebars->29->1411"
4495 + "default.handlebars->29->1412"
4496 ]
4497 },
4498 {
@@ -4504,7 +4509,7 @@
4509 "ru": "Отправить сообщение всем подключенным пользователям.",
4510 "zh-chs": "向所有連接的用戶廣播消息。",
4511 "xloc": [
4507 - "default.handlebars->29->1410"
4512 + "default.handlebars->29->1411"
4513 ]
4514 },
4515 {
@@ -4594,7 +4599,7 @@
4599 "ru": "CIRA Сервер",
4600 "zh-chs": "CIRA服務器",
4601 "xloc": [
4597 - "default.handlebars->29->1669"
4602 + "default.handlebars->29->1670"
4603 ]
4604 },
4605 {
@@ -4611,7 +4616,7 @@
4616 "ru": "CIRA Сервер команды",
4617 "zh-chs": "CIRA服務器命令",
4618 "xloc": [
4614 - "default.handlebars->29->1670"
4619 + "default.handlebars->29->1671"
4620 ]
4621 },
4622 {
@@ -4628,7 +4633,7 @@
4633 "ru": "Загрузка CPU",
4634 "zh-chs": "CPU負載",
4635 "xloc": [
4631 - "default.handlebars->29->1633"
4636 + "default.handlebars->29->1634"
4637 ]
4638 },
4639 {
@@ -4645,7 +4650,7 @@
4650 "ru": "Загрузка CPU за последние 15 минут",
4651 "zh-chs": "最近15分鐘的CPU負載",
4652 "xloc": [
4648 - "default.handlebars->29->1636"
4653 + "default.handlebars->29->1637"
4654 ]
4655 },
4656 {
@@ -4662,7 +4667,7 @@
4667 "ru": "Загрузка CPU за последние 5 минут",
4668 "zh-chs": "最近5分鐘的CPU負載",
4669 "xloc": [
4665 - "default.handlebars->29->1635"
4670 + "default.handlebars->29->1636"
4671 ]
4672 },
4673 {
@@ -4679,7 +4684,7 @@
4684 "ru": "Загрузка CPU за последнюю минуту",
4685 "zh-chs": "最後一分鐘的CPU負載",
4686 "xloc": [
4682 - "default.handlebars->29->1634"
4687 + "default.handlebars->29->1635"
4688 ]
4689 },
4690 {
@@ -4715,8 +4720,8 @@
4720 "ru": "Формат CSV",
4721 "zh-chs": "CSV格式",
4722 "xloc": [
4718 - "default.handlebars->29->1347",
4719 - "default.handlebars->29->1402",
4723 + "default.handlebars->29->1348",
4724 + "default.handlebars->29->1403",
4725 "default.handlebars->29->390"
4726 ]
4727 },
@@ -4734,7 +4739,7 @@
4739 "ru": "Ошибка вызова",
4740 "zh-chs": "通話錯誤",
4741 "xloc": [
4737 - "default.handlebars->29->1682"
4742 + "default.handlebars->29->1683"
4743 ]
4744 },
4745 {
@@ -4843,7 +4848,7 @@
4848 "ru": "Смена email для {0}",
4849 "zh-chs": "更改{0}的電子郵件",
4850 "xloc": [
4846 - "default.handlebars->29->1560"
4851 + "default.handlebars->29->1561"
4852 ]
4853 },
4854 {
@@ -4881,7 +4886,7 @@
4886 "xloc": [
4887 "default-mobile.handlebars->9->52",
4888 "default.handlebars->29->1064",
4884 - "default.handlebars->29->1553"
4889 + "default.handlebars->29->1554"
4890 ]
4891 },
4892 {
@@ -4898,7 +4903,7 @@
4903 "ru": "Смена пароля для {0}",
4904 "zh-chs": "更改{0}的密碼",
4905 "xloc": [
4901 - "default.handlebars->29->1567"
4906 + "default.handlebars->29->1568"
4907 ]
4908 },
4909 {
@@ -4916,7 +4921,7 @@
4921 "zh-chs": "更改電子郵件地址",
4922 "xloc": [
4923 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3AccountActions->7->3->changeEmailId->0",
4919 - "default.handlebars->container->column_l->p2->p2AccountActions->3->p2AccountPassActions->accountChangeEmailAddressSpan->0"
4924 + "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->p2AccountPassActions->accountChangeEmailAddressSpan->0"
4925 ]
4926 },
4927 {
@@ -4934,7 +4939,7 @@
4939 "zh-chs": "更改密碼",
4940 "xloc": [
4941 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3AccountActions->7->5->0",
4937 - "default.handlebars->container->column_l->p2->p2AccountActions->3->p2AccountPassActions->3"
4942 + "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->p2AccountPassActions->3"
4943 ]
4944 },
4945 {
@@ -4968,7 +4973,7 @@
4973 "zh-chs": "更改該用戶的密碼",
4974 "es": "Cambiar la contraseña para este usuario",
4975 "xloc": [
4971 - "default.handlebars->29->1552"
4976 + "default.handlebars->29->1553"
4977 ]
4978 },
4979 {
@@ -5053,7 +5058,7 @@
5058 "ru": "Чат",
5059 "zh-chs": "聊天室",
5060 "xloc": [
5056 - "default.handlebars->29->1364",
5061 + "default.handlebars->29->1365",
5062 "default.handlebars->29->567",
5063 "default.handlebars->29->586"
5064 ]
@@ -5075,7 +5080,7 @@
5080 "default-mobile.handlebars->9->308",
5081 "default-mobile.handlebars->9->326",
5082 "default.handlebars->29->1229",
5078 - "default.handlebars->29->1262"
5083 + "default.handlebars->29->1263"
5084 ]
5085 },
5086 {
@@ -5160,7 +5165,7 @@
5165 "ru": "Проверка...",
5166 "zh-chs": "檢查...",
5167 "xloc": [
5163 - "default.handlebars->29->1676",
5168 + "default.handlebars->29->1677",
5169 "default.handlebars->29->837"
5170 ]
5171 },
@@ -5336,7 +5341,7 @@
5341 "default-mobile.handlebars->9->269",
5342 "default-mobile.handlebars->9->28",
5343 "default-mobile.handlebars->9->94",
5339 - "default.handlebars->29->1341",
5344 + "default.handlebars->29->1342",
5345 "default.handlebars->29->731",
5346 "default.handlebars->29->733",
5347 "default.handlebars->29->735",
@@ -5408,7 +5413,7 @@
5413 "zh-chs": "清除此通知",
5414 "es": "Borrar esta notificación",
5415 "xloc": [
5411 - "default.handlebars->29->1606"
5416 + "default.handlebars->29->1607"
5417 ]
5418 },
5419 {
@@ -5623,8 +5628,8 @@
5628 "ru": "Общие группы устройств",
5629 "zh-chs": "通用設備組",
5630 "xloc": [
5626 - "default.handlebars->29->1474",
5627 - "default.handlebars->29->1572"
5631 + "default.handlebars->29->1475",
5632 + "default.handlebars->29->1573"
5633 ]
5634 },
5635 {
@@ -5641,8 +5646,8 @@
5646 "zh-chs": "通用設備",
5647 "es": "Dispositivos comunes",
5648 "xloc": [
5644 - "default.handlebars->29->1480",
5645 - "default.handlebars->29->1584"
5649 + "default.handlebars->29->1481",
5650 + "default.handlebars->29->1585"
5651 ]
5652 },
5653 {
@@ -5660,7 +5665,7 @@
5665 "zh-chs": "將{1}入口{2}中的{0}限製到此位置?",
5666 "xloc": [
5667 "default-mobile.handlebars->9->89",
5663 - "default.handlebars->29->1336"
5668 + "default.handlebars->29->1337"
5669 ]
5670 },
5671 {
@@ -5680,10 +5685,10 @@
5685 "default-mobile.handlebars->9->223",
5686 "default-mobile.handlebars->9->288",
5687 "default.handlebars->29->1180",
5683 - "default.handlebars->29->1389",
5684 - "default.handlebars->29->1451",
5685 - "default.handlebars->29->1494",
5686 - "default.handlebars->29->1570",
5688 + "default.handlebars->29->1390",
5689 + "default.handlebars->29->1452",
5690 + "default.handlebars->29->1495",
5691 + "default.handlebars->29->1571",
5692 "default.handlebars->29->387",
5693 "default.handlebars->29->620",
5694 "default.handlebars->29->629"
@@ -5729,7 +5734,7 @@
5734 "en": "Confirm delete selected account(s)?",
5735 "nl": "Bevestig verwijdering geselecteerde account(s)?",
5736 "xloc": [
5732 - "default.handlebars->29->1388"
5737 + "default.handlebars->29->1389"
5738 ]
5739 },
5740 {
@@ -5753,7 +5758,7 @@
5758 "en": "Confirm delete selected user groups(s)?",
5759 "nl": "Bevestig verwijdering geselecteerde gebruikersgroep(en)?",
5760 "xloc": [
5756 - "default.handlebars->29->1450"
5761 + "default.handlebars->29->1451"
5762 ]
5763 },
5764 {
@@ -5770,21 +5775,21 @@
5775 "zh-chs": "確認刪除用戶{0}?",
5776 "es": "Confirmar la eliminación del usuario {0}?",
5777 "xloc": [
5773 - "default.handlebars->29->1569"
5778 + "default.handlebars->29->1570"
5779 ]
5780 },
5781 {
5782 "en": "Confirm membership removal of user \\\"{0}\\\"?",
5783 "nl": "Bevestig lidmaatschap verwijderen van gebruiker \\\"{0}\\\"?",
5784 "xloc": [
5780 - "default.handlebars->29->1497"
5785 + "default.handlebars->29->1498"
5786 ]
5787 },
5788 {
5789 "en": "Confirm membership removal of user group \\\"{0}\\\"?",
5790 "nl": "Bevestig lidmaatschap verwijdering van gebruikergroep \\\"{0}\\\"?",
5791 "xloc": [
5787 - "default.handlebars->29->1597"
5792 + "default.handlebars->29->1598"
5793 ]
5794 },
5795 {
@@ -5837,37 +5842,37 @@
5842 "ru": "Подтвердить перезапись?",
5843 "zh-chs": "確認覆蓋?",
5844 "xloc": [
5840 - "default.handlebars->29->1335"
5845 + "default.handlebars->29->1336"
5846 ]
5847 },
5848 {
5849 "en": "Confirm removal of access rights for device \\\"{0}\\\"?",
5850 "nl": "Bevestig verwijdering van toegangsrechten voor apparaat \\\"{0}\\\"?",
5851 "xloc": [
5847 - "default.handlebars->29->1487",
5848 - "default.handlebars->29->1590"
5852 + "default.handlebars->29->1488",
5853 + "default.handlebars->29->1591"
5854 ]
5855 },
5856 {
5857 "en": "Confirm removal of access rights for device group \\\"{0}\\\"?",
5858 "nl": "Bevestig verwijdering van toegangsrechten voor apparaatgroep \\\"{0}\\\"?",
5859 "xloc": [
5855 - "default.handlebars->29->1489",
5856 - "default.handlebars->29->1601"
5860 + "default.handlebars->29->1490",
5861 + "default.handlebars->29->1602"
5862 ]
5863 },
5864 {
5865 "en": "Confirm removal of access rights for user \\\"{0}\\\"?",
5866 "nl": "Bevestig verwijdering van toegangsrechten voor gebruiker \\\"{0}\\\"?",
5867 "xloc": [
5863 - "default.handlebars->29->1592"
5868 + "default.handlebars->29->1593"
5869 ]
5870 },
5871 {
5872 "en": "Confirm removal of access rights for user group \\\"{0}\\\"?",
5873 "nl": "Bevestig verwijdering van toegangsrechten voor gebruikergroep \\\"{0}\\\"?",
5874 "xloc": [
5870 - "default.handlebars->29->1594"
5875 + "default.handlebars->29->1595"
5876 ]
5877 },
5878 {
@@ -5931,14 +5936,14 @@
5936 "en": "Confirm removal of rights for user \\\"{0}\\\"?",
5937 "nl": "Bevestig de verwijdering van rechten voor gebruiker \\\"{0}\\\"?",
5938 "xloc": [
5934 - "default.handlebars->29->1271"
5939 + "default.handlebars->29->1272"
5940 ]
5941 },
5942 {
5943 "en": "Confirm removal of rights for user group \\\"{0}\\\"?",
5944 "nl": "Bevestig de verwijdering van rechten voor de gebruikergroep \\\"{0}\\\"?",
5945 "xloc": [
5941 - "default.handlebars->29->1273"
5946 + "default.handlebars->29->1274"
5947 ]
5948 },
5949 {
@@ -6091,7 +6096,7 @@
6096 "ru": "Подключено Intel® AMT",
6097 "zh-chs": "連接的英特爾®AMT",
6098 "xloc": [
6094 - "default.handlebars->29->1624"
6099 + "default.handlebars->29->1625"
6100 ]
6101 },
6102 {
@@ -6108,7 +6113,7 @@
6113 "ru": "Подключенные пользователи",
6114 "zh-chs": "關聯用戶",
6115 "xloc": [
6111 - "default.handlebars->29->1629"
6116 + "default.handlebars->29->1630"
6117 ]
6118 },
6119 {
@@ -6184,7 +6189,7 @@
6189 "ru": "Подключений ",
6190 "zh-chs": "連接數",
6191 "xloc": [
6187 - "default.handlebars->29->1640"
6192 + "default.handlebars->29->1641"
6193 ]
6194 },
6195 {
@@ -6201,7 +6206,7 @@
6206 "ru": "Ретранслятор подключения",
6207 "zh-chs": "連接繼電器",
6208 "xloc": [
6204 - "default.handlebars->29->1668"
6209 + "default.handlebars->29->1669"
6210 ]
6211 },
6212 {
@@ -6253,7 +6258,7 @@
6258 "zh-chs": "連接性",
6259 "xloc": [
6260 "default-mobile.handlebars->9->198",
6256 - "default.handlebars->29->1304",
6261 + "default.handlebars->29->1305",
6262 "default.handlebars->29->186",
6263 "default.handlebars->29->509",
6264 "default.handlebars->container->column_l->p21->3->1->meshConnChartDiv->1"
@@ -6326,7 +6331,7 @@
6331 "ru": "Cookie-кодировщик",
6332 "zh-chs": "Cookie編碼器",
6333 "xloc": [
6329 - "default.handlebars->29->1654"
6334 + "default.handlebars->29->1655"
6335 ]
6336 },
6337 {
@@ -6448,8 +6453,8 @@
6453 "ru": "Скопировать ссылку в буфер обмена",
6454 "zh-chs": "複製鏈接到剪貼板",
6455 "xloc": [
6451 - "default.handlebars->29->1309",
6452 - "default.handlebars->29->1323",
6456 + "default.handlebars->29->1310",
6457 + "default.handlebars->29->1324",
6458 "default.handlebars->29->299"
6459 ]
6460 },
@@ -6627,7 +6632,7 @@
6632 "ru": "Основной сервер",
6633 "zh-chs": "核心服務器",
6634 "xloc": [
6630 - "default.handlebars->29->1653"
6635 + "default.handlebars->29->1654"
6636 ]
6637 },
6638 {
@@ -6661,7 +6666,7 @@
6666 "ru": "Создать учетную запись",
6667 "zh-chs": "創建帳號",
6668 "xloc": [
6664 - "default.handlebars->29->1422",
6669 + "default.handlebars->29->1423",
6670 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->12->1->1",
6671 "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1"
6672 ]
@@ -6697,7 +6702,7 @@
6702 "ru": "Создать группу пользователей",
6703 "zh-chs": "創建用戶組",
6704 "xloc": [
6700 - "default.handlebars->29->1456"
6705 + "default.handlebars->29->1457"
6706 ]
6707 },
6708 {
@@ -6748,7 +6753,7 @@
6753 "ru": "Создайте сразу несколько учетных записей, импортировав файл JSON в следующем формате:",
6754 "zh-chs": "通過導入以下格式的JSON文件一次創建多個帳戶:",
6755 "xloc": [
6751 - "default.handlebars->29->1393"
6756 + "default.handlebars->29->1394"
6757 ]
6758 },
6759 {
@@ -6783,7 +6788,7 @@
6788 "ru": "Создано",
6789 "zh-chs": "創建",
6790 "xloc": [
6786 - "default.handlebars->29->1517"
6791 + "default.handlebars->29->1518"
6792 ]
6793 },
6794 {
@@ -7117,7 +7122,7 @@
7122 "default-mobile.handlebars->9->84",
7123 "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1",
7124 "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1",
7120 - "default.handlebars->29->1330",
7125 + "default.handlebars->29->1331",
7126 "default.handlebars->29->417",
7127 "default.handlebars->29->718",
7128 "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
@@ -7150,7 +7155,7 @@
7155 "en": "Delete Accounts",
7156 "nl": "Verwijder accounts",
7157 "xloc": [
7153 - "default.handlebars->29->1390"
7158 + "default.handlebars->29->1391"
7159 ]
7160 },
7161 {
@@ -7240,7 +7245,7 @@
7245 "ru": "Удалить пользователя",
7246 "zh-chs": "刪除用戶",
7247 "xloc": [
7243 - "default.handlebars->29->1551"
7248 + "default.handlebars->29->1552"
7249 ]
7250 },
7251 {
@@ -7257,15 +7262,15 @@
7262 "ru": "Удалить группу пользователей",
7263 "zh-chs": "刪除用戶組",
7264 "xloc": [
7260 - "default.handlebars->29->1485",
7261 - "default.handlebars->29->1495"
7265 + "default.handlebars->29->1486",
7266 + "default.handlebars->29->1496"
7267 ]
7268 },
7269 {
7270 "en": "Delete User Groups",
7271 "nl": "Gebruikersgroepen verwijderen",
7272 "xloc": [
7268 - "default.handlebars->29->1452"
7273 + "default.handlebars->29->1453"
7274 ]
7275 },
7276 {
@@ -7282,7 +7287,7 @@
7287 "ru": "Удалить пользователя {0}",
7288 "zh-chs": "刪除用戶{0}",
7289 "xloc": [
7285 - "default.handlebars->29->1568"
7290 + "default.handlebars->29->1569"
7291 ]
7292 },
7293 {
@@ -7300,8 +7305,8 @@
7305 "zh-chs": "刪除帳戶",
7306 "xloc": [
7307 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3AccountActions->7->7->0",
7303 - "default.handlebars->29->1386",
7304 - "default.handlebars->container->column_l->p2->p2AccountActions->3->p2AccountPassActions->7"
7308 + "default.handlebars->29->1387",
7309 + "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->p2AccountPassActions->7"
7310 ]
7311 },
7312 {
@@ -7325,7 +7330,7 @@
7330 "en": "Delete group",
7331 "nl": "Verwijder groep",
7332 "xloc": [
7328 - "default.handlebars->29->1448"
7333 + "default.handlebars->29->1449"
7334 ]
7335 },
7336 {
@@ -7361,7 +7366,7 @@
7366 "xloc": [
7367 "default-mobile.handlebars->9->252",
7368 "default-mobile.handlebars->9->86",
7364 - "default.handlebars->29->1332",
7369 + "default.handlebars->29->1333",
7370 "default.handlebars->29->720"
7371 ]
7372 },
@@ -7379,7 +7384,7 @@
7384 "ru": "Удалить группу пользователей {0}?",
7385 "zh-chs": "刪除用戶組{0}?",
7386 "xloc": [
7382 - "default.handlebars->29->1493"
7387 + "default.handlebars->29->1494"
7388 ]
7389 },
7390 {
@@ -7398,7 +7403,7 @@
7403 "xloc": [
7404 "default-mobile.handlebars->9->251",
7405 "default-mobile.handlebars->9->85",
7401 - "default.handlebars->29->1331",
7406 + "default.handlebars->29->1332",
7407 "default.handlebars->29->719"
7408 ]
7409 },
@@ -7502,10 +7507,10 @@
7507 "default.handlebars->29->1076",
7508 "default.handlebars->29->1100",
7509 "default.handlebars->29->1183",
7505 - "default.handlebars->29->1455",
7506 - "default.handlebars->29->1460",
7507 - "default.handlebars->29->1462",
7508 - "default.handlebars->29->1491",
7510 + "default.handlebars->29->1456",
7511 + "default.handlebars->29->1461",
7512 + "default.handlebars->29->1463",
7513 + "default.handlebars->29->1492",
7514 "default.handlebars->29->455",
7515 "default.handlebars->29->456",
7516 "default.handlebars->29->661",
@@ -7580,7 +7585,7 @@
7585 "zh-chs": "桌面通知",
7586 "xloc": [
7587 "default.handlebars->29->1110",
7583 - "default.handlebars->29->1532",
7588 + "default.handlebars->29->1533",
7589 "default.handlebars->29->490"
7590 ]
7591 },
@@ -7599,7 +7604,7 @@
7604 "zh-chs": "桌面提示",
7605 "xloc": [
7606 "default.handlebars->29->1109",
7602 - "default.handlebars->29->1531",
7607 + "default.handlebars->29->1532",
7608 "default.handlebars->29->489"
7609 ]
7610 },
@@ -7618,7 +7623,7 @@
7623 "zh-chs": "桌面提示+工具欄",
7624 "xloc": [
7625 "default.handlebars->29->1107",
7621 - "default.handlebars->29->1529",
7626 + "default.handlebars->29->1530",
7627 "default.handlebars->29->487"
7628 ]
7629 },
@@ -7644,7 +7649,7 @@
7649 "zh-chs": "桌面工具欄",
7650 "xloc": [
7651 "default.handlebars->29->1108",
7647 - "default.handlebars->29->1530",
7652 + "default.handlebars->29->1531",
7653 "default.handlebars->29->488"
7654 ]
7655 },
@@ -7715,7 +7720,7 @@
7720 "zh-chs": "設備",
7721 "xloc": [
7722 "default.handlebars->29->1210",
7718 - "default.handlebars->29->1587",
7723 + "default.handlebars->29->1588",
7724 "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->5"
7725 ]
7726 },
@@ -7754,9 +7759,9 @@
7759 "default.handlebars->29->1205",
7760 "default.handlebars->29->1208",
7761 "default.handlebars->29->1209",
7757 - "default.handlebars->29->1477",
7758 - "default.handlebars->29->1483",
7759 - "default.handlebars->29->1575"
7762 + "default.handlebars->29->1478",
7763 + "default.handlebars->29->1484",
7764 + "default.handlebars->29->1576"
7765 ]
7766 },
7767 {
@@ -7774,7 +7779,7 @@
7779 "zh-chs": "設備組用戶",
7780 "xloc": [
7781 "default-mobile.handlebars->9->332",
7777 - "default.handlebars->29->1269"
7782 + "default.handlebars->29->1270"
7783 ]
7784 },
7785 {
@@ -7792,11 +7797,11 @@
7797 "zh-chs": "設備組",
7798 "xloc": [
7799 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->3",
7795 - "default.handlebars->29->1442",
7796 - "default.handlebars->29->1464",
7797 - "default.handlebars->29->1526",
7798 - "default.handlebars->29->1627",
7799 - "default.handlebars->container->column_l->p2->9"
7800 + "default.handlebars->29->1443",
7801 + "default.handlebars->29->1465",
7802 + "default.handlebars->29->1527",
7803 + "default.handlebars->29->1628",
7804 + "default.handlebars->container->column_l->p2->p2info->7"
7805 ]
7806 },
7807 {
@@ -7902,7 +7907,7 @@
7907 "zh-chs": "設備連接。",
7908 "xloc": [
7909 "default.handlebars->29->1044",
7905 - "default.handlebars->29->1290"
7910 + "default.handlebars->29->1291"
7911 ]
7912 },
7913 {
@@ -7920,7 +7925,7 @@
7925 "zh-chs": "設備斷開連接。",
7926 "xloc": [
7927 "default.handlebars->29->1045",
7923 - "default.handlebars->29->1291"
7928 + "default.handlebars->29->1292"
7929 ]
7930 },
7931 {
@@ -8223,8 +8228,8 @@
8228 "en": "Devices",
8229 "nl": "Apparaten",
8230 "xloc": [
8226 - "default.handlebars->29->1443",
8227 - "default.handlebars->29->1465"
8231 + "default.handlebars->29->1444",
8232 + "default.handlebars->29->1466"
8233 ]
8234 },
8235 {
@@ -8374,7 +8379,7 @@
8379 "zh-chs": "显示公共链接",
8380 "es": "Mostrar enlace público",
8381 "xloc": [
8377 - "default.handlebars->29->1308"
8382 + "default.handlebars->29->1309"
8383 ]
8384 },
8385 {
@@ -8719,7 +8724,7 @@
8724 "ru": "Скачать список событий в одном из форматов ниже.",
8725 "zh-chs": "使用以下一種文件格式下載事件列表。",
8726 "xloc": [
8722 - "default.handlebars->29->1346"
8727 + "default.handlebars->29->1347"
8728 ]
8729 },
8730 {
@@ -8736,7 +8741,7 @@
8741 "ru": "Скачать список пользователей в одном из форматов ниже.",
8742 "zh-chs": "使用以下一種文件格式下載用戶列表。",
8743 "xloc": [
8739 - "default.handlebars->29->1401"
8744 + "default.handlebars->29->1402"
8745 ]
8746 },
8747 {
@@ -8812,7 +8817,7 @@
8817 "en": "Duplicate Agent",
8818 "nl": "Dubbele agent",
8819 "xloc": [
8815 - "default.handlebars->29->1623"
8820 + "default.handlebars->29->1624"
8821 ]
8822 },
8823 {
@@ -8846,7 +8851,7 @@
8851 "ru": "Скопировать группу пользователей",
8852 "zh-chs": "重複的用戶組",
8853 "xloc": [
8849 - "default.handlebars->29->1457"
8854 + "default.handlebars->29->1458"
8855 ]
8856 },
8857 {
@@ -9037,7 +9042,8 @@
9042 "default-mobile.handlebars->9->312",
9043 "default.handlebars->29->1184",
9044 "default.handlebars->29->1214",
9040 - "default.handlebars->29->1247"
9045 + "default.handlebars->29->1236",
9046 + "default.handlebars->29->1248"
9047 ]
9048 },
9049 {
@@ -9072,7 +9078,7 @@
9078 "zh-chs": "編輯設備組權限",
9079 "xloc": [
9080 "default.handlebars->29->1233",
9075 - "default.handlebars->29->1244"
9081 + "default.handlebars->29->1245"
9082 ]
9083 },
9084 {
@@ -9121,8 +9127,8 @@
9127 "zh-chs": "编辑设备权限",
9128 "es": "Editar los permisos del dispositivo",
9129 "xloc": [
9124 - "default.handlebars->29->1237",
9125 - "default.handlebars->29->1239"
9130 + "default.handlebars->29->1238",
9131 + "default.handlebars->29->1240"
9132 ]
9133 },
9134 {
@@ -9181,7 +9187,7 @@
9187 "zh-chs": "編輯筆記",
9188 "xloc": [
9189 "default-mobile.handlebars->9->319",
9184 - "default.handlebars->29->1254"
9190 + "default.handlebars->29->1255"
9191 ]
9192 },
9193 {
@@ -9205,7 +9211,7 @@
9211 "ru": "Редактировать права пользователя для группы устройств",
9212 "zh-chs": "編輯用戶設備組權限",
9213 "xloc": [
9208 - "default.handlebars->29->1245"
9214 + "default.handlebars->29->1246"
9215 ]
9216 },
9217 {
@@ -9219,8 +9225,7 @@
9225 "zh-chs": "编辑用户设备权限",
9226 "es": "Editar los permisos del usuario del dispositivo",
9227 "xloc": [
9222 - "default.handlebars->29->1240",
9223 - "default.handlebars->29->1242"
9228 + "default.handlebars->29->1241"
9229 ]
9230 },
9231 {
@@ -9237,7 +9242,13 @@
9242 "ru": "Редактировать группу пользователей",
9243 "zh-chs": "編輯用戶組",
9244 "xloc": [
9240 - "default.handlebars->29->1492"
9245 + "default.handlebars->29->1493"
9246 + ]
9247 + },
9248 + {
9249 + "en": "Edit User Group Device Permissions",
9250 + "xloc": [
9251 + "default.handlebars->29->1243"
9252 ]
9253 },
9254 {
@@ -9272,10 +9283,10 @@
9283 "zh-chs": "電子郵件",
9284 "xloc": [
9285 "default-mobile.handlebars->9->40",
9275 - "default.handlebars->29->1413",
9276 - "default.handlebars->29->1513",
9286 + "default.handlebars->29->1414",
9287 "default.handlebars->29->1514",
9278 - "default.handlebars->29->1556",
9288 + "default.handlebars->29->1515",
9289 + "default.handlebars->29->1557",
9290 "default.handlebars->29->270",
9291 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3",
9292 "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->4->1->3"
@@ -9328,7 +9339,7 @@
9339 "zh-chs": "电子邮件流量",
9340 "es": "Tráfico de correo electrónico",
9341 "xloc": [
9331 - "default.handlebars->29->1662"
9342 + "default.handlebars->29->1663"
9343 ]
9344 },
9345 {
@@ -9368,7 +9379,7 @@
9379 "zh-chs": "邮件未验证",
9380 "es": "El email no esta no esta verficado",
9381 "xloc": [
9371 - "default.handlebars->29->1375"
9382 + "default.handlebars->29->1376"
9383 ]
9384 },
9385 {
@@ -9385,8 +9396,8 @@
9396 "ru": "Email подтвержден",
9397 "zh-chs": "電子郵件已驗證",
9398 "xloc": [
9388 - "default.handlebars->29->1376",
9389 - "default.handlebars->29->1510"
9399 + "default.handlebars->29->1377",
9400 + "default.handlebars->29->1511"
9401 ]
9402 },
9403 {
@@ -9403,7 +9414,7 @@
9414 "ru": "Email подтвержден.",
9415 "zh-chs": "電子郵件已驗證。",
9416 "xloc": [
9406 - "default.handlebars->29->1419"
9417 + "default.handlebars->29->1420"
9418 ]
9419 },
9420 {
@@ -9420,7 +9431,7 @@
9431 "ru": "Email не подтвержден",
9432 "zh-chs": "電子郵件未驗證",
9433 "xloc": [
9423 - "default.handlebars->29->1511"
9434 + "default.handlebars->29->1512"
9435 ]
9436 },
9437 {
@@ -9477,7 +9488,7 @@
9488 "zh-chs": "啟用邀請代碼",
9489 "es": "Habilitar Códigos de Invitación",
9490 "xloc": [
9480 - "default.handlebars->29->1275"
9491 + "default.handlebars->29->1276"
9492 ]
9493 },
9494 {
@@ -9529,7 +9540,7 @@
9540 "ru": "Включить веб уведомления",
9541 "zh-chs": "啟用網絡通知",
9542 "xloc": [
9532 - "default.handlebars->container->column_l->p2->p2AccountActions->3->accountEnableNotificationsSpan->0"
9543 + "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->accountEnableNotificationsSpan->0"
9544 ]
9545 },
9546 {
@@ -9802,7 +9813,7 @@
9813 "ru": "Введите разделенный запятыми список имен административных областей.",
9814 "zh-chs": "輸入管理領域名稱的逗號分隔列表。",
9815 "xloc": [
9805 - "default.handlebars->29->1423"
9816 + "default.handlebars->29->1424"
9817 ]
9818 },
9819 {
@@ -9973,7 +9984,7 @@
9984 "ru": "Экспорт списка событий",
9985 "zh-chs": "活動列表導出",
9986 "xloc": [
9976 - "default.handlebars->29->1351"
9987 + "default.handlebars->29->1352"
9988 ]
9989 },
9990 {
@@ -10096,7 +10107,7 @@
10107 "ru": "Внешний",
10108 "zh-chs": "外部",
10109 "xloc": [
10099 - "default.handlebars->29->1647"
10110 + "default.handlebars->29->1648"
10111 ]
10112 },
10113 {
@@ -10323,7 +10334,7 @@
10334 "zh-chs": "文件通知",
10335 "xloc": [
10336 "default.handlebars->29->1114",
10326 - "default.handlebars->29->1536",
10337 + "default.handlebars->29->1537",
10338 "default.handlebars->29->494"
10339 ]
10340 },
@@ -10342,7 +10353,7 @@
10353 "zh-chs": "文件提示",
10354 "xloc": [
10355 "default.handlebars->29->1113",
10345 - "default.handlebars->29->1535",
10356 + "default.handlebars->29->1536",
10357 "default.handlebars->29->493"
10358 ]
10359 },
@@ -10495,8 +10506,8 @@
10506 "ru": "Принудительно сбросить пароль при следующем входе в систему.",
10507 "zh-chs": "下次登錄時強制重置密碼。",
10508 "xloc": [
10498 - "default.handlebars->29->1417",
10499 - "default.handlebars->29->1565"
10509 + "default.handlebars->29->1418",
10510 + "default.handlebars->29->1566"
10511 ]
10512 },
10513 {
@@ -10582,8 +10593,8 @@
10593 "ru": "Свободно",
10594 "zh-chs": "自由",
10595 "xloc": [
10585 - "default.handlebars->29->1608",
10586 - "default.handlebars->29->1610"
10596 + "default.handlebars->29->1609",
10597 + "default.handlebars->29->1611"
10598 ]
10599 },
10600 {
@@ -10777,7 +10788,7 @@
10788 "default-mobile.handlebars->9->67",
10789 "default.handlebars->29->1085",
10790 "default.handlebars->29->1213",
10780 - "default.handlebars->29->1429"
10791 + "default.handlebars->29->1430"
10792 ]
10793 },
10794 {
@@ -10794,7 +10805,7 @@
10805 "ru": "Администратор с полным доступом (все права)",
10806 "zh-chs": "正式管理員(保留所有權利)",
10807 "xloc": [
10797 - "default.handlebars->29->1246"
10808 + "default.handlebars->29->1247"
10809 ]
10810 },
10811 {
@@ -10875,7 +10886,7 @@
10886 "ru": "Администратор с полным доступом",
10887 "zh-chs": "正式管理員",
10888 "xloc": [
10878 - "default.handlebars->29->1506"
10889 + "default.handlebars->29->1507"
10890 ]
10891 },
10892 {
@@ -11170,7 +11181,7 @@
11181 "zh-chs": "從這裡開始!",
11182 "xloc": [
11183 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3noMeshFound->p3createMeshLink2->1->0",
11173 - "default.handlebars->container->column_l->p2->p2noMeshFound->p2createMeshLink2->1->0"
11184 + "default.handlebars->container->column_l->p2->p2info->p2noMeshFound->p2createMeshLink2->1->0"
11185 ]
11186 },
11187 {
@@ -11278,8 +11289,8 @@
11289 "ru": "Групповое действие",
11290 "zh-chs": "集體行動",
11291 "xloc": [
11281 - "default.handlebars->29->1387",
11282 - "default.handlebars->29->1449",
11292 + "default.handlebars->29->1388",
11293 + "default.handlebars->29->1450",
11294 "default.handlebars->29->384",
11295 "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar",
11296 "default.handlebars->container->column_l->p4->3->1->0->3->3",
@@ -11300,7 +11311,7 @@
11311 "ru": "Члены группы",
11312 "zh-chs": "小組成員",
11313 "xloc": [
11303 - "default.handlebars->29->1469"
11314 + "default.handlebars->29->1470"
11315 ]
11316 },
11317 {
@@ -11368,7 +11379,7 @@
11379 "ru": "Группы",
11380 "zh-chs": "團體",
11381 "xloc": [
11371 - "default.handlebars->29->1356",
11382 + "default.handlebars->29->1357",
11383 "default.handlebars->container->topbar->1->1->UsersSubMenuSpan->UsersSubMenu->1->0->UsersGroups"
11384 ]
11385 },
@@ -11473,7 +11484,7 @@
11484 "ru": "Всего кучи",
11485 "zh-chs": "堆總數",
11486 "xloc": [
11476 - "default.handlebars->29->1649"
11487 + "default.handlebars->29->1650"
11488 ]
11489 },
11490 {
@@ -11490,7 +11501,7 @@
11501 "ru": "Куча используется",
11502 "zh-chs": "堆使用",
11503 "xloc": [
11493 - "default.handlebars->29->1648"
11504 + "default.handlebars->29->1649"
11505 ]
11506 },
11507 {
@@ -11727,7 +11738,7 @@
11738 "zh-chs": "保持{2}的{0}入口{1}",
11739 "xloc": [
11740 "default-mobile.handlebars->9->91",
11730 - "default.handlebars->29->1338"
11741 + "default.handlebars->29->1339"
11742 ]
11743 },
11744 {
@@ -12222,9 +12233,9 @@
12233 "ru": "Тип установки",
12234 "zh-chs": "安裝類型",
12235 "xloc": [
12225 - "default.handlebars->29->1277",
12226 - "default.handlebars->29->1284",
12227 - "default.handlebars->29->285",
12236 + "default.handlebars->29->1278",
12237 + "default.handlebars->29->1285",
12238 + "default.handlebars->29->285",
12239 "default.handlebars->29->307"
12240 ]
12241 },
@@ -12260,10 +12271,10 @@
12271 "ru": "Intel AMT",
12272 "zh-chs": "英特爾AMT",
12273 "xloc": [
12263 - "default.handlebars->29->1296",
12264 - "default.handlebars->29->1302",
12265 - "default.handlebars->29->1645",
12266 - "default.handlebars->29->1667"
12274 + "default.handlebars->29->1297",
12275 + "default.handlebars->29->1303",
12276 + "default.handlebars->29->1646",
12277 + "default.handlebars->29->1668"
12278 ]
12279 },
12280 {
@@ -12619,7 +12630,7 @@
12630 "zh-chs": "英特爾®AMT桌面和串行事件。",
12631 "xloc": [
12632 "default.handlebars->29->1046",
12622 - "default.handlebars->29->1292"
12633 + "default.handlebars->29->1293"
12634 ]
12635 },
12636 {
@@ -12914,8 +12925,8 @@
12925 "ru": "Только интерактивный режим",
12926 "zh-chs": "僅限互動",
12927 "xloc": [
12917 - "default.handlebars->29->1280",
12918 - "default.handlebars->29->1287",
12928 + "default.handlebars->29->1281",
12929 + "default.handlebars->29->1288",
12930 "default.handlebars->29->288",
12931 "default.handlebars->29->310"
12932 ]
@@ -12968,7 +12979,7 @@
12979 "ru": "Некорректный тип группы устройств",
12980 "zh-chs": "無效的設備組類型",
12981 "xloc": [
12971 - "default.handlebars->29->1622"
12982 + "default.handlebars->29->1623"
12983 ]
12984 },
12985 {
@@ -12985,7 +12996,7 @@
12996 "ru": "Некорректный JSON",
12997 "zh-chs": "無效的JSON",
12998 "xloc": [
12988 - "default.handlebars->29->1616"
12999 + "default.handlebars->29->1617"
13000 ]
13001 },
13002 {
@@ -13002,8 +13013,8 @@
13013 "ru": "Некорректный формат файла JSON.",
13014 "zh-chs": "無效的JSON文件格式。",
13015 "xloc": [
13005 - "default.handlebars->29->1398",
13006 - "default.handlebars->29->1400"
13016 + "default.handlebars->29->1399",
13017 + "default.handlebars->29->1401"
13018 ]
13019 },
13020 {
@@ -13020,7 +13031,7 @@
13031 "ru": "Некорректный файл JSON: {0}.",
13032 "zh-chs": "無效的JSON文件:{0}。",
13033 "xloc": [
13023 - "default.handlebars->29->1396"
13034 + "default.handlebars->29->1397"
13035 ]
13036 },
13037 {
@@ -13037,7 +13048,7 @@
13048 "ru": "Некорректная сигнатура PKCS",
13049 "zh-chs": "無效的PKCS簽名",
13050 "xloc": [
13040 - "default.handlebars->29->1614"
13051 + "default.handlebars->29->1615"
13052 ]
13053 },
13054 {
@@ -13054,7 +13065,7 @@
13065 "ru": "Некорректная сигнатура RSA",
13066 "zh-chs": "無效的RSA密碼",
13067 "xloc": [
13057 - "default.handlebars->29->1615"
13068 + "default.handlebars->29->1616"
13069 ]
13070 },
13071 {
@@ -13190,7 +13201,7 @@
13201 "zh-chs": "任何人都可以使用邀請代碼通過以下公共鏈接將設備加入該設備組:",
13202 "es": "Los códigos de invitación pueden ser usados por cualquiera para unir dispositivos a este grupo de dispositivos usando el siguiente enlace público:",
13203 "xloc": [
13193 - "default.handlebars->29->1282"
13204 + "default.handlebars->29->1283"
13205 ]
13206 },
13207 {
@@ -13241,10 +13252,10 @@
13252 "es": "Códigos de invitación",
13253 "xloc": [
13254 "default.handlebars->29->1125",
13244 - "default.handlebars->29->1276",
13245 - "default.handlebars->29->1281",
13246 - "default.handlebars->29->1283",
13247 - "default.handlebars->29->1288"
13255 + "default.handlebars->29->1277",
13256 + "default.handlebars->29->1282",
13257 + "default.handlebars->29->1284",
13258 + "default.handlebars->29->1289"
13259 ]
13260 },
13261 {
@@ -13354,8 +13365,8 @@
13365 "ru": "Формат JSON",
13366 "zh-chs": "JSON格式",
13367 "xloc": [
13357 - "default.handlebars->29->1349",
13358 - "default.handlebars->29->1404",
13368 + "default.handlebars->29->1350",
13369 + "default.handlebars->29->1405",
13370 "default.handlebars->29->392"
13371 ]
13372 },
@@ -13847,7 +13858,7 @@
13858 "ru": "Последний доступ",
13859 "zh-chs": "最後訪問",
13860 "xloc": [
13850 - "default.handlebars->29->1357"
13861 + "default.handlebars->29->1358"
13862 ]
13863 },
13864 {
@@ -13864,7 +13875,7 @@
13875 "ru": "Последний вход в систему",
13876 "zh-chs": "上次登錄",
13877 "xloc": [
13867 - "default.handlebars->29->1518"
13878 + "default.handlebars->29->1519"
13879 ]
13880 },
13881 {
@@ -13922,7 +13933,7 @@
13933 "ru": "Последнее изменение: {0}",
13934 "zh-chs": "上次更改:{0}",
13935 "xloc": [
13925 - "default.handlebars->29->1522"
13936 + "default.handlebars->29->1523"
13937 ]
13938 },
13939 {
@@ -13973,7 +13984,7 @@
13984 "ru": "Последний вход в систему: {0}",
13985 "zh-chs": "上次登錄:{0}",
13986 "xloc": [
13976 - "default.handlebars->29->1367"
13987 + "default.handlebars->29->1368"
13988 ]
13989 },
13990 {
@@ -14115,7 +14126,7 @@
14126 "ru": "Меньше",
14127 "zh-chs": "減",
14128 "xloc": [
14118 - "default.handlebars->29->1684"
14129 + "default.handlebars->29->1685"
14130 ]
14131 },
14132 {
@@ -14166,7 +14177,7 @@
14177 "zh-chs": "有限輸入",
14178 "xloc": [
14179 "default-mobile.handlebars->9->324",
14169 - "default.handlebars->29->1260",
14180 + "default.handlebars->29->1261",
14181 "default.handlebars->29->559",
14182 "default.handlebars->29->578"
14183 ]
@@ -14601,7 +14612,7 @@
14612 "zh-chs": "本地化設置",
14613 "xloc": [
14614 "default.handlebars->29->1041",
14604 - "default.handlebars->container->column_l->p2->p2AccountActions->3->5"
14615 + "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->5"
14616 ]
14617 },
14618 {
@@ -14652,7 +14663,7 @@
14663 "ru": "Заблокировать учетную запись",
14664 "zh-chs": "鎖定賬戶",
14665 "xloc": [
14655 - "default.handlebars->29->1435"
14666 + "default.handlebars->29->1436"
14667 ]
14668 },
14669 {
@@ -14669,7 +14680,7 @@
14680 "ru": "Заблокировать учетную запись",
14681 "zh-chs": "鎖定賬戶",
14682 "xloc": [
14672 - "default.handlebars->29->1384"
14683 + "default.handlebars->29->1385"
14684 ]
14685 },
14686 {
@@ -14686,7 +14697,7 @@
14697 "ru": "Заблокирован",
14698 "zh-chs": "已鎖定",
14699 "xloc": [
14689 - "default.handlebars->29->1368"
14700 + "default.handlebars->29->1369"
14701 ]
14702 },
14703 {
@@ -14703,7 +14714,7 @@
14714 "ru": "Заблокированная учетная запись",
14715 "zh-chs": "賬戶鎖定",
14716 "xloc": [
14706 - "default.handlebars->29->1503"
14717 + "default.handlebars->29->1504"
14718 ]
14719 },
14720 {
@@ -15191,7 +15202,7 @@
15202 "ru": "Сообщения главного сервера",
15203 "zh-chs": "主服務器消息",
15204 "xloc": [
15194 - "default.handlebars->29->1656"
15205 + "default.handlebars->29->1657"
15206 ]
15207 },
15208 {
@@ -15280,7 +15291,7 @@
15291 "default-mobile.handlebars->9->296",
15292 "default-mobile.handlebars->9->314",
15293 "default.handlebars->29->1216",
15283 - "default.handlebars->29->1249"
15294 + "default.handlebars->29->1250"
15295 ]
15296 },
15297 {
@@ -15300,7 +15311,7 @@
15311 "default-mobile.handlebars->9->295",
15312 "default-mobile.handlebars->9->313",
15313 "default.handlebars->29->1215",
15303 - "default.handlebars->29->1248"
15314 + "default.handlebars->29->1249"
15315 ]
15316 },
15317 {
@@ -15348,7 +15359,7 @@
15359 "ru": "Управление группами пользователя",
15360 "zh-chs": "管理用戶組",
15361 "xloc": [
15351 - "default.handlebars->29->1434"
15362 + "default.handlebars->29->1435"
15363 ]
15364 },
15365 {
@@ -15365,7 +15376,7 @@
15376 "ru": "Управление пользователями",
15377 "zh-chs": "管理用戶",
15378 "xloc": [
15368 - "default.handlebars->29->1433",
15379 + "default.handlebars->29->1434",
15380 "default.handlebars->29->572"
15381 ]
15382 },
@@ -15384,7 +15395,7 @@
15395 "zh-chs": "管理身份驗證器應用",
15396 "xloc": [
15397 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3AccountActions->3->manageAuthApp->0",
15387 - "default.handlebars->container->column_l->p2->p2AccountSecurity->3->manageAuthApp->1->0"
15398 + "default.handlebars->container->column_l->p2->p2info->p2AccountSecurity->3->manageAuthApp->1->0"
15399 ]
15400 },
15401 {
@@ -15402,7 +15413,7 @@
15413 "zh-chs": "管理備用碼",
15414 "xloc": [
15415 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3AccountActions->3->manageOtp->0",
15405 - "default.handlebars->container->column_l->p2->p2AccountSecurity->3->manageOtp->1->0"
15416 + "default.handlebars->container->column_l->p2->p2info->p2AccountSecurity->3->manageOtp->1->0"
15417 ]
15418 },
15419 {
@@ -15420,7 +15431,7 @@
15431 "es": "Administrar autenticación por mail",
15432 "xloc": [
15433 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3AccountActions->3->manageEmail2FA->0",
15423 - "default.handlebars->container->column_l->p2->p2AccountSecurity->3->manageEmail2FA->1->0"
15434 + "default.handlebars->container->column_l->p2->p2info->p2AccountSecurity->3->manageEmail2FA->1->0"
15435 ]
15436 },
15437 {
@@ -15437,7 +15448,7 @@
15448 "ru": "Управление ключами безопасности",
15449 "zh-chs": "管理安全密鑰",
15450 "xloc": [
15440 - "default.handlebars->container->column_l->p2->p2AccountSecurity->3->manageHardwareOtp->1->0"
15451 + "default.handlebars->container->column_l->p2->p2info->p2AccountSecurity->3->manageHardwareOtp->1->0"
15452 ]
15453 },
15454 {
@@ -15489,7 +15500,7 @@
15500 "ru": "Менеджер",
15501 "zh-chs": "經理",
15502 "xloc": [
15492 - "default.handlebars->29->1373"
15503 + "default.handlebars->29->1374"
15504 ]
15505 },
15506 {
@@ -15592,7 +15603,7 @@
15603 "ru": "Достигнуто максимальное число сессий",
15604 "zh-chs": "達到的會話數上限",
15605 "xloc": [
15595 - "default.handlebars->29->1620"
15606 + "default.handlebars->29->1621"
15607 ]
15608 },
15609 {
@@ -15646,7 +15657,7 @@
15657 "ru": "Мегабайт",
15658 "zh-chs": "兆字節",
15659 "xloc": [
15649 - "default.handlebars->29->1646"
15660 + "default.handlebars->29->1647"
15661 ]
15662 },
15663 {
@@ -15663,7 +15674,7 @@
15674 "ru": "ОЗУ",
15675 "zh-chs": "記憶",
15676 "xloc": [
15666 - "default.handlebars->29->1637",
15677 + "default.handlebars->29->1638",
15678 "default.handlebars->29->802",
15679 "default.handlebars->container->column_l->p40->3->1->p40type->3"
15680 ]
@@ -15799,7 +15810,7 @@
15810 "ru": "Трафик MeshAgent",
15811 "zh-chs": "MeshAgent流量",
15812 "xloc": [
15802 - "default.handlebars->29->1658"
15813 + "default.handlebars->29->1659"
15814 ]
15815 },
15816 {
@@ -15816,7 +15827,7 @@
15827 "ru": "Обновление MeshAgent",
15828 "zh-chs": "MeshAgent更新",
15829 "xloc": [
15819 - "default.handlebars->29->1659"
15830 + "default.handlebars->29->1660"
15831 ]
15832 },
15833 {
@@ -15919,7 +15930,7 @@
15930 "ru": "Соединения сервера MeshCentral",
15931 "zh-chs": "MeshCentral服務器對等",
15932 "xloc": [
15922 - "default.handlebars->29->1657"
15933 + "default.handlebars->29->1658"
15934 ]
15935 },
15936 {
@@ -16182,7 +16193,7 @@
16193 "ru": "Диспетчер сообщения",
16194 "zh-chs": "郵件調度程序",
16195 "xloc": [
16185 - "default.handlebars->29->1655"
16196 + "default.handlebars->29->1656"
16197 ]
16198 },
16199 {
@@ -16313,7 +16324,7 @@
16324 "ru": "Еще",
16325 "zh-chs": "更多",
16326 "xloc": [
16316 - "default.handlebars->29->1683"
16327 + "default.handlebars->29->1684"
16328 ]
16329 },
16330 {
@@ -16643,12 +16654,12 @@
16654 "default.handlebars->29->1072",
16655 "default.handlebars->29->1099",
16656 "default.handlebars->29->1182",
16646 - "default.handlebars->29->1355",
16647 - "default.handlebars->29->1440",
16648 - "default.handlebars->29->1454",
16649 - "default.handlebars->29->1459",
16650 - "default.handlebars->29->1461",
16651 - "default.handlebars->29->1490",
16657 + "default.handlebars->29->1356",
16658 + "default.handlebars->29->1441",
16659 + "default.handlebars->29->1455",
16660 + "default.handlebars->29->1460",
16661 + "default.handlebars->29->1462",
16662 + "default.handlebars->29->1491",
16663 "default.handlebars->29->450",
16664 "default.handlebars->29->679",
16665 "default.handlebars->29->752",
@@ -16690,7 +16701,7 @@
16701 "ru": "Имя1, Имя2, Имя3",
16702 "zh-chs": "名稱1,名稱2,名稱3",
16703 "xloc": [
16693 - "default.handlebars->29->1425"
16704 + "default.handlebars->29->1426"
16705 ]
16706 },
16707 {
@@ -16807,7 +16818,7 @@
16818 "zh-chs": "新",
16819 "xloc": [
16820 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3createMeshLink1->1",
16810 - "default.handlebars->container->column_l->p2->p2createMeshLink1->1"
16821 + "default.handlebars->container->column_l->p2->p2info->p2createMeshLink1->1"
16822 ]
16823 },
16824 {
@@ -16863,7 +16874,7 @@
16874 "xloc": [
16875 "default-mobile.handlebars->9->248",
16876 "default-mobile.handlebars->9->82",
16866 - "default.handlebars->29->1328",
16877 + "default.handlebars->29->1329",
16878 "default.handlebars->29->716",
16879 "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
16880 "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3"
@@ -16966,10 +16977,7 @@
16977 "nl": "Geen toegevoegde rechten",
16978 "ru": "Нет добавленных прав",
16979 "zh-chs": "没有增加的权利",
16969 - "es": "Sin derechos añadidos",
16970 - "xloc": [
16971 - "default.handlebars->29->569"
16972 - ]
16980 + "es": "Sin derechos añadidos"
16981 },
16982 {
16983 "cs": "Žádné přihlašovací údaje",
@@ -17005,7 +17013,7 @@
17013 "zh-chs": "沒有桌面",
17014 "es": "Sin Escritorio",
17015 "xloc": [
17008 - "default.handlebars->29->1256",
17016 + "default.handlebars->29->1257",
17017 "default.handlebars->29->560",
17018 "default.handlebars->29->579"
17019 ]
@@ -17041,8 +17049,8 @@
17049 "ru": "События не найдены",
17050 "zh-chs": "找不到活動",
17051 "xloc": [
17044 - "default.handlebars->29->1345",
17045 - "default.handlebars->29->1602",
17052 + "default.handlebars->29->1346",
17053 + "default.handlebars->29->1603",
17054 "default.handlebars->29->750"
17055 ]
17056 },
@@ -17079,7 +17087,7 @@
17087 "zh-chs": "沒有文件",
17088 "xloc": [
17089 "default-mobile.handlebars->9->322",
17082 - "default.handlebars->29->1258",
17090 + "default.handlebars->29->1259",
17091 "default.handlebars->29->557",
17092 "default.handlebars->29->576"
17093 ]
@@ -17116,7 +17124,7 @@
17124 "default-mobile.handlebars->9->302",
17125 "default-mobile.handlebars->9->323",
17126 "default.handlebars->29->1223",
17119 - "default.handlebars->29->1259"
17127 + "default.handlebars->29->1260"
17128 ]
17129 },
17130 {
@@ -17184,7 +17192,7 @@
17192 "ru": "Нет членов",
17193 "zh-chs": "沒有會員",
17194 "xloc": [
17187 - "default.handlebars->29->1472"
17195 + "default.handlebars->29->1473"
17196 ]
17197 },
17198 {
@@ -17201,7 +17209,7 @@
17209 "ru": "Запретить создание групп устройств",
17210 "zh-chs": "沒有新的設備組",
17211 "xloc": [
17204 - "default.handlebars->29->1436"
17212 + "default.handlebars->29->1437"
17213 ]
17214 },
17215 {
@@ -17241,7 +17249,8 @@
17249 "default-mobile.handlebars->9->328",
17250 "default-mobile.handlebars->9->68",
17251 "default.handlebars->29->1086",
17244 - "default.handlebars->29->1264",
17252 + "default.handlebars->29->1265",
17253 + "default.handlebars->29->569",
17254 "default.handlebars->29->588"
17255 ]
17256 },
@@ -17279,7 +17288,7 @@
17288 "zh-chs": "沒有終端",
17289 "xloc": [
17290 "default-mobile.handlebars->9->321",
17282 - "default.handlebars->29->1257",
17291 + "default.handlebars->29->1258",
17292 "default.handlebars->29->556",
17293 "default.handlebars->29->575"
17294 ]
@@ -17316,7 +17325,7 @@
17325 "ru": "Нет инструментов (MeshCmd/Router)",
17326 "zh-chs": "沒有工具(MeshCmd /路由器)",
17327 "xloc": [
17319 - "default.handlebars->29->1437"
17328 + "default.handlebars->29->1438"
17329 ]
17330 },
17331 {
@@ -17333,8 +17342,8 @@
17342 "ru": "Нет общих групп устройств",
17343 "zh-chs": "沒有共同的設備組",
17344 "xloc": [
17336 - "default.handlebars->29->1478",
17337 - "default.handlebars->29->1576"
17345 + "default.handlebars->29->1479",
17346 + "default.handlebars->29->1577"
17347 ]
17348 },
17349 {
@@ -17353,7 +17362,7 @@
17362 "xloc": [
17363 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3noMeshFound",
17364 "default.handlebars->container->column_l->p1->NoMeshesPanel->1->1->0->3->getStarted2",
17356 - "default.handlebars->container->column_l->p2->p2noMeshFound"
17365 + "default.handlebars->container->column_l->p2->p2info->p2noMeshFound"
17366 ]
17367 },
17368 {
@@ -17421,8 +17430,8 @@
17430 "zh-chs": "沒有共同的設備",
17431 "es": "Sin dispositivos en común",
17432 "xloc": [
17424 - "default.handlebars->29->1484",
17425 - "default.handlebars->29->1588"
17433 + "default.handlebars->29->1485",
17434 + "default.handlebars->29->1589"
17435 ]
17436 },
17437 {
@@ -17439,7 +17448,7 @@
17448 "ru": "В группе нет устройств.",
17449 "zh-chs": "該設備組中沒有設備。",
17450 "xloc": [
17442 - "default.handlebars->29->1305"
17451 + "default.handlebars->29->1306"
17452 ]
17453 },
17454 {
@@ -17508,7 +17517,7 @@
17517 "ru": "Группы не найдены.",
17518 "zh-chs": "找不到群組。",
17519 "xloc": [
17511 - "default.handlebars->29->1439"
17520 + "default.handlebars->29->1440"
17521 ]
17522 },
17523 {
@@ -17610,7 +17619,7 @@
17619 "ru": "Нет серверных прав",
17620 "zh-chs": "沒有服務器權限",
17621 "xloc": [
17613 - "default.handlebars->29->1504"
17622 + "default.handlebars->29->1505"
17623 ]
17624 },
17625 {
@@ -17627,7 +17636,7 @@
17636 "ru": "Нет членства в группах пользователей",
17637 "zh-chs": "沒有用戶組成員身份",
17638 "xloc": [
17630 - "default.handlebars->29->1582"
17639 + "default.handlebars->29->1583"
17640 ]
17641 },
17642 {
@@ -17644,7 +17653,7 @@
17653 "ru": "Пользователи не найдены.",
17654 "zh-chs": "未找到相應的用戶。",
17655 "xloc": [
17647 - "default.handlebars->29->1363"
17656 + "default.handlebars->29->1364"
17657 ]
17658 },
17659 {
@@ -17724,12 +17733,12 @@
17733 "default.handlebars->29->1117",
17734 "default.handlebars->29->1122",
17735 "default.handlebars->29->1124",
17727 - "default.handlebars->29->1315",
17728 - "default.handlebars->29->1458",
17736 + "default.handlebars->29->1316",
17737 + "default.handlebars->29->1459",
17738 "default.handlebars->29->149",
17730 - "default.handlebars->29->1523",
17731 - "default.handlebars->29->1527",
17732 - "default.handlebars->29->1539",
17739 + "default.handlebars->29->1524",
17740 + "default.handlebars->29->1528",
17741 + "default.handlebars->29->1540",
17742 "default.handlebars->29->165",
17743 "default.handlebars->29->166",
17744 "default.handlebars->29->443",
@@ -17861,8 +17870,8 @@
17870 "ru": "Не подключен",
17871 "zh-chs": "未連接",
17872 "xloc": [
17864 - "default.handlebars->29->1294",
17865 - "default.handlebars->29->1300"
17873 + "default.handlebars->29->1295",
17874 + "default.handlebars->29->1301"
17875 ]
17876 },
17877 {
@@ -17896,7 +17905,7 @@
17905 "ru": "Не задано",
17906 "zh-chs": "沒有設置",
17907 "xloc": [
17899 - "default.handlebars->29->1509"
17908 + "default.handlebars->29->1510"
17909 ]
17910 },
17911 {
@@ -17913,7 +17922,7 @@
17922 "zh-chs": "未經審核的",
17923 "es": "Sin Verificar",
17924 "xloc": [
17916 - "default.handlebars->29->1558"
17925 + "default.handlebars->29->1559"
17926 ]
17927 },
17928 {
@@ -17931,7 +17940,7 @@
17940 "zh-chs": "筆記",
17941 "xloc": [
17942 "default.handlebars->29->1132",
17934 - "default.handlebars->29->1546",
17943 + "default.handlebars->29->1547",
17944 "default.handlebars->29->513",
17945 "default.handlebars->29->565",
17946 "default.handlebars->29->584",
@@ -17970,8 +17979,8 @@
17979 "zh-chs": "通知設置",
17980 "xloc": [
17981 "default.handlebars->29->1047",
17973 - "default.handlebars->29->1293",
17974 - "default.handlebars->container->column_l->p2->p2AccountActions->3->8"
17982 + "default.handlebars->29->1294",
17983 + "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->8"
17984 ]
17985 },
17986 {
@@ -17988,7 +17997,7 @@
17997 "ru": "Уведомления также должны быть включены в настройках учетной записи.",
17998 "zh-chs": "通知設置還必須在帳戶設置中啟用。",
17999 "xloc": [
17991 - "default.handlebars->29->1289"
18000 + "default.handlebars->29->1290"
18001 ]
18002 },
18003 {
@@ -18039,7 +18048,7 @@
18048 "ru": "Уведомить",
18049 "zh-chs": "通知",
18050 "xloc": [
18042 - "default.handlebars->29->1548"
18051 + "default.handlebars->29->1549"
18052 ]
18053 },
18054 {
@@ -18075,7 +18084,7 @@
18084 "ru": "Уведомить {0}",
18085 "zh-chs": "通知{0}",
18086 "xloc": [
18078 - "default.handlebars->29->1391"
18087 + "default.handlebars->29->1392"
18088 ]
18089 },
18090 {
@@ -18151,7 +18160,7 @@
18160 "ru": "Произошло в {0}",
18161 "zh-chs": "發生在{0}",
18162 "xloc": [
18154 - "default.handlebars->29->1605"
18163 + "default.handlebars->29->1606"
18164 ]
18165 },
18166 {
@@ -18168,7 +18177,7 @@
18177 "ru": "Оффлайн пользователи",
18178 "zh-chs": "離線用戶",
18179 "xloc": [
18171 - "default.handlebars->29->1360"
18180 + "default.handlebars->29->1361"
18181 ]
18182 },
18183 {
@@ -18221,7 +18230,7 @@
18230 "ru": "Онлайн пользователи",
18231 "zh-chs": "在線用戶",
18232 "xloc": [
18224 - "default.handlebars->29->1359"
18233 + "default.handlebars->29->1360"
18234 ]
18235 },
18236 {
@@ -18365,8 +18374,8 @@
18374 "zh-chs": "運作方式",
18375 "xloc": [
18376 "default-mobile.handlebars->9->213",
18368 - "default.handlebars->29->1383",
18369 - "default.handlebars->29->1447",
18377 + "default.handlebars->29->1384",
18378 + "default.handlebars->29->1448",
18379 "default.handlebars->29->376",
18380 "default.handlebars->29->602"
18381 ]
@@ -18540,7 +18549,7 @@
18549 "ru": "Частично",
18550 "zh-chs": "部分的",
18551 "xloc": [
18543 - "default.handlebars->29->1374"
18552 + "default.handlebars->29->1375"
18553 ]
18554 },
18555 {
@@ -18604,7 +18613,7 @@
18613 "ru": "Частичные права",
18614 "zh-chs": "部分權利",
18615 "xloc": [
18607 - "default.handlebars->29->1507"
18616 + "default.handlebars->29->1508"
18617 ]
18618 },
18619 {
@@ -18639,12 +18648,12 @@
18648 "zh-chs": "密碼",
18649 "xloc": [
18650 "default-mobile.handlebars->9->216",
18642 - "default.handlebars->29->1414",
18651 "default.handlebars->29->1415",
18644 - "default.handlebars->29->1519",
18645 - "default.handlebars->29->1521",
18646 - "default.handlebars->29->1561",
18652 + "default.handlebars->29->1416",
18653 + "default.handlebars->29->1520",
18654 + "default.handlebars->29->1522",
18655 "default.handlebars->29->1562",
18656 + "default.handlebars->29->1563",
18657 "default.handlebars->29->227",
18658 "default.handlebars->29->256",
18659 "default.handlebars->29->608"
@@ -18740,7 +18749,7 @@
18749 "ru": "Подсказка пароля",
18750 "zh-chs": "密碼提示",
18751 "xloc": [
18743 - "default.handlebars->29->1563"
18752 + "default.handlebars->29->1564"
18753 ]
18754 },
18755 {
@@ -18863,7 +18872,7 @@
18872 "default-mobile.handlebars->9->90",
18873 "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->3",
18874 "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->3",
18866 - "default.handlebars->29->1337",
18875 + "default.handlebars->29->1338",
18876 "default.handlebars->29->707",
18877 "default.handlebars->29->729",
18878 "default.handlebars->container->column_l->p12->termTable->1->1->6->1->3",
@@ -19027,8 +19036,8 @@
19036 "zh-chs": "權限",
19037 "xloc": [
19038 "default-mobile.handlebars->9->330",
19030 - "default.handlebars->29->1267",
19031 - "default.handlebars->29->1358"
19039 + "default.handlebars->29->1268",
19040 + "default.handlebars->29->1359"
19041 ]
19042 },
19043 {
@@ -19181,7 +19190,7 @@
19190 "zh-chs": "插件動作",
19191 "xloc": [
19192 "default.handlebars->29->160",
19184 - "default.handlebars->29->1680"
19193 + "default.handlebars->29->1681"
19194 ]
19195 },
19196 {
@@ -19406,7 +19415,7 @@
19415 "ru": "Состояния питания",
19416 "zh-chs": "電力國",
19417 "xloc": [
19409 - "default.handlebars->29->1298",
19418 + "default.handlebars->29->1299",
19419 "default.handlebars->container->column_l->p21->3->1->meshPowerChartDiv->1"
19420 ]
19421 },
@@ -19640,7 +19649,7 @@
19649 "zh-chs": "公開連結",
19650 "xloc": [
19651 "default-mobile.handlebars->9->77",
19643 - "default.handlebars->29->1322"
19652 + "default.handlebars->29->1323"
19653 ]
19654 },
19655 {
@@ -19897,7 +19906,7 @@
19906 "ru": "RSS",
19907 "zh-chs": "的RSS",
19908 "xloc": [
19900 - "default.handlebars->29->1650"
19909 + "default.handlebars->29->1651"
19910 ]
19911 },
19912 {
@@ -19914,7 +19923,7 @@
19923 "ru": "Случайный пароль.",
19924 "zh-chs": "隨機化密碼。",
19925 "xloc": [
19917 - "default.handlebars->29->1416"
19926 + "default.handlebars->29->1417"
19927 ]
19928 },
19929 {
@@ -19965,7 +19974,7 @@
19974 "ru": "Области",
19975 "zh-chs": "境界",
19976 "xloc": [
19968 - "default.handlebars->29->1424"
19977 + "default.handlebars->29->1425"
19978 ]
19979 },
19980 {
@@ -19984,7 +19993,7 @@
19993 "xloc": [
19994 "default-mobile.handlebars->9->249",
19995 "default-mobile.handlebars->9->83",
19987 - "default.handlebars->29->1329",
19996 + "default.handlebars->29->1330",
19997 "default.handlebars->29->717"
19998 ]
19999 },
@@ -20081,7 +20090,7 @@
20090 "ru": "Число ретрансляций",
20091 "zh-chs": "中繼計數",
20092 "xloc": [
20084 - "default.handlebars->29->1632"
20093 + "default.handlebars->29->1633"
20094 ]
20095 },
20096 {
@@ -20098,7 +20107,7 @@
20107 "ru": "Ошибки ретранслятора",
20108 "zh-chs": "中繼錯誤",
20109 "xloc": [
20101 - "default.handlebars->29->1625"
20110 + "default.handlebars->29->1626"
20111 ]
20112 },
20113 {
@@ -20115,8 +20124,8 @@
20124 "ru": "Сессии ретранслятора",
20125 "zh-chs": "接力會議",
20126 "xloc": [
20118 - "default.handlebars->29->1631",
20119 - "default.handlebars->29->1644"
20127 + "default.handlebars->29->1632",
20128 + "default.handlebars->29->1645"
20129 ]
20130 },
20131 {
@@ -20236,7 +20245,7 @@
20245 "default-mobile.handlebars->9->297",
20246 "default-mobile.handlebars->9->315",
20247 "default.handlebars->29->1217",
20239 - "default.handlebars->29->1250"
20248 + "default.handlebars->29->1251"
20249 ]
20250 },
20251 {
@@ -20323,7 +20332,7 @@
20332 "default-mobile.handlebars->9->298",
20333 "default-mobile.handlebars->9->320",
20334 "default.handlebars->29->1218",
20326 - "default.handlebars->29->1255"
20335 + "default.handlebars->29->1256"
20336 ]
20337 },
20338 {
@@ -20407,16 +20416,16 @@
20416 "en": "Remove Device Group Permissions",
20417 "nl": "Apparaatgroepmachtigingen verwijderen",
20418 "xloc": [
20410 - "default.handlebars->29->1488",
20411 - "default.handlebars->29->1600"
20419 + "default.handlebars->29->1489",
20420 + "default.handlebars->29->1601"
20421 ]
20422 },
20423 {
20424 "en": "Remove Device Permissions",
20425 "nl": "Apparaatmachtigingen verwijderen",
20426 "xloc": [
20418 - "default.handlebars->29->1486",
20419 - "default.handlebars->29->1589"
20427 + "default.handlebars->29->1487",
20428 + "default.handlebars->29->1590"
20429 ]
20430 },
20431 {
@@ -20437,30 +20446,30 @@
20446 "en": "Remove User Group Membership",
20447 "nl": "Lidmaatschap van gebruikersgroep verwijderen",
20448 "xloc": [
20440 - "default.handlebars->29->1596"
20449 + "default.handlebars->29->1597"
20450 ]
20451 },
20452 {
20453 "en": "Remove User Group Permissions",
20454 "nl": "Gebruikersgroepmachtigingen verwijderen",
20455 "xloc": [
20447 - "default.handlebars->29->1272",
20448 - "default.handlebars->29->1593"
20456 + "default.handlebars->29->1273",
20457 + "default.handlebars->29->1594"
20458 ]
20459 },
20460 {
20461 "en": "Remove User Membership",
20462 "nl": "Gebruikerslidmaatschap verwijderen",
20463 "xloc": [
20455 - "default.handlebars->29->1496"
20464 + "default.handlebars->29->1497"
20465 ]
20466 },
20467 {
20468 "en": "Remove User Permissions",
20469 "nl": "Gebruikersmachtigingen verwijderen",
20470 "xloc": [
20462 - "default.handlebars->29->1270",
20463 - "default.handlebars->29->1591"
20471 + "default.handlebars->29->1271",
20472 + "default.handlebars->29->1592"
20473 ]
20474 },
20475 {
@@ -20477,7 +20486,7 @@
20486 "ru": "Удалить все двухфакторные аутентификации.",
20487 "zh-chs": "刪除所有第二因素驗證。",
20488 "xloc": [
20480 - "default.handlebars->29->1566"
20489 + "default.handlebars->29->1567"
20490 ]
20491 },
20492 {
@@ -20494,7 +20503,7 @@
20503 "ru": "Удалить все прошлые события для этого userid.",
20504 "zh-chs": "刪除此用戶標識的所有先前事件。",
20505 "xloc": [
20497 - "default.handlebars->29->1418"
20506 + "default.handlebars->29->1419"
20507 ]
20508 },
20509 {
@@ -20559,7 +20568,7 @@
20568 "zh-chs": "删除该用户",
20569 "es": "Eliminar a este usuario",
20570 "xloc": [
20562 - "default.handlebars->29->1550"
20571 + "default.handlebars->29->1551"
20572 ]
20573 },
20574 {
@@ -20576,14 +20585,14 @@
20585 "ru": "Удалить членство пользователя в группе",
20586 "zh-chs": "刪除用戶組成員身份",
20587 "xloc": [
20579 - "default.handlebars->29->1580"
20588 + "default.handlebars->29->1581"
20589 ]
20590 },
20591 {
20592 "en": "Remove user group rights to this device",
20593 "nl": "Gebruikersrechten voor dit apparaat verwijderen",
20594 "xloc": [
20586 - "default.handlebars->29->1482"
20595 + "default.handlebars->29->1483"
20596 ]
20597 },
20598 {
@@ -20600,7 +20609,7 @@
20609 "ru": "Удалить права группы пользователей для этой группы устройств",
20610 "zh-chs": "刪除該設備組的用戶組權限",
20611 "xloc": [
20603 - "default.handlebars->29->1476",
20612 + "default.handlebars->29->1477",
20613 "default.handlebars->29->549"
20614 ]
20615 },
@@ -20619,9 +20628,9 @@
20628 "zh-chs": "刪除此設備組的用戶權限",
20629 "xloc": [
20630 "default.handlebars->29->1149",
20622 - "default.handlebars->29->1470",
20623 - "default.handlebars->29->1574",
20624 - "default.handlebars->29->1586",
20631 + "default.handlebars->29->1471",
20632 + "default.handlebars->29->1575",
20633 + "default.handlebars->29->1587",
20634 "default.handlebars->29->550"
20635 ]
20636 },
@@ -20643,7 +20652,7 @@
20652 "default-mobile.handlebars->9->87",
20653 "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1",
20654 "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1",
20646 - "default.handlebars->29->1333",
20655 + "default.handlebars->29->1334",
20656 "default.handlebars->29->414",
20657 "default.handlebars->29->721",
20658 "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
@@ -20683,8 +20692,8 @@
20692 "zh-chs": "要求:{0}。",
20693 "xloc": [
20694 "default-mobile.handlebars->9->51",
20686 - "default.handlebars->29->1421",
20687 - "default.handlebars->29->1564"
20695 + "default.handlebars->29->1422",
20696 + "default.handlebars->29->1565"
20697 ]
20698 },
20699 {
@@ -20912,7 +20921,7 @@
20921 "ru": "Ограничения",
20922 "zh-chs": "限制條件",
20923 "xloc": [
20915 - "default.handlebars->29->1508"
20924 + "default.handlebars->29->1509"
20925 ]
20926 },
20927 {
@@ -20982,7 +20991,7 @@
20991 "xloc": [
20992 "default-mobile.handlebars->9->243",
20993 "default-mobile.handlebars->9->69",
20985 - "default.handlebars->29->1306",
20994 + "default.handlebars->29->1307",
20995 "default.handlebars->29->711"
20996 ]
20997 },
@@ -21466,7 +21475,7 @@
21475 "zh-chs": "安全",
21476 "xloc": [
21477 "default-mobile.handlebars->9->217",
21469 - "default.handlebars->29->1544",
21478 + "default.handlebars->29->1545",
21479 "default.handlebars->29->228",
21480 "default.handlebars->29->609",
21481 "default.handlebars->29->783"
@@ -21486,7 +21495,7 @@
21495 "ru": "Ключ безопасности",
21496 "zh-chs": "安全密鑰",
21497 "xloc": [
21489 - "default.handlebars->29->1542"
21498 + "default.handlebars->29->1543"
21499 ]
21500 },
21501 {
@@ -21520,9 +21529,9 @@
21529 "ru": "Выбрать все",
21530 "zh-chs": "全選",
21531 "xloc": [
21523 - "default.handlebars->29->1325",
21524 - "default.handlebars->29->1381",
21525 - "default.handlebars->29->1445",
21532 + "default.handlebars->29->1326",
21533 + "default.handlebars->29->1382",
21534 + "default.handlebars->29->1446",
21535 "default.handlebars->29->372",
21536 "default.handlebars->29->713",
21537 "default.handlebars->29->715",
@@ -21548,9 +21557,9 @@
21557 "ru": "Очистить все",
21558 "zh-chs": "選擇無",
21559 "xloc": [
21551 - "default.handlebars->29->1324",
21552 - "default.handlebars->29->1380",
21553 - "default.handlebars->29->1444",
21560 + "default.handlebars->29->1325",
21561 + "default.handlebars->29->1381",
21562 + "default.handlebars->29->1445",
21563 "default.handlebars->29->371",
21564 "default.handlebars->29->714",
21565 "default.handlebars->meshContextMenu->cxselectnone"
@@ -21628,8 +21637,8 @@
21637 "en": "Select an operation to perform on all selected users.",
21638 "nl": "Selecteer een bewerking die u op alle geselecteerde gebruikers wilt uitvoeren.",
21639 "xloc": [
21631 - "default.handlebars->29->1382",
21632 - "default.handlebars->29->1446"
21640 + "default.handlebars->29->1383",
21641 + "default.handlebars->29->1447"
21642 ]
21643 },
21644 {
@@ -21683,7 +21692,7 @@
21692 "zh-chs": "僅自我事件",
21693 "xloc": [
21694 "default-mobile.handlebars->9->325",
21686 - "default.handlebars->29->1261"
21695 + "default.handlebars->29->1262"
21696 ]
21697 },
21698 {
@@ -21754,7 +21763,7 @@
21763 "ru": "Отправить уведомление всем пользователям этой группы.",
21764 "zh-chs": "向該組中的所有用戶發送通知。",
21765 "xloc": [
21757 - "default.handlebars->29->1467"
21766 + "default.handlebars->29->1468"
21767 ]
21768 },
21769 {
@@ -21771,7 +21780,7 @@
21780 "ru": "Отправить текстовое уведомление этому пользователю.",
21781 "zh-chs": "向該用戶發送文本通知。",
21782 "xloc": [
21774 - "default.handlebars->29->1392"
21783 + "default.handlebars->29->1393"
21784 ]
21785 },
21786 {
@@ -21785,7 +21794,7 @@
21794 "zh-chs": "发送电子邮件给用户",
21795 "es": "Enviar email al usuario",
21796 "xloc": [
21788 - "default.handlebars->29->1377"
21797 + "default.handlebars->29->1378"
21798 ]
21799 },
21800 {
@@ -21819,7 +21828,7 @@
21828 "ru": "Отправить приглашение по email.",
21829 "zh-chs": "發送邀請電子郵件。",
21830 "xloc": [
21822 - "default.handlebars->29->1420"
21831 + "default.handlebars->29->1421"
21832 ]
21833 },
21834 {
@@ -21871,7 +21880,7 @@
21880 "ru": "Отправить уведомление пользователю",
21881 "zh-chs": "發送用戶通知",
21882 "xloc": [
21874 - "default.handlebars->29->1549"
21883 + "default.handlebars->29->1550"
21884 ]
21885 },
21886 {
@@ -21922,7 +21931,7 @@
21931 "ru": "Резервное копирование сервера",
21932 "zh-chs": "服務器備份",
21933 "xloc": [
21925 - "default.handlebars->29->1430"
21934 + "default.handlebars->29->1431"
21935 ]
21936 },
21937 {
@@ -21939,7 +21948,7 @@
21948 "ru": "Сертификат сервера",
21949 "zh-chs": "服務器證書",
21950 "xloc": [
21942 - "default.handlebars->29->1660"
21951 + "default.handlebars->29->1661"
21952 ]
21953 },
21954 {
@@ -21956,7 +21965,7 @@
21965 "zh-chs": "服務器數據庫",
21966 "es": "Base de Datos del Servidor",
21967 "xloc": [
21959 - "default.handlebars->29->1661"
21968 + "default.handlebars->29->1662"
21969 ]
21970 },
21971 {
@@ -21976,8 +21985,8 @@
21985 "default-mobile.handlebars->9->304",
21986 "default-mobile.handlebars->9->317",
21987 "default.handlebars->29->1225",
21979 - "default.handlebars->29->1252",
21980 - "default.handlebars->29->1427",
21988 + "default.handlebars->29->1253",
21989 + "default.handlebars->29->1428",
21990 "default.handlebars->29->563",
21991 "default.handlebars->29->582"
21992 ]
@@ -21996,8 +22005,8 @@
22005 "ru": "Разрешения сервера",
22006 "zh-chs": "服務器權限",
22007 "xloc": [
21999 - "default.handlebars->29->1369",
22000 - "default.handlebars->29->1438"
22008 + "default.handlebars->29->1370",
22009 + "default.handlebars->29->1439"
22010 ]
22011 },
22012 {
@@ -22014,7 +22023,7 @@
22023 "ru": "Квота сервера",
22024 "zh-chs": "服務器配額",
22025 "xloc": [
22017 - "default.handlebars->29->1516"
22026 + "default.handlebars->29->1517"
22027 ]
22028 },
22029 {
@@ -22031,7 +22040,7 @@
22040 "ru": "Восстановление сервера",
22041 "zh-chs": "服務器還原",
22042 "xloc": [
22034 - "default.handlebars->29->1431"
22043 + "default.handlebars->29->1432"
22044 ]
22045 },
22046 {
@@ -22048,7 +22057,7 @@
22057 "ru": "Права",
22058 "zh-chs": "服務器權限",
22059 "xloc": [
22051 - "default.handlebars->29->1515"
22060 + "default.handlebars->29->1516"
22061 ]
22062 },
22063 {
@@ -22065,7 +22074,7 @@
22074 "ru": "Состояние сервера",
22075 "zh-chs": "服務器狀態",
22076 "xloc": [
22068 - "default.handlebars->29->1611"
22077 + "default.handlebars->29->1612"
22078 ]
22079 },
22080 {
@@ -22099,7 +22108,7 @@
22108 "ru": "Трассировка сервера",
22109 "zh-chs": "服務器跟踪",
22110 "xloc": [
22102 - "default.handlebars->29->1671"
22111 + "default.handlebars->29->1672"
22112 ]
22113 },
22114 {
@@ -22116,7 +22125,7 @@
22125 "ru": "Обновление сервера",
22126 "zh-chs": "服務器更新",
22127 "xloc": [
22119 - "default.handlebars->29->1432"
22128 + "default.handlebars->29->1433"
22129 ]
22130 },
22131 {
@@ -22238,7 +22247,7 @@
22247 "ru": "ServerStats.csv",
22248 "zh-chs": "ServerStats.csv",
22249 "xloc": [
22241 - "default.handlebars->29->1652"
22250 + "default.handlebars->29->1653"
22251 ]
22252 },
22253 {
@@ -23574,7 +23583,7 @@
23583 "ru": "Статус",
23584 "zh-chs": "狀態",
23585 "xloc": [
23577 - "default.handlebars->29->1557",
23586 + "default.handlebars->29->1558",
23587 "default.handlebars->container->column_l->p42->p42tbl->1->0->7"
23588 ]
23589 },
@@ -23658,7 +23667,7 @@
23667 "ru": "Превышен лимит места для хранения",
23668 "zh-chs": "儲存空間超過",
23669 "xloc": [
23661 - "default.handlebars->29->1310"
23670 + "default.handlebars->29->1311"
23671 ]
23672 },
23673 {
@@ -24138,7 +24147,7 @@
24147 "zh-chs": "終端通知",
24148 "xloc": [
24149 "default.handlebars->29->1112",
24141 - "default.handlebars->29->1534",
24150 + "default.handlebars->29->1535",
24151 "default.handlebars->29->492"
24152 ]
24153 },
@@ -24157,7 +24166,7 @@
24166 "zh-chs": "終端提示",
24167 "xloc": [
24168 "default.handlebars->29->1111",
24160 - "default.handlebars->29->1533",
24169 + "default.handlebars->29->1534",
24170 "default.handlebars->29->491"
24171 ]
24172 },
@@ -24301,7 +24310,7 @@
24310 "ru": "На данный момент уведомлений нет",
24311 "zh-chs": "目前沒有任何通知",
24312 "xloc": [
24304 - "default.handlebars->29->1604"
24313 + "default.handlebars->29->1605"
24314 ]
24315 },
24316 {
@@ -25446,7 +25455,7 @@
25455 "zh-chs": "卸載",
25456 "xloc": [
25457 "default-mobile.handlebars->9->327",
25449 - "default.handlebars->29->1263",
25458 + "default.handlebars->29->1264",
25459 "default.handlebars->29->568",
25460 "default.handlebars->29->587"
25461 ]
@@ -25507,7 +25516,7 @@
25516 "default-mobile.handlebars->9->174",
25517 "default-mobile.handlebars->9->175",
25518 "default.handlebars->29->13",
25510 - "default.handlebars->29->1595",
25519 + "default.handlebars->29->1596",
25520 "default.handlebars->29->370",
25521 "default.handlebars->29->41",
25522 "default.handlebars->29->42",
@@ -25549,7 +25558,7 @@
25558 "ru": "Неизвестное действие",
25559 "zh-chs": "未知動作",
25560 "xloc": [
25552 - "default.handlebars->29->1617"
25561 + "default.handlebars->29->1618"
25562 ]
25563 },
25564 {
@@ -25566,8 +25575,8 @@
25575 "zh-chs": "未知設備",
25576 "es": "Dispositivo desconocido",
25577 "xloc": [
25569 - "default.handlebars->29->1481",
25570 - "default.handlebars->29->1585"
25578 + "default.handlebars->29->1482",
25579 + "default.handlebars->29->1586"
25580 ]
25581 },
25582 {
@@ -25584,9 +25593,9 @@
25593 "ru": "Неизвестная группа устройств",
25594 "zh-chs": "未知設備組",
25595 "xloc": [
25587 - "default.handlebars->29->1475",
25588 - "default.handlebars->29->1573",
25589 - "default.handlebars->29->1621"
25596 + "default.handlebars->29->1476",
25597 + "default.handlebars->29->1574",
25598 + "default.handlebars->29->1622"
25599 ]
25600 },
25601 {
@@ -25603,7 +25612,7 @@
25612 "ru": "Неизвестная группа",
25613 "zh-chs": "未知群組",
25614 "xloc": [
25606 - "default.handlebars->29->1613"
25615 + "default.handlebars->29->1614"
25616 ]
25617 },
25618 {
@@ -25638,7 +25647,7 @@
25647 "ru": "Неизвестная группа пользователей",
25648 "zh-chs": "未知用戶組",
25649 "xloc": [
25641 - "default.handlebars->29->1579"
25650 + "default.handlebars->29->1580"
25651 ]
25652 },
25653 {
@@ -25682,7 +25691,7 @@
25691 "en": "Unlock account",
25692 "nl": "Account ontgrendelen",
25693 "xloc": [
25685 - "default.handlebars->29->1385"
25694 + "default.handlebars->29->1386"
25695 ]
25696 },
25697 {
@@ -25720,7 +25729,7 @@
25729 "ru": "Актуально",
25730 "zh-chs": "最新",
25731 "xloc": [
25723 - "default.handlebars->29->1678"
25732 + "default.handlebars->29->1679"
25733 ]
25734 },
25735 {
@@ -25760,8 +25769,8 @@
25769 "default-mobile.handlebars->9->254",
25770 "default-mobile.handlebars->9->272",
25771 "default-mobile.handlebars->9->88",
25763 - "default.handlebars->29->1334",
25764 - "default.handlebars->29->1342",
25772 + "default.handlebars->29->1335",
25773 + "default.handlebars->29->1343",
25774 "default.handlebars->29->722",
25775 "default.handlebars->29->745",
25776 "default.handlebars->29->748",
@@ -25850,7 +25859,7 @@
25859 "ru": "Загрузка перезапишет 1 файл. Продолжить?",
25860 "zh-chs": "上傳將覆蓋1個文件。繼續?",
25861 "xloc": [
25853 - "default.handlebars->29->1343",
25862 + "default.handlebars->29->1344",
25863 "default.handlebars->29->746"
25864 ]
25865 },
@@ -25868,7 +25877,7 @@
25877 "ru": "Загрузка перезапишет {0} файлов. Продолжить?",
25878 "zh-chs": "上傳將覆蓋{0}個文件。繼續?",
25879 "xloc": [
25871 - "default.handlebars->29->1344",
25880 + "default.handlebars->29->1345",
25881 "default.handlebars->29->747"
25882 ]
25883 },
@@ -25969,8 +25978,8 @@
25978 "ru": "Использовано",
25979 "zh-chs": "用過的",
25980 "xloc": [
25972 - "default.handlebars->29->1607",
25973 - "default.handlebars->29->1609"
25981 + "default.handlebars->29->1608",
25982 + "default.handlebars->29->1610"
25983 ]
25984 },
25985 {
@@ -25989,8 +25998,8 @@
25998 "xloc": [
25999 "default-mobile.handlebars->9->329",
26000 "default.handlebars->29->1150",
25992 - "default.handlebars->29->1370",
25993 - "default.handlebars->29->1471",
26001 + "default.handlebars->29->1371",
26002 + "default.handlebars->29->1472",
26003 "default.handlebars->29->184",
26004 "default.handlebars->29->552"
26005 ]
@@ -26009,7 +26018,7 @@
26018 "ru": "Пользователь + Файлы",
26019 "zh-chs": "用戶+文件",
26020 "xloc": [
26012 - "default.handlebars->29->1371"
26021 + "default.handlebars->29->1372"
26022 ]
26023 },
26024 {
@@ -26026,10 +26035,10 @@
26035 "ru": "Импорт учетной записи пользователя",
26036 "zh-chs": "用戶帳戶導入",
26037 "xloc": [
26029 - "default.handlebars->29->1394",
26038 "default.handlebars->29->1395",
26031 - "default.handlebars->29->1397",
26032 - "default.handlebars->29->1399"
26039 + "default.handlebars->29->1396",
26040 + "default.handlebars->29->1398",
26041 + "default.handlebars->29->1400"
26042 ]
26043 },
26044 {
@@ -26046,7 +26055,7 @@
26055 "ru": "Учетные записи пользователей",
26056 "zh-chs": "用戶帳號",
26057 "xloc": [
26049 - "default.handlebars->29->1626"
26058 + "default.handlebars->29->1627"
26059 ]
26060 },
26061 {
@@ -26083,7 +26092,7 @@
26092 "zh-chs": "用戶同意",
26093 "xloc": [
26094 "default.handlebars->29->1118",
26086 - "default.handlebars->29->1540",
26095 + "default.handlebars->29->1541",
26096 "default.handlebars->29->498"
26097 ]
26098 },
@@ -26103,9 +26112,9 @@
26112 "xloc": [
26113 "default.handlebars->29->1206",
26114 "default.handlebars->29->1207",
26106 - "default.handlebars->29->1453",
26107 - "default.handlebars->29->1581",
26108 - "default.handlebars->29->1598",
26115 + "default.handlebars->29->1454",
26116 + "default.handlebars->29->1582",
26117 + "default.handlebars->29->1599",
26118 "default.handlebars->29->551"
26119 ]
26120 },
@@ -26140,7 +26149,7 @@
26149 "ru": "Членство в группах пользователей",
26150 "zh-chs": "用戶組成員資格",
26151 "xloc": [
26143 - "default.handlebars->29->1578"
26152 + "default.handlebars->29->1579"
26153 ]
26154 },
26155 {
@@ -26157,8 +26166,8 @@
26166 "ru": "Идентификатор пользователя",
26167 "zh-chs": "用戶標識",
26168 "xloc": [
26160 - "default.handlebars->29->1266",
26161 - "default.handlebars->29->1512"
26169 + "default.handlebars->29->1267",
26170 + "default.handlebars->29->1513"
26171 ]
26172 },
26173 {
@@ -26175,7 +26184,7 @@
26184 "ru": "Экспортировать список пользователей",
26185 "zh-chs": "用戶列表導出",
26186 "xloc": [
26178 - "default.handlebars->29->1406"
26187 + "default.handlebars->29->1407"
26188 ]
26189 },
26190 {
@@ -26192,7 +26201,7 @@
26201 "ru": "Имя пользователя",
26202 "zh-chs": "用戶名",
26203 "xloc": [
26195 - "default.handlebars->29->1265"
26204 + "default.handlebars->29->1266"
26205 ]
26206 },
26207 {
@@ -26210,7 +26219,7 @@
26219 "zh-chs": "用戶名",
26220 "xloc": [
26221 "default.handlebars->29->1204",
26213 - "default.handlebars->29->1500"
26222 + "default.handlebars->29->1501"
26223 ]
26224 },
26225 {
@@ -26256,7 +26265,7 @@
26265 "ru": "Сессии пользователя",
26266 "zh-chs": "用戶會話",
26267 "xloc": [
26259 - "default.handlebars->29->1643"
26268 + "default.handlebars->29->1644"
26269 ]
26270 },
26271 {
@@ -26379,7 +26388,7 @@
26388 "zh-chs": "用戶名",
26389 "xloc": [
26390 "default-mobile.handlebars->9->215",
26382 - "default.handlebars->29->1412",
26391 + "default.handlebars->29->1413",
26392 "default.handlebars->29->225",
26393 "default.handlebars->29->255",
26394 "default.handlebars->29->607",
@@ -26439,9 +26448,9 @@
26448 "ru": "Пользователи",
26449 "zh-chs": "用戶數",
26450 "xloc": [
26442 - "default.handlebars->29->1441",
26443 - "default.handlebars->29->1463",
26444 - "default.handlebars->29->1642",
26451 + "default.handlebars->29->1442",
26452 + "default.handlebars->29->1464",
26453 + "default.handlebars->29->1643",
26454 "default.handlebars->container->topbar->1->1->UsersSubMenuSpan->UsersSubMenu->1->0->UsersGeneral"
26455 ]
26456 },
@@ -26459,7 +26468,7 @@
26468 "ru": "Сессии пользователей",
26469 "zh-chs": "用戶會話",
26470 "xloc": [
26462 - "default.handlebars->29->1630"
26471 + "default.handlebars->29->1631"
26472 ]
26473 },
26474 {
@@ -26528,7 +26537,7 @@
26537 "zh-chs": "已驗證",
26538 "es": "Verficado",
26539 "xloc": [
26531 - "default.handlebars->29->1559"
26540 + "default.handlebars->29->1560"
26541 ]
26542 },
26543 {
@@ -26563,7 +26572,7 @@
26572 "zh-chs": "驗證郵件",
26573 "xloc": [
26574 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3AccountActions->7->1->verifyEmailId->0",
26566 - "default.handlebars->container->column_l->p2->p2AccountActions->3->verifyEmailId->0"
26575 + "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->verifyEmailId->0"
26576 ]
26577 },
26578 {
@@ -26598,7 +26607,7 @@
26607 "zh-chs": "版本不兼容,请先升级您的MeshCentral安装",
26608 "es": "Versión Incompatible, por favor primero actualice su instalación de MeshCentral",
26609 "xloc": [
26601 - "default.handlebars->29->1674"
26610 + "default.handlebars->29->1675"
26611 ]
26612 },
26613 {
@@ -26664,8 +26673,8 @@
26673 "zh-chs": "查看变更日志",
26674 "es": "Ver registro de cambios",
26675 "xloc": [
26667 - "default.handlebars->29->1677",
26668 - "default.handlebars->29->1679"
26676 + "default.handlebars->29->1678",
26677 + "default.handlebars->29->1680"
26678 ]
26679 },
26680 {
@@ -26716,7 +26725,7 @@
26725 "ru": "Посмотреть примечания об этом пользователе",
26726 "zh-chs": "查看有關此用戶的註釋",
26727 "xloc": [
26719 - "default.handlebars->29->1547"
26728 + "default.handlebars->29->1548"
26729 ]
26730 },
26731 {
@@ -26802,7 +26811,7 @@
26811 "default-mobile.handlebars->9->305",
26812 "default-mobile.handlebars->9->318",
26813 "default.handlebars->29->1226",
26805 - "default.handlebars->29->1253"
26814 + "default.handlebars->29->1254"
26815 ]
26816 },
26817 {
@@ -26908,8 +26917,8 @@
26917 "ru": "Веб-сервер",
26918 "zh-chs": "網絡服務器",
26919 "xloc": [
26911 - "default.handlebars->29->1663",
26912 - "default.handlebars->29->1664"
26920 + "default.handlebars->29->1664",
26921 + "default.handlebars->29->1665"
26922 ]
26923 },
26924 {
@@ -26926,7 +26935,7 @@
26935 "ru": "Запросы веб-сервера",
26936 "zh-chs": "Web服務器請求",
26937 "xloc": [
26929 - "default.handlebars->29->1665"
26938 + "default.handlebars->29->1666"
26939 ]
26940 },
26941 {
@@ -26943,7 +26952,7 @@
26952 "ru": "Ретранслятор Web Socket",
26953 "zh-chs": "Web套接字中繼",
26954 "xloc": [
26946 - "default.handlebars->29->1666"
26955 + "default.handlebars->29->1667"
26956 ]
26957 },
26958 {
@@ -27013,7 +27022,7 @@
27022 "zh-chs": "啟用後,任何人都可以使用邀請代碼通過以下公共鏈接將設備加入該設備組:",
27023 "es": "Cuando está habilitado, cualquiera puede usar códigos de invitación para unir dispositivos a este grupo de dispositivos mediante el siguiente enlace público:",
27024 "xloc": [
27016 - "default.handlebars->29->1274"
27025 + "default.handlebars->29->1275"
27026 ]
27027 },
27028 {
@@ -27048,7 +27057,7 @@
27057 "ru": "Будет изменено при следующем входе в систему.",
27058 "zh-chs": "下次登錄時將更改。",
27059 "xloc": [
27051 - "default.handlebars->29->1520"
27060 + "default.handlebars->29->1521"
27061 ]
27062 },
27063 {
@@ -27964,7 +27973,7 @@
27973 "ru": "\\\\'",
27974 "zh-chs": "\\\\'",
27975 "xloc": [
27967 - "default.handlebars->29->1675"
27976 + "default.handlebars->29->1676"
27977 ]
27978 },
27979 {
@@ -28115,7 +28124,7 @@
28124 "zh-chs": "複製",
28125 "xloc": [
28126 "default-mobile.handlebars->9->92",
28118 - "default.handlebars->29->1339"
28127 + "default.handlebars->29->1340"
28128 ]
28129 },
28130 {
@@ -28182,8 +28191,8 @@
28191 "ru": "eventslist.csv",
28192 "zh-chs": "eventslist.csv",
28193 "xloc": [
28185 - "default.handlebars->29->1348",
28186 - "default.handlebars->29->1353"
28194 + "default.handlebars->29->1349",
28195 + "default.handlebars->29->1354"
28196 ]
28197 },
28198 {
@@ -28200,8 +28209,8 @@
28209 "ru": "eventslist.json",
28210 "zh-chs": "eventslist.json",
28211 "xloc": [
28203 - "default.handlebars->29->1350",
28204 - "default.handlebars->29->1354"
28212 + "default.handlebars->29->1351",
28213 + "default.handlebars->29->1355"
28214 ]
28215 },
28216 {
@@ -28235,7 +28244,7 @@
28244 "ru": "свободно",
28245 "zh-chs": "自由",
28246 "xloc": [
28238 - "default.handlebars->29->1638"
28247 + "default.handlebars->29->1639"
28248 ]
28249 },
28250 {
@@ -28416,7 +28425,7 @@
28425 "ru": "id, name, email, creation, lastlogin, groups, authfactors",
28426 "zh-chs": "id,名稱,電子郵件,創建,lastlogin,組,authfactors",
28427 "xloc": [
28419 - "default.handlebars->29->1407"
28428 + "default.handlebars->29->1408"
28429 ]
28430 },
28431 {
@@ -28507,7 +28516,7 @@
28516 "zh-chs": "k max,默认为空白",
28517 "es": "k max, en blanco por defecto",
28518 "xloc": [
28510 - "default.handlebars->29->1428"
28519 + "default.handlebars->29->1429"
28520 ]
28521 },
28522 {
@@ -28543,7 +28552,7 @@
28552 "zh-chs": "移動",
28553 "xloc": [
28554 "default-mobile.handlebars->9->93",
28546 - "default.handlebars->29->1340"
28555 + "default.handlebars->29->1341"
28556 ]
28557 },
28558 {
@@ -28591,7 +28600,7 @@
28600 "ru": "servertrace.csv",
28601 "zh-chs": "servertrace.csv",
28602 "xloc": [
28594 - "default.handlebars->29->1673"
28603 + "default.handlebars->29->1674"
28604 ]
28605 },
28606 {
@@ -28644,7 +28653,7 @@
28653 "zh-chs": "時間,conn.agent,conn.users,conn.usersessions,conn.relaysession,conn.intelamt,mem.external,mem.heapused,mem.heaptotal,mem.rss",
28654 "es": "time, conn.agent, conn.users, conn.usersessions, conn.relaysession, conn.intelamt, mem.external, mem.heapused, mem.heaptotal, mem.rss",
28655 "xloc": [
28647 - "default.handlebars->29->1651"
28656 + "default.handlebars->29->1652"
28657 ]
28658 },
28659 {
@@ -28661,7 +28670,7 @@
28670 "ru": "time, source, message",
28671 "zh-chs": "時間,來源,訊息",
28672 "xloc": [
28664 - "default.handlebars->29->1672"
28673 + "default.handlebars->29->1673"
28674 ]
28675 },
28676 {
@@ -28692,7 +28701,7 @@
28701 "ru": "всего",
28702 "zh-chs": "總",
28703 "xloc": [
28695 - "default.handlebars->29->1639"
28704 + "default.handlebars->29->1640"
28705 ]
28706 },
28707 {
@@ -28759,8 +28768,8 @@
28768 "ru": "userlist.csv",
28769 "zh-chs": "userlist.csv",
28770 "xloc": [
28762 - "default.handlebars->29->1403",
28763 - "default.handlebars->29->1408"
28771 + "default.handlebars->29->1404",
28772 + "default.handlebars->29->1409"
28773 ]
28774 },
28775 {
@@ -28777,8 +28786,8 @@
28786 "ru": "userlist.json",
28787 "zh-chs": "userlist.json",
28788 "xloc": [
28780 - "default.handlebars->29->1405",
28781 - "default.handlebars->29->1409"
28789 + "default.handlebars->29->1406",
28790 + "default.handlebars->29->1410"
28791 ]
28792 },
28793 {
@@ -28795,7 +28804,7 @@
28804 "zh-chs": "utc,時間,類型,操作,用戶,設備,消息",
28805 "es": "uta, hora, tipo, acción, usuario, dispositivo, mensaje",
28806 "xloc": [
28798 - "default.handlebars->29->1352"
28807 + "default.handlebars->29->1353"
28808 ]
28809 },
28810 {
@@ -28829,7 +28838,7 @@
28838 "ru": "{0} Гб",
28839 "zh-chs": "{0} Gb",
28840 "xloc": [
28832 - "default.handlebars->29->1319"
28841 + "default.handlebars->29->1320"
28842 ]
28843 },
28844 {
@@ -28846,7 +28855,7 @@
28855 "ru": "{0} Kб",
28856 "zh-chs": "{0} Kb",
28857 "xloc": [
28849 - "default.handlebars->29->1317"
28858 + "default.handlebars->29->1318"
28859 ]
28860 },
28861 {
@@ -28863,7 +28872,7 @@
28872 "ru": "{0} Mб",
28873 "zh-chs": "{0} Mb",
28874 "xloc": [
28866 - "default.handlebars->29->1318"
28875 + "default.handlebars->29->1319"
28876 ]
28877 },
28878 {
@@ -28897,7 +28906,7 @@
28906 "ru": "{0} активных сессий",
28907 "zh-chs": "{0}個活動會話",
28908 "xloc": [
28900 - "default.handlebars->29->1555"
28909 + "default.handlebars->29->1556"
28910 ]
28911 },
28912 {
@@ -28914,7 +28923,7 @@
28923 "ru": "{0} байт",
28924 "zh-chs": "{0} b",
28925 "xloc": [
28917 - "default.handlebars->29->1316"
28926 + "default.handlebars->29->1317"
28927 ]
28928 },
28929 {
@@ -28932,7 +28941,7 @@
28941 "zh-chs": "{0}個字節",
28942 "xloc": [
28943 "default-mobile.handlebars->9->81",
28935 - "default.handlebars->29->1327"
28944 + "default.handlebars->29->1328"
28945 ]
28946 },
28947 {
@@ -28949,7 +28958,7 @@
28958 "ru": "{0} байт осталось",
28959 "zh-chs": "剩餘{0}個字節",
28960 "xloc": [
28952 - "default.handlebars->29->1311"
28961 + "default.handlebars->29->1312"
28962 ]
28963 },
28964 {
@@ -28966,7 +28975,7 @@
28975 "ru": "{0} гигабайт осталось",
28976 "zh-chs": "剩餘{0} GB",
28977 "xloc": [
28969 - "default.handlebars->29->1314"
28978 + "default.handlebars->29->1315"
28979 ]
28980 },
28981 {
@@ -28983,7 +28992,7 @@
28992 "ru": "{0} групп",
28993 "zh-chs": "{0}個群組",
28994 "xloc": [
28986 - "default.handlebars->29->1525"
28995 + "default.handlebars->29->1526"
28996 ]
28997 },
28998 {
@@ -29031,7 +29040,7 @@
29040 "ru": "{0} килобайт осталось",
29041 "zh-chs": "剩餘{0}千字節",
29042 "xloc": [
29034 - "default.handlebars->29->1312"
29043 + "default.handlebars->29->1313"
29044 ]
29045 },
29046 {
@@ -29066,7 +29075,7 @@
29075 "ru": "{0} мегабайт осталось",
29076 "zh-chs": "剩餘{0}兆字節",
29077 "xloc": [
29069 - "default.handlebars->29->1313"
29078 + "default.handlebars->29->1314"
29079 ]
29080 },
29081 {
@@ -29100,7 +29109,7 @@
29109 "ru": "Еще {0} пользователей не показаны, используйте поиск для нахождения пользователей...",
29110 "zh-chs": "{0}未顯示更多用戶,請使用搜索框查找用戶...",
29111 "xloc": [
29103 - "default.handlebars->29->1362"
29112 + "default.handlebars->29->1363"
29113 ]
29114 },
29115 {
@@ -29232,7 +29241,7 @@
29241 "ru": "{0} сессий",
29242 "zh-chs": "{0}個會話",
29243 "xloc": [
29235 - "default.handlebars->29->1366"
29244 + "default.handlebars->29->1367"
29245 ]
29246 },
29247 {
@@ -29352,7 +29361,7 @@
29361 "ru": "{0}k в 1 файле. {1}k максимум",
29362 "zh-chs": "{0} k合1檔案。最多{1} k",
29363 "xloc": [
29355 - "default.handlebars->29->1321"
29364 + "default.handlebars->29->1322"
29365 ]
29366 },
29367 {
@@ -29368,7 +29377,7 @@
29377 "ru": "{0}k в {1} файлах. {2}k максимум",
29378 "zh-chs": "{1}個文件中有{0}個。最多{2} k",
29379 "xloc": [
29371 - "default.handlebars->29->1320"
29380 + "default.handlebars->29->1321"
29381 ]
29382 },
29383 {
@@ -29496,10 +29505,10 @@
29505 "ru": "✓",
29506 "xloc": [
29507 "default.handlebars->container->column_l->p13->p13filetable->p13bigok->0",
29499 - "default.handlebars->container->column_l->p2->p2AccountSecurity->3->manageAuthApp->0->authAppSetupCheck->0",
29500 - "default.handlebars->container->column_l->p2->p2AccountSecurity->3->manageEmail2FA->0->authEmailSetupCheck->0",
29501 - "default.handlebars->container->column_l->p2->p2AccountSecurity->3->manageHardwareOtp->0->authKeySetupCheck->0",
29502 - "default.handlebars->container->column_l->p2->p2AccountSecurity->3->manageOtp->0->authCodesSetupCheck->0",
29508 + "default.handlebars->container->column_l->p2->p2info->p2AccountSecurity->3->manageAuthApp->0->authAppSetupCheck->0",
29509 + "default.handlebars->container->column_l->p2->p2info->p2AccountSecurity->3->manageEmail2FA->0->authEmailSetupCheck->0",
29510 + "default.handlebars->container->column_l->p2->p2info->p2AccountSecurity->3->manageHardwareOtp->0->authKeySetupCheck->0",
29511 + "default.handlebars->container->column_l->p2->p2info->p2AccountSecurity->3->manageOtp->0->authCodesSetupCheck->0",
29512 "default.handlebars->container->column_l->p5->p5filetable->bigok->0",
29513 "player.handlebars->p11->deskarea0->deskarea3x->bigok->0",
29514 "xterm.handlebars->p11->deskarea0->deskarea3x->bigok->0"
views/default.handlebars
+121 -122
@@ -301,37 +301,39 @@
301 </div>
302 <div id=p2 style="display:none">
303 <div id="p2title"><h1>My Account</h1></div>
304 - <img id="p2AccountImage" alt="" src="images/clipboard-128.png" />
305 - <div id="p2AccountSecurity" style="display:none">
306 - <p><strong>Account security</strong></p>
307 - <div style="margin-left:25px">
308 - <div id="manageEmail2FA"><div class="p2AccountActions"><span id="authEmailSetupCheck"><strong>&#x2713;</strong></span></div><span><a href=# onclick="return account_manageAuthEmail()">Manage email authentication</a><br /></span></div>
309 - <div id="manageAuthApp"><div class="p2AccountActions"><span id="authAppSetupCheck"><strong>&#x2713;</strong></span></div><span><a href=# onclick="return account_manageAuthApp()">Manage authenticator app</a><br /></span></div>
310 - <div id="manageHardwareOtp"><div class="p2AccountActions"><span id="authKeySetupCheck"><strong>&#x2713;</strong></span></div><span><a href=# onclick="return account_manageHardwareOtp(0)">Manage security keys</a><br /></span></div>
311 - <div id="manageOtp"><div class="p2AccountActions"><span id="authCodesSetupCheck"><strong>&#x2713;</strong></span></div><span><a href=# onclick="return account_manageOtp(0)">Manage backup codes</a><br /></span></div>
304 + <div id="p2info" style="overflow-y:auto">
305 + <img id="p2AccountImage" alt="" src="images/clipboard-128.png" />
306 + <div id="p2AccountSecurity" style="display:none">
307 + <p><strong>Account security</strong></p>
308 + <div style="margin-left:25px">
309 + <div id="manageEmail2FA"><div class="p2AccountActions"><span id="authEmailSetupCheck"><strong>&#x2713;</strong></span></div><span><a href=# onclick="return account_manageAuthEmail()">Manage email authentication</a><br /></span></div>
310 + <div id="manageAuthApp"><div class="p2AccountActions"><span id="authAppSetupCheck"><strong>&#x2713;</strong></span></div><span><a href=# onclick="return account_manageAuthApp()">Manage authenticator app</a><br /></span></div>
311 + <div id="manageHardwareOtp"><div class="p2AccountActions"><span id="authKeySetupCheck"><strong>&#x2713;</strong></span></div><span><a href=# onclick="return account_manageHardwareOtp(0)">Manage security keys</a><br /></span></div>
312 + <div id="manageOtp"><div class="p2AccountActions"><span id="authCodesSetupCheck"><strong>&#x2713;</strong></span></div><span><a href=# onclick="return account_manageOtp(0)">Manage backup codes</a><br /></span></div>
313 + </div>
314 </div>
313 - </div>
314 - <div id="p2AccountActions">
315 - <p><strong>Account actions</strong></p>
316 - <p class="mL">
317 - <span id="verifyEmailId" style="display:none"><a href=# onclick="return account_showVerifyEmail()">Verify email</a><br /></span>
318 - <span id="accountEnableNotificationsSpan" style="display:none"><a href=# onclick="return account_enableNotifications()">Enable web notifications</a><br /></span>
319 - <a href=# onclick="return account_showLocalizationSettings()">Localization Settings</a><br />
320 - <a href=# onclick="return account_showAccountNotifySettings()">Notification Settings</a><br />
321 - <span id="p2AccountPassActions">
322 - <span id="accountChangeEmailAddressSpan" style="display:none"><a href=# onclick="return account_showChangeEmail()">Change email address</a><br /></span>
323 - <a href=# onclick="return account_showChangePassword()">Change password</a><span id="p2nextPasswordUpdateTime"></span><br />
324 - <a href=# onclick="return account_showDeleteAccount()">Delete account</a><br />
325 - </span>
326 - </p>
315 + <div id="p2AccountActions">
316 + <p><strong>Account actions</strong></p>
317 + <p class="mL">
318 + <span id="verifyEmailId" style="display:none"><a href=# onclick="return account_showVerifyEmail()">Verify email</a><br /></span>
319 + <span id="accountEnableNotificationsSpan" style="display:none"><a href=# onclick="return account_enableNotifications()">Enable web notifications</a><br /></span>
320 + <a href=# onclick="return account_showLocalizationSettings()">Localization Settings</a><br />
321 + <a href=# onclick="return account_showAccountNotifySettings()">Notification Settings</a><br />
322 + <span id="p2AccountPassActions">
323 + <span id="accountChangeEmailAddressSpan" style="display:none"><a href=# onclick="return account_showChangeEmail()">Change email address</a><br /></span>
324 + <a href=# onclick="return account_showChangePassword()">Change password</a><span id="p2nextPasswordUpdateTime"></span><br />
325 + <a href=# onclick="return account_showDeleteAccount()">Delete account</a><br />
326 + </span>
327 + </p>
328 + <br style=clear:both />
329 + </div>
330 + <strong>Device Groups</strong>
331 + <span id="p2createMeshLink1">( <a href=# onclick="return account_createMesh()" class="newMeshBtn"> New</a> )</span>
332 + <br /><br />
333 + <div id=p2meshes></div>
334 + <div id=p2noMeshFound style="display:none">No device groups.<span id="p2createMeshLink2"> <a href=# onclick="return account_createMesh()"><strong>Get started here!</strong></a></span></div>
335 <br style=clear:both />
336 </div>
329 - <strong>Device Groups</strong>
330 - <span id="p2createMeshLink1">( <a href=# onclick="return account_createMesh()" class="newMeshBtn"> New</a> )</span>
331 - <br /><br />
332 - <div id=p2meshes></div>
333 - <div id=p2noMeshFound style="display:none">No device groups.<span id="p2createMeshLink2"> <a href=# onclick="return account_createMesh()"><strong>Get started here!</strong></a></span></div>
334 - <br style=clear:both />
337 </div>
338 <div id=p3 style="display:none">
339 <div id="p3title"><h1>My Events</h1></div>
@@ -1400,6 +1402,8 @@
1402 // 1 = Top bar, 2 = Tool Bar, 4 = Bottom Bar, 8 = Tab Title
1403 var xh = (((hide & 1) ? 0 : 66) + ((hide & 2) ? 0 : 24) + ((hide & 4) ? 0 : 45) + ((hide & 8) ? 0 : 60)); // 0 to 195
1404 var xh2 = (uiMode > 1)?24:0;
1405 + QS('p2info')['height'] = 'calc(100vh - ' + (20 + xh + xh2) + 'px)';
1406 + QS('p2info')['max-height'] = 'calc(100vh - ' + (20 + xh + xh2) + 'px)';
1407 QS('p3users')['max-height'] = 'calc(100vh - ' + (50 + xh) + 'px)'; // 124
1408 QS('p3events')['height'] = 'calc(100vh - ' + (50 + xh) + 'px)'; // 124
1409 QS('p5filetable')['height'] = 'calc(100vh - ' + (99 + xh) + 'px)'; // 160
@@ -1843,7 +1847,7 @@
1847 if ((currentNode != null) && (IsNodeViewable(currentNode) == false)) { currentNode = null; go(1); }
1848
1849 // Change the reference to the current node
1846 - if (currentNode != null) { currentNode = getNodeFromId(currentNode._id); }
1850 + if (currentNode != null) { currentNode = getNodeFromId(currentNode._id); gotoDevice(currentNode._id, xxcurrentView, true); }
1851
1852 masterUpdate(1 | 2 | 4 | 64);
1853 break;
@@ -5179,7 +5183,7 @@
5183 if (rights & 8192) str.push("Limit Events");
5184 if (rights & 16384) str.push("Chat");
5185 if (rights & 32768) str.push("Uninstall");
5182 - if (str.length == 0) return "No Added Rights";
5186 + if (str.length == 0) return "No Rights";
5187 return str.join(', ');
5188 }
5189
@@ -8617,7 +8621,7 @@
8621 var y = '';
8622 if (selected) { selected = decodeURIComponent(selected); }
8623 var omeshs = getOrderedList(meshes, 'name');
8620 - for (var i in omeshs) { if ((selected != null) || (currentUserGroup.links == null) || (currentUserGroup.links[i] == null)) { y += '<option value=' + encodeURIComponent(omeshs[i]._id) + ((selected == omeshs[i]._id)?' selected':' ') + '>' + EscapeHtml(omeshs[i].name) + '</option>'; } }
8624 + for (var i in omeshs) { if ((selected != null) || (currentUserGroup.links == null) || (currentUserGroup.links[omeshs[i]._id] == null)) { y += '<option value=' + encodeURIComponent(omeshs[i]._id) + ((selected == omeshs[i]._id)?' selected':' ') + '>' + EscapeHtml(omeshs[i].name) + '</option>'; } }
8625 x += addHtmlValue("Device Group", '<div style=width:230px;margin:0;padding:0><select onchange=p20validateAddMeshUserDialog(' + userid + ') id=dp2groupid style=width:100%>' + y + '</select></div>');
8626 } else if ((userid == 4) || (userid == 7)) {
8627 var y = '', selectedMeshId = null, selectedNode = null;
@@ -8675,27 +8679,27 @@
8679 setDialogMode(2, "Add Users to Device Group", 3, p20showAddMeshUserDialogEx, x);
8680 Q('dp20username').focus();
8681 } else if (userid === 1) {
8678 - setDialogMode(2, (selected == null)?"Add Device Group Permissions":"Edit Device Group Permissions", 3, p20showAddMeshUserDialogEx, x, userid);
8682 + setDialogMode(2, (selected == null)?"Add Device Group Permissions":"Edit Device Group Permissions", selected?7:3, p20showAddMeshUserDialogEx, x, userid);
8683 if (selected != null) { urights = meshes[decodeURIComponent(selected)].links[currentUser._id].rights; }
8684 if (urights == 0xFFFFFFFF) { Q('p20fulladmin').checked = true; urights = -1; }
8685 } else if (userid === 2) {
8686 setDialogMode(2, "Add User Group", 3, p20showAddMeshUserDialogEx, x, userid);
8687 } else if (userid === 3) {
8684 - setDialogMode(2, "Add Device Group", 3, p20showAddMeshUserDialogEx, x, userid);
8688 + setDialogMode(2, (selected == null)?"Add Device Group":"Edit Device Group", selected?7:3, p20showAddMeshUserDialogEx, x, userid);
8689 QE('dp2groupid', selected == null);
8690 if (selected != null) { urights = currentUserGroup.links[decodeURIComponent(selected)].rights; }
8691 if (urights == 0xFFFFFFFF) { Q('p20fulladmin').checked = true; urights = -1; }
8692 } else if (userid === 4) {
8689 - setDialogMode(2, (selected == null)?"Add Device Permissions":"Edit Device Permissions", 3, p20showAddMeshUserDialogEx, x, userid);
8693 + setDialogMode(2, (selected == null)?"Add Device Permissions":"Edit Device Permissions", selected?7:3, p20showAddMeshUserDialogEx, x, userid);
8694 QE('dp2meshid', selected == null);
8695 QE('dp2nodeid', selected == null);
8696 } else if (userid === 7) {
8693 - setDialogMode(2, (selected == null)?"Add Device Permissions":"Edit Device Permissions", 3, p20showAddMeshUserDialogEx, x, userid);
8697 + setDialogMode(2, (selected == null)?"Add Device Permissions":"Edit Device Permissions", selected?7:3, p20showAddMeshUserDialogEx, x, userid);
8698 QE('dp2meshid', selected == null);
8699 QE('dp2nodeid', selected == null);
8700 if (selected != null) { urights = currentUserGroup.links[decodeURIComponent(selected)].rights; QE('dp20username', false); }
8701 } else if (userid === 5) {
8698 - setDialogMode(2, selected?"Edit User Device Permissions":"Add User Device Permissions", 3, p20showAddMeshUserDialogEx, x, userid);
8702 + setDialogMode(2, selected?"Edit User Device Permissions":"Add User Device Permissions", selected?7:3, p20showAddMeshUserDialogEx, x, userid);
8703 if (selected != null) {
8704 selected = decodeURIComponent(selected);
8705 if ((users != null) && (users[selected] != null)) { Q('dp20username').value = users[selected].name; } else { Q('dp20username').value = selected.split('/')[2]; }
@@ -8704,7 +8708,7 @@
8708 }
8709 Q('dp20username').focus();
8710 } else if (userid === 6) {
8707 - setDialogMode(2, selected?"Edit User Device Permissions":"Add User Device Permissions", 3, p20showAddMeshUserDialogEx, x, userid);
8711 + setDialogMode(2, selected?"Edit User Group Device Permissions":"Add User Group Device Permissions", selected?7:3, p20showAddMeshUserDialogEx, x, userid);
8712 if (selected != null) { urights = currentNode.links[decodeURIComponent(selected)].rights; }
8713 } else {
8714 if (userid.startsWith('ugrp/')) {
@@ -8767,7 +8771,6 @@
8771 if (updateId === 4) {
8772 // Update user device rights
8773 var devrights = 0, nodeid = decodeURIComponent(Q('dp2nodeid').value);
8770 - console.log('nodeid', nodeid);
8774 if ((nodeid != '') && (currentUser.links != null) && (currentUser.links[nodeid] != null)) { devrights = currentUser.links[nodeid].rights; }
8775 Q('p20remotecontrol').checked = ((devrights & 8) != 0);
8776 Q('p20meshagentconsole').checked = ((devrights & 16) != 0);
@@ -8853,83 +8856,79 @@
8856 }
8857
8858 function p20showAddMeshUserDialogEx(b, t) {
8856 - if (b == 2) {
8857 - p20viewuserEx(b, t);
8859 + // Get the currently selected rights
8860 + var meshadmin = 0;
8861 + if ((Q('p20fulladmin') != null) && (Q('p20fulladmin').checked == true)) { meshadmin = 0xFFFFFFFF; } else {
8862 + if (Q('p20fulladmin') != null) {
8863 + if (Q('p20editmesh').checked == true) meshadmin += 1;
8864 + if (Q('p20manageusers').checked == true) meshadmin += 2;
8865 + if (Q('p20managecomputers').checked == true) meshadmin += 4;
8866 + }
8867 + if (Q('p20remotecontrol').checked == true) meshadmin += 8;
8868 + if (Q('p20meshagentconsole').checked == true) meshadmin += 16;
8869 + if (Q('p20meshserverfiles').checked == true) meshadmin += 32;
8870 + if (Q('p20wakedevices').checked == true) meshadmin += 64;
8871 + if (Q('p20editnotes').checked == true) meshadmin += 128;
8872 + if (Q('p20remoteview').checked == true) meshadmin += 256;
8873 + if (Q('p20nodesktop').checked == true) meshadmin += 65536;
8874 + if (Q('p20noterminal').checked == true) meshadmin += 512;
8875 + if (Q('p20nofiles').checked == true) meshadmin += 1024;
8876 + if (Q('p20noamt').checked == true) meshadmin += 2048;
8877 + if (Q('p20remotelimitedinput').checked == true) meshadmin += 4096;
8878 + if (Q('p20limitevents').checked == true) meshadmin += 8192;
8879 + if (Q('p20chatnotify').checked == true) meshadmin += 16384;
8880 + if (Q('p20uninstall').checked == true) meshadmin += 32768;
8881 + }
8882 +
8883 + // Clean up incorrect rights. If Remote Control is not selected, remove flags that don't make sense.
8884 + if ((meshadmin & 8) == 0) {
8885 + // Remove 256, 512, 1024, 2048, 4096, 65536
8886 + if (meshadmin & 256) { meshadmin -= 256; }
8887 + if (meshadmin & 512) { meshadmin -= 512; }
8888 + if (meshadmin & 1024) { meshadmin -= 1024; }
8889 + if (meshadmin & 2048) { meshadmin -= 2048; }
8890 + if (meshadmin & 4096) { meshadmin -= 4096; }
8891 + if (meshadmin & 65536) { meshadmin -= 65536; }
8892 + }
8893 +
8894 + // Send the action to the server
8895 + if (t === 1) {
8896 + // Add current user to device group
8897 + var meshid = decodeURIComponent(Q('dp2groupid').value), mesh = meshes[meshid];
8898 + if (mesh != null) { meshserver.send({ action: 'addmeshuser', meshid: meshid, meshname: mesh.name, userids: [ currentUser._id ], meshadmin: meshadmin, remove: (b == 2) }); }
8899 + } else if (t === 2) {
8900 + // Add user group to device group
8901 + var ugrpid = decodeURIComponent(Q('dp2groupid').value), mesh = meshes[currentMesh._id];
8902 + if (mesh != null) { meshserver.send({ action: 'addmeshuser', meshid: currentMesh._id, meshname: currentMesh.name, userid: ugrpid, meshadmin: meshadmin, remove: (b == 2) }); }
8903 + } else if (t === 3) {
8904 + // Add device group to current user group
8905 + var meshid = decodeURIComponent(Q('dp2groupid').value), mesh = meshes[meshid];
8906 + if (mesh != null) { meshserver.send({ action: 'addmeshuser', meshid: meshid, meshname: mesh.name, userids: [ currentUserGroup._id ], meshadmin: meshadmin, remove: (b == 2) }); }
8907 + } else if (t === 4) {
8908 + // Add current user to device
8909 + var nodeid = decodeURIComponent(Q('dp2nodeid').value), node = getNodeFromId(nodeid);
8910 + if (node != null) { meshserver.send({ action: 'adddeviceuser', nodeid: nodeid, nodename: node.name, userids: [ currentUser._id ], rights: meshadmin, remove: (b == 2) }); }
8911 + } else if (t === 5) {
8912 + // Add users to device
8913 + var users = Q('dp20username').value.split(','), users2 = [];
8914 + for (var i in users) { users2.push(users[i].trim()); }
8915 + meshserver.send({ action: 'adddeviceuser', nodeid: currentNode._id, nodename: currentNode.name, usernames: users2, rights: meshadmin, remove: (b == 2) });
8916 + } else if (t === 6) {
8917 + // Add user group to device
8918 + var ugrpid = decodeURIComponent(Q('dp2groupid').value);
8919 + if (currentNode != null) { meshserver.send({ action: 'adddeviceuser', nodeid: currentNode._id, nodename: currentNode.name, userids: [ ugrpid ], rights: meshadmin, remove: (b == 2) }); }
8920 + } else if (t === 7) {
8921 + // Add current user group to device
8922 + var nodeid = decodeURIComponent(Q('dp2nodeid').value), node = getNodeFromId(nodeid);
8923 + if (node != null) { meshserver.send({ action: 'adddeviceuser', nodeid: nodeid, nodename: node.name, userids: [ currentUserGroup._id ], rights: meshadmin, remove: (b == 2) }); }
8924 } else {
8859 - // Get the currently selected rights
8860 - var meshadmin = 0;
8861 - if ((Q('p20fulladmin') != null) && (Q('p20fulladmin').checked == true)) { meshadmin = 0xFFFFFFFF; } else {
8862 - if (Q('p20fulladmin') != null) {
8863 - if (Q('p20editmesh').checked == true) meshadmin += 1;
8864 - if (Q('p20manageusers').checked == true) meshadmin += 2;
8865 - if (Q('p20managecomputers').checked == true) meshadmin += 4;
8866 - }
8867 - if (Q('p20remotecontrol').checked == true) meshadmin += 8;
8868 - if (Q('p20meshagentconsole').checked == true) meshadmin += 16;
8869 - if (Q('p20meshserverfiles').checked == true) meshadmin += 32;
8870 - if (Q('p20wakedevices').checked == true) meshadmin += 64;
8871 - if (Q('p20editnotes').checked == true) meshadmin += 128;
8872 - if (Q('p20remoteview').checked == true) meshadmin += 256;
8873 - if (Q('p20nodesktop').checked == true) meshadmin += 65536;
8874 - if (Q('p20noterminal').checked == true) meshadmin += 512;
8875 - if (Q('p20nofiles').checked == true) meshadmin += 1024;
8876 - if (Q('p20noamt').checked == true) meshadmin += 2048;
8877 - if (Q('p20remotelimitedinput').checked == true) meshadmin += 4096;
8878 - if (Q('p20limitevents').checked == true) meshadmin += 8192;
8879 - if (Q('p20chatnotify').checked == true) meshadmin += 16384;
8880 - if (Q('p20uninstall').checked == true) meshadmin += 32768;
8881 - }
8882 -
8883 - // Clean up incorrect rights. If Remote Control is not selected, remove flags that don't make sense.
8884 - if ((meshadmin & 8) == 0) {
8885 - // Remove 256, 512, 1024, 2048, 4096, 65536
8886 - if (meshadmin & 256) { meshadmin -= 256; }
8887 - if (meshadmin & 512) { meshadmin -= 512; }
8888 - if (meshadmin & 1024) { meshadmin -= 1024; }
8889 - if (meshadmin & 2048) { meshadmin -= 2048; }
8890 - if (meshadmin & 4096) { meshadmin -= 4096; }
8891 - if (meshadmin & 65536) { meshadmin -= 65536; }
8892 - }
8893 -
8894 - // Send the action to the server
8895 - if (t === 1) {
8896 - // Add current user to device group
8897 - var meshid = decodeURIComponent(Q('dp2groupid').value), mesh = meshes[meshid];
8898 - if (mesh != null) { meshserver.send({ action: 'addmeshuser', meshid: meshid, meshname: mesh.name, userids: [ currentUser._id ], meshadmin: meshadmin }); }
8899 - } else if (t === 2) {
8900 - // Add user group to device group
8901 - var ugrpid = decodeURIComponent(Q('dp2groupid').value), mesh = meshes[currentMesh._id];
8902 - if (mesh != null) { meshserver.send({ action: 'addmeshuser', meshid: currentMesh._id, meshname: currentMesh.name, userid: ugrpid, meshadmin: meshadmin }); }
8903 - } else if (t === 3) {
8904 - // Add device group to current user group
8905 - var meshid = decodeURIComponent(Q('dp2groupid').value), mesh = meshes[meshid];
8906 - if (mesh != null) { meshserver.send({ action: 'addmeshuser', meshid: meshid, meshname: mesh.name, userids: [ currentUserGroup._id ], meshadmin: meshadmin }); }
8907 - } else if (t === 4) {
8908 - // Add current user to device
8909 - var nodeid = decodeURIComponent(Q('dp2nodeid').value), node = getNodeFromId(nodeid);
8910 - if (node != null) { meshserver.send({ action: 'adddeviceuser', nodeid: nodeid, nodename: node.name, userids: [ currentUser._id ], rights: meshadmin }); }
8911 - } else if (t === 5) {
8912 - // Add users to device
8925 + // Add user to device group
8926 + if (t == null) {
8927 var users = Q('dp20username').value.split(','), users2 = [];
8928 for (var i in users) { users2.push(users[i].trim()); }
8915 - meshserver.send({ action: 'adddeviceuser', nodeid: currentNode._id, nodename: currentNode.name, usernames: users2, rights: meshadmin });
8916 - } else if (t === 6) {
8917 - // Add user group to device
8918 - var ugrpid = decodeURIComponent(Q('dp2groupid').value);
8919 - if (currentNode != null) { meshserver.send({ action: 'adddeviceuser', nodeid: currentNode._id, nodename: currentNode.name, userids: [ ugrpid ], rights: meshadmin }); }
8920 - } else if (t === 7) {
8921 - // Add current user group to device
8922 - var nodeid = decodeURIComponent(Q('dp2nodeid').value), node = getNodeFromId(nodeid);
8923 - if (node != null) { meshserver.send({ action: 'adddeviceuser', nodeid: nodeid, nodename: node.name, userids: [ currentUserGroup._id ], rights: meshadmin }); }
8929 + meshserver.send({ action: 'addmeshuser', meshid: currentMesh._id, meshname: currentMesh.name, usernames: users2, meshadmin: meshadmin, remove: (b == 2) });
8930 } else {
8925 - // Add user to device group
8926 - if (t == null) {
8927 - var users = Q('dp20username').value.split(','), users2 = [];
8928 - for (var i in users) { users2.push(users[i].trim()); }
8929 - meshserver.send({ action: 'addmeshuser', meshid: currentMesh._id, meshname: currentMesh.name, usernames: users2, meshadmin: meshadmin });
8930 - } else {
8931 - meshserver.send({ action: 'addmeshuser', meshid: currentMesh._id, meshname: currentMesh.name, userids: [ t ], meshadmin: meshadmin });
8932 - }
8931 + meshserver.send({ action: 'addmeshuser', meshid: currentMesh._id, meshname: currentMesh.name, userids: [ t ], meshadmin: meshadmin, remove: (b == 2) });
8932 }
8933 }
8934 }
@@ -10306,7 +10305,7 @@
10305 omeshes = getOrderedList(omeshes, 'name');
10306 for (var i in omeshes) {
10307 var cr = 0, mesh = omeshes[i], r = currentUserGroup.links[mesh._id].rights, trash = '', rights = makeDeviceGroupRightsString(r);
10309 - if ((userinfo.links) && (userinfo.links[i] != null) && (userinfo.links[i].rights != null)) { cr = userinfo.links[i].rights; }
10308 + if ((userinfo.links) && (userinfo.links[mesh._id] != null) && (userinfo.links[mesh._id].rights != null)) { cr = userinfo.links[mesh._id].rights; }
10309 var meshname = '<i>' + "Unknown Device Group" + '</i>';
10310 if (mesh) { meshname = '<a href=# onclick=\'gotoMesh("' + mesh._id + '");haltEvent(event);\'>' + mesh.name + '</a>'; } else {}
10311 if ((cr & 2) != 0) {
@@ -10365,7 +10364,7 @@
10364 }
10365
10366 function p51removeDeviceFromUserGroupEx(b, nodeid) {
10368 - meshserver.send({ action: 'adddeviceuser', nodeid: nodeid, userids: [ currentUserGroup._id ], rights: 0 });
10367 + meshserver.send({ action: 'adddeviceuser', nodeid: nodeid, userids: [ currentUserGroup._id ], rights: 0, remove: true });
10368 }
10369
10370 function p51removeMeshFromUserGroup(e, meshid) {
@@ -10720,10 +10719,10 @@
10719 for (var i in omeshes) {
10720 var cr = 0, mesh = omeshes[i], r = currentUser.links[mesh._id].rights, trash = '', rights = makeDeviceGroupRightsString(r);
10721 if (mesh == null) { continue; }
10723 - if ((userinfo.links) && (userinfo.links[i] != null) && (userinfo.links[i].rights != null)) { cr = userinfo.links[i].rights; }
10722 + if ((userinfo.links) && (userinfo.links[mesh._id] != null) && (userinfo.links[mesh._id].rights != null)) { cr = userinfo.links[mesh._id].rights; }
10723 var meshname = '<i>' + "Unknown Device Group" + '</i>';
10725 - if (mesh) { meshname = '<a href=# onclick=\'gotoMesh("' + mesh._id + '");haltEvent(event);\'>' + EscapeHtml(mesh.name) + '</a>'; } else {}
10726 - if ((currentUser._id != userinfo._id) && ((cr & 2) != 0)) {
10724 + if (mesh) { meshname = '<a href=# onclick=\'gotoMesh("' + mesh._id + '");haltEvent(event);\'>' + EscapeHtml(mesh.name) + '</a>'; }
10725 + if ((currentUser._id != userinfo._id) && ((cr & 2) != 0)) { // 2 = MESHRIGHT_MANAGEUSERS
10726 trash = '<a href=# onclick=\'return p30removeMeshFromUser(event,"' + encodeURIComponent(mesh._id) + '")\' title=\"' + "Remove user rights to this device group" + '\" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>';
10727 rights = '<span style=cursor:pointer onclick=p20showAddMeshUserDialog(1,\"' + encodeURIComponent(mesh._id) + '\")>' + rights + ' <img class=hoverButton style=cursor:pointer src=images/link5.png></span>';
10728 }
@@ -10748,13 +10747,13 @@
10747 for (var i in currentUser.links) { if (i.startsWith('ugrp/')) { if (usergroups[i] != null) { ougroups.push(usergroups[i]); } } }
10748 ougroups = getOrderedList(ougroups, 'name');
10749 for (var i in ougroups) {
10751 - var group = usergroups[i], r = currentUser.links[ougroups[i]._id].rights, trash = '';
10750 + var group = ougroups[i], r = currentUser.links[ougroups[i]._id].rights, trash = '';
10751 var groupname = '<i>' + "Unknown User Group" + '</i>';
10752 if (group != null) {
10753 groupname = EscapeHtml(group.name);
10755 - if (usergroups != null) { groupname = '<a href=# onclick=\'gotoUserGroup("' + encodeURIComponent(i) + '");haltEvent(event);\'>' + groupname + '</a>'; }
10754 + if (usergroups != null) { groupname = '<a href=# onclick=\'gotoUserGroup("' + encodeURIComponent(ougroups[i]._id) + '");haltEvent(event);\'>' + groupname + '</a>'; }
10755 }
10757 - if ((userinfo.siteadmin & 256) != 0) { trash = '<a href=# onclick=\'return p30RemoveUserGroup(event,"' + encodeURIComponent(i) + '")\' title=\"' + "Remove user group membership" + '\" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'; }
10756 + if ((userinfo.siteadmin & 256) != 0) { trash = '<a href=# onclick=\'return p30RemoveUserGroup(event,"' + encodeURIComponent(ougroups[i]._id) + '")\' title=\"' + "Remove user group membership" + '\" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'; }
10757 x += '<tr ' + (((++count % 2) == 0) ? 'style=background-color:#DDD' : '') + '><td><div title=\"' + "User Group" + '\" class=m4></div><div>&nbsp;' + groupname + '<div></div></div></td><td><div style=float:right>' + trash + '</div></td></tr>';
10758 }
10759 }
@@ -10792,17 +10791,17 @@
10791 function p30removeNodeFromUser(event, nodeid) {
10792 if (xxdialogMode) return;
10793 var node = getNodeFromId(decodeURIComponent(nodeid));
10795 - setDialogMode(2, "Remove Device Permissions", 3, function(b, node) { meshserver.send({ action: 'adddeviceuser', nodeid: node._id, nodename: node.name, userids: [ currentUser._id ], rights: 0 }); }, format("Confirm removal of access rights for device \"{0}\"?", node.name), node);
10794 + setDialogMode(2, "Remove Device Permissions", 3, function(b, node) { meshserver.send({ action: 'adddeviceuser', nodeid: node._id, nodename: node.name, userids: [ currentUser._id ], rights: 0, remove: true }); }, format("Confirm removal of access rights for device \"{0}\"?", node.name), node);
10795 }
10796
10797 function p30removeUserFromNode(event, userid) {
10798 if (xxdialogMode) return;
10799 var user = users[decodeURIComponent(userid)];
10800 if (user != null) {
10802 - setDialogMode(2, "Remove User Permissions", 3, function(b, user) { meshserver.send({ action: 'adddeviceuser', nodeid: currentNode._id, nodename: currentNode.name, userids: [ user._id ], rights: 0 }); }, format("Confirm removal of access rights for user \"{0}\"?", user.name), user);
10801 + setDialogMode(2, "Remove User Permissions", 3, function(b, user) { meshserver.send({ action: 'adddeviceuser', nodeid: currentNode._id, nodename: currentNode.name, userids: [ user._id ], rights: 0, remove: true }); }, format("Confirm removal of access rights for user \"{0}\"?", user.name), user);
10802 } else if (usergroups != null) {
10803 user = usergroups[decodeURIComponent(userid)];
10805 - if (user != null) { setDialogMode(2, "Remove User Group Permissions", 3, function(b, user) { meshserver.send({ action: 'adddeviceuser', nodeid: currentNode._id, nodename: currentNode.name, userids: [ user._id ], rights: 0 }); }, format("Confirm removal of access rights for user group \"{0}\"?", user.name), user); }
10804 + if (user != null) { setDialogMode(2, "Remove User Group Permissions", 3, function(b, user) { meshserver.send({ action: 'adddeviceuser', nodeid: currentNode._id, nodename: currentNode.name, userids: [ user._id ], rights: 0, remove: true }); }, format("Confirm removal of access rights for user group \"{0}\"?", user.name), user); }
10805 }
10806 }
10807