improve translations all around
Signed-off-by: si458 <simonsmith5521@gmail.com>
si458 committed
Jan 5, 2025 at 21:37 UTC
0dd56d5708caa5c037b9e896d86149fbeced6321
6 files changed
+8121
-8490
public/styles/style-bootstrap.css
+10
-3
@@ -247,7 +247,6 @@ body {
247
}
248
249
.nonenglish .topbar_td {
250
- width: 10px;
250
height: 24px;
251
cursor: pointer;
252
padding-left:16px;
@@ -2070,7 +2069,11 @@ nav .lbbuttonsel2 {
2069
#d2devNotes,
2070
#d2devEvent,
2071
#d2runcmd,
2073
-#d2devMessage {
2072
+#d2devMessage,
2073
+#d2smsText,
2074
+#d2emailSubject,
2075
+#d2emailText,
2076
+#broadcastMessage {
2077
background-color: #FFF9D3;
2078
}
2079
@@ -2080,7 +2083,11 @@ nav .lbbuttonsel2 {
2083
.night #d2devNotes,
2084
.night #d2devEvent,
2085
.night #d2runcmd,
2083
-.night #d2devMessage {
2086
+.night #d2devMessage,
2087
+.night #d2smsText,
2088
+.night #d2emailSubject,
2089
+.night #d2emailText,
2090
+.night #broadcastMessage {
2091
background-color: black;
2092
}
2093
translate/translate.json
+7751
-7995
@@ -30,7 +30,7 @@
30
"default3.handlebars->container->column_l->p3->3->1->0->1->1->p3filterevents",
31
"default3.handlebars->container->column_l->p3->3->1->0->1->1->p3limitdropdown",
32
"default3.handlebars->container->column_l->p31->3->1->0->3->1->p31filterevents",
33
- "default3.handlebars->container->column_l->p31->3->1->0->3->3->p31limitdropdown"
33
+ "default3.handlebars->container->column_l->p31->3->1->0->3->1->p31limitdropdown"
34
]
35
},
36
{
@@ -38,8 +38,8 @@
38
"en": " (",
39
"nl": " (",
40
"xloc": [
41
- "default.handlebars->47->1540",
42
- "default3.handlebars->35->1418"
41
+ "default.handlebars->47->1541",
42
+ "default3.handlebars->35->1526"
43
]
44
},
45
{
@@ -68,10 +68,10 @@
68
"zh-cht": " + CIRA",
69
"uk": " + CIRA",
70
"xloc": [
71
- "default.handlebars->47->2207",
72
- "default.handlebars->47->2209",
73
- "default3.handlebars->35->2062",
74
- "default3.handlebars->35->2064"
71
+ "default.handlebars->47->2211",
72
+ "default.handlebars->47->2213",
73
+ "default3.handlebars->35->2206",
74
+ "default3.handlebars->35->2208"
75
]
76
},
77
{
@@ -102,7 +102,7 @@
102
"xloc": [
103
"default-mobile.handlebars->11->59",
104
"default.handlebars->47->79",
105
- "default3.handlebars->35->78"
105
+ "default3.handlebars->35->79"
106
]
107
},
108
{
@@ -133,7 +133,7 @@
133
"xloc": [
134
"default-mobile.handlebars->11->57",
135
"default.handlebars->47->77",
136
- "default3.handlebars->35->76"
136
+ "default3.handlebars->35->77"
137
]
138
},
139
{
@@ -164,7 +164,7 @@
164
"xloc": [
165
"default-mobile.handlebars->11->55",
166
"default.handlebars->47->75",
167
- "default3.handlebars->35->74"
167
+ "default3.handlebars->35->75"
168
]
169
},
170
{
@@ -195,7 +195,7 @@
195
"xloc": [
196
"default-mobile.handlebars->11->60",
197
"default.handlebars->47->80",
198
- "default3.handlebars->35->79"
198
+ "default3.handlebars->35->80"
199
]
200
},
201
{
@@ -226,7 +226,7 @@
226
"xloc": [
227
"default-mobile.handlebars->11->58",
228
"default.handlebars->47->78",
229
- "default3.handlebars->35->77"
229
+ "default3.handlebars->35->78"
230
]
231
},
232
{
@@ -257,7 +257,7 @@
257
"xloc": [
258
"default-mobile.handlebars->11->56",
259
"default.handlebars->47->76",
260
- "default3.handlebars->35->75"
260
+ "default3.handlebars->35->76"
261
]
262
},
263
{
@@ -290,20 +290,8 @@
290
"default-mobile.handlebars->11->54",
291
"default.handlebars->47->73",
292
"default.handlebars->47->74",
293
- "default3.handlebars->35->72",
294
- "default3.handlebars->35->73"
295
- ]
296
- },
297
- {
298
- "en": " Add Device",
299
- "xloc": [
300
- "default3.handlebars->35->2689"
301
- ]
302
- },
303
- {
304
- "en": " Add Device Group",
305
- "xloc": [
306
- "default3.handlebars->35->2683"
293
+ "default3.handlebars->35->73",
294
+ "default3.handlebars->35->74"
295
]
296
},
297
{
@@ -332,12 +320,6 @@
320
"zh-cht": " 新增用戶",
321
"uk": " Додати Користувача"
322
},
335
- {
336
- "en": " Add Users",
337
- "xloc": [
338
- "default3.handlebars->35->2678"
339
- ]
340
- },
323
{
324
"bs": " MeshCentral Router",
325
"ca": " Encaminador MeshCentral",
@@ -390,8 +372,8 @@
372
"zh-cht": " 可以使用密碼提示,但不建議使用。",
373
"uk": " Підказку для пароля можна використати, але не рекомендується.",
374
"xloc": [
393
- "default.handlebars->47->2083",
394
- "default3.handlebars->35->1912"
375
+ "default.handlebars->47->2085",
376
+ "default3.handlebars->35->2064"
377
]
378
},
379
{
@@ -420,10 +402,10 @@
402
"zh-cht": " 用戶需要先登入到該伺服器一次,然後才能將其新增到裝置群。",
403
"uk": " Користувачам потрібно підключитися хоча б раз до цього серверу, щоб мати можливість бути доданими у групи пристроїв.",
404
"xloc": [
423
- "default.handlebars->47->2331",
424
- "default.handlebars->47->2913",
425
- "default3.handlebars->35->2162",
426
- "default3.handlebars->35->2705"
405
+ "default.handlebars->47->2335",
406
+ "default.handlebars->47->2917",
407
+ "default3.handlebars->35->2331",
408
+ "default3.handlebars->35->2910"
409
]
410
},
411
{
@@ -504,7 +486,7 @@
486
"zh-cht": " 節點",
487
"uk": " вузол",
488
"xloc": [
507
- "default-mobile.handlebars->11->475"
489
+ "default-mobile.handlebars->11->481"
490
]
491
},
492
{
@@ -533,7 +515,7 @@
515
"zh-cht": " 節點",
516
"uk": " вузли",
517
"xloc": [
536
- "default-mobile.handlebars->11->476"
518
+ "default-mobile.handlebars->11->482"
519
]
520
},
521
{
@@ -562,8 +544,8 @@
544
"zh-cht": " TLS。",
545
"uk": " із TLS.",
546
"xloc": [
565
- "default.handlebars->47->270",
566
- "default3.handlebars->35->250"
547
+ "default.handlebars->47->273",
548
+ "default3.handlebars->35->270"
549
]
550
},
551
{
@@ -592,8 +574,8 @@
574
"zh-cht": " 沒有TLS。",
575
"uk": " без TLS.",
576
"xloc": [
595
- "default.handlebars->47->271",
596
- "default3.handlebars->35->251"
577
+ "default.handlebars->47->274",
578
+ "default3.handlebars->35->271"
579
]
580
},
581
{
@@ -994,7 +976,8 @@
976
"zh-cht": "(可選的)",
977
"uk": "(довільне)",
978
"xloc": [
997
- "default.handlebars->47->566"
979
+ "default.handlebars->47->569",
980
+ "default3.handlebars->35->566"
981
]
982
},
983
{
@@ -1016,8 +999,8 @@
999
"ru": ")",
1000
"xloc": [
1001
"default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3createMeshLink1",
1019
- "default.handlebars->47->1541",
1020
- "default3.handlebars->35->1419"
1002
+ "default.handlebars->47->1542",
1003
+ "default3.handlebars->35->1527"
1004
]
1005
},
1006
{
@@ -1046,10 +1029,10 @@
1029
"zh-cht": "* 8個字符,1個大寫,1個小寫,1個數字,1個非字母數字。",
1030
"uk": "* 8 символів, 1 велика літера, 1 маленька літера, 1 цифра, 1 спеціальний знак.",
1031
"xloc": [
1049
- "default.handlebars->47->2291",
1050
- "default.handlebars->47->528",
1051
- "default3.handlebars->35->2131",
1052
- "default3.handlebars->35->492"
1032
+ "default.handlebars->47->2295",
1033
+ "default.handlebars->47->531",
1034
+ "default3.handlebars->35->2288",
1035
+ "default3.handlebars->35->528"
1036
]
1037
},
1038
{
@@ -1078,8 +1061,8 @@
1061
"zh-cht": "*對於BSD,首先運行“ pkg install wget sudo bash ”。",
1062
"uk": "* Для BSD, запустіть \\\"pkg install wget sudo bash\\\" спочатку.",
1063
"xloc": [
1081
- "default.handlebars->47->625",
1082
- "default3.handlebars->35->564"
1064
+ "default.handlebars->47->628",
1065
+ "default3.handlebars->35->625"
1066
]
1067
},
1068
{
@@ -1156,22 +1139,22 @@
1139
"zh-chs": ",",
1140
"zh-cht": ",",
1141
"xloc": [
1159
- "default-mobile.handlebars->11->1012",
1160
- "default-mobile.handlebars->11->805",
1161
- "default-mobile.handlebars->11->807",
1162
- "default-mobile.handlebars->11->809",
1163
- "default.handlebars->47->1007",
1164
- "default.handlebars->47->1647",
1165
- "default.handlebars->47->1649",
1166
- "default.handlebars->47->1651",
1167
- "default.handlebars->47->2407",
1168
- "default.handlebars->47->2686",
1169
- "default3.handlebars->35->1510",
1170
- "default3.handlebars->35->1512",
1171
- "default3.handlebars->35->1514",
1172
- "default3.handlebars->35->2237",
1173
- "default3.handlebars->35->2503",
1174
- "default3.handlebars->35->944"
1142
+ "default-mobile.handlebars->11->1018",
1143
+ "default-mobile.handlebars->11->811",
1144
+ "default-mobile.handlebars->11->813",
1145
+ "default-mobile.handlebars->11->815",
1146
+ "default.handlebars->47->1008",
1147
+ "default.handlebars->47->1648",
1148
+ "default.handlebars->47->1650",
1149
+ "default.handlebars->47->1652",
1150
+ "default.handlebars->47->2411",
1151
+ "default.handlebars->47->2690",
1152
+ "default3.handlebars->35->1005",
1153
+ "default3.handlebars->35->1632",
1154
+ "default3.handlebars->35->1634",
1155
+ "default3.handlebars->35->1636",
1156
+ "default3.handlebars->35->2407",
1157
+ "default3.handlebars->35->2686"
1158
]
1159
},
1160
{
@@ -1284,9 +1267,9 @@
1267
"zh-cht": ",只適用於Intel® AMT",
1268
"uk": ", лише Intel® AMT",
1269
"xloc": [
1287
- "default-mobile.handlebars->11->399",
1288
- "default.handlebars->47->356",
1289
- "default3.handlebars->35->328"
1270
+ "default-mobile.handlebars->11->405",
1271
+ "default.handlebars->47->359",
1272
+ "default3.handlebars->35->356"
1273
]
1274
},
1275
{
@@ -1315,8 +1298,8 @@
1298
"zh-cht": ", 本地設備",
1299
"uk": ", Локальні Пристрої",
1300
"xloc": [
1318
- "default.handlebars->47->358",
1319
- "default3.handlebars->35->330"
1301
+ "default.handlebars->47->361",
1302
+ "default3.handlebars->35->358"
1303
]
1304
},
1305
{
@@ -1345,9 +1328,9 @@
1328
"zh-cht": ",MQTT在線",
1329
"uk": ", MQTT працює",
1330
"xloc": [
1348
- "default-mobile.handlebars->11->914",
1349
- "default.handlebars->47->1757",
1350
- "default3.handlebars->35->1618"
1331
+ "default-mobile.handlebars->11->920",
1332
+ "default.handlebars->47->1758",
1333
+ "default3.handlebars->35->1740"
1334
]
1335
},
1336
{
@@ -1376,10 +1359,10 @@
1359
"zh-cht": ", 不同意",
1360
"uk": ", Нема Погодження",
1361
"xloc": [
1379
- "default.handlebars->47->1102",
1380
- "default.handlebars->47->2249",
1381
- "default3.handlebars->35->1039",
1382
- "default3.handlebars->35->2104"
1362
+ "default.handlebars->47->1103",
1363
+ "default.handlebars->47->2253",
1364
+ "default3.handlebars->35->1100",
1365
+ "default3.handlebars->35->2248"
1366
]
1367
},
1368
{
@@ -1408,10 +1391,10 @@
1391
"zh-cht": ",提示同意",
1392
"uk": ", Запит на погодження",
1393
"xloc": [
1411
- "default.handlebars->47->1103",
1412
- "default.handlebars->47->2250",
1413
- "default3.handlebars->35->1040",
1414
- "default3.handlebars->35->2105"
1394
+ "default.handlebars->47->1104",
1395
+ "default.handlebars->47->2254",
1396
+ "default3.handlebars->35->1101",
1397
+ "default3.handlebars->35->2249"
1398
]
1399
},
1400
{
@@ -1439,8 +1422,8 @@
1422
"zh-chs": ", RDP",
1423
"zh-cht": ", RDP",
1424
"xloc": [
1442
- "default.handlebars->47->1402",
1443
- "default3.handlebars->35->1296"
1425
+ "default.handlebars->47->1403",
1426
+ "default3.handlebars->35->1390"
1427
]
1428
},
1429
{
@@ -1469,10 +1452,10 @@
1452
"zh-cht": ", 每天重複",
1453
"uk": ", Повторюється щодня",
1454
"xloc": [
1472
- "default.handlebars->47->1099",
1473
- "default.handlebars->47->2246",
1474
- "default3.handlebars->35->1036",
1475
- "default3.handlebars->35->2101"
1455
+ "default.handlebars->47->1100",
1456
+ "default.handlebars->47->2250",
1457
+ "default3.handlebars->35->1097",
1458
+ "default3.handlebars->35->2245"
1459
]
1460
},
1461
{
@@ -1501,10 +1484,10 @@
1484
"zh-cht": ", 每週重複一次",
1485
"uk": ", Повторюється щотижня",
1486
"xloc": [
1504
- "default.handlebars->47->1100",
1505
- "default.handlebars->47->2247",
1506
- "default3.handlebars->35->1037",
1507
- "default3.handlebars->35->2102"
1487
+ "default.handlebars->47->1101",
1488
+ "default.handlebars->47->2251",
1489
+ "default3.handlebars->35->1098",
1490
+ "default3.handlebars->35->2246"
1491
]
1492
},
1493
{
@@ -1559,8 +1542,8 @@
1542
"zh-cht": ", 中繼設備",
1543
"uk": ", Пов'язані Пристрої",
1544
"xloc": [
1562
- "default.handlebars->47->357",
1563
- "default3.handlebars->35->329"
1545
+ "default.handlebars->47->360",
1546
+ "default3.handlebars->35->357"
1547
]
1548
},
1549
{
@@ -1588,9 +1571,9 @@
1571
"zh-chs": ", SFTP",
1572
"zh-cht": ", SFTP",
1573
"xloc": [
1591
- "default-mobile.handlebars->11->699",
1592
- "default.handlebars->47->1524",
1593
- "default3.handlebars->35->1406"
1574
+ "default-mobile.handlebars->11->705",
1575
+ "default.handlebars->47->1525",
1576
+ "default3.handlebars->35->1510"
1577
]
1578
},
1579
{
@@ -1618,8 +1601,8 @@
1601
"zh-chs": ", SSH",
1602
"zh-cht": ", SSH",
1603
"xloc": [
1621
- "default.handlebars->47->1492",
1622
- "default3.handlebars->35->1376"
1604
+ "default.handlebars->47->1493",
1605
+ "default3.handlebars->35->1478"
1606
]
1607
},
1608
{
@@ -1647,8 +1630,8 @@
1630
"zh-chs": ",软体KVM",
1631
"zh-cht": ",軟體KVM",
1632
"xloc": [
1650
- "default.handlebars->47->1385",
1651
- "default3.handlebars->35->1281",
1633
+ "default.handlebars->47->1386",
1634
+ "default3.handlebars->35->1373",
1635
"sharing.handlebars->11->12"
1636
]
1637
},
@@ -1678,10 +1661,10 @@
1661
"zh-cht": ", 工具欄",
1662
"uk": ", Панель Засобів",
1663
"xloc": [
1681
- "default.handlebars->47->1104",
1682
- "default.handlebars->47->2251",
1683
- "default3.handlebars->35->1041",
1684
- "default3.handlebars->35->2106"
1664
+ "default.handlebars->47->1105",
1665
+ "default.handlebars->47->2255",
1666
+ "default3.handlebars->35->1102",
1667
+ "default3.handlebars->35->2250"
1668
]
1669
},
1670
{
@@ -1736,10 +1719,10 @@
1719
"zh-cht": ", 僅查看桌面",
1720
"uk": ", Тільки перегляд стільниці",
1721
"xloc": [
1739
- "default.handlebars->47->1101",
1740
- "default.handlebars->47->2248",
1741
- "default3.handlebars->35->1038",
1742
- "default3.handlebars->35->2103"
1722
+ "default.handlebars->47->1102",
1723
+ "default.handlebars->47->2252",
1724
+ "default3.handlebars->35->1099",
1725
+ "default3.handlebars->35->2247"
1726
]
1727
},
1728
{
@@ -1767,24 +1750,21 @@
1750
"zh-chs": ",WebRTC",
1751
"zh-cht": ",WebRTC",
1752
"xloc": [
1770
- "default-mobile.handlebars->11->640",
1771
- "default-mobile.handlebars->11->677",
1772
- "default-mobile.handlebars->11->700",
1773
- "default.handlebars->47->1401",
1774
- "default.handlebars->47->1493",
1775
- "default.handlebars->47->1525",
1776
- "default3.handlebars->35->1295",
1777
- "default3.handlebars->35->1377",
1778
- "default3.handlebars->35->1407",
1753
+ "default-mobile.handlebars->11->646",
1754
+ "default-mobile.handlebars->11->683",
1755
+ "default-mobile.handlebars->11->706",
1756
+ "default.handlebars->47->1402",
1757
+ "default.handlebars->47->1494",
1758
+ "default.handlebars->47->1526",
1759
+ "default3.handlebars->35->1389",
1760
+ "default3.handlebars->35->1479",
1761
+ "default3.handlebars->35->1511",
1762
"sharing.handlebars->11->19",
1763
"sharing.handlebars->11->27",
1764
"sharing.handlebars->11->44",
1765
"xterm.handlebars->9->6"
1766
]
1767
},
1785
- {
1786
- "en": ", click\n here to enable it."
1787
- },
1768
{
1769
"bs": ", kliknite ovdje da biste to omogućili.",
1770
"ca": ", feu clic aquí per activar-lo.",
@@ -2013,8 +1993,8 @@
1993
"zh-cht": ",{0}觀看",
1994
"uk": ", {0} стежень(ння)",
1995
"xloc": [
2016
- "default.handlebars->47->1396",
2017
- "default3.handlebars->35->1291",
1996
+ "default.handlebars->47->1397",
1997
+ "default3.handlebars->35->1384",
1998
"sharing.handlebars->11->13"
1999
]
2000
},
@@ -2045,38 +2025,7 @@
2025
]
2026
},
2027
{
2048
- "bs": "---",
2049
- "ca": "---",
2050
- "cs": "---",
2051
- "da": "---",
2052
- "de": "---",
2053
- "en": "---",
2054
- "es": "---",
2055
- "fi": "---",
2056
- "fr": "---",
2057
- "hi": "---",
2058
- "hu": "---",
2059
- "it": "---",
2060
- "ja": "---",
2061
- "ko": "---",
2062
- "nl": "---",
2063
- "pl": "---",
2064
- "pt": "---",
2065
- "pt-br": "---",
2066
- "ru": "---",
2067
- "sv": "---",
2068
- "tr": "---",
2069
- "zh-chs": "---",
2070
- "zh-cht": "---"
2071
- },
2072
- {
2073
- "en": "--}}",
2074
- "xloc": [
2075
- "default3.handlebars->container->column_l->p30->p30info",
2076
- "default3.handlebars->container->column_l->p51->p51info",
2077
- "default3.handlebars->container->topbar->1->1->EventsSubMenuSpan",
2078
- "default3.handlebars->container->xxAddAgentModal->xxAddAgentModalConf->1->5"
2079
- ]
2028
+ "en": "--}}"
2029
},
2030
{
2031
"cs": ".",
@@ -2140,15 +2089,15 @@
2089
"zh-chs": "...",
2090
"zh-cht": "...",
2091
"xloc": [
2143
- "default-mobile.handlebars->11->350",
2144
- "default-mobile.handlebars->11->352",
2145
- "default-mobile.handlebars->11->706",
2146
- "default.handlebars->47->1539",
2147
- "default.handlebars->47->2473",
2148
- "default.handlebars->47->3150",
2149
- "default3.handlebars->35->1417",
2150
- "default3.handlebars->35->2297",
2151
- "default3.handlebars->35->2924",
2092
+ "default-mobile.handlebars->11->356",
2093
+ "default-mobile.handlebars->11->358",
2094
+ "default-mobile.handlebars->11->712",
2095
+ "default.handlebars->47->1540",
2096
+ "default.handlebars->47->2477",
2097
+ "default.handlebars->47->3154",
2098
+ "default3.handlebars->35->1525",
2099
+ "default3.handlebars->35->2473",
2100
+ "default3.handlebars->35->3141",
2101
"sharing.handlebars->11->50"
2102
]
2103
},
@@ -2334,8 +2283,8 @@
2283
"zh-cht": "1個活躍時段",
2284
"uk": "1 активна сесія",
2285
"xloc": [
2337
- "default.handlebars->47->3008",
2338
- "default3.handlebars->35->2799"
2286
+ "default.handlebars->47->3012",
2287
+ "default3.handlebars->35->3005"
2288
]
2289
},
2290
{
@@ -2364,10 +2313,10 @@
2313
"zh-cht": "1個位元組",
2314
"uk": "1 байт",
2315
"xloc": [
2367
- "default-mobile.handlebars->11->1056",
2368
- "default-mobile.handlebars->11->362",
2369
- "default.handlebars->47->2497",
2370
- "default3.handlebars->35->2320",
2316
+ "default-mobile.handlebars->11->1062",
2317
+ "default-mobile.handlebars->11->368",
2318
+ "default.handlebars->47->2501",
2319
+ "default3.handlebars->35->2497",
2320
"download.handlebars->3->1",
2321
"download2.handlebars->5->1",
2322
"sharing.handlebars->11->101"
@@ -2428,8 +2377,8 @@
2377
"zh-cht": "1位聯絡文",
2378
"uk": "1 підключення",
2379
"xloc": [
2431
- "default.handlebars->47->1398",
2432
- "default3.handlebars->35->1293",
2380
+ "default.handlebars->47->1399",
2381
+ "default3.handlebars->35->1386",
2382
"sharing.handlebars->11->15"
2383
]
2384
},
@@ -2459,12 +2408,12 @@
2408
"zh-cht": "1天",
2409
"uk": "1 день",
2410
"xloc": [
2462
- "default.handlebars->47->278",
2463
- "default.handlebars->47->557",
2464
- "default.handlebars->47->571",
2465
- "default3.handlebars->35->258",
2466
- "default3.handlebars->35->519",
2467
- "default3.handlebars->35->532"
2411
+ "default.handlebars->47->281",
2412
+ "default.handlebars->47->560",
2413
+ "default.handlebars->47->574",
2414
+ "default3.handlebars->35->278",
2415
+ "default3.handlebars->35->557",
2416
+ "default3.handlebars->35->571"
2417
]
2418
},
2419
{
@@ -2493,8 +2442,8 @@
2442
"zh-cht": "1群",
2443
"uk": "1 група",
2444
"xloc": [
2496
- "default.handlebars->47->2963",
2497
- "default3.handlebars->35->2754"
2445
+ "default.handlebars->47->2967",
2446
+ "default3.handlebars->35->2960"
2447
]
2448
},
2449
{
@@ -2523,12 +2472,12 @@
2472
"zh-cht": "1小時",
2473
"uk": "1 година",
2474
"xloc": [
2526
- "default.handlebars->47->276",
2527
- "default.handlebars->47->555",
2528
- "default.handlebars->47->569",
2529
- "default3.handlebars->35->256",
2530
- "default3.handlebars->35->517",
2531
- "default3.handlebars->35->530"
2475
+ "default.handlebars->47->279",
2476
+ "default.handlebars->47->558",
2477
+ "default.handlebars->47->572",
2478
+ "default3.handlebars->35->276",
2479
+ "default3.handlebars->35->555",
2480
+ "default3.handlebars->35->569"
2481
]
2482
},
2483
{
@@ -2557,10 +2506,10 @@
2506
"zh-cht": "1分鐘",
2507
"uk": "1 хвилина",
2508
"xloc": [
2560
- "default.handlebars->47->1212",
2561
- "default.handlebars->47->2048",
2562
- "default3.handlebars->35->1136",
2563
- "default3.handlebars->35->1886"
2509
+ "default.handlebars->47->1213",
2510
+ "default.handlebars->47->2050",
2511
+ "default3.handlebars->35->1208",
2512
+ "default3.handlebars->35->2030"
2513
]
2514
},
2515
{
@@ -2590,7 +2539,7 @@
2539
"uk": "1 хвилина до відключення",
2540
"xloc": [
2541
"default.handlebars->47->83",
2593
- "default3.handlebars->35->82"
2542
+ "default3.handlebars->35->83"
2543
]
2544
},
2545
{
@@ -2619,12 +2568,12 @@
2568
"zh-cht": "1個月",
2569
"uk": "1 місяць",
2570
"xloc": [
2622
- "default.handlebars->47->280",
2623
- "default.handlebars->47->559",
2624
- "default.handlebars->47->573",
2625
- "default3.handlebars->35->260",
2626
- "default3.handlebars->35->521",
2627
- "default3.handlebars->35->534"
2571
+ "default.handlebars->47->283",
2572
+ "default.handlebars->47->562",
2573
+ "default.handlebars->47->576",
2574
+ "default3.handlebars->35->280",
2575
+ "default3.handlebars->35->559",
2576
+ "default3.handlebars->35->573"
2577
]
2578
},
2579
{
@@ -2653,8 +2602,8 @@
2602
"zh-cht": "有1個用戶沒有顯示,請使用搜尋框搜尋用戶...",
2603
"uk": "ще 1 користувача не показано, використовуйте поле пошуку для перегляду користувачів...",
2604
"xloc": [
2656
- "default.handlebars->47->2718",
2657
- "default3.handlebars->35->2533"
2605
+ "default.handlebars->47->2722",
2606
+ "default3.handlebars->35->2718"
2607
]
2608
},
2609
{
@@ -2683,8 +2632,8 @@
2632
"zh-cht": "1個節點",
2633
"uk": "1 вузол",
2634
"xloc": [
2686
- "default.handlebars->47->686",
2687
- "default3.handlebars->35->644"
2635
+ "default.handlebars->47->687",
2636
+ "default3.handlebars->35->684"
2637
]
2638
},
2639
{
@@ -2765,9 +2714,9 @@
2714
"zh-cht": "1秒",
2715
"uk": "1 секунда",
2716
"xloc": [
2768
- "default-mobile.handlebars->11->576",
2769
- "default.handlebars->47->1250",
2770
- "default3.handlebars->35->1173"
2717
+ "default-mobile.handlebars->11->582",
2718
+ "default.handlebars->47->1251",
2719
+ "default3.handlebars->35->1246"
2720
]
2721
},
2722
{
@@ -2797,7 +2746,7 @@
2746
"uk": "1 секунда до відключення",
2747
"xloc": [
2748
"default.handlebars->47->81",
2800
- "default3.handlebars->35->80"
2749
+ "default3.handlebars->35->81"
2750
]
2751
},
2752
{
@@ -2826,8 +2775,8 @@
2775
"zh-cht": "1 個選定的設備處於離線狀態。",
2776
"uk": "1 відібраний пристрій поза мережою.",
2777
"xloc": [
2829
- "default.handlebars->47->754",
2830
- "default3.handlebars->35->710"
2778
+ "default.handlebars->47->755",
2779
+ "default3.handlebars->35->752"
2780
]
2781
},
2782
{
@@ -2856,8 +2805,8 @@
2805
"zh-cht": "1 個選定的設備在線。",
2806
"uk": "1 відібраний пристрій у мережі.",
2807
"xloc": [
2859
- "default.handlebars->47->752",
2860
- "default3.handlebars->35->708"
2808
+ "default.handlebars->47->753",
2809
+ "default3.handlebars->35->750"
2810
]
2811
},
2812
{
@@ -2886,29 +2835,29 @@
2835
"zh-cht": "1節",
2836
"uk": "1 сесія",
2837
"xloc": [
2889
- "default-mobile.handlebars->11->416",
2890
- "default-mobile.handlebars->11->419",
2891
- "default-mobile.handlebars->11->423",
2892
- "default-mobile.handlebars->11->427",
2893
- "default-mobile.handlebars->11->431",
2894
- "default-mobile.handlebars->11->435",
2895
- "default-mobile.handlebars->11->439",
2896
- "default.handlebars->47->2722",
2897
- "default.handlebars->47->447",
2838
+ "default-mobile.handlebars->11->422",
2839
+ "default-mobile.handlebars->11->425",
2840
+ "default-mobile.handlebars->11->429",
2841
+ "default-mobile.handlebars->11->433",
2842
+ "default-mobile.handlebars->11->437",
2843
+ "default-mobile.handlebars->11->441",
2844
+ "default-mobile.handlebars->11->445",
2845
+ "default.handlebars->47->2726",
2846
"default.handlebars->47->450",
2899
- "default.handlebars->47->454",
2900
- "default.handlebars->47->458",
2901
- "default.handlebars->47->462",
2902
- "default.handlebars->47->466",
2903
- "default.handlebars->47->470",
2904
- "default3.handlebars->35->2537",
2905
- "default3.handlebars->35->419",
2906
- "default3.handlebars->35->422",
2907
- "default3.handlebars->35->426",
2908
- "default3.handlebars->35->430",
2909
- "default3.handlebars->35->434",
2910
- "default3.handlebars->35->438",
2911
- "default3.handlebars->35->442"
2847
+ "default.handlebars->47->453",
2848
+ "default.handlebars->47->457",
2849
+ "default.handlebars->47->461",
2850
+ "default.handlebars->47->465",
2851
+ "default.handlebars->47->469",
2852
+ "default.handlebars->47->473",
2853
+ "default3.handlebars->35->2722",
2854
+ "default3.handlebars->35->447",
2855
+ "default3.handlebars->35->450",
2856
+ "default3.handlebars->35->454",
2857
+ "default3.handlebars->35->458",
2858
+ "default3.handlebars->35->462",
2859
+ "default3.handlebars->35->466",
2860
+ "default3.handlebars->35->470"
2861
]
2862
},
2863
{
@@ -2937,12 +2886,12 @@
2886
"zh-cht": "1週",
2887
"uk": "1 тиждень",
2888
"xloc": [
2940
- "default.handlebars->47->279",
2941
- "default.handlebars->47->558",
2942
- "default.handlebars->47->572",
2943
- "default3.handlebars->35->259",
2944
- "default3.handlebars->35->520",
2945
- "default3.handlebars->35->533"
2889
+ "default.handlebars->47->282",
2890
+ "default.handlebars->47->561",
2891
+ "default.handlebars->47->575",
2892
+ "default3.handlebars->35->279",
2893
+ "default3.handlebars->35->558",
2894
+ "default3.handlebars->35->572"
2895
]
2896
},
2897
{
@@ -3120,10 +3069,10 @@
3069
"zh-cht": "10分鐘",
3070
"uk": "10 хвилин",
3071
"xloc": [
3123
- "default.handlebars->47->1214",
3124
- "default.handlebars->47->2050",
3125
- "default3.handlebars->35->1138",
3126
- "default3.handlebars->35->1888"
3072
+ "default.handlebars->47->1215",
3073
+ "default.handlebars->47->2052",
3074
+ "default3.handlebars->35->1210",
3075
+ "default3.handlebars->35->2032"
3076
]
3077
},
3078
{
@@ -3152,9 +3101,9 @@
3101
"zh-cht": "10 秒",
3102
"uk": "10 секунд",
3103
"xloc": [
3155
- "default-mobile.handlebars->11->578",
3156
- "default.handlebars->47->1252",
3157
- "default3.handlebars->35->1175"
3104
+ "default-mobile.handlebars->11->584",
3105
+ "default.handlebars->47->1253",
3106
+ "default3.handlebars->35->1248"
3107
]
3108
},
3109
{
@@ -3277,9 +3226,6 @@
3226
"default3.handlebars->container->xxAddAgentModal->xxAddAgentModalConf->1->xxAddAgentBody->dialog7->d7rdpkvm->3->d7rdpsize->9"
3227
]
3228
},
3280
- {
3281
- "en": "1024×768"
3282
- },
3229
{
3230
"bs": "10x Brzina",
3231
"ca": "Velocitat 10x",
@@ -3335,10 +3281,10 @@
3281
"zh-cht": "12小時",
3282
"uk": "12 годин",
3283
"xloc": [
3338
- "default.handlebars->47->1222",
3339
- "default.handlebars->47->2058",
3340
- "default3.handlebars->35->1146",
3341
- "default3.handlebars->35->1896"
3284
+ "default.handlebars->47->1223",
3285
+ "default.handlebars->47->2060",
3286
+ "default3.handlebars->35->1218",
3287
+ "default3.handlebars->35->2040"
3288
]
3289
},
3290
{
@@ -3428,9 +3374,6 @@
3374
"default3.handlebars->container->xxAddAgentModal->xxAddAgentModalConf->1->xxAddAgentBody->dialog7->d7rdpkvm->3->d7rdpsize->11"
3375
]
3376
},
3431
- {
3432
- "en": "1280×800"
3433
- },
3377
{
3378
"bs": "1440x900",
3379
"ca": "1440x900",
@@ -3462,9 +3405,6 @@
3405
"default3.handlebars->container->xxAddAgentModal->xxAddAgentModalConf->1->xxAddAgentBody->dialog7->d7rdpkvm->3->d7rdpsize->13"
3406
]
3407
},
3465
- {
3466
- "en": "1440×900"
3467
- },
3408
{
3409
"bs": "15 minuta",
3410
"ca": "15 minuts",
@@ -3491,10 +3431,10 @@
3431
"zh-cht": "15分鐘",
3432
"uk": "15 хвилин",
3433
"xloc": [
3494
- "default.handlebars->47->1215",
3495
- "default.handlebars->47->2051",
3496
- "default3.handlebars->35->1139",
3497
- "default3.handlebars->35->1889"
3434
+ "default.handlebars->47->1216",
3435
+ "default.handlebars->47->2053",
3436
+ "default3.handlebars->35->1211",
3437
+ "default3.handlebars->35->2033"
3438
]
3439
},
3440
{
@@ -3523,10 +3463,10 @@
3463
"zh-cht": "16小時",
3464
"uk": "16 годин",
3465
"xloc": [
3526
- "default.handlebars->47->1223",
3527
- "default.handlebars->47->2059",
3528
- "default3.handlebars->35->1147",
3529
- "default3.handlebars->35->1897"
3466
+ "default.handlebars->47->1224",
3467
+ "default.handlebars->47->2061",
3468
+ "default3.handlebars->35->1219",
3469
+ "default3.handlebars->35->2041"
3470
]
3471
},
3472
{
@@ -3560,9 +3500,6 @@
3500
"default3.handlebars->container->xxAddAgentModal->xxAddAgentModalConf->1->xxAddAgentBody->dialog7->d7rdpkvm->3->d7rdpsize->15"
3501
]
3502
},
3563
- {
3564
- "en": "1600×900"
3565
- },
3503
{
3504
"bs": "1680x1050",
3505
"ca": "1680x1050",
@@ -3594,9 +3531,6 @@
3531
"default3.handlebars->container->xxAddAgentModal->xxAddAgentModalConf->1->xxAddAgentBody->dialog7->d7rdpkvm->3->d7rdpsize->17"
3532
]
3533
},
3597
- {
3598
- "en": "1680×1050"
3599
- },
3534
{
3535
"bs": "1920x1080",
3536
"ca": "1920x1080",
@@ -3628,9 +3562,6 @@
3562
"default3.handlebars->container->xxAddAgentModal->xxAddAgentModalConf->1->xxAddAgentBody->dialog7->d7rdpkvm->3->d7rdpsize->19"
3563
]
3564
},
3631
- {
3632
- "en": "1920×1080"
3633
- },
3565
{
3566
"bs": "2 bajta po pikselu",
3567
"ca": "2 bytes per píxel",
@@ -3686,10 +3617,10 @@
3617
"zh-cht": "2天",
3618
"uk": "2 дні",
3619
"xloc": [
3689
- "default.handlebars->47->1225",
3690
- "default.handlebars->47->2061",
3691
- "default3.handlebars->35->1149",
3692
- "default3.handlebars->35->1899"
3620
+ "default.handlebars->47->1226",
3621
+ "default.handlebars->47->2063",
3622
+ "default3.handlebars->35->1221",
3623
+ "default3.handlebars->35->2043"
3624
]
3625
},
3626
{
@@ -3718,10 +3649,10 @@
3649
"zh-cht": "2小時",
3650
"uk": "2 години",
3651
"xloc": [
3721
- "default.handlebars->47->1219",
3722
- "default.handlebars->47->2055",
3723
- "default3.handlebars->35->1143",
3724
- "default3.handlebars->35->1893"
3652
+ "default.handlebars->47->1220",
3653
+ "default.handlebars->47->2057",
3654
+ "default3.handlebars->35->1215",
3655
+ "default3.handlebars->35->2037"
3656
]
3657
},
3658
{
@@ -3750,8 +3681,9 @@
3681
"zh-cht": "兩步登入啟用失敗。",
3682
"uk": "активація двофакторної автентифікації невдала.",
3683
"xloc": [
3753
- "default.handlebars->47->221",
3754
- "default3.handlebars->35->210"
3684
+ "default-mobile.handlebars->11->76",
3685
+ "default.handlebars->47->223",
3686
+ "default3.handlebars->35->222"
3687
]
3688
},
3689
{
@@ -3780,8 +3712,9 @@
3712
"zh-cht": "兩步登入啟用刪除失敗。",
3713
"uk": "видалення двофакторної автентифікації невдале.",
3714
"xloc": [
3783
- "default.handlebars->47->226",
3784
- "default3.handlebars->35->214"
3715
+ "default-mobile.handlebars->11->81",
3716
+ "default.handlebars->47->228",
3717
+ "default3.handlebars->35->227"
3718
]
3719
},
3720
{
@@ -3929,10 +3862,10 @@
3862
"zh-cht": "24小時",
3863
"uk": "24 години",
3864
"xloc": [
3932
- "default.handlebars->47->1224",
3933
- "default.handlebars->47->2060",
3934
- "default3.handlebars->35->1148",
3935
- "default3.handlebars->35->1898"
3865
+ "default.handlebars->47->1225",
3866
+ "default.handlebars->47->2062",
3867
+ "default3.handlebars->35->1220",
3868
+ "default3.handlebars->35->2042"
3869
]
3870
},
3871
{
@@ -4018,8 +3951,8 @@
3951
"zh-cht": "2FA備份代碼已清除",
3952
"uk": "ДФА резервні коди очищено",
3953
"xloc": [
4021
- "default.handlebars->47->2610",
4022
- "default3.handlebars->35->2427"
3954
+ "default.handlebars->47->2614",
3955
+ "default3.handlebars->35->2610"
3956
]
3957
},
3958
{
@@ -4050,7 +3983,7 @@
3983
"xloc": [
3984
"default-mobile.handlebars->11->63",
3985
"default.handlebars->47->208",
4053
- "default3.handlebars->35->198"
3986
+ "default3.handlebars->35->207"
3987
]
3988
},
3989
{
@@ -4079,8 +4012,8 @@
4012
"zh-cht": "第二個因素",
4013
"uk": "Двофакторний",
4014
"xloc": [
4082
- "default.handlebars->47->3187",
4083
- "default3.handlebars->35->2960"
4015
+ "default.handlebars->47->3191",
4016
+ "default3.handlebars->35->3178"
4017
]
4018
},
4019
{
@@ -4109,10 +4042,10 @@
4042
"zh-cht": "啟用第二因素身份驗證",
4043
"uk": "Двофакторна автентифікація увімкнена",
4044
"xloc": [
4112
- "default.handlebars->47->2736",
4113
- "default.handlebars->47->2989",
4114
- "default3.handlebars->35->2551",
4115
- "default3.handlebars->35->2780"
4045
+ "default.handlebars->47->2740",
4046
+ "default.handlebars->47->2993",
4047
+ "default3.handlebars->35->2736",
4048
+ "default3.handlebars->35->2986"
4049
]
4050
},
4051
{
@@ -4163,7 +4096,7 @@
4096
"ru": "3",
4097
"tr": "3",
4098
"xloc": [
4166
- "default-mobile.handlebars->11->733"
4099
+ "default-mobile.handlebars->11->739"
4100
]
4101
},
4102
{
@@ -4282,10 +4215,10 @@
4215
"zh-cht": "30分鐘",
4216
"uk": "30 хвилин",
4217
"xloc": [
4285
- "default.handlebars->47->1216",
4286
- "default.handlebars->47->2052",
4287
- "default3.handlebars->35->1140",
4288
- "default3.handlebars->35->1890"
4218
+ "default.handlebars->47->1217",
4219
+ "default.handlebars->47->2054",
4220
+ "default3.handlebars->35->1212",
4221
+ "default3.handlebars->35->2034"
4222
]
4223
},
4224
{
@@ -4314,9 +4247,9 @@
4247
"zh-cht": "32 位",
4248
"uk": "32-біта",
4249
"xloc": [
4317
- "default-mobile.handlebars->11->744",
4318
- "default.handlebars->47->1604",
4319
- "default3.handlebars->35->1467"
4250
+ "default-mobile.handlebars->11->750",
4251
+ "default.handlebars->47->1605",
4252
+ "default3.handlebars->35->1589"
4253
]
4254
},
4255
{
@@ -4402,10 +4335,10 @@
4335
"zh-cht": "4天",
4336
"uk": "4 дні",
4337
"xloc": [
4405
- "default.handlebars->47->1226",
4406
- "default.handlebars->47->2062",
4407
- "default3.handlebars->35->1150",
4408
- "default3.handlebars->35->1900"
4338
+ "default.handlebars->47->1227",
4339
+ "default.handlebars->47->2064",
4340
+ "default3.handlebars->35->1222",
4341
+ "default3.handlebars->35->2044"
4342
]
4343
},
4344
{
@@ -4434,10 +4367,10 @@
4367
"zh-cht": "4個小時",
4368
"uk": "4 години",
4369
"xloc": [
4437
- "default.handlebars->47->1220",
4438
- "default.handlebars->47->2056",
4439
- "default3.handlebars->35->1144",
4440
- "default3.handlebars->35->1894"
4370
+ "default.handlebars->47->1221",
4371
+ "default.handlebars->47->2058",
4372
+ "default3.handlebars->35->1216",
4373
+ "default3.handlebars->35->2038"
4374
]
4375
},
4376
{
@@ -4583,10 +4516,10 @@
4516
"zh-cht": "45分鐘",
4517
"uk": "45 хвилин",
4518
"xloc": [
4586
- "default.handlebars->47->1217",
4587
- "default.handlebars->47->2053",
4588
- "default3.handlebars->35->1141",
4589
- "default3.handlebars->35->1891"
4519
+ "default.handlebars->47->1218",
4520
+ "default.handlebars->47->2055",
4521
+ "default3.handlebars->35->1213",
4522
+ "default3.handlebars->35->2035"
4523
]
4524
},
4525
{
@@ -4644,10 +4577,10 @@
4577
"zh-cht": "5分鐘",
4578
"uk": "5 хвилин",
4579
"xloc": [
4647
- "default.handlebars->47->1213",
4648
- "default.handlebars->47->2049",
4649
- "default3.handlebars->35->1137",
4650
- "default3.handlebars->35->1887"
4580
+ "default.handlebars->47->1214",
4581
+ "default.handlebars->47->2051",
4582
+ "default3.handlebars->35->1209",
4583
+ "default3.handlebars->35->2031"
4584
]
4585
},
4586
{
@@ -4676,9 +4609,9 @@
4609
"zh-cht": "5秒",
4610
"uk": "5 секунд",
4611
"xloc": [
4679
- "default-mobile.handlebars->11->577",
4680
- "default.handlebars->47->1251",
4681
- "default3.handlebars->35->1174"
4612
+ "default-mobile.handlebars->11->583",
4613
+ "default.handlebars->47->1252",
4614
+ "default3.handlebars->35->1247"
4615
]
4616
},
4617
{
@@ -4857,10 +4790,10 @@
4790
"zh-cht": "60分鐘",
4791
"uk": "60 хвилин",
4792
"xloc": [
4860
- "default.handlebars->47->1218",
4861
- "default.handlebars->47->2054",
4862
- "default3.handlebars->35->1142",
4863
- "default3.handlebars->35->1892"
4793
+ "default.handlebars->47->1219",
4794
+ "default.handlebars->47->2056",
4795
+ "default3.handlebars->35->1214",
4796
+ "default3.handlebars->35->2036"
4797
]
4798
},
4799
{
@@ -4947,9 +4880,9 @@
4880
"zh-chs": "64 位",
4881
"zh-cht": "64 位",
4882
"xloc": [
4950
- "default-mobile.handlebars->11->746",
4951
- "default.handlebars->47->1606",
4952
- "default3.handlebars->35->1469"
4883
+ "default-mobile.handlebars->11->752",
4884
+ "default.handlebars->47->1607",
4885
+ "default3.handlebars->35->1591"
4886
]
4887
},
4888
{
@@ -4983,9 +4916,6 @@
4916
"default3.handlebars->container->xxAddAgentModal->xxAddAgentModalConf->1->xxAddAgentBody->dialog7->d7rdpkvm->3->d7rdpsize->7"
4917
]
4918
},
4986
- {
4987
- "en": "640×480"
4988
- },
4919
{
4920
"bs": "64-bitna verzija macOS Mesh Agenta",
4921
"ca": "Versió de 64 bits de macOS Mesh Agent",
@@ -5116,8 +5046,8 @@
5046
"zh-cht": "7天電源狀態",
5047
"uk": "7-денний стан живлення",
5048
"xloc": [
5119
- "default.handlebars->47->1297",
5120
- "default3.handlebars->35->1208"
5049
+ "default.handlebars->47->1298",
5050
+ "default3.handlebars->35->1288"
5051
]
5052
},
5053
{
@@ -5146,8 +5076,8 @@
5076
"zh-cht": "7天",
5077
"uk": "7 днів",
5078
"xloc": [
5149
- "default.handlebars->47->2063",
5150
- "default3.handlebars->35->1901"
5079
+ "default.handlebars->47->2065",
5080
+ "default3.handlebars->35->2045"
5081
]
5082
},
5083
{
@@ -5237,14 +5167,14 @@
5167
"zh-cht": "8小時",
5168
"uk": "8 годин",
5169
"xloc": [
5240
- "default.handlebars->47->1221",
5241
- "default.handlebars->47->2057",
5242
- "default.handlebars->47->556",
5243
- "default.handlebars->47->570",
5244
- "default3.handlebars->35->1145",
5245
- "default3.handlebars->35->1895",
5246
- "default3.handlebars->35->518",
5247
- "default3.handlebars->35->531"
5170
+ "default.handlebars->47->1222",
5171
+ "default.handlebars->47->2059",
5172
+ "default.handlebars->47->559",
5173
+ "default.handlebars->47->573",
5174
+ "default3.handlebars->35->1217",
5175
+ "default3.handlebars->35->2039",
5176
+ "default3.handlebars->35->556",
5177
+ "default3.handlebars->35->570"
5178
]
5179
},
5180
{
@@ -5364,35 +5294,6 @@
5294
"player.handlebars->3->50"
5295
]
5296
},
5367
- {
5368
- "bs": "</table>",
5369
- "ca": "</taula>",
5370
- "cs": "</table>",
5371
- "da": "</table>",
5372
- "de": "</table>",
5373
- "en": "</table>",
5374
- "es": "</table>",
5375
- "fi": "</table>",
5376
- "fr": "</table>",
5377
- "hi": "</table>",
5378
- "hu": "<<",
5379
- "it": "</table>",
5380
- "ja": "</table>",
5381
- "ko": "</table>",
5382
- "nl": "</table>",
5383
- "pl": "</table>",
5384
- "pt": "</table>",
5385
- "pt-br": "</table>",
5386
- "ru": "</table>",
5387
- "sv": "</table>",
5388
- "tr": "</table>",
5389
- "zh-chs": "</table>",
5390
- "zh-cht": "</table>",
5391
- "xloc": [
5392
- "default.handlebars->47->645",
5393
- "default3.handlebars->35->584"
5394
- ]
5395
- },
5297
{
5298
"bs": "<<",
5299
"ca": "<<",
@@ -5421,289 +5322,6 @@
5322
"player.handlebars->p11->deskarea0->deskarea4->3"
5323
]
5324
},
5424
- {
5425
- "bs": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">Hardverski ključevi</a> se koriste kao sekundarna autentifikacija za prijavu.",
5426
- "ca": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">Les claus de maquinari</a> s'utilitzen com a autenticació d'inici de sessió secundària.",
5427
- "cs": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">Hardwarové klíče</a> jsou použity jako druhý faktor ověřování.",
5428
- "da": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">Hardwarenøgler</a> bruges som sekundær login-godkendelse.",
5429
- "de": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">Hardware-Schlüssel</a> werden für Zweifaktor-Anmeldung verwendet.",
5430
- "en": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">Hardware keys</a> are used as secondary login authentication.",
5431
- "es": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">Las claves de Hardware</a> son usadas como segundo factor de autenticación.",
5432
- "fi": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">Laiteavaimia </a> käytetään toissijaisena kirjautumistunnistuksena.",
5433
- "fr": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">Les clés physiques (Yubikeys)</a> sont utilisées pour l'authentification à double facteur.",
5434
- "hi": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\"> हार्डवेयर कुंजियाँ </a> को द्वितीयक लॉगिन प्रमाणीकरण के रूप में उपयोग किया जाता है।",
5435
- "hu": "A <a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">hardware kulcsok</a> másodlagos bejelentkezési hitelesítésre szolgálnak.",
5436
- "it": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">chiavi hardware</a>vengono utilizzate come autenticazione di accesso secondaria.",
5437
- "ja": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">ハードウェアキー</a>は、セカンダリログイン認証として使用されます。",
5438
- "ko": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">하드웨어 전자열쇠</a>는 보조 로그인 인증으로 사용됩니다.",
5439
- "nl": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">Hardware sleutels</a> worden gebruikt als secundaire inlogverificatie.",
5440
- "pl": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">Klucze sprzętowe</a> używane jako druga metoda autoryzacji.",
5441
- "pt": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">Chaves Hardware</a> são usados como autenticação de login secundária.",
5442
- "pt-br": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\"> Chaves de hardware </a> são usadas como autenticação de login secundária.",
5443
- "ru": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">Аппаратные ключи</a> используются в качестве дополнительной аутентификации.",
5444
- "sv": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\"> Hårdvaranycklar </a> används som sekundär inloggningsautentisering.",
5445
- "tr": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\"> Donanım anahtarları </a>, ikincil oturum açma kimlik doğrulaması olarak kullanılır.",
5446
- "zh-chs": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">硬件密钥</a>用作辅助登录身份验证。",
5447
- "zh-cht": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">硬件密鑰</a>用作輔助登入身份驗證。",
5448
- "uk": "<a href=\\\"https://www.yubico.com/\\\" rel=\\\"noreferrer noopener\\\" target=\\\"_blank\\\">Апаратні ключі</a> використовуються для двофакторної автентифікації.",
5449
- "xloc": [
5450
- "default.handlebars->47->235",
5451
- "default3.handlebars->35->222"
5452
- ]
5453
- },
5454
- {
5455
- "bs": "<b style=color:green>Aktivacija prijave u 2 koraka je uklonjena</b>. Ovu funkciju možete ponovo aktivirati u bilo kojem trenutku.",
5456
- "ca": "<b style=color:green>S'ha eliminat l'activació de l'inici de sessió en dos passos</b>. Podeu reactivar aquesta funció en qualsevol moment.",
5457
- "cs": "<b style=color:green>2-faktorové přihlašování odebráno</b>. Lze znovu kdykoliv znovu zapnout.",
5458
- "da": "<b style=color:green>2-trins loginaktivering fjernet</b>. Du kan til enhver tid genaktivere denne funktion.",
5459
- "de": "<b style=color:green>Aktivierung der Zweifaktor-Anmeldung entfernt</b>. Sie können dieses Feature jederzeit reaktivieren.",
5460
- "en": "<b style=color:green>2-step login activation removed</b>. You can reactivate this feature at any time.",
5461
- "es": "<b style=color:green>Activación de inicio de sesión de 2 pasos eliminada</b>. Puedes reactivar esta función en cualquier momento.",
5462
- "fi": "<b style=color:green>2-vaiheisen sisäänkirjautumisen aktivointi poistettu</b>. Voit aktivoida tämän ominaisuuden uudelleen milloin tahansa.",
5463
- "fr": "<b style=color:green>Authentification à double facteur supprimée</b>. Vous pouvez la réactiver à n'importe quel moment.",
5464
- "hi": "<b style=color:green>2-चरण लॉगिन सक्रियण हटा दिया गया </ b>। आप किसी भी समय इस सुविधा को पुनः सक्रिय कर सकते हैं।",
5465
- "hu": "<b style=color:green>A kétlépcsős bejelentkezés aktiválása eltávolítva</b>. Ezt a funkciót bármikor újraaktiválhatja.",
5466
- "it": "<b style=color:green>autenticazione a due fattori rimossa</b>. Puoi riattivare questa funzione in qualsiasi momento.",
5467
- "ja": "<b style=color:green>2段階のログインアクティベーションが削除されました</ b>。この機能はいつでも再アクティブ化できます。",
5468
- "ko": "<b style=color:green>2단계 로그인 활성화가 제거되었습니다 </b>. 언제든지 이 기능을 다시 활성화 할 수 있습니다.",
5469
- "nl": "<b style=color:green>Tweestapsverificatie verwijderd</b>. Je kan deze functie ten allen tijde weer inschakelen.",
5470
- "pl": "<b style=color:green>2-stopniowa aktywacja logowania usunięta</b>. Funkcję tę można ponownie aktywować w dowolnym momencie.",
5471
- "pt": "<b style=color:green>Ativação de login em duas etapas removida</b>. Pode reativar esse recurso a qualquer momento.",
5472
- "pt-br": "<b style = color: green> Ativação de autenticação em duas etapas removida </b>. Você pode reativar esse recurso a qualquer momento.",
5473
- "ru": "<b style=color:green>Активация двухэтапного входа удалена</b>. Вы можете активировать обратно эту функцию в любое время.",
5474
- "sv": "<b style = color: green> 2-stegs inloggningsaktivering har tagits bort </b>. Du kan återaktivera den här funktionen när som helst.",
5475
- "tr": "<b style = color: green> 2 adımlı giriş aktivasyonu kaldırıldı </b>. Bu özelliği istediğiniz zaman yeniden etkinleştirebilirsiniz.",
5476
- "zh-chs": "<b style=color:green>删除了两步登录激活</ b>。您可以随时重新激活此功能。",
5477
- "zh-cht": "<b style = color:green>刪除了兩步登入啟用</ b>。你可以隨時重新啟用此功能。",
5478
- "uk": "<b style=color:green>Двофакторна автентифікація видалена</b>. Ви можете відновити цю властивість в будь-який момент.",
5479
- "xloc": [
5480
- "default-mobile.handlebars->11->75"
5481
- ]
5482
- },
5483
- {
5484
- "bs": "<b style=color:green>Aktivacija prijave u 2 koraka uspješna</b>. Sada će vam trebati važeći token da se ponovo prijavite.",
5485
- "ca": "<b style=color:green>Activació de l'inici de sessió en dos passos correcta</b>. Ara necessitareu un testimoni vàlid per tornar a iniciar sessió.",
5486
- "cs": "<b style=color:green>2-faktorové ověřování zapnuto</b>. Pro opětovné přihlášení nyní budete potřebovat platný token.",
5487
- "da": "<b style=color:green>2-trins loginaktivering lykkedes</b>. Du skal nu bruge et gyldigt token for at logge på igen.",
5488
- "de": "<b style=color:green>Aktivierung der Zweifaktor-Anmeldung erfolgreich</b>. Sie werden nun ein gültiges Token benötigen, um sich erneut einzuloggen.",
5489
- "en": "<b style=color:green>2-step login activation successful</b>. You will now need a valid token to login again.",
5490
- "es": "<b style=color:green>Segundo-factor de autenticación activado exitosamente</b>. Ahora necesitará un token válido para iniciar sesión nuevamente.",
5491
- "fi": "<b style=color:green>Kaksivaiheisen sisäänkirjautumisen aktivointi onnistunut</b>. Tarvitset jatkossa kelvollisen tunnuksen kirjautuaksesi uudelleen sisään.",
5492
- "fr": "<b style=color:green>Authentification à double facteur activée</b>. Vous aurez besoin maintenant d'un jeton de connexion pour vous connecter. ",
5493
- "hi": "<b style=color:green>2-चरण लॉगिन सक्रियण सफल </ b>। अब आपको फिर से लॉगिन करने के लिए वैध टोकन की आवश्यकता होगी।",
5494
- "hu": "<b style=color:green>A kétlépcsős bejelentkezés aktiválása sikeres</b>. Az újbóli bejelentkezéshez most érvényes tokenre lesz szüksége.",
5495
- "it": "<b style=color:green>autenticazione a 2 fattori attivata con successo</b>. Ora avrai bisogno di un token valido per accedere nuovamente.",
5496
- "ja": "<b style=color:green>2段階ログインの有効化に成功</ b>。再度ログインするには、有効なトークンが必要になります。",
5497
- "ko": "<b style=color:green>2 단계 로그인 활성화 성공 </b>. 이제 다시 로그인하려면 유효한 토큰이 필요합니다.",
5498
- "nl": "<b style=color:green>Tweestapsverificatie successvol</b>. U hebt nu een geldig token nodig om opnieuw in te loggen.",
5499
- "pl": "<b style=color:green>Aktywacja logowania dwuetapowego powiodła się</b>. Będziesz teraz potrzebował ważnego tokena, aby zalogować się ponownie.",
5500
- "pt": "<b style=color:green> ativação de login em duas etapas </b>. Agora precisará de um token válido para fazer login novamente.",
5501
- "pt-br": "<b style = color: green> Ativação de autenticação em duas etapas bem-sucedida </b>. Agora você precisará de um token válido para fazer o login novamente.",
5502
- "ru": "<b style=color:green>Активация двухэтапного входа успешна</b>. Теперь вам понадобится действительный токен, чтобы снова войти в систему.",
5503
- "sv": "<b style = color: green> 2-stegs inloggningsaktivering lyckades </b>. Du behöver nu en giltig token för att logga in igen.",
5504
- "tr": "<b style = color: green> 2 adımlı oturum açma etkinleştirmesi başarılı </b>. Şimdi tekrar giriş yapmak için geçerli bir anahtara ihtiyacınız olacak.",
5505
- "zh-chs": "<b style=color:green>两步登录激活成功</ b>。您现在需要一个有效的保安编码才能再次登录。",
5506
- "zh-cht": "<b style = color:green>兩步登入啟用成功</ b>。你現在需要一個有效的保安編碼才能再次登入。",
5507
- "uk": "<b style=color:green>Двофакторну автентифікацію підтверджено</b>. Вам буде потрібен чинний токен для нового пікдключення.",
5508
- "xloc": [
5509
- "default-mobile.handlebars->11->72"
5510
- ]
5511
- },
5512
- {
5513
- "bs": "<b style=color:red>Aktivacija prijave u 2 koraka nije uspjela</b>. Obrišite tajnu iz aplikacije i pokušajte ponovo. Imate samo nekoliko minuta da unesete odgovarajući kod.",
5514
- "ca": "<b style=color:red>l'activació de l'inici de sessió en dos passos ha fallat</b>. Esborra el secret de l'aplicació i torna-ho a provar. Només teniu uns minuts per introduir el codi adequat.",
5515
- "cs": "<b style=color:red>zapnutí 2-faktorového přihlášení se nezdařilo</b>. Vymažte tajemství z aplikace a zkuste to znovu. Na zadání správného kódu máte jen pár minut.",
5516
- "da": "<b style=color:red>2-trins loginaktivering mislykkedes</b>. Ryd hemmeligheden fra applikationen, og prøv igen. Du har kun et par minutter til at indtaste den rigtige kode.",
5517
- "de": "<b style=color:red>Aktivierung der Zweifaktor-Anmeldung fehlgeschlagen</b>. Entfernen Sie das Geheimnis aus der Applikation und versuchen Sie es erneut. Sie haben nur wenige Minuten Zeit, um einen gültigen Code einzugeben.",
5518
- "en": "<b style=color:red>2-step login activation failed</b>. Clear the secret from the application and try again. You only have a few minutes to enter the proper code.",
5519
- "es": "<b style=color:red>Error de activación de inicio de sesión usando el segundo factor de autenticación</b>. Borra el código de la aplicación e intenta nuevamente. Sólo tiene unos minutos para ingresar el código adecuado.",
5520
- "fi": "<b style=color:red>Kaksivaiheisen kirjautumisen aktivointi epäonnistui</b>. Poista salainen avain sovelluksesta ja yritä uudelleen. Sinulla on vain muutama minuutti oikean koodin syöttämiseen.",
5521
- "fr": "<b style=color:red>Echec de l'authentification à double facteur</b>. Essayez à nouveau. Vous disposez de quelques minutes pour taper le bon code.",
5522
- "hi": "<b style=color:red>2-step लॉगिन सक्रियण विफल </ b> है। एप्लिकेशन से रहस्य साफ़ करें और पुनः प्रयास करें। आपके पास उचित कोड दर्ज करने के लिए केवल कुछ मिनट हैं।",
5523
- "hu": "<b style=color:red>A kétlépcsős bejelentkezés aktiválása nem sikerült</b>. Törölje ki a titkos kulcsot az alkalmazásból, és próbálja újra. Csak néhány perce van a megfelelő kód megadására.",
5524
- "it": "<b style=color:red>attivazione autenticazione a 2 fattori fallita</b>. Cancella il segreto dall'applicazione e riprova. Hai solo pochi minuti per inserire il codice corretto.",
5525
- "ja": "<b style=color:red>2段階ログインの有効化に失敗しました</ b>。アプリケーションから秘密をクリアして、再試行してください。適切なコードを入力するのに数分しかかかりません。",
5526
- "ko": "<b style=color:red>2 단계 로그인 활성화 실패 </b>. 응용 프로그램에서 비밀을 지우고 다시 시도하십시오. 올바른 코드를 입력하는 데 몇 분 밖에 걸리지 않습니다.",
5527
- "nl": "<b style=color:red>Tweestapsverificatie mislukt</b>. Wis het geheim van de applicatie en probeer het opnieuw. Je hebt maar een paar minuten om de juiste code in te voeren.",
5528
- "pl": "<b style=color:red>aktywacja logowania dwuetapowego nie powiodła się</b>. Wyczyść klucz z aplikacji i spróbuj ponownie. Masz tylko kilka minut na wprowadzenie odpowiedniego kodu.",
5529
- "pt": "<b style=color:red>falha na ativação do login em duas etapas </b>. Limpe o segredo da aplicação e tente novamente. Tem apenas alguns minutos para inserir o código correto.",
5530
- "pt-br": "<b style = color: red> Falha na ativação da autenticação em 2 etapas </b>. Apague o segredo do aplicativo e tente novamente. Você tem apenas alguns minutos para inserir o código adequado.",
5531
- "ru": "<b style=color:red>Активация двухэтапного входа не удалась</b>. Удалите ключ из приложения и попробуйте еще раз. У вас есть всего несколько минут, чтобы ввести правильный код.",
5532
- "sv": "<b style = color: red> Aktivering av tvåstegsinloggning misslyckades </b>. Rensa hemligheten från applikationen och försök igen. Du har bara några minuter på dig att ange rätt kod.",
5533
- "tr": "<b style = color: red> 2 adımlı oturum açma etkinleştirilemedi </b>. Uygulamadan şifreyi kaldırın ve tekrar deneyin. Doğru kodu girmek için yalnızca birkaç dakikanız var.",
5534
- "zh-chs": "<b style=color:red>两步登录激活失败</ b>。从应用程序中清除机密,然后重试。您只有几分钟的时间来输入正确的代码。",
5535
- "zh-cht": "<b style = color:red>兩步登入啟動失敗</ b>。從應用程序中清除秘密,然後重試。你只有幾分鐘的時間來輸入正確的代碼。",
5536
- "uk": "<b style=color:red>Двофакторна автентифікація невдала</b>. Очистіть ключ у застосунку та спробуйте ще раз. Ви маєте кілька хвилин для введеня дійсного коду.",
5537
- "xloc": [
5538
- "default-mobile.handlebars->11->73"
5539
- ]
5540
- },
5541
- {
5542
- "bs": "<b style=color:red>Uklanjanje aktivacije prijave u 2 koraka nije uspjelo</b>. Pokušaj ponovo.",
5543
- "ca": "<b style=color:red>S'ha produït un error en l'eliminació de l'activació de l'inici de sessió en dos passos</b>. Torna-ho a provar.",
5544
- "cs": "<b style=color:red>Odstranění 2-faktorového přihlašování se nezdařilo</b>. Zkuste znovu.",
5545
- "da": "<b style=color:red>Fjernelse af aktivering af 2-trins login mislykkedes</b>. Prøv igen.",
5546
- "de": "<b style=color:red>Entfernen der Aktivierung der Zweifaktor-Anmeldung fehlgeschlagen</b>. Versuchen Sie es erneut.",
5547
- "en": "<b style=color:red>2-step login activation removal failed</b>. Try again.",
5548
- "es": "<b style=color:red>Error al eliminar la activación del segundo factor de autenticación</b>. Inténtalo de nuevo.",
5549
- "fi": "<b style=color:red>Kaksivaiheisen sisäänkirjautumisen aktivoinnin poisto epäonnistui</b>. Yritä uudelleen.",
5550
- "fr": "<b style=color:red>Echec de la suppression de l'authentification à double facteur</b>. Essayer à nouveau.",
5551
- "hi": "<b style=color:red>2-step लॉगिन सक्रियण निष्कासन </ b> विफल रहा। पुनः प्रयास करें।",
5552
- "hu": "<b style=color:red>A kétlépcsős bejelentkezési aktiválás eltávolítása nem sikerült.</b> Próbáld újra.",
5553
- "it": "<b style=color:red>Impossibile rimuovere l'autenticazione a due fattori</b>. Riprova.",
5554
- "ja": "<b style=color:red>2段階のログインアクティベーションの削除に失敗しました</ b>。再試行する。",
5555
- "ko": "<b style=color:red>2 단계 로그인 활성화 제거에 실패했습니다 </b>. 다시 시도하십시오.",
5556
- "nl": "<b style=color:red>Tweestapsverificatie verwijdering mislukt</b>. Probeer het opnieuw.",
5557
- "pl": "<b style=color:red>Nie powiodło się usunięcie aktywacji 2-etapowego logowania</b>. Spróbuj ponownie.",
5558
- "pt": "<b style=color:red>falha na remoção da ativação do login em duas etapas </b>. Tente novamente.",
5559
- "pt-br": "<b style = color: red> Falha na remoção da ativação da autenticação em 2 etapas </b>. Tente novamente.",
5560
- "ru": "<b style=color:red>Удаление активации двухэтапного входа не удалось</b>. Попытайтесь снова.",
5561
- "sv": "<b style = color: red> borttagning av tvåstegs inloggningsaktivering misslyckades </b>. Försök igen.",
5562
- "tr": "<b style = color: red> 2 adımlı giriş aktivasyonu kaldırılamadı </b>. Tekrar deneyin.",
5563
- "zh-chs": "<b style=color:red>两步登录激活删除失败</ b>。再试一次。",
5564
- "zh-cht": "<b style = color:red>兩步登入啟動刪除失敗</ b>。再試一次。",
5565
- "uk": "<b style=color:red>Видалення двофакторної автентифікації невдале</b>. Спробуйте ще раз.",
5566
- "xloc": [
5567
- "default-mobile.handlebars->11->76"
5568
- ]
5569
- },
5570
- {
5571
- "ca": "<b>Servidors DNS</b>",
5572
- "en": "<b>DNS Servers</b>",
5573
- "nl": "<b>DNS Servers</b>",
5574
- "pl": "<b>Serwery DNS</b>",
5575
- "uk": "<b>DNS Сервери</b>",
5576
- "xloc": [
5577
- "default-mobile.handlebars->11->808",
5578
- "default.handlebars->47->1650",
5579
- "default3.handlebars->35->1513"
5580
- ]
5581
- },
5582
- {
5583
- "ca": "<div style=margin-bottom:4px>Efectua una notificació de dispositiu per lots</div>",
5584
- "en": "<div style=margin-bottom:4px>Perform batch device notification</div>",
5585
- "nl": "<div style=margin-bottom:4px>Perform batch device notification</div>",
5586
- "pl": "<div style=margin-bottom:4px>Wykonaj wsadowo powiadomienie na maszynach</div>",
5587
- "uk": "<div style=margin-bottom:4px>Виконати групове сповіщення пристрою</div>",
5588
- "xloc": [
5589
- "default.handlebars->47->767",
5590
- "default3.handlebars->35->721"
5591
- ]
5592
- },
5593
- {
5594
- "en": "<label for=dp2ipkvmhost class=form-label>Hostname</label>",
5595
- "xloc": [
5596
- "default3.handlebars->35->641"
5597
- ]
5598
- },
5599
- {
5600
- "en": "<label for=dp2ipkvmmodel class=form-label>Model</label>",
5601
- "xloc": [
5602
- "default3.handlebars->35->638"
5603
- ]
5604
- },
5605
- {
5606
- "en": "<label for=dp2ipkvmpass class=form-label>Password</label>",
5607
- "xloc": [
5608
- "default3.handlebars->35->643"
5609
- ]
5610
- },
5611
- {
5612
- "en": "<label for=dp2ipkvmuser class=form-label>Username</label>",
5613
- "xloc": [
5614
- "default3.handlebars->35->642"
5615
- ]
5616
- },
5617
- {
5618
- "en": "<label for=dp2meshname class=form-label>Name</>",
5619
- "xloc": [
5620
- "default3.handlebars->35->630"
5621
- ]
5622
- },
5623
- {
5624
- "en": "<label for=dp2meshtype class=form-label>Type</label>",
5625
- "xloc": [
5626
- "default3.handlebars->35->635"
5627
- ]
5628
- },
5629
- {
5630
- "ca": "<span style=color:green>D'acord</span>",
5631
- "en": "<span style=color:green>OK</span>",
5632
- "nl": "<span style=color:green>OK</span>",
5633
- "pl": "<span style=color:green>OK</span>",
5634
- "xloc": [
5635
- "default.handlebars->47->422",
5636
- "default.handlebars->47->424",
5637
- "default.handlebars->47->426",
5638
- "default3.handlebars->35->394",
5639
- "default3.handlebars->35->396",
5640
- "default3.handlebars->35->398"
5641
- ]
5642
- },
5643
- {
5644
- "ca": "<span style=color:red>DOLE</span>",
5645
- "en": "<span style=color:red>BAD</span>",
5646
- "nl": "<span style=color:red>FOUT</span>",
5647
- "pl": "<span style=color:red>NIEPOPRAWNY</span>",
5648
- "uk": "<span style=color:red>Кепсько</span>",
5649
- "xloc": [
5650
- "default.handlebars->47->423",
5651
- "default.handlebars->47->425",
5652
- "default.handlebars->47->427",
5653
- "default3.handlebars->35->395",
5654
- "default3.handlebars->35->397",
5655
- "default3.handlebars->35->399"
5656
- ]
5657
- },
5658
- {
5659
- "bs": "<table style=width:180px>",
5660
- "ca": "<table style=width:180px>",
5661
- "cs": "<table style=width:180px>",
5662
- "da": "<table style=width:180px>",
5663
- "de": "<table style=width:180px>",
5664
- "en": "<table style=width:180px>",
5665
- "es": "<table style=width:180px>",
5666
- "fi": "<table style=width:180px>",
5667
- "fr": "<table style=width:180px>",
5668
- "hi": "<table style=width:180px>",
5669
- "hu": "<table style=width:180px>",
5670
- "it": "<table style=width:180px>",
5671
- "ja": "<table style=width:180px>",
5672
- "ko": "<table style=width:180px>",
5673
- "nl": "<table style=width:180px>",
5674
- "pl": "<table style=width:180px>",
5675
- "pt": "<table style=width:180px>",
5676
- "pt-br": "<table style=width:180px>",
5677
- "ru": "<table style=width:180px>",
5678
- "sv": "<table style=width:180px>",
5679
- "tr": "<table style=width:180px>",
5680
- "zh-chs": "<table style=width:180px>",
5681
- "zh-cht": "<table style=width:180px>",
5682
- "xloc": [
5683
- "default.handlebars->47->642",
5684
- "default3.handlebars->35->581"
5685
- ]
5686
- },
5687
- {
5688
- "ca": "<tr><td style=text-align:center><a rel=\\\"noreferrer noopener\\\" target=_blank href=\\\"https://play.google.com/store/apps/details?id=com. meshcentral.agent2\\\"><img style=cursor:pointer src=\\\"images/google-play-140.png\\\" width=140 srcset=\\\"images/google-play-280.png 2x\\\" />< /a></td></tr>",
5689
- "en": "<tr><td style=text-align:center><a rel=\\\"noreferrer noopener\\\" target=_blank href=\\\"https://play.google.com/store/apps/details?id=com.meshcentral.agent2\\\"><img style=cursor:pointer src=\\\"images/google-play-140.png\\\" width=140 srcset=\\\"images/google-play-280.png 2x\\\" /></a></td></tr>",
5690
- "nl": "<tr><td style=text-align:center><a rel=\\\"noreferrer noopener\\\" target=_blank href=\\\"https://play.google.com/store/apps/details?id=com.meshcentral.agent2\\\"><img style=cursor:pointer src=\\\"images/google-play-140.png\\\" width=140 srcset=\\\"images/google-play-280.png 2x\\\" /></a></td></tr>",
5691
- "pl": "<tr><td style=text-align:center><a rel=\\\"noreferrer noopener\\\" target=_blank href=\\\"https://play.google.com/store/apps/details?id=com.meshcentral.agent2\\\"><img style=cursor:pointer src=\\\"images/google-play-140.png\\\" width=140 srcset=\\\"images/google-play-280.png 2x\\\" /></a></td></tr>",
5692
- "xloc": [
5693
- "default.handlebars->47->643",
5694
- "default3.handlebars->35->582"
5695
- ]
5696
- },
5697
- {
5698
- "ca": "<tr><td style=text-align:center><a rel=\\\"noreferrer noopener\\\" target=_blank href=\\\"https://www.amazon.co.uk/gp/product/B097Z4Q7SK/\\\" ><img style=cursor:pointer src=\\\"images/amazon-appstore-140.png\\\" width=140 srcset=\\\"images/amazon-appstore-280.png 2x\\\" /></a></a></ td></tr>",
5699
- "en": "<tr><td style=text-align:center><a rel=\\\"noreferrer noopener\\\" target=_blank href=\\\"https://www.amazon.co.uk/gp/product/B097Z4Q7SK/\\\"><img style=cursor:pointer src=\\\"images/amazon-appstore-140.png\\\" width=140 srcset=\\\"images/amazon-appstore-280.png 2x\\\" /></a></td></tr>",
5700
- "nl": "<tr><td style=text-align:center><a rel=\\\"noreferrer noopener\\\" target=_blank href=\\\"https://www.amazon.co.uk/gp/product/B097Z4Q7SK/\\\"><img style=cursor:pointer src=\\\"images/amazon-appstore-140.png\\\" width=140 srcset=\\\"images/amazon-appstore-280.png 2x\\\" /></a></td></tr>",
5701
- "pl": "<tr><td style=text-align:center><a rel=\\\"noreferrer noopener\\\" target=_blank href=\\\"https://www.amazon.co.uk/gp/product/B097Z4Q7SK/\\\"><img style=cursor:pointer src=\\\"images/amazon-appstore-140.png\\\" width=140 srcset=\\\"images/amazon-appstore-280.png 2x\\\" /></a></td></tr>",
5702
- "xloc": [
5703
- "default.handlebars->47->644",
5704
- "default3.handlebars->35->583"
5705
- ]
5706
- },
5325
{
5326
"bs": ">>",
5327
"ca": ">>",
@@ -5732,32 +5350,6 @@
5350
"player.handlebars->p11->deskarea0->deskarea4->3"
5351
]
5352
},
5735
- {
5736
- "bs": "Dostupna je nova verzija ovog softvera. Ažurirati sada?",
5737
- "ca": "Hi ha disponible una nova versió d'aquest programari. Actualitzar ara?",
5738
- "cs": "K dispozici je nová verze tohoto softwaru. Nyní aktualizovat?",
5739
- "da": "En ny version af denne software er tilgængelig. Opdater nu?",
5740
- "de": "Eine neue Version dieser Software ist verfügbar. Jetzt aktualisieren?",
5741
- "en": "A new version of this software is available. Update now?",
5742
- "es": "Hay disponible una nueva versión de este software. ¿Actualizar ahora?",
5743
- "fi": "Tästä ohjelmistosta on saatavana uusi versio. Päivitä nyt?",
5744
- "fr": "Une nouvelle version de ce logiciel est disponible. Mettez à jour maintenant?",
5745
- "hi": "इस सॉफ़्टवेयर का एक नया संस्करण उपलब्ध है। अभी अद्यतन करें?",
5746
- "hu": "A szoftver új verziója már elérhető. Frissítés most?",
5747
- "it": "È disponibile una nuova versione di questo software. Aggiorna ora?",
5748
- "ja": "このソフトウェアの新しいバージョンが利用可能です。今すぐアップデート?",
5749
- "ko": "이 소프트웨어의 새 버전을 사용할 수 있습니다. 지금 업데이트 하시겠습니까?",
5750
- "nl": "Er is een nieuwe versie van deze software beschikbaar. Nu bijwerken?",
5751
- "pl": "Dostępna jest nowa wersja tego oprogramowania. Zaktualizować teraz?",
5752
- "pt": "Uma nova versão deste software está disponível. Atualizar agora?",
5753
- "pt-br": "Uma nova versão deste software está disponível. Deseja atualizar agora?",
5754
- "ru": "Доступна новая версия этого программного обеспечения. Обновить сейчас?",
5755
- "sv": "En ny version av denna programvara är tillgänglig. Uppdatera nu?",
5756
- "tr": "Bu yazılımın yeni bir sürümü mevcut. Şimdi güncelle?",
5757
- "zh-chs": "此软件的新版本可用。现在更新?",
5758
- "zh-cht": "該軟件有新版本可用。現在更新?",
5759
- "uk": "Наявна нова версія цієї програми. Оновити зараз?"
5760
- },
5353
{
5354
"bs": "ACM",
5355
"ca": "ACM",
@@ -5783,13 +5375,13 @@
5375
"zh-chs": "ACM",
5376
"zh-cht": "ACM",
5377
"xloc": [
5786
- "default-mobile.handlebars->11->510",
5787
- "default.handlebars->47->2227",
5788
- "default.handlebars->47->436",
5789
- "default.handlebars->47->916",
5790
- "default3.handlebars->35->2082",
5791
- "default3.handlebars->35->408",
5792
- "default3.handlebars->35->853"
5378
+ "default-mobile.handlebars->11->516",
5379
+ "default.handlebars->47->2231",
5380
+ "default.handlebars->47->439",
5381
+ "default.handlebars->47->917",
5382
+ "default3.handlebars->35->2226",
5383
+ "default3.handlebars->35->436",
5384
+ "default3.handlebars->35->914"
5385
]
5386
},
5387
{
@@ -5867,10 +5459,10 @@
5459
"zh-chs": "AMT",
5460
"zh-cht": "AMT",
5461
"xloc": [
5870
- "default.handlebars->47->413",
5871
- "default.handlebars->47->721",
5872
- "default3.handlebars->35->385",
5873
- "default3.handlebars->35->679"
5462
+ "default.handlebars->47->416",
5463
+ "default.handlebars->47->722",
5464
+ "default3.handlebars->35->413",
5465
+ "default3.handlebars->35->719"
5466
]
5467
},
5468
{
@@ -5879,8 +5471,8 @@
5471
"nl": "AMT Host",
5472
"pl": "Host AMT",
5473
"xloc": [
5882
- "default.handlebars->47->384",
5883
- "default3.handlebars->35->356"
5474
+ "default.handlebars->47->387",
5475
+ "default3.handlebars->35->384"
5476
]
5477
},
5478
{
@@ -5889,8 +5481,8 @@
5481
"nl": "AMT status",
5482
"pl": "Stan AMT",
5483
"xloc": [
5892
- "default.handlebars->47->385",
5893
- "default3.handlebars->35->357"
5484
+ "default.handlebars->47->388",
5485
+ "default3.handlebars->35->385"
5486
]
5487
},
5488
{
@@ -5918,8 +5510,8 @@
5510
"zh-chs": "操作系统",
5511
"zh-cht": "AMT操作系統",
5512
"xloc": [
5921
- "default.handlebars->47->3332",
5922
- "default3.handlebars->35->3105"
5513
+ "default.handlebars->47->3336",
5514
+ "default3.handlebars->35->3323"
5515
]
5516
},
5517
{
@@ -5947,8 +5539,8 @@
5539
"zh-chs": "AMT-Redir",
5540
"zh-cht": "AMT-Redir",
5541
"xloc": [
5950
- "default.handlebars->47->3194",
5951
- "default3.handlebars->35->2967"
5542
+ "default.handlebars->47->3198",
5543
+ "default3.handlebars->35->3185"
5544
]
5545
},
5546
{
@@ -5976,8 +5568,8 @@
5568
"zh-chs": "AMT-WSMAN",
5569
"zh-cht": "AMT-WSMAN",
5570
"xloc": [
5979
- "default.handlebars->47->3193",
5980
- "default3.handlebars->35->2966"
5571
+ "default.handlebars->47->3197",
5572
+ "default3.handlebars->35->3184"
5573
]
5574
},
5575
{
@@ -5985,8 +5577,8 @@
5577
"en": "APK",
5578
"nl": "APK",
5579
"xloc": [
5988
- "default.handlebars->47->648",
5989
- "default3.handlebars->35->587"
5580
+ "default.handlebars->47->649",
5581
+ "default3.handlebars->35->646"
5582
]
5583
},
5584
{
@@ -5996,17 +5588,17 @@
5588
"pl": "Wersja APK MeshAgent",
5589
"uk": "MeshAgent версія APK",
5590
"xloc": [
5999
- "default-mobile.handlebars->11->965",
6000
- "default.handlebars->47->647",
6001
- "default3.handlebars->35->586"
5591
+ "default-mobile.handlebars->11->971",
5592
+ "default.handlebars->47->648",
5593
+ "default3.handlebars->35->645"
5594
]
5595
},
5596
{
5597
"en": "ARM 64bit version of macOS Mesh Agent",
5598
"nl": "ARM 64bit versie van de macOS Mesh Agent",
5599
"xloc": [
6008
- "default.handlebars->47->634",
6009
- "default3.handlebars->35->573"
5600
+ "default.handlebars->47->637",
5601
+ "default3.handlebars->35->634"
5602
]
5603
},
5604
{
@@ -6018,10 +5610,10 @@
5610
"pl": "Meshagent wersja ARM 64bit",
5611
"uk": "MeshAgent версія ARM 64біт ",
5612
"xloc": [
6021
- "default.handlebars->47->619",
6022
- "default.handlebars->47->668",
6023
- "default3.handlebars->35->558",
6024
- "default3.handlebars->35->607"
5613
+ "default.handlebars->47->622",
5614
+ "default.handlebars->47->669",
5615
+ "default3.handlebars->35->619",
5616
+ "default3.handlebars->35->666"
5617
]
5618
},
5619
{
@@ -6200,12 +5792,12 @@
5792
"zh-chs": "影音",
5793
"zh-cht": "視聽",
5794
"xloc": [
6203
- "default-mobile.handlebars->11->751",
6204
- "default-mobile.handlebars->11->753",
6205
- "default.handlebars->47->935",
6206
- "default.handlebars->47->937",
6207
- "default3.handlebars->35->872",
6208
- "default3.handlebars->35->874"
5795
+ "default-mobile.handlebars->11->757",
5796
+ "default-mobile.handlebars->11->759",
5797
+ "default.handlebars->47->936",
5798
+ "default.handlebars->47->938",
5799
+ "default3.handlebars->35->933",
5800
+ "default3.handlebars->35->935"
5801
]
5802
},
5803
{
@@ -6234,9 +5826,9 @@
5826
"zh-cht": "拒絕存取",
5827
"uk": "Доступ Відмовлено",
5828
"xloc": [
6237
- "default-mobile.handlebars->11->915",
6238
- "default.handlebars->47->1758",
6239
- "default3.handlebars->35->1619"
5829
+ "default-mobile.handlebars->11->921",
5830
+ "default.handlebars->47->1759",
5831
+ "default3.handlebars->35->1741"
5832
]
5833
},
5834
{
@@ -6265,7 +5857,7 @@
5857
"zh-cht": "訪問被拒絕。",
5858
"uk": "Доступ Забраковано.",
5859
"xloc": [
6268
- "login2.handlebars->7->231"
5860
+ "login2.handlebars->7->230"
5861
]
5862
},
5863
{
@@ -6296,7 +5888,7 @@
5888
"xloc": [
5889
"login-mobile.handlebars->5->16",
5890
"login.handlebars->5->18",
6299
- "login2.handlebars->7->217"
5891
+ "login2.handlebars->7->216"
5892
]
5893
},
5894
{
@@ -6325,8 +5917,8 @@
5917
"zh-cht": "存取伺服器檔案",
5918
"uk": "Доступ до файлів серверу",
5919
"xloc": [
6328
- "default.handlebars->47->2919",
6329
- "default3.handlebars->35->2710"
5920
+ "default.handlebars->47->2923",
5921
+ "default3.handlebars->35->2916"
5922
]
5923
},
5924
{
@@ -6446,20 +6038,26 @@
6038
"zh-cht": "帳號安全",
6039
"uk": "Безпека Акаунту",
6040
"xloc": [
6449
- "default-mobile.handlebars->11->334",
6450
- "default-mobile.handlebars->11->336",
6451
- "default-mobile.handlebars->11->348",
6452
- "default-mobile.handlebars->11->477",
6453
- "default-mobile.handlebars->11->479",
6454
- "default-mobile.handlebars->11->90",
6041
+ "default-mobile.handlebars->11->340",
6042
+ "default-mobile.handlebars->11->342",
6043
+ "default-mobile.handlebars->11->354",
6044
+ "default-mobile.handlebars->11->483",
6045
+ "default-mobile.handlebars->11->485",
6046
+ "default-mobile.handlebars->11->96",
6047
"default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3AccountActions->p2AccountSecurity->1->0",
6456
- "default.handlebars->47->2092",
6048
"default.handlebars->47->2094",
6458
- "default.handlebars->47->3386",
6459
- "default.handlebars->47->729",
6460
- "default.handlebars->47->876",
6461
- "default.handlebars->47->878",
6462
- "default3.handlebars->35->3155"
6049
+ "default.handlebars->47->2096",
6050
+ "default.handlebars->47->3390",
6051
+ "default.handlebars->47->730",
6052
+ "default.handlebars->47->877",
6053
+ "default.handlebars->47->879",
6054
+ "default3.handlebars->35->2095",
6055
+ "default3.handlebars->35->2096",
6056
+ "default3.handlebars->35->3375",
6057
+ "default3.handlebars->35->3377",
6058
+ "default3.handlebars->35->727",
6059
+ "default3.handlebars->35->874",
6060
+ "default3.handlebars->35->876"
6061
]
6062
},
6063
{
@@ -6488,9 +6086,9 @@
6086
"zh-cht": "帳號設定",
6087
"uk": "Налаштування Акаунту",
6088
"xloc": [
6491
- "default-mobile.handlebars->11->1023",
6492
- "default.handlebars->47->3257",
6493
- "default3.handlebars->35->3030"
6089
+ "default-mobile.handlebars->11->1029",
6090
+ "default.handlebars->47->3261",
6091
+ "default3.handlebars->35->3248"
6092
]
6093
},
6094
{
@@ -6564,8 +6162,8 @@
6162
"pl": "Konto zmienione di synchronizacji z danymi LDAP.",
6163
"uk": "Акаунт змінено на синхронізацію з даними LDAP.",
6164
"xloc": [
6567
- "default.handlebars->47->2671",
6568
- "default3.handlebars->35->2488"
6165
+ "default.handlebars->47->2675",
6166
+ "default3.handlebars->35->2671"
6167
]
6168
},
6169
{
@@ -6594,8 +6192,8 @@
6192
"zh-cht": "帳戶已更改:{0}",
6193
"uk": "Акаунт змінено: {0}",
6194
"xloc": [
6597
- "default.handlebars->47->2583",
6598
- "default3.handlebars->35->2400"
6195
+ "default.handlebars->47->2587",
6196
+ "default3.handlebars->35->2583"
6197
]
6198
},
6199
{
@@ -6624,8 +6222,8 @@
6222
"zh-cht": "創建帳戶,電子郵件為{0}",
6223
"uk": "Акаунт створено з е-поштою {0}",
6224
"xloc": [
6627
- "default.handlebars->47->2582",
6628
- "default3.handlebars->35->2399"
6225
+ "default.handlebars->47->2586",
6226
+ "default3.handlebars->35->2582"
6227
]
6228
},
6229
{
@@ -6654,8 +6252,8 @@
6252
"zh-cht": "已創建帳戶,名稱為 {0}。",
6253
"uk": "Акаунт створено із іменем {0}.",
6254
"xloc": [
6657
- "default.handlebars->47->2645",
6658
- "default3.handlebars->35->2462"
6255
+ "default.handlebars->47->2649",
6256
+ "default3.handlebars->35->2645"
6257
]
6258
},
6259
{
@@ -6684,8 +6282,8 @@
6282
"zh-cht": "帳戶已創建,用戶名是{0}",
6283
"uk": "Акаунт створено із іменем користувача {0}",
6284
"xloc": [
6687
- "default.handlebars->47->2581",
6688
- "default3.handlebars->35->2398"
6285
+ "default.handlebars->47->2585",
6286
+ "default3.handlebars->35->2581"
6287
]
6288
},
6289
{
@@ -6716,11 +6314,11 @@
6314
"xloc": [
6315
"default-mobile.handlebars->11->67",
6316
"default.handlebars->47->212",
6719
- "default.handlebars->47->2738",
6720
- "default.handlebars->47->2916",
6721
- "default3.handlebars->35->202",
6722
- "default3.handlebars->35->2553",
6723
- "default3.handlebars->35->2707"
6317
+ "default.handlebars->47->2742",
6318
+ "default.handlebars->47->2920",
6319
+ "default3.handlebars->35->211",
6320
+ "default3.handlebars->35->2738",
6321
+ "default3.handlebars->35->2913"
6322
]
6323
},
6324
{
@@ -6749,12 +6347,12 @@
6347
"zh-cht": "達到帳戶限制。",
6348
"uk": "Досягнуто обмеження акаунту.",
6349
"xloc": [
6752
- "default-mobile.handlebars->11->1035",
6753
- "default.handlebars->47->3269",
6754
- "default3.handlebars->35->3042",
6350
+ "default-mobile.handlebars->11->1041",
6351
+ "default.handlebars->47->3273",
6352
+ "default3.handlebars->35->3260",
6353
"login-mobile.handlebars->5->6",
6354
"login.handlebars->5->8",
6757
- "login2.handlebars->7->207"
6355
+ "login2.handlebars->7->206"
6356
]
6357
},
6358
{
@@ -6785,7 +6383,7 @@
6383
"xloc": [
6384
"login-mobile.handlebars->5->15",
6385
"login.handlebars->5->17",
6788
- "login2.handlebars->7->216"
6386
+ "login2.handlebars->7->215"
6387
]
6388
},
6389
{
@@ -6814,8 +6412,8 @@
6412
"zh-cht": "帳號登錄",
6413
"uk": "Вхід до акаунту",
6414
"xloc": [
6817
- "default.handlebars->47->2518",
6818
- "default3.handlebars->35->2335"
6415
+ "default.handlebars->47->2522",
6416
+ "default3.handlebars->35->2518"
6417
]
6418
},
6419
{
@@ -6844,8 +6442,8 @@
6442
"zh-cht": "從 {0}、{1}、{2} 登錄帳戶",
6443
"uk": "Вхід до акаунту з {0}, {1}, {2}",
6444
"xloc": [
6847
- "default.handlebars->47->2624",
6848
- "default3.handlebars->35->2441"
6445
+ "default.handlebars->47->2628",
6446
+ "default3.handlebars->35->2624"
6447
]
6448
},
6449
{
@@ -6859,8 +6457,8 @@
6457
"pl": "Zapisy logowania tokenami użytkownika",
6458
"uk": "Записи токенів входу до акаунту",
6459
"xloc": [
6862
- "default.handlebars->47->3236",
6863
- "default3.handlebars->35->3009"
6460
+ "default.handlebars->47->3240",
6461
+ "default3.handlebars->35->3227"
6462
]
6463
},
6464
{
@@ -6889,8 +6487,8 @@
6487
"zh-cht": "帳戶登出",
6488
"uk": "Вихід з акаунту",
6489
"xloc": [
6892
- "default.handlebars->47->2519",
6893
- "default3.handlebars->35->2336"
6490
+ "default.handlebars->47->2523",
6491
+ "default3.handlebars->35->2519"
6492
]
6493
},
6494
{
@@ -6921,7 +6519,7 @@
6519
"xloc": [
6520
"login-mobile.handlebars->5->12",
6521
"login.handlebars->5->14",
6924
- "login2.handlebars->7->213"
6522
+ "login2.handlebars->7->212"
6523
]
6524
},
6525
{
@@ -6950,8 +6548,8 @@
6548
"zh-cht": "帳戶密碼已更改:{0}",
6549
"uk": "Пароль до акаунту змінено: {0}",
6550
"xloc": [
6953
- "default.handlebars->47->2591",
6954
- "default3.handlebars->35->2408"
6551
+ "default.handlebars->47->2595",
6552
+ "default3.handlebars->35->2591"
6553
]
6554
},
6555
{
@@ -6980,8 +6578,8 @@
6578
"zh-cht": "帳戶已刪除",
6579
"uk": "Акаунт видалено",
6580
"xloc": [
6983
- "default.handlebars->47->2580",
6984
- "default3.handlebars->35->2397"
6581
+ "default.handlebars->47->2584",
6582
+ "default3.handlebars->35->2580"
6583
]
6584
},
6585
{
@@ -7040,10 +6638,10 @@
6638
"zh-cht": "指令",
6639
"uk": "Дія",
6640
"xloc": [
7043
- "default-mobile.handlebars->11->921",
7044
- "default.handlebars->47->1764",
6641
+ "default-mobile.handlebars->11->927",
6642
+ "default.handlebars->47->1765",
6643
"default.handlebars->container->column_l->p42->p42tbl->1->0->8",
7046
- "default3.handlebars->35->1624",
6644
+ "default3.handlebars->35->1747",
6645
"default3.handlebars->container->column_l->p42->p42tbl->1->0->17"
6646
]
6647
},
@@ -7073,10 +6671,10 @@
6671
"zh-cht": "動作檔案",
6672
"uk": "Файл Операцій",
6673
"xloc": [
7076
- "default.handlebars->47->1344",
7077
- "default.handlebars->47->1346",
7078
- "default3.handlebars->35->1245",
7079
- "default3.handlebars->35->1247"
6674
+ "default.handlebars->47->1345",
6675
+ "default.handlebars->47->1347",
6676
+ "default3.handlebars->35->1333",
6677
+ "default3.handlebars->35->1335"
6678
]
6679
},
6680
{
@@ -7105,15 +6703,15 @@
6703
"zh-cht": "動作",
6704
"uk": "Дії",
6705
"xloc": [
7108
- "default-mobile.handlebars->11->544",
6706
+ "default-mobile.handlebars->11->550",
6707
"default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea4->1->3",
6708
"default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->1",
6709
"default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea4->1->3",
7112
- "default.handlebars->47->1008",
6710
+ "default.handlebars->47->1009",
6711
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->1",
6712
"default.handlebars->container->column_l->p12->termTable->1->1->0->1->1",
6713
"default.handlebars->container->column_l->p13->p13toolbar->1->0->1->1",
7116
- "default3.handlebars->35->945",
6714
+ "default3.handlebars->35->1006",
6715
"default3.handlebars->container->column_l->p11->deskarea0->deskarea1->3",
6716
"default3.handlebars->container->column_l->p12->termTable->1->1->0->1->3",
6717
"default3.handlebars->container->column_l->p13->p13toolbar->1->0->1->3"
@@ -7145,8 +6743,8 @@
6743
"zh-cht": "使用FAT格式的USB密鑰在管理控制模式(ACM)中激活英特爾®AMT。將setup.bin放在其上,然後使用此鍵引導一台或多台計算機。",
6744
"uk": "Активуйте Intel® AMT у режимі адміністратора (Admin Control Mode = ACM) за допомогою USB-накопичувача у форматі FAT. Помістіть на нього файл setup.bin і завантажте один або кілька комп’ютерів за допомогою цього накопичувача.",
6745
"xloc": [
7148
- "default.handlebars->47->522",
7149
- "default3.handlebars->35->486"
6746
+ "default.handlebars->47->525",
6747
+ "default3.handlebars->35->522"
6748
]
6749
},
6750
{
@@ -7233,8 +6831,8 @@
6831
"zh-cht": "如果ACM失敗,則激活到CCM",
6832
"uk": "Активувати CCM, якщо ACM зазнало невдачі",
6833
"xloc": [
7236
- "default.handlebars->47->2282",
7237
- "default3.handlebars->35->2125"
6834
+ "default.handlebars->47->2286",
6835
+ "default3.handlebars->35->2279"
6836
]
6837
},
6838
{
@@ -7263,15 +6861,15 @@
6861
"zh-cht": "已啟動",
6862
"uk": "Активовано",
6863
"xloc": [
7266
- "default-mobile.handlebars->11->505",
7267
- "default-mobile.handlebars->11->507",
7268
- "default-mobile.handlebars->11->817",
7269
- "default.handlebars->47->1659",
7270
- "default.handlebars->47->909",
7271
- "default.handlebars->47->911",
7272
- "default3.handlebars->35->1520",
7273
- "default3.handlebars->35->846",
7274
- "default3.handlebars->35->848"
6864
+ "default-mobile.handlebars->11->511",
6865
+ "default-mobile.handlebars->11->513",
6866
+ "default-mobile.handlebars->11->823",
6867
+ "default.handlebars->47->1660",
6868
+ "default.handlebars->47->910",
6869
+ "default.handlebars->47->912",
6870
+ "default3.handlebars->35->1642",
6871
+ "default3.handlebars->35->907",
6872
+ "default3.handlebars->35->909"
6873
]
6874
},
6875
{
@@ -7300,8 +6898,8 @@
6898
"zh-cht": "啟動",
6899
"uk": "Активація",
6900
"xloc": [
7303
- "default.handlebars->47->320",
7304
- "default3.handlebars->35->297"
6901
+ "default.handlebars->47->323",
6902
+ "default3.handlebars->35->320"
6903
]
6904
},
6905
{
@@ -7330,10 +6928,10 @@
6928
"zh-cht": "主動設備共享",
6929
"uk": "Спільний доступ до пристрою активний",
6930
"xloc": [
7333
- "default.handlebars->47->1084",
7334
- "default.handlebars->47->2231",
7335
- "default3.handlebars->35->1021",
7336
- "default3.handlebars->35->2086"
6931
+ "default.handlebars->47->1085",
6932
+ "default.handlebars->47->2235",
6933
+ "default3.handlebars->35->1082",
6934
+ "default3.handlebars->35->2230"
6935
]
6936
},
6937
{
@@ -7362,8 +6960,8 @@
6960
"zh-cht": "活動登錄令牌",
6961
"uk": "Активні Токени Входу",
6962
"xloc": [
7365
- "default.handlebars->47->2123",
7366
- "default3.handlebars->35->1988"
6963
+ "default.handlebars->47->2125",
6964
+ "default3.handlebars->35->2124"
6965
]
6966
},
6967
{
@@ -7392,9 +6990,9 @@
6990
"zh-cht": "活躍用戶",
6991
"uk": "Активний Користувач",
6992
"xloc": [
7395
- "default-mobile.handlebars->11->778",
7396
- "default.handlebars->47->962",
7397
- "default3.handlebars->35->899"
6993
+ "default-mobile.handlebars->11->784",
6994
+ "default.handlebars->47->963",
6995
+ "default3.handlebars->35->960"
6996
]
6997
},
6998
{
@@ -7423,9 +7021,9 @@
7021
"zh-cht": "活躍用戶",
7022
"uk": "Користувачі Активні",
7023
"xloc": [
7426
- "default-mobile.handlebars->11->777",
7427
- "default.handlebars->47->961",
7428
- "default3.handlebars->35->898"
7024
+ "default-mobile.handlebars->11->783",
7025
+ "default.handlebars->47->962",
7026
+ "default3.handlebars->35->959"
7027
]
7028
},
7029
{
@@ -7480,11 +7078,11 @@
7078
"zh-cht": "添加",
7079
"uk": "Додати",
7080
"xloc": [
7483
- "default-mobile.handlebars->11->669",
7484
- "default.handlebars->47->1434",
7485
- "default.handlebars->47->1440",
7486
- "default3.handlebars->35->1327",
7487
- "default3.handlebars->35->1332"
7081
+ "default-mobile.handlebars->11->675",
7082
+ "default.handlebars->47->1435",
7083
+ "default.handlebars->47->1441",
7084
+ "default3.handlebars->35->1422",
7085
+ "default3.handlebars->35->1428"
7086
]
7087
},
7088
{
@@ -7565,10 +7163,10 @@
7163
"zh-cht": "新增代理",
7164
"uk": "Додати Агента",
7165
"xloc": [
7568
- "default.handlebars->47->2221",
7569
- "default.handlebars->47->488",
7570
- "default3.handlebars->35->2076",
7571
- "default3.handlebars->35->458"
7166
+ "default.handlebars->47->2225",
7167
+ "default.handlebars->47->491",
7168
+ "default3.handlebars->35->2220",
7169
+ "default3.handlebars->35->488"
7170
]
7171
},
7172
{
@@ -7623,13 +7221,14 @@
7221
"zh-cht": "新增裝置",
7222
"uk": "Додати Пристрій",
7223
"xloc": [
7626
- "default.handlebars->47->2225",
7627
- "default.handlebars->47->2891",
7628
- "default.handlebars->47->3086",
7629
- "default.handlebars->47->492",
7630
- "default3.handlebars->35->2080",
7631
- "default3.handlebars->35->2868",
7632
- "default3.handlebars->35->462"
7224
+ "default.handlebars->47->2229",
7225
+ "default.handlebars->47->2895",
7226
+ "default.handlebars->47->3090",
7227
+ "default.handlebars->47->495",
7228
+ "default3.handlebars->35->2224",
7229
+ "default3.handlebars->35->2888",
7230
+ "default3.handlebars->35->3077",
7231
+ "default3.handlebars->35->492"
7232
]
7233
},
7234
{
@@ -7658,7 +7257,8 @@
7257
"zh-cht": "新增裝置日誌",
7258
"uk": "Додати Подію Пристрою",
7259
"xloc": [
7661
- "default.handlebars->47->1170"
7260
+ "default.handlebars->47->1171",
7261
+ "default3.handlebars->35->1166"
7262
]
7263
},
7264
{
@@ -7687,13 +7287,14 @@
7287
"zh-cht": "新增裝置群",
7288
"uk": "Додати Групу Пристроїв",
7289
"xloc": [
7690
- "default.handlebars->47->2368",
7691
- "default.handlebars->47->2885",
7692
- "default.handlebars->47->3074",
7693
- "default.handlebars->47->389",
7694
- "default3.handlebars->35->2198",
7695
- "default3.handlebars->35->2856",
7696
- "default3.handlebars->35->361"
7290
+ "default.handlebars->47->2372",
7291
+ "default.handlebars->47->2889",
7292
+ "default.handlebars->47->3078",
7293
+ "default.handlebars->47->392",
7294
+ "default3.handlebars->35->2368",
7295
+ "default3.handlebars->35->2882",
7296
+ "default3.handlebars->35->3065",
7297
+ "default3.handlebars->35->389"
7298
]
7299
},
7300
{
@@ -7722,8 +7323,8 @@
7323
"zh-cht": "新增裝置群權限",
7324
"uk": "Додайте Дозволи Групи Пристроїв",
7325
"xloc": [
7725
- "default.handlebars->47->2365",
7726
- "default3.handlebars->35->2195"
7326
+ "default.handlebars->47->2369",
7327
+ "default3.handlebars->35->2365"
7328
]
7329
},
7330
{
@@ -7752,10 +7353,10 @@
7353
"zh-cht": "新增裝置權限",
7354
"uk": "Додати Дозволи Пристрою",
7355
"xloc": [
7755
- "default.handlebars->47->2370",
7756
- "default.handlebars->47->2372",
7757
- "default3.handlebars->35->2200",
7758
- "default3.handlebars->35->2202"
7356
+ "default.handlebars->47->2374",
7357
+ "default.handlebars->47->2376",
7358
+ "default3.handlebars->35->2370",
7359
+ "default3.handlebars->35->2372"
7360
]
7361
},
7362
{
@@ -7810,7 +7411,8 @@
7411
"zh-cht": "新增Intel® AMT裝置",
7412
"uk": "Додати пристрій Intel® AMT",
7413
"xloc": [
7813
- "default.handlebars->47->512"
7414
+ "default.handlebars->47->515",
7415
+ "default3.handlebars->35->512"
7416
]
7417
},
7418
{
@@ -7839,8 +7441,8 @@
7441
"zh-cht": "新增密鑰",
7442
"uk": "Додати Ключ",
7443
"xloc": [
7842
- "default.handlebars->47->239",
7843
- "default3.handlebars->35->226"
7444
+ "default.handlebars->47->242",
7445
+ "default3.handlebars->35->239"
7446
]
7447
},
7448
{
@@ -7869,8 +7471,8 @@
7471
"zh-cht": "新增本地",
7472
"uk": "Додати Локально",
7473
"xloc": [
7872
- "default.handlebars->47->482",
7873
- "default3.handlebars->35->452"
7474
+ "default.handlebars->47->485",
7475
+ "default3.handlebars->35->482"
7476
]
7477
},
7478
{
@@ -7925,7 +7527,8 @@
7527
"zh-cht": "新增成員身份",
7528
"uk": "Додати Приналежність",
7529
"xloc": [
7928
- "default.handlebars->47->3106"
7530
+ "default.handlebars->47->3110",
7531
+ "default3.handlebars->35->3097"
7532
]
7533
},
7534
{
@@ -7954,8 +7557,8 @@
7557
"zh-cht": "新增 Mesh Agent",
7558
"uk": "Додати Mesh Agent",
7559
"xloc": [
7957
- "default.handlebars->47->685",
7958
- "default3.handlebars->35->625"
7560
+ "default.handlebars->47->686",
7561
+ "default3.handlebars->35->683"
7562
]
7563
},
7564
{
@@ -8010,12 +7613,18 @@
7613
"zh-cht": "新增安全密鑰",
7614
"uk": "Додати Ключ Безпеки",
7615
"xloc": [
8013
- "default.handlebars->47->1838",
8014
- "default.handlebars->47->1839",
8015
- "default.handlebars->47->243",
8016
- "default.handlebars->47->245",
7616
+ "default.handlebars->47->1840",
7617
+ "default.handlebars->47->1841",
7618
+ "default.handlebars->47->246",
7619
"default.handlebars->47->248",
8018
- "default.handlebars->47->250"
7620
+ "default.handlebars->47->251",
7621
+ "default.handlebars->47->253",
7622
+ "default3.handlebars->35->1820",
7623
+ "default3.handlebars->35->1821",
7624
+ "default3.handlebars->35->243",
7625
+ "default3.handlebars->35->245",
7626
+ "default3.handlebars->35->248",
7627
+ "default3.handlebars->35->250"
7628
]
7629
},
7630
{
@@ -8044,9 +7653,9 @@
7653
"zh-cht": "新增用戶",
7654
"uk": "Додати Користувача",
7655
"xloc": [
8047
- "default-mobile.handlebars->11->947",
8048
- "default.handlebars->47->1076",
8049
- "default3.handlebars->35->1013"
7656
+ "default-mobile.handlebars->11->953",
7657
+ "default.handlebars->47->1077",
7658
+ "default3.handlebars->35->1074"
7659
]
7660
},
7661
{
@@ -8075,8 +7684,8 @@
7684
"zh-cht": "新增用戶裝置權限",
7685
"uk": "Додати Дозволи для Пристрою Користувача",
7686
"xloc": [
8078
- "default.handlebars->47->2375",
8079
- "default3.handlebars->35->2205"
7687
+ "default.handlebars->47->2379",
7688
+ "default3.handlebars->35->2375"
7689
]
7690
},
7691
{
@@ -8105,14 +7714,14 @@
7714
"zh-cht": "新增用戶群",
7715
"uk": "Додати Групу Користувачів",
7716
"xloc": [
8108
- "default.handlebars->47->1077",
8109
- "default.handlebars->47->2215",
8110
- "default.handlebars->47->2367",
8111
- "default.handlebars->47->3080",
8112
- "default3.handlebars->35->1014",
8113
- "default3.handlebars->35->2070",
8114
- "default3.handlebars->35->2197",
8115
- "default3.handlebars->35->2862"
7717
+ "default.handlebars->47->1078",
7718
+ "default.handlebars->47->2219",
7719
+ "default.handlebars->47->2371",
7720
+ "default.handlebars->47->3084",
7721
+ "default3.handlebars->35->1075",
7722
+ "default3.handlebars->35->2214",
7723
+ "default3.handlebars->35->2367",
7724
+ "default3.handlebars->35->3071"
7725
]
7726
},
7727
{
@@ -8141,8 +7750,8 @@
7750
"zh-cht": "新增用戶群裝置權限",
7751
"uk": "Додати Дозволи на Пристрої Групи Користувачів",
7752
"xloc": [
8144
- "default.handlebars->47->2377",
8145
- "default3.handlebars->35->2207"
7753
+ "default.handlebars->47->2381",
7754
+ "default3.handlebars->35->2377"
7755
]
7756
},
7757
{
@@ -8171,7 +7780,7 @@
7780
"zh-cht": "將用戶新增到裝置群",
7781
"uk": "Додати Користувача до Групи Пристроїв",
7782
"xloc": [
8174
- "default-mobile.handlebars->11->988"
7783
+ "default-mobile.handlebars->11->994"
7784
]
7785
},
7786
{
@@ -8226,9 +7835,10 @@
7835
"zh-cht": "新增用戶",
7836
"uk": "Додати Користувачів",
7837
"xloc": [
8229
- "default.handlebars->47->2214",
8230
- "default.handlebars->47->2880",
8231
- "default3.handlebars->35->2069"
7838
+ "default.handlebars->47->2218",
7839
+ "default.handlebars->47->2884",
7840
+ "default3.handlebars->35->2213",
7841
+ "default3.handlebars->35->2877"
7842
]
7843
},
7844
{
@@ -8257,7 +7867,8 @@
7867
"zh-cht": "將用戶新增到裝置群",
7868
"uk": "Додати Користувачів до Групи Пристроїв",
7869
"xloc": [
8260
- "default.handlebars->47->2364"
7870
+ "default.handlebars->47->2368",
7871
+ "default3.handlebars->35->2364"
7872
]
7873
},
7874
{
@@ -8286,7 +7897,8 @@
7897
"zh-cht": "將用戶新增到用戶群",
7898
"uk": "Додати Користувачів до Групи Користувачів",
7899
"xloc": [
8289
- "default.handlebars->47->2915"
7900
+ "default.handlebars->47->2919",
7901
+ "default3.handlebars->35->2912"
7902
]
7903
},
7904
{
@@ -8315,8 +7927,8 @@
7927
"zh-cht": "新增YubiKey®OTP",
7928
"uk": "Додати YubiKey® OTP",
7929
"xloc": [
8318
- "default.handlebars->47->240",
8319
- "default3.handlebars->35->227"
7930
+ "default.handlebars->47->243",
7931
+ "default3.handlebars->35->240"
7932
]
7933
},
7934
{
@@ -8345,8 +7957,8 @@
7957
"zh-cht": "將本地設備添加到設備組 \\\"{0}\\\"。",
7958
"uk": "Додати локальний пристрій до групи пристроїв \\\"{0}\\\".",
7959
"xloc": [
8348
- "default.handlebars->47->493",
8349
- "default3.handlebars->35->463"
7960
+ "default.handlebars->47->496",
7961
+ "default3.handlebars->35->493"
7962
]
7963
},
7964
{
@@ -8375,8 +7987,8 @@
7987
"zh-cht": "通過掃描本地網絡新增新的Intel® AMT電腦。",
7988
"uk": "Додати новий комп'ютер Intel® AMT, просканувавши локальну мережу.",
7989
"xloc": [
8378
- "default.handlebars->47->483",
8379
- "default3.handlebars->35->453"
7990
+ "default.handlebars->47->486",
7991
+ "default3.handlebars->35->483"
7992
]
7993
},
7994
{
@@ -8431,8 +8043,8 @@
8043
"zh-cht": "新增位於本地網絡上的新Intel® AMT電腦。",
8044
"uk": "Додати новий комп'ютер Intel® AMT, що знаходиться у локальній мережі.",
8045
"xloc": [
8434
- "default.handlebars->47->481",
8435
- "default3.handlebars->35->451"
8046
+ "default.handlebars->47->484",
8047
+ "default3.handlebars->35->481"
8048
]
8049
},
8050
{
@@ -8461,8 +8073,8 @@
8073
"zh-cht": "將新的Intel® AMT裝置新增到裝置群“{0}”。",
8074
"uk": "Додати новий пристрій Intel® AMT до групи пристроїв \\\"{0}\\\".",
8075
"xloc": [
8464
- "default.handlebars->47->502",
8465
- "default3.handlebars->35->471"
8076
+ "default.handlebars->47->505",
8077
+ "default3.handlebars->35->502"
8078
]
8079
},
8080
{
@@ -8491,10 +8103,10 @@
8103
"zh-cht": "通過安裝Mesh Agent將新電腦新增到該裝置群。",
8104
"uk": "Додати новий комп'ютер до цієї групи пристроїв, встановивши MeshAgent.",
8105
"xloc": [
8494
- "default.handlebars->47->2220",
8495
- "default.handlebars->47->487",
8496
- "default3.handlebars->35->2075",
8497
- "default3.handlebars->35->457"
8106
+ "default.handlebars->47->2224",
8107
+ "default.handlebars->47->490",
8108
+ "default3.handlebars->35->2219",
8109
+ "default3.handlebars->35->487"
8110
]
8111
},
8112
{
@@ -8523,10 +8135,10 @@
8135
"zh-cht": "添加位於本地網絡上的設備。",
8136
"uk": "Додати пристрій, що знаходиться в локальній мережі.",
8137
"xloc": [
8526
- "default.handlebars->47->2224",
8527
- "default.handlebars->47->491",
8528
- "default3.handlebars->35->2079",
8529
- "default3.handlebars->35->461"
8138
+ "default.handlebars->47->2228",
8139
+ "default.handlebars->47->494",
8140
+ "default3.handlebars->35->2223",
8141
+ "default3.handlebars->35->491"
8142
]
8143
},
8144
{
@@ -8555,7 +8167,8 @@
8167
"zh-cht": "添加本地設備",
8168
"uk": "Додати локальний пристрій",
8169
"xloc": [
8558
- "default.handlebars->47->501"
8170
+ "default.handlebars->47->504",
8171
+ "default3.handlebars->35->501"
8172
]
8173
},
8174
{
@@ -8584,8 +8197,8 @@
8197
"zh-cht": "新增標籤",
8198
"uk": "Додати теги",
8199
"xloc": [
8587
- "default.handlebars->47->761",
8588
- "default3.handlebars->35->716"
8200
+ "default.handlebars->47->762",
8201
+ "default3.handlebars->35->759"
8202
]
8203
},
8204
{
@@ -8614,8 +8227,8 @@
8227
"zh-cht": "通過定期在遠程設備上以管理員身份運行MeshCmd,添加,激活和配置Intel® AMT以將“{0}”分組。",
8228
"uk": "Додати, активувати та налаштувати Intel® AMT до групи \\\"{0}\\\", періодично запускаючи MeshCmd від імені адміністратора на віддаленому пристрої.",
8229
"xloc": [
8617
- "default.handlebars->47->519",
8618
- "default3.handlebars->35->484"
8230
+ "default.handlebars->47->522",
8231
+ "default3.handlebars->35->519"
8232
]
8233
},
8234
{
@@ -8644,8 +8257,8 @@
8257
"zh-cht": "添加了身份驗證應用程序",
8258
"uk": "Додано застосунок автентифікації",
8259
"xloc": [
8647
- "default.handlebars->47->2607",
8648
- "default3.handlebars->35->2424"
8260
+ "default.handlebars->47->2611",
8261
+ "default3.handlebars->35->2607"
8262
]
8263
},
8264
{
@@ -8674,8 +8287,8 @@
8287
"zh-cht": "已將設備共享{0}從{1}添加到{2}",
8288
"uk": "Додано поширення пристрою {0} від {1} до {2}",
8289
"xloc": [
8677
- "default.handlebars->47->2618",
8678
- "default3.handlebars->35->2435"
8290
+ "default.handlebars->47->2622",
8291
+ "default3.handlebars->35->2618"
8292
]
8293
},
8294
{
@@ -8704,8 +8317,8 @@
8317
"zh-cht": "添加了每天重複的設備共享 {0}。",
8318
"uk": "Додано поширення пристрою {0}, із щоденною переактивацією.",
8319
"xloc": [
8707
- "default.handlebars->47->2655",
8708
- "default3.handlebars->35->2472"
8320
+ "default.handlebars->47->2659",
8321
+ "default3.handlebars->35->2655"
8322
]
8323
},
8324
{
@@ -8734,8 +8347,8 @@
8347
"zh-cht": "添加了每週重複的設備共享 {0}。",
8348
"uk": "Додано поширення пристрою {0}, із щотижневою переактивацією.",
8349
"xloc": [
8737
- "default.handlebars->47->2656",
8738
- "default3.handlebars->35->2473"
8350
+ "default.handlebars->47->2660",
8351
+ "default3.handlebars->35->2656"
8352
]
8353
},
8354
{
@@ -8764,8 +8377,8 @@
8377
"zh-cht": "添加了無限時間的設備共享 {0}。",
8378
"uk": "Додано поширення пристрою {0} без обмеження часу.",
8379
"xloc": [
8767
- "default.handlebars->47->2648",
8768
- "default3.handlebars->35->2465"
8380
+ "default.handlebars->47->2652",
8381
+ "default3.handlebars->35->2648"
8382
]
8383
},
8384
{
@@ -8794,10 +8407,10 @@
8407
"zh-cht": "已將設備{0}添加到設備組{1}",
8408
"uk": "Пристрій {0} додано до групи пристроїв {1}",
8409
"xloc": [
8797
- "default.handlebars->47->2574",
8798
- "default.handlebars->47->2601",
8799
- "default3.handlebars->35->2391",
8800
- "default3.handlebars->35->2418"
8410
+ "default.handlebars->47->2578",
8411
+ "default.handlebars->47->2605",
8412
+ "default3.handlebars->35->2574",
8413
+ "default3.handlebars->35->2601"
8414
]
8415
},
8416
{
@@ -8826,8 +8439,8 @@
8439
"zh-cht": "添加了登錄令牌",
8440
"uk": "Додано токен лоґіну",
8441
"xloc": [
8829
- "default.handlebars->47->2632",
8830
- "default3.handlebars->35->2449"
8442
+ "default.handlebars->47->2636",
8443
+ "default3.handlebars->35->2632"
8444
]
8445
},
8446
{
@@ -8856,8 +8469,8 @@
8469
"zh-cht": "增加推送通知認證設備",
8470
"uk": "На пристрій додано автентифікацію через push-сповіщення",
8471
"xloc": [
8859
- "default.handlebars->47->2630",
8860
- "default3.handlebars->35->2447"
8472
+ "default.handlebars->47->2634",
8473
+ "default3.handlebars->35->2630"
8474
]
8475
},
8476
{
@@ -8886,8 +8499,8 @@
8499
"zh-cht": "添加了安全密鑰",
8500
"uk": "Додано Ключ Безпеки",
8501
"xloc": [
8889
- "default.handlebars->47->2612",
8890
- "default3.handlebars->35->2429"
8502
+ "default.handlebars->47->2616",
8503
+ "default3.handlebars->35->2612"
8504
]
8505
},
8506
{
@@ -8916,8 +8529,8 @@
8529
"zh-cht": "已將用戶組{0}添加到設備組{1}",
8530
"uk": "Групу користувачів {0} додано до групи пристроїв {1}",
8531
"xloc": [
8919
- "default.handlebars->47->2585",
8920
- "default3.handlebars->35->2402"
8532
+ "default.handlebars->47->2589",
8533
+ "default3.handlebars->35->2585"
8534
]
8535
},
8536
{
@@ -8946,10 +8559,10 @@
8559
"zh-cht": "已將用戶{0}添加到用戶組{1}",
8560
"uk": "Додано користувача {0} до групи користувачів {1}",
8561
"xloc": [
8949
- "default.handlebars->47->2588",
8950
- "default.handlebars->47->2597",
8951
- "default3.handlebars->35->2405",
8952
- "default3.handlebars->35->2414"
8562
+ "default.handlebars->47->2592",
8563
+ "default.handlebars->47->2601",
8564
+ "default3.handlebars->35->2588",
8565
+ "default3.handlebars->35->2597"
8566
]
8567
},
8568
{
@@ -8978,8 +8591,8 @@
8591
"zh-cht": "地址",
8592
"uk": "Адреса",
8593
"xloc": [
8981
- "default.handlebars->47->382",
8982
- "default3.handlebars->35->354"
8594
+ "default.handlebars->47->385",
8595
+ "default3.handlebars->35->382"
8596
]
8597
},
8598
{
@@ -9037,9 +8650,9 @@
8650
"zh-cht": "管理員控制模式(ACM)",
8651
"uk": "Режим Керування Адміністратора (eng. ACM)",
8652
"xloc": [
9040
- "default-mobile.handlebars->11->819",
9041
- "default.handlebars->47->1661",
9042
- "default3.handlebars->35->1522"
8653
+ "default-mobile.handlebars->11->825",
8654
+ "default.handlebars->47->1662",
8655
+ "default3.handlebars->35->1644"
8656
]
8657
},
8658
{
@@ -9068,9 +8681,9 @@
8681
"zh-cht": "管理員憑證",
8682
"uk": "Облікові Дані Адміністратора",
8683
"xloc": [
9071
- "default-mobile.handlebars->11->825",
9072
- "default.handlebars->47->1667",
9073
- "default3.handlebars->35->1528"
8684
+ "default-mobile.handlebars->11->831",
8685
+ "default.handlebars->47->1668",
8686
+ "default3.handlebars->35->1650"
8687
]
8688
},
8689
{
@@ -9130,8 +8743,8 @@
8743
"zh-cht": "管理領域",
8744
"uk": "Області Адміністратора",
8745
"xloc": [
9133
- "default.handlebars->47->2967",
9134
- "default3.handlebars->35->2758"
8746
+ "default.handlebars->47->2971",
8747
+ "default3.handlebars->35->2964"
8748
]
8749
},
8750
{
@@ -9191,7 +8804,8 @@
8804
"zh-cht": "管理領域",
8805
"uk": "Адміністративні Області",
8806
"xloc": [
9194
- "default.handlebars->47->2812"
8807
+ "default.handlebars->47->2816",
8808
+ "default3.handlebars->35->2809"
8809
]
8810
},
8811
{
@@ -9220,8 +8834,8 @@
8834
"zh-cht": "管理員",
8835
"uk": "Адміністратор",
8836
"xloc": [
9223
- "default.handlebars->47->2730",
9224
- "default3.handlebars->35->2545"
8837
+ "default.handlebars->47->2734",
8838
+ "default3.handlebars->35->2730"
8839
]
8840
},
8841
{
@@ -9250,9 +8864,9 @@
8864
"zh-cht": "南非文",
8865
"uk": "Африканська",
8866
"xloc": [
9253
- "default-mobile.handlebars->11->107",
9254
- "default.handlebars->47->1841",
9255
- "default3.handlebars->35->1680",
8867
+ "default-mobile.handlebars->11->113",
8868
+ "default.handlebars->47->1843",
8869
+ "default3.handlebars->35->1823",
8870
"login2.handlebars->7->1"
8871
]
8872
},
@@ -9283,21 +8897,21 @@
8897
"uk": "Агент",
8898
"xloc": [
8899
"agent-translations.json",
9286
- "default-mobile.handlebars->11->469",
9287
- "default-mobile.handlebars->11->526",
8900
+ "default-mobile.handlebars->11->475",
8901
+ "default-mobile.handlebars->11->532",
8902
"default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect1",
9289
- "default.handlebars->47->2448",
9290
- "default.handlebars->47->2461",
9291
- "default.handlebars->47->3330",
9292
- "default.handlebars->47->409",
9293
- "default.handlebars->47->717",
8903
+ "default.handlebars->47->2452",
8904
+ "default.handlebars->47->2465",
8905
+ "default.handlebars->47->3334",
8906
+ "default.handlebars->47->412",
8907
+ "default.handlebars->47->718",
8908
"default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect1",
8909
"default.handlebars->container->dialog->dialogBody->dialog7->1->td7meshkvm",
9296
- "default3.handlebars->35->2272",
9297
- "default3.handlebars->35->2285",
9298
- "default3.handlebars->35->3103",
9299
- "default3.handlebars->35->381",
9300
- "default3.handlebars->35->675",
8910
+ "default3.handlebars->35->2448",
8911
+ "default3.handlebars->35->2461",
8912
+ "default3.handlebars->35->3321",
8913
+ "default3.handlebars->35->409",
8914
+ "default3.handlebars->35->715",
8915
"default3.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect1",
8916
"default3.handlebars->container->xxAddAgentModal->xxAddAgentModalConf->1->xxAddAgentBody->dialog7->1->td7meshkvm"
8917
]
@@ -9328,10 +8942,10 @@
8942
"zh-cht": "代理+Intel® AMT",
8943
"uk": "Агент + Intel® AMT",
8944
"xloc": [
9331
- "default.handlebars->47->2450",
9332
- "default.handlebars->47->2463",
9333
- "default3.handlebars->35->2274",
9334
- "default3.handlebars->35->2287"
8945
+ "default.handlebars->47->2454",
8946
+ "default.handlebars->47->2467",
8947
+ "default3.handlebars->35->2450",
8948
+ "default3.handlebars->35->2463"
8949
]
8950
},
8951
{
@@ -9391,12 +9005,12 @@
9005
"zh-cht": "代理控制台",
9006
"uk": "Консоль Агента",
9007
"xloc": [
9394
- "default-mobile.handlebars->11->605",
9395
- "default-mobile.handlebars->11->994",
9396
- "default.handlebars->47->2385",
9397
- "default.handlebars->47->807",
9398
- "default3.handlebars->35->2215",
9399
- "default3.handlebars->35->755"
9008
+ "default-mobile.handlebars->11->1000",
9009
+ "default-mobile.handlebars->11->611",
9010
+ "default.handlebars->47->2389",
9011
+ "default.handlebars->47->808",
9012
+ "default3.handlebars->35->2385",
9013
+ "default3.handlebars->35->805"
9014
]
9015
},
9016
{
@@ -9425,8 +9039,8 @@
9039
"zh-cht": "代理錯誤計數器",
9040
"uk": "Лічильник Помилок Агента",
9041
"xloc": [
9428
- "default.handlebars->47->3299",
9429
- "default3.handlebars->35->3072"
9042
+ "default.handlebars->47->3303",
9043
+ "default3.handlebars->35->3290"
9044
]
9045
},
9046
{
@@ -9455,8 +9069,8 @@
9069
"zh-cht": "代理 IP 地址",
9070
"uk": "IP-адреса Агента",
9071
"xloc": [
9458
- "default.handlebars->47->350",
9459
- "default3.handlebars->35->323"
9072
+ "default.handlebars->47->353",
9073
+ "default3.handlebars->35->350"
9074
]
9075
},
9076
{
@@ -9528,9 +9142,9 @@
9142
"zh-cht": "代理訊息",
9143
"uk": "Повідомлення Агента",
9144
"xloc": [
9531
- "default-mobile.handlebars->11->442",
9532
- "default.handlebars->47->473",
9533
- "default3.handlebars->35->445"
9145
+ "default-mobile.handlebars->11->448",
9146
+ "default.handlebars->47->476",
9147
+ "default3.handlebars->35->473"
9148
]
9149
},
9150
{
@@ -9559,7 +9173,7 @@
9173
"zh-cht": "代理中繼",
9174
"uk": "Ретранслятор Агента",
9175
"xloc": [
9562
- "default-mobile.handlebars->11->529"
9176
+ "default-mobile.handlebars->11->535"
9177
]
9178
},
9179
{
@@ -9644,10 +9258,10 @@
9258
"zh-cht": "代理自行共享",
9259
"uk": "Само-Поширення Агента",
9260
"xloc": [
9647
- "default.handlebars->47->1105",
9648
- "default.handlebars->47->2252",
9649
- "default3.handlebars->35->1042",
9650
- "default3.handlebars->35->2107"
9261
+ "default.handlebars->47->1106",
9262
+ "default.handlebars->47->2256",
9263
+ "default3.handlebars->35->1103",
9264
+ "default3.handlebars->35->2251"
9265
]
9266
},
9267
{
@@ -9676,8 +9290,8 @@
9290
"zh-cht": "代理時段",
9291
"uk": "Сесії Агента",
9292
"xloc": [
9679
- "default.handlebars->47->3315",
9680
- "default3.handlebars->35->3088"
9293
+ "default.handlebars->47->3319",
9294
+ "default3.handlebars->35->3306"
9295
]
9296
},
9297
{
@@ -9732,9 +9346,9 @@
9346
"zh-cht": "代理標籤",
9347
"uk": "Тег Агента",
9348
"xloc": [
9735
- "default-mobile.handlebars->11->523",
9736
- "default.handlebars->47->932",
9737
- "default3.handlebars->35->869"
9349
+ "default-mobile.handlebars->11->529",
9350
+ "default.handlebars->47->933",
9351
+ "default3.handlebars->35->930"
9352
]
9353
},
9354
{
@@ -9763,10 +9377,10 @@
9377
"zh-cht": "代理類型",
9378
"uk": "Тип Агента",
9379
"xloc": [
9766
- "default.handlebars->47->339",
9767
- "default.handlebars->47->372",
9768
- "default3.handlebars->35->312",
9769
- "default3.handlebars->35->344"
9380
+ "default.handlebars->47->342",
9381
+ "default.handlebars->47->375",
9382
+ "default3.handlebars->35->339",
9383
+ "default3.handlebars->35->372"
9384
]
9385
},
9386
{
@@ -9795,9 +9409,9 @@
9409
"zh-cht": "代理類型",
9410
"uk": "Тип Агента",
9411
"xloc": [
9798
- "default.handlebars->47->2459",
9412
+ "default.handlebars->47->2463",
9413
"default.handlebars->container->column_l->p21->p21main->1->1->meshOsChartDiv->1",
9800
- "default3.handlebars->35->2283",
9414
+ "default3.handlebars->35->2459",
9415
"default3.handlebars->container->column_l->p21->p21main->1->1->meshOsChartDiv->1"
9416
]
9417
},
@@ -9827,10 +9441,10 @@
9441
"zh-cht": "代理版本",
9442
"uk": "Версія Агента",
9443
"xloc": [
9830
- "default.handlebars->47->340",
9831
- "default.handlebars->47->373",
9832
- "default3.handlebars->35->313",
9833
- "default3.handlebars->35->345"
9444
+ "default.handlebars->47->343",
9445
+ "default.handlebars->47->376",
9446
+ "default3.handlebars->35->340",
9447
+ "default3.handlebars->35->373"
9448
]
9449
},
9450
{
@@ -9859,8 +9473,8 @@
9473
"zh-cht": "代理關閉了與{0}%代理到服務器壓縮的會話。已發送:{1},已壓縮:{2}",
9474
"uk": "Агент закрив сесію зі стисненням {0}% між агентом і сервером. Надіслано: {1}, стиснуто: {2}",
9475
"xloc": [
9862
- "default.handlebars->47->2571",
9863
- "default3.handlebars->35->2388"
9476
+ "default.handlebars->47->2575",
9477
+ "default3.handlebars->35->2571"
9478
]
9479
},
9480
{
@@ -9889,12 +9503,12 @@
9503
"zh-cht": "代理已連接",
9504
"uk": "Агент підключено",
9505
"xloc": [
9892
- "default.handlebars->47->1063",
9506
"default.handlebars->47->1064",
9894
- "default.handlebars->47->259",
9895
- "default3.handlebars->35->1000",
9896
- "default3.handlebars->35->1001",
9897
- "default3.handlebars->35->239"
9507
+ "default.handlebars->47->1065",
9508
+ "default.handlebars->47->262",
9509
+ "default3.handlebars->35->1061",
9510
+ "default3.handlebars->35->1062",
9511
+ "default3.handlebars->35->259"
9512
]
9513
},
9514
{
@@ -9923,8 +9537,8 @@
9537
"zh-cht": "與有限特權相關的代理",
9538
"uk": "Агент підключено із обмеженими привілеями",
9539
"xloc": [
9926
- "default.handlebars->47->260",
9927
- "default3.handlebars->35->240"
9540
+ "default.handlebars->47->263",
9541
+ "default3.handlebars->35->260"
9542
]
9543
},
9544
{
@@ -9953,8 +9567,8 @@
9567
"zh-cht": "代理已斷開連接",
9568
"uk": "Агент відключений",
9569
"xloc": [
9956
- "default.handlebars->47->264",
9957
- "default3.handlebars->35->244"
9570
+ "default.handlebars->47->267",
9571
+ "default3.handlebars->35->264"
9572
]
9573
},
9574
{
@@ -9984,7 +9598,7 @@
9598
"uk": "Перевірку хешу агента проігноровано, це небезпечно.",
9599
"xloc": [
9600
"default.handlebars->47->93",
9987
- "default3.handlebars->35->92"
9601
+ "default3.handlebars->35->93"
9602
]
9603
},
9604
{
@@ -10091,9 +9705,9 @@
9705
"zh-cht": "代理離線",
9706
"uk": "Агент офлайн",
9707
"xloc": [
10094
- "default-mobile.handlebars->11->913",
10095
- "default.handlebars->47->1756",
10096
- "default3.handlebars->35->1617"
9708
+ "default-mobile.handlebars->11->919",
9709
+ "default.handlebars->47->1757",
9710
+ "default3.handlebars->35->1739"
9711
]
9712
},
9713
{
@@ -10122,9 +9736,9 @@
9736
"zh-cht": "代理在線",
9737
"uk": "Агент онлайн",
9738
"xloc": [
10125
- "default-mobile.handlebars->11->912",
10126
- "default.handlebars->47->1755",
10127
- "default3.handlebars->35->1616"
9739
+ "default-mobile.handlebars->11->918",
9740
+ "default.handlebars->47->1756",
9741
+ "default3.handlebars->35->1738"
9742
]
9743
},
9744
{
@@ -10231,8 +9845,8 @@
9845
"zh-cht": "代理在特權降低的遠程設備上運行。",
9846
"uk": "Агент працює на віддаленому пристрої без прав адміністратора.",
9847
"xloc": [
10234
- "default.handlebars->47->1057",
10235
- "default3.handlebars->35->994"
9848
+ "default.handlebars->47->1058",
9849
+ "default3.handlebars->35->1055"
9850
]
9851
},
9852
{
@@ -10365,12 +9979,12 @@
9979
"zh-cht": "代理",
9980
"uk": "Агент",
9981
"xloc": [
10368
- "default.handlebars->47->2416",
10369
- "default.handlebars->47->3343",
10370
- "default.handlebars->47->575",
10371
- "default3.handlebars->35->2243",
10372
- "default3.handlebars->35->3116",
10373
- "default3.handlebars->35->536"
9982
+ "default.handlebars->47->2420",
9983
+ "default.handlebars->47->3347",
9984
+ "default.handlebars->47->578",
9985
+ "default3.handlebars->35->2416",
9986
+ "default3.handlebars->35->3334",
9987
+ "default3.handlebars->35->575"
9988
]
9989
},
9990
{
@@ -10399,9 +10013,9 @@
10013
"zh-cht": "阿爾巴尼亞文",
10014
"uk": "Албанська",
10015
"xloc": [
10402
- "default-mobile.handlebars->11->108",
10403
- "default.handlebars->47->1842",
10404
- "default3.handlebars->35->1681",
10016
+ "default-mobile.handlebars->11->114",
10017
+ "default.handlebars->47->1844",
10018
+ "default3.handlebars->35->1824",
10019
"login2.handlebars->7->2"
10020
]
10021
},
@@ -10412,10 +10026,10 @@
10026
"pl": "Okno Powiadomienia",
10027
"uk": "Вікно Попередження",
10028
"xloc": [
10415
- "default.handlebars->47->1189",
10416
- "default.handlebars->47->770",
10417
- "default3.handlebars->35->1115",
10418
- "default3.handlebars->35->724"
10029
+ "default.handlebars->47->1190",
10030
+ "default.handlebars->47->771",
10031
+ "default3.handlebars->35->1185",
10032
+ "default3.handlebars->35->768"
10033
]
10034
},
10035
{
@@ -10444,12 +10058,12 @@
10058
"zh-cht": "所有",
10059
"uk": "Усі",
10060
"xloc": [
10447
- "default-mobile.handlebars->11->361",
10448
- "default-mobile.handlebars->11->707",
10449
- "default-mobile.handlebars->11->709",
10450
- "default.handlebars->47->3163",
10061
+ "default-mobile.handlebars->11->367",
10062
+ "default-mobile.handlebars->11->713",
10063
+ "default-mobile.handlebars->11->715",
10064
+ "default.handlebars->47->3167",
10065
"default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar->DevFilterSelect->1",
10452
- "default3.handlebars->35->2937",
10066
+ "default3.handlebars->35->3154",
10067
"default3.handlebars->container->column_l->p1->devListToolbarSpan->devListToolbar->DevFilterSelect->1"
10068
]
10069
},
@@ -10479,8 +10093,8 @@
10093
"zh-cht": "全部可用",
10094
"uk": "Усі Наявні",
10095
"xloc": [
10482
- "default.handlebars->47->2692",
10483
- "default3.handlebars->35->2509"
10096
+ "default.handlebars->47->2696",
10097
+ "default3.handlebars->35->2692"
10098
]
10099
},
10100
{
@@ -10509,10 +10123,10 @@
10123
"zh-cht": "所有可用的代理",
10124
"uk": "Усі Наявні Агенти",
10125
"xloc": [
10512
- "default.handlebars->47->2417",
10513
- "default.handlebars->47->576",
10514
- "default3.handlebars->35->2244",
10515
- "default3.handlebars->35->537"
10126
+ "default.handlebars->47->2421",
10127
+ "default.handlebars->47->579",
10128
+ "default3.handlebars->35->2417",
10129
+ "default3.handlebars->35->576"
10130
]
10131
},
10132
{
@@ -10541,8 +10155,8 @@
10155
"zh-cht": "所有顯示",
10156
"uk": "Усі Дисплеї",
10157
"xloc": [
10544
- "default.handlebars->47->1485",
10545
- "default3.handlebars->35->1370"
10158
+ "default.handlebars->47->1486",
10159
+ "default3.handlebars->35->1471"
10160
]
10161
},
10162
{
@@ -10571,8 +10185,8 @@
10185
"zh-cht": "所有事件",
10186
"uk": "Усі Події",
10187
"xloc": [
10574
- "default.handlebars->47->2690",
10575
- "default3.handlebars->35->2507"
10188
+ "default.handlebars->47->2694",
10189
+ "default3.handlebars->35->2690"
10190
]
10191
},
10192
{
@@ -10601,12 +10215,12 @@
10215
"zh-cht": "全部聚焦",
10216
"uk": "Фокусувати Все",
10217
"xloc": [
10604
- "default.handlebars->47->1403",
10605
- "default.handlebars->47->1405",
10218
+ "default.handlebars->47->1404",
10219
"default.handlebars->47->1406",
10607
- "default3.handlebars->35->1297",
10608
- "default3.handlebars->35->1298",
10609
- "default3.handlebars->35->1299"
10220
+ "default.handlebars->47->1407",
10221
+ "default3.handlebars->35->1391",
10222
+ "default3.handlebars->35->1393",
10223
+ "default3.handlebars->35->1394"
10224
]
10225
},
10226
{
@@ -10623,6 +10237,12 @@
10237
"default3.handlebars->container->column_l->p31->3->1->0->3->1->p31filterevents->1"
10238
]
10239
},
10240
+ {
10241
+ "en": "All Themes",
10242
+ "xloc": [
10243
+ "default3.handlebars->35->2092"
10244
+ ]
10245
+ },
10246
{
10247
"bs": "Dopustiti",
10248
"ca": "Permetre",
@@ -10678,10 +10298,10 @@
10298
"zh-cht": "允許用戶管理此裝置群和該群中的裝置。",
10299
"uk": "Дозволити користувачам керувати цією групою пристроїв і пристроями в цій групі.",
10300
"xloc": [
10681
- "default.handlebars->47->2329",
10682
- "default.handlebars->47->2912",
10683
- "default3.handlebars->35->2160",
10684
- "default3.handlebars->35->2704"
10301
+ "default.handlebars->47->2333",
10302
+ "default.handlebars->47->2916",
10303
+ "default3.handlebars->35->2329",
10304
+ "default3.handlebars->35->2909"
10305
]
10306
},
10307
{
@@ -10710,8 +10330,8 @@
10330
"zh-cht": "允許用戶管理此裝置。",
10331
"uk": "Дозволити користувачам керувати цим пристроєм.",
10332
"xloc": [
10713
- "default.handlebars->47->2330",
10714
- "default3.handlebars->35->2161"
10333
+ "default.handlebars->47->2334",
10334
+ "default3.handlebars->35->2330"
10335
]
10336
},
10337
{
@@ -10740,8 +10360,8 @@
10360
"zh-cht": "允許",
10361
"uk": "Дозволено",
10362
"xloc": [
10743
- "default.handlebars->47->287",
10744
- "default3.handlebars->35->267"
10363
+ "default.handlebars->47->290",
10364
+ "default3.handlebars->35->287"
10365
]
10366
},
10367
{
@@ -10827,12 +10447,12 @@
10447
"zh-cht": "Alt",
10448
"uk": "Alt",
10449
"xloc": [
10830
- "default-mobile.handlebars->11->662",
10831
- "default-mobile.handlebars->11->666",
10832
- "default.handlebars->47->1427",
10833
- "default.handlebars->47->1431",
10834
- "default3.handlebars->35->1320",
10835
- "default3.handlebars->35->1324"
10450
+ "default-mobile.handlebars->11->668",
10451
+ "default-mobile.handlebars->11->672",
10452
+ "default.handlebars->47->1428",
10453
+ "default.handlebars->47->1432",
10454
+ "default3.handlebars->35->1415",
10455
+ "default3.handlebars->35->1419"
10456
]
10457
},
10458
{
@@ -10861,8 +10481,8 @@
10481
"zh-cht": "替代Shell",
10482
"uk": "Alt Оболонка",
10483
"xloc": [
10864
- "default.handlebars->47->1393",
10865
- "default3.handlebars->35->1289"
10484
+ "default.handlebars->47->1394",
10485
+ "default3.handlebars->35->1381"
10486
]
10487
},
10488
{
@@ -10951,8 +10571,8 @@
10571
"zh-cht": "備用(F10 = ESC + 0)",
10572
"uk": "Замінити (F10 = ESC+0)",
10573
"xloc": [
10954
- "default.handlebars->47->1519",
10955
- "default3.handlebars->35->1402",
10574
+ "default.handlebars->47->1520",
10575
+ "default3.handlebars->35->1505",
10576
"sharing.handlebars->11->37"
10577
]
10578
},
@@ -11049,14 +10669,14 @@
10669
"zh-cht": "一直通知",
10670
"uk": "Завжди Сповіщувати",
10671
"xloc": [
11052
- "default.handlebars->47->2191",
11053
- "default.handlebars->47->2871",
11054
- "default.handlebars->47->2976",
11055
- "default.handlebars->47->971",
11056
- "default3.handlebars->35->2046",
11057
- "default3.handlebars->35->2669",
11058
- "default3.handlebars->35->2767",
11059
- "default3.handlebars->35->908"
10672
+ "default.handlebars->47->2195",
10673
+ "default.handlebars->47->2875",
10674
+ "default.handlebars->47->2980",
10675
+ "default.handlebars->47->972",
10676
+ "default3.handlebars->35->2190",
10677
+ "default3.handlebars->35->2868",
10678
+ "default3.handlebars->35->2973",
10679
+ "default3.handlebars->35->969"
10680
]
10681
},
10682
{
@@ -11085,14 +10705,14 @@
10705
"zh-cht": "一直提示",
10706
"uk": "Завжди Запитувати",
10707
"xloc": [
11088
- "default.handlebars->47->2192",
11089
- "default.handlebars->47->2872",
11090
- "default.handlebars->47->2977",
11091
- "default.handlebars->47->972",
11092
- "default3.handlebars->35->2047",
11093
- "default3.handlebars->35->2670",
11094
- "default3.handlebars->35->2768",
11095
- "default3.handlebars->35->909"
10708
+ "default.handlebars->47->2196",
10709
+ "default.handlebars->47->2876",
10710
+ "default.handlebars->47->2981",
10711
+ "default.handlebars->47->973",
10712
+ "default3.handlebars->35->2191",
10713
+ "default3.handlebars->35->2869",
10714
+ "default3.handlebars->35->2974",
10715
+ "default3.handlebars->35->970"
10716
]
10717
},
10718
{
@@ -11121,6 +10741,13 @@
10741
"zh-cht": "始終連接",
10742
"uk": "Завжди підключено"
10743
},
10744
+ {
10745
+ "en": "Amazon App Store",
10746
+ "xloc": [
10747
+ "default.handlebars->47->646",
10748
+ "default3.handlebars->35->643"
10749
+ ]
10750
+ },
10751
{
10752
"bs": "Za vas je kreiran nalog na serveru",
10753
"ca": "S'ha creat un compte per a tu al servidor",
@@ -11191,8 +10818,8 @@
10818
"pl": "Wystąpił nieznany błąd.",
10819
"uk": "Сталася невідома помилка.",
10820
"xloc": [
11194
- "default.handlebars->47->3115",
11195
- "default3.handlebars->35->2890"
10821
+ "default.handlebars->47->3119",
10822
+ "default3.handlebars->35->3106"
10823
]
10824
},
10825
{
@@ -11256,9 +10883,9 @@
10883
"zh-cht": "Android APK",
10884
"uk": "Android APK",
10885
"xloc": [
11259
- "default-mobile.handlebars->11->966",
11260
- "default.handlebars->47->646",
11261
- "default3.handlebars->35->585"
10886
+ "default-mobile.handlebars->11->972",
10887
+ "default.handlebars->47->647",
10888
+ "default3.handlebars->35->644"
10889
]
10890
},
10891
{
@@ -11345,7 +10972,7 @@
10972
"zh-cht": "安卓安裝",
10973
"uk": "Інсталяція Android",
10974
"xloc": [
11348
- "default-mobile.handlebars->11->968"
10975
+ "default-mobile.handlebars->11->974"
10976
]
10977
},
10978
{
@@ -11354,8 +10981,8 @@
10981
"nl": "Android MeshAgent",
10982
"uk": "Android MeshAgent",
10983
"xloc": [
11357
- "default.handlebars->47->581",
11358
- "default3.handlebars->35->542"
10984
+ "default.handlebars->47->584",
10985
+ "default3.handlebars->35->581"
10986
]
10987
},
10988
{
@@ -11364,9 +10991,9 @@
10991
"nl": "Android Versie",
10992
"uk": "Версія Android",
10993
"xloc": [
11367
- "default-mobile.handlebars->11->794",
11368
- "default.handlebars->47->1626",
11369
- "default3.handlebars->35->1489"
10994
+ "default-mobile.handlebars->11->800",
10995
+ "default.handlebars->47->1627",
10996
+ "default3.handlebars->35->1611"
10997
]
10998
},
10999
{
@@ -11426,10 +11053,10 @@
11053
"zh-cht": "殺毒軟件未激活",
11054
"uk": "Антивірус непрацюючий",
11055
"xloc": [
11429
- "default.handlebars->47->2452",
11430
- "default.handlebars->47->2466",
11431
- "default3.handlebars->35->2276",
11432
- "default3.handlebars->35->2290"
11056
+ "default.handlebars->47->2456",
11057
+ "default.handlebars->47->2470",
11058
+ "default3.handlebars->35->2452",
11059
+ "default3.handlebars->35->2466"
11060
]
11061
},
11062
{
@@ -11458,9 +11085,9 @@
11085
"zh-cht": "防毒軟體",
11086
"uk": "Антивірус",
11087
"xloc": [
11461
- "default-mobile.handlebars->11->776",
11462
- "default.handlebars->47->960",
11463
- "default3.handlebars->35->897"
11088
+ "default-mobile.handlebars->11->782",
11089
+ "default.handlebars->47->961",
11090
+ "default3.handlebars->35->958"
11091
]
11092
},
11093
{
@@ -11489,8 +11116,8 @@
11116
"zh-cht": "任何可支持的",
11117
"uk": "Усі Можливі",
11118
"xloc": [
11492
- "default.handlebars->47->549",
11493
- "default3.handlebars->35->511"
11119
+ "default.handlebars->47->552",
11120
+ "default3.handlebars->35->549"
11121
]
11122
},
11123
{
@@ -11580,7 +11207,8 @@
11207
"zh-cht": "蘋果macOS",
11208
"uk": "Apple macOS",
11209
"xloc": [
11583
- "default.handlebars->47->591"
11210
+ "default.handlebars->47->594",
11211
+ "default3.handlebars->35->591"
11212
]
11213
},
11214
{
@@ -11589,7 +11217,8 @@
11217
"nl": "Apple macOS (verwijderen)",
11218
"uk": "Apple macOS (Деінсталяція)",
11219
"xloc": [
11592
- "default.handlebars->47->596"
11220
+ "default.handlebars->47->599",
11221
+ "default3.handlebars->35->596"
11222
]
11223
},
11224
{
@@ -11599,8 +11228,8 @@
11228
"uk": "Для запуску виконувані файли Apple macOS потрібно буде вилучити з карантину запустивши 'xattr -r -d com.apple.quarantine meshagent'",
11229
"xloc": [
11230
"agentinvite.handlebars->3->12",
11602
- "default.handlebars->47->678",
11603
- "default3.handlebars->35->617"
11231
+ "default.handlebars->47->679",
11232
+ "default3.handlebars->35->676"
11233
]
11234
},
11235
{
@@ -11629,8 +11258,8 @@
11258
"zh-cht": "僅限Apple macOS",
11259
"uk": "Лише Apple macOS",
11260
"xloc": [
11632
- "default.handlebars->47->551",
11633
- "default3.handlebars->35->513"
11261
+ "default.handlebars->47->554",
11262
+ "default3.handlebars->35->551"
11263
]
11264
},
11265
{
@@ -11810,7 +11439,8 @@
11439
"zh-cht": "應用程序,始終連接",
11440
"uk": "Застосунок, Завжди підключено",
11441
"xloc": [
11813
- "default.handlebars->47->605"
11442
+ "default.handlebars->47->608",
11443
+ "default3.handlebars->35->605"
11444
]
11445
},
11446
{
@@ -11839,7 +11469,8 @@
11469
"zh-cht": "應用程序,根據用戶請求連接",
11470
"uk": "Застосунок, Підключення за запитом користувача",
11471
"xloc": [
11842
- "default.handlebars->47->604"
11472
+ "default.handlebars->47->607",
11473
+ "default3.handlebars->35->604"
11474
]
11475
},
11476
{
@@ -11868,9 +11499,9 @@
11499
"zh-cht": "阿拉伯文(阿爾及利亞)",
11500
"uk": "Арабська (Алжир)",
11501
"xloc": [
11871
- "default-mobile.handlebars->11->110",
11872
- "default.handlebars->47->1844",
11873
- "default3.handlebars->35->1683",
11502
+ "default-mobile.handlebars->11->116",
11503
+ "default.handlebars->47->1846",
11504
+ "default3.handlebars->35->1826",
11505
"login2.handlebars->7->4"
11506
]
11507
},
@@ -11900,9 +11531,9 @@
11531
"zh-cht": "阿拉伯文(巴林)",
11532
"uk": "Арабська (Бахрейн)",
11533
"xloc": [
11903
- "default-mobile.handlebars->11->111",
11904
- "default.handlebars->47->1845",
11905
- "default3.handlebars->35->1684",
11534
+ "default-mobile.handlebars->11->117",
11535
+ "default.handlebars->47->1847",
11536
+ "default3.handlebars->35->1827",
11537
"login2.handlebars->7->5"
11538
]
11539
},
@@ -11932,9 +11563,9 @@
11563
"zh-cht": "阿拉伯文(埃及)",
11564
"uk": "Арабська (Єгипет)",
11565
"xloc": [
11935
- "default-mobile.handlebars->11->112",
11936
- "default.handlebars->47->1846",
11937
- "default3.handlebars->35->1685",
11566
+ "default-mobile.handlebars->11->118",
11567
+ "default.handlebars->47->1848",
11568
+ "default3.handlebars->35->1828",
11569
"login2.handlebars->7->6"
11570
]
11571
},
@@ -11964,9 +11595,9 @@
11595
"zh-cht": "阿拉伯文(伊拉克)",
11596
"uk": "Арабська (Ірак)",
11597
"xloc": [
11967
- "default-mobile.handlebars->11->113",
11968
- "default.handlebars->47->1847",
11969
- "default3.handlebars->35->1686",
11598
+ "default-mobile.handlebars->11->119",
11599
+ "default.handlebars->47->1849",
11600
+ "default3.handlebars->35->1829",
11601
"login2.handlebars->7->7"
11602
]
11603
},
@@ -11996,9 +11627,9 @@
11627
"zh-cht": "阿拉伯文(約旦)",
11628
"uk": "Арабська (Йорданія)",
11629
"xloc": [
11999
- "default-mobile.handlebars->11->114",
12000
- "default.handlebars->47->1848",
12001
- "default3.handlebars->35->1687",
11630
+ "default-mobile.handlebars->11->120",
11631
+ "default.handlebars->47->1850",
11632
+ "default3.handlebars->35->1830",
11633
"login2.handlebars->7->8"
11634
]
11635
},
@@ -12028,9 +11659,9 @@
11659
"zh-cht": "阿拉伯文(科威特)",
11660
"uk": "Арабська (Кувейт)",
11661
"xloc": [
12031
- "default-mobile.handlebars->11->115",
12032
- "default.handlebars->47->1849",
12033
- "default3.handlebars->35->1688",
11662
+ "default-mobile.handlebars->11->121",
11663
+ "default.handlebars->47->1851",
11664
+ "default3.handlebars->35->1831",
11665
"login2.handlebars->7->9"
11666
]
11667
},
@@ -12060,9 +11691,9 @@
11691
"zh-cht": "阿拉伯文(黎巴嫩)",
11692
"uk": "Арабська (Ліван)",
11693
"xloc": [
12063
- "default-mobile.handlebars->11->116",
12064
- "default.handlebars->47->1850",
12065
- "default3.handlebars->35->1689",
11694
+ "default-mobile.handlebars->11->122",
11695
+ "default.handlebars->47->1852",
11696
+ "default3.handlebars->35->1832",
11697
"login2.handlebars->7->10"
11698
]
11699
},
@@ -12092,9 +11723,9 @@
11723
"zh-cht": "阿拉伯文(利比亞)",
11724
"uk": "Арабська (Лівія)",
11725
"xloc": [
12095
- "default-mobile.handlebars->11->117",
12096
- "default.handlebars->47->1851",
12097
- "default3.handlebars->35->1690",
11726
+ "default-mobile.handlebars->11->123",
11727
+ "default.handlebars->47->1853",
11728
+ "default3.handlebars->35->1833",
11729
"login2.handlebars->7->11"
11730
]
11731
},
@@ -12124,9 +11755,9 @@
11755
"zh-cht": "阿拉伯文(摩洛哥)",
11756
"uk": "Арабська (Марокко)",
11757
"xloc": [
12127
- "default-mobile.handlebars->11->118",
12128
- "default.handlebars->47->1852",
12129
- "default3.handlebars->35->1691",
11758
+ "default-mobile.handlebars->11->124",
11759
+ "default.handlebars->47->1854",
11760
+ "default3.handlebars->35->1834",
11761
"login2.handlebars->7->12"
11762
]
11763
},
@@ -12156,9 +11787,9 @@
11787
"zh-cht": "阿拉伯文(阿曼)",
11788
"uk": "Арабська (Оман)",
11789
"xloc": [
12159
- "default-mobile.handlebars->11->119",
12160
- "default.handlebars->47->1853",
12161
- "default3.handlebars->35->1692",
11790
+ "default-mobile.handlebars->11->125",
11791
+ "default.handlebars->47->1855",
11792
+ "default3.handlebars->35->1835",
11793
"login2.handlebars->7->13"
11794
]
11795
},
@@ -12188,9 +11819,9 @@
11819
"zh-cht": "阿拉伯文(卡塔爾)",
11820
"uk": "Арабська (Катар)",
11821
"xloc": [
12191
- "default-mobile.handlebars->11->120",
12192
- "default.handlebars->47->1854",
12193
- "default3.handlebars->35->1693",
11822
+ "default-mobile.handlebars->11->126",
11823
+ "default.handlebars->47->1856",
11824
+ "default3.handlebars->35->1836",
11825
"login2.handlebars->7->14"
11826
]
11827
},
@@ -12220,9 +11851,9 @@
11851
"zh-cht": "阿拉伯文(沙特阿拉伯)",
11852
"uk": "Арабська (Саудівська Аравія)",
11853
"xloc": [
12223
- "default-mobile.handlebars->11->121",
12224
- "default.handlebars->47->1855",
12225
- "default3.handlebars->35->1694",
11854
+ "default-mobile.handlebars->11->127",
11855
+ "default.handlebars->47->1857",
11856
+ "default3.handlebars->35->1837",
11857
"login2.handlebars->7->15"
11858
]
11859
},
@@ -12252,9 +11883,9 @@
11883
"zh-cht": "阿拉伯文(標準)",
11884
"uk": "Арабська (Стандартна)",
11885
"xloc": [
12255
- "default-mobile.handlebars->11->109",
12256
- "default.handlebars->47->1843",
12257
- "default3.handlebars->35->1682",
11886
+ "default-mobile.handlebars->11->115",
11887
+ "default.handlebars->47->1845",
11888
+ "default3.handlebars->35->1825",
11889
"login2.handlebars->7->3"
11890
]
11891
},
@@ -12284,9 +11915,9 @@
11915
"zh-cht": "阿拉伯文(敘利亞)",
11916
"uk": "Арабська (Сирія)",
11917
"xloc": [
12287
- "default-mobile.handlebars->11->122",
12288
- "default.handlebars->47->1856",
12289
- "default3.handlebars->35->1695",
11918
+ "default-mobile.handlebars->11->128",
11919
+ "default.handlebars->47->1858",
11920
+ "default3.handlebars->35->1838",
11921
"login2.handlebars->7->16"
11922
]
11923
},
@@ -12316,9 +11947,9 @@
11947
"zh-cht": "阿拉伯文(突尼斯)",
11948
"uk": "Арабська (Туніс)",
11949
"xloc": [
12319
- "default-mobile.handlebars->11->123",
12320
- "default.handlebars->47->1857",
12321
- "default3.handlebars->35->1696",
11950
+ "default-mobile.handlebars->11->129",
11951
+ "default.handlebars->47->1859",
11952
+ "default3.handlebars->35->1839",
11953
"login2.handlebars->7->17"
11954
]
11955
},
@@ -12348,9 +11979,9 @@
11979
"zh-cht": "阿拉伯文(阿聯酋)",
11980
"uk": "Арабська (ОАЕ)",
11981
"xloc": [
12351
- "default-mobile.handlebars->11->124",
12352
- "default.handlebars->47->1858",
12353
- "default3.handlebars->35->1697",
11982
+ "default-mobile.handlebars->11->130",
11983
+ "default.handlebars->47->1860",
11984
+ "default3.handlebars->35->1840",
11985
"login2.handlebars->7->18"
11986
]
11987
},
@@ -12380,9 +12011,9 @@
12011
"zh-cht": "阿拉伯文(也門)",
12012
"uk": "Арабська (Ємен)",
12013
"xloc": [
12383
- "default-mobile.handlebars->11->125",
12384
- "default.handlebars->47->1859",
12385
- "default3.handlebars->35->1698",
12014
+ "default-mobile.handlebars->11->131",
12015
+ "default.handlebars->47->1861",
12016
+ "default3.handlebars->35->1841",
12017
"login2.handlebars->7->19"
12018
]
12019
},
@@ -12412,9 +12043,9 @@
12043
"zh-cht": "阿拉貢文",
12044
"uk": "Арагонська",
12045
"xloc": [
12415
- "default-mobile.handlebars->11->126",
12416
- "default.handlebars->47->1860",
12417
- "default3.handlebars->35->1699",
12046
+ "default-mobile.handlebars->11->132",
12047
+ "default.handlebars->47->1862",
12048
+ "default3.handlebars->35->1842",
12049
"login2.handlebars->7->20"
12050
]
12051
},
@@ -12444,15 +12075,15 @@
12075
"zh-cht": "結構",
12076
"uk": "Архітектура",
12077
"xloc": [
12447
- "default-mobile.handlebars->11->743",
12448
- "default-mobile.handlebars->11->745",
12449
- "default-mobile.handlebars->11->747",
12450
- "default.handlebars->47->1603",
12451
- "default.handlebars->47->1605",
12452
- "default.handlebars->47->1607",
12453
- "default3.handlebars->35->1466",
12454
- "default3.handlebars->35->1468",
12455
- "default3.handlebars->35->1470"
12078
+ "default-mobile.handlebars->11->749",
12079
+ "default-mobile.handlebars->11->751",
12080
+ "default-mobile.handlebars->11->753",
12081
+ "default.handlebars->47->1604",
12082
+ "default.handlebars->47->1606",
12083
+ "default.handlebars->47->1608",
12084
+ "default3.handlebars->35->1588",
12085
+ "default3.handlebars->35->1590",
12086
+ "default3.handlebars->35->1592"
12087
]
12088
},
12089
{
@@ -12481,8 +12112,8 @@
12112
"zh-cht": "你確定要連接到{0}裝置嗎?",
12113
"uk": "Ви впевнені, що хочете підключитися до {0} пристроїв?",
12114
"xloc": [
12484
- "default.handlebars->47->476",
12485
- "default3.handlebars->35->447"
12115
+ "default.handlebars->47->479",
12116
+ "default3.handlebars->35->476"
12117
]
12118
},
12119
{
@@ -12511,9 +12142,9 @@
12142
"zh-cht": "你確定要刪除群{0}嗎?刪除裝置群還將刪除該群中有關裝置的所有訊息。",
12143
"uk": "Ви впевнені, що бажаєте видалити групу {0}? Видалення групи пристроїв також видалить всю інформацію про пристрої в цій групі.",
12144
"xloc": [
12514
- "default-mobile.handlebars->11->954",
12515
- "default.handlebars->47->2296",
12516
- "default3.handlebars->35->2133"
12145
+ "default-mobile.handlebars->11->960",
12146
+ "default.handlebars->47->2300",
12147
+ "default3.handlebars->35->2293"
12148
]
12149
},
12150
{
@@ -12542,8 +12173,8 @@
12173
"zh-cht": "你確定要刪除節點{0}嗎?",
12174
"uk": "Ви впевнені, що хочете видалити вузол {0}?",
12175
"xloc": [
12545
- "default.handlebars->47->1319",
12546
- "default3.handlebars->35->1225"
12176
+ "default.handlebars->47->1320",
12177
+ "default3.handlebars->35->1310"
12178
]
12179
},
12180
{
@@ -12552,7 +12183,7 @@
12183
"nl": "Weet u zeker dat u dit bestand/ deze map op het bureaublad van het externe apparaat wilt openen?",
12184
"uk": "Ви впевнені, що бажаєте відкрити цей файл/теку на стільниці віддаленого пристрою?",
12185
"xloc": [
12555
- "default.handlebars->47->1543"
12186
+ "default.handlebars->47->1544"
12187
]
12188
},
12189
{
@@ -12581,8 +12212,8 @@
12212
"zh-cht": "你確定要卸載所選代理嗎?",
12213
"uk": "Ви впевнені, що хочете видалити відібраний агент?",
12214
"xloc": [
12584
- "default.handlebars->47->1308",
12585
- "default3.handlebars->35->1218"
12215
+ "default.handlebars->47->1309",
12216
+ "default3.handlebars->35->1300"
12217
]
12218
},
12219
{
@@ -12611,8 +12242,8 @@
12242
"zh-cht": "你確定要卸載所選的{0}代理嗎?",
12243
"uk": "Ви впевнені, що бажаєте видалити відібрані агенти {0}?",
12244
"xloc": [
12614
- "default.handlebars->47->1307",
12615
- "default3.handlebars->35->1217"
12245
+ "default.handlebars->47->1308",
12246
+ "default3.handlebars->35->1299"
12247
]
12248
},
12249
{
@@ -12641,8 +12272,8 @@
12272
"zh-cht": "你確定要{0}外掛嗎:{1}",
12273
"uk": "Ви впевнені, що хочете {0} плаґін: {1}",
12274
"xloc": [
12644
- "default.handlebars->47->3395",
12645
- "default3.handlebars->35->3164"
12275
+ "default.handlebars->47->3399",
12276
+ "default3.handlebars->35->3386"
12277
]
12278
},
12279
{
@@ -12702,9 +12333,9 @@
12333
"zh-cht": "亞美尼亞文",
12334
"uk": "Вірменська",
12335
"xloc": [
12705
- "default-mobile.handlebars->11->127",
12706
- "default.handlebars->47->1861",
12707
- "default3.handlebars->35->1700",
12336
+ "default-mobile.handlebars->11->133",
12337
+ "default.handlebars->47->1863",
12338
+ "default3.handlebars->35->1843",
12339
"login2.handlebars->7->21"
12340
]
12341
},
@@ -12916,9 +12547,9 @@
12547
"zh-cht": "阿薩姆文",
12548
"uk": "Асамська",
12549
"xloc": [
12919
- "default-mobile.handlebars->11->128",
12920
- "default.handlebars->47->1862",
12921
- "default3.handlebars->35->1701",
12550
+ "default-mobile.handlebars->11->134",
12551
+ "default.handlebars->47->1864",
12552
+ "default3.handlebars->35->1844",
12553
"login2.handlebars->7->22"
12554
]
12555
},
@@ -13035,10 +12666,10 @@
12666
"zh-cht": "Windows 助手 (.exe)",
12667
"uk": "Помічник Windows (.exe)",
12668
"xloc": [
13038
- "default.handlebars->47->652",
13039
- "default.handlebars->47->656",
13040
- "default3.handlebars->35->591",
13041
- "default3.handlebars->35->595"
12669
+ "default.handlebars->47->653",
12670
+ "default.handlebars->47->657",
12671
+ "default3.handlebars->35->650",
12672
+ "default3.handlebars->35->654"
12673
]
12674
},
12675
{
@@ -13096,9 +12727,9 @@
12727
"zh-cht": "阿斯圖里亞斯文",
12728
"uk": "Астурійська",
12729
"xloc": [
13099
- "default-mobile.handlebars->11->129",
13100
- "default.handlebars->47->1863",
13101
- "default3.handlebars->35->1702",
12730
+ "default-mobile.handlebars->11->135",
12731
+ "default.handlebars->47->1865",
12732
+ "default3.handlebars->35->1845",
12733
"login2.handlebars->7->23"
12734
]
12735
},
@@ -13128,8 +12759,8 @@
12759
"zh-cht": "嘗試激活英特爾(R)AMT ACM模式",
12760
"uk": "Спроба активувати режим Intel(R) AMT ACM",
12761
"xloc": [
13131
- "default.handlebars->47->2540",
13132
- "default3.handlebars->35->2357"
12762
+ "default.handlebars->47->2544",
12763
+ "default3.handlebars->35->2540"
12764
]
12765
},
12766
{
@@ -13184,14 +12815,15 @@
12815
"zh-cht": "驗證",
12816
"uk": "Автентифікація",
12817
"xloc": [
13187
- "default-mobile.handlebars->11->678",
13188
- "default-mobile.handlebars->11->682",
13189
- "default-mobile.handlebars->11->694",
13190
- "default.handlebars->47->1494",
13191
- "default.handlebars->47->1498",
13192
- "default.handlebars->47->1510",
13193
- "default3.handlebars->35->1378",
13194
- "default3.handlebars->35->1382",
12818
+ "default-mobile.handlebars->11->684",
12819
+ "default-mobile.handlebars->11->688",
12820
+ "default-mobile.handlebars->11->700",
12821
+ "default.handlebars->47->1495",
12822
+ "default.handlebars->47->1499",
12823
+ "default.handlebars->47->1511",
12824
+ "default3.handlebars->35->1480",
12825
+ "default3.handlebars->35->1484",
12826
+ "default3.handlebars->35->1496",
12827
"ssh.handlebars->3->21",
12828
"ssh.handlebars->3->22",
12829
"ssh.handlebars->3->5",
@@ -13224,8 +12856,8 @@
12856
"zh-cht": "認證軟體",
12857
"uk": "Застосунок Автентифікації",
12858
"xloc": [
13227
- "default.handlebars->47->2980",
13228
- "default3.handlebars->35->2771"
12859
+ "default.handlebars->47->2984",
12860
+ "default3.handlebars->35->2977"
12861
]
12862
},
12863
{
@@ -13254,9 +12886,12 @@
12886
"zh-cht": "認證設備",
12887
"uk": "Пристрій Автентифікації",
12888
"xloc": [
13257
- "default.handlebars->47->1824",
12889
"default.handlebars->47->1826",
13259
- "default.handlebars->47->1830"
12890
+ "default.handlebars->47->1828",
12891
+ "default.handlebars->47->1832",
12892
+ "default3.handlebars->35->1807",
12893
+ "default3.handlebars->35->1809",
12894
+ "default3.handlebars->35->1812"
12895
]
12896
},
12897
{
@@ -13285,12 +12920,12 @@
12920
"zh-cht": "授權錯誤",
12921
"uk": "Помилка Автентифікації",
12922
"xloc": [
13288
- "default-mobile.handlebars->11->695",
12923
"default-mobile.handlebars->11->701",
13290
- "default.handlebars->47->1512",
13291
- "default.handlebars->47->1527",
13292
- "default3.handlebars->35->1395",
13293
- "default3.handlebars->35->1409"
12924
+ "default-mobile.handlebars->11->707",
12925
+ "default.handlebars->47->1513",
12926
+ "default.handlebars->47->1528",
12927
+ "default3.handlebars->35->1498",
12928
+ "default3.handlebars->35->1513"
12929
]
12930
},
12931
{
@@ -13319,14 +12954,18 @@
12954
"zh-cht": "認證軟體",
12955
"uk": "Застосунок Автентифікатора",
12956
"xloc": [
13322
- "default-mobile.handlebars->11->312",
13323
- "default-mobile.handlebars->11->314",
13324
- "default-mobile.handlebars->11->71",
13325
- "default-mobile.handlebars->11->74",
13326
- "default.handlebars->47->1820",
12957
+ "default-mobile.handlebars->11->318",
12958
+ "default-mobile.handlebars->11->320",
12959
+ "default-mobile.handlebars->11->73",
12960
+ "default-mobile.handlebars->11->78",
12961
"default.handlebars->47->1822",
13328
- "default.handlebars->47->218",
13329
- "default.handlebars->47->223"
12962
+ "default.handlebars->47->1824",
12963
+ "default.handlebars->47->220",
12964
+ "default.handlebars->47->225",
12965
+ "default3.handlebars->35->1803",
12966
+ "default3.handlebars->35->1805",
12967
+ "default3.handlebars->35->219",
12968
+ "default3.handlebars->35->224"
12969
]
12970
},
12971
{
@@ -13355,8 +12994,9 @@
12994
"zh-cht": "認證軟體啟動成功。",
12995
"uk": "Двофакторну автентифікацію успішно ввімкнено.",
12996
"xloc": [
13358
- "default.handlebars->47->219",
13359
- "default3.handlebars->35->208"
12997
+ "default-mobile.handlebars->11->74",
12998
+ "default.handlebars->47->221",
12999
+ "default3.handlebars->35->220"
13000
]
13001
},
13002
{
@@ -13385,8 +13025,9 @@
13025
"zh-cht": "認證軟體已刪除。",
13026
"uk": "Вилучено двофакторну автентифікацію.",
13027
"xloc": [
13388
- "default.handlebars->47->224",
13389
- "default3.handlebars->35->212"
13028
+ "default-mobile.handlebars->11->79",
13029
+ "default.handlebars->47->226",
13030
+ "default3.handlebars->35->225"
13031
]
13032
},
13033
{
@@ -13474,10 +13115,10 @@
13115
"zh-cht": "自動刪除",
13116
"uk": "Авто-Видалення",
13117
"xloc": [
13477
- "default.handlebars->47->2176",
13478
- "default.handlebars->47->2683",
13479
- "default3.handlebars->35->2031",
13480
- "default3.handlebars->35->2500"
13118
+ "default.handlebars->47->2180",
13119
+ "default.handlebars->47->2687",
13120
+ "default3.handlebars->35->2175",
13121
+ "default3.handlebars->35->2683"
13122
]
13123
},
13124
{
@@ -13542,13 +13183,10 @@
13183
"zh-cht": "自動下載代理程序核心轉儲文件:“{0}”",
13184
"uk": "Автоматичне завантаження файлу дампа ядра агента: \\\"{0}\\\"",
13185
"xloc": [
13545
- "default.handlebars->47->2621",
13546
- "default3.handlebars->35->2438"
13186
+ "default.handlebars->47->2625",
13187
+ "default3.handlebars->35->2621"
13188
]
13189
},
13549
- {
13550
- "en": "Automatic\n Clipboard"
13551
- },
13190
{
13191
"bs": "Automatski međuspremnik",
13192
"ca": "Porta-retalls automàtic",
@@ -13663,8 +13301,8 @@
13301
"zh-cht": "自動移除非活動設備",
13302
"uk": "Автоматично видаляти неактивні пристрої",
13303
"xloc": [
13666
- "default.handlebars->47->2324",
13667
- "default3.handlebars->35->2156"
13304
+ "default.handlebars->47->2328",
13305
+ "default3.handlebars->35->2324"
13306
]
13307
},
13308
{
@@ -13693,8 +13331,8 @@
13331
"zh-cht": "可用內存",
13332
"uk": "Доступна пам'ять",
13333
"xloc": [
13696
- "default.handlebars->47->3324",
13697
- "default3.handlebars->35->3097"
13334
+ "default.handlebars->47->3328",
13335
+ "default3.handlebars->35->3315"
13336
]
13337
},
13338
{
@@ -13723,9 +13361,9 @@
13361
"zh-cht": "阿塞拜疆文",
13362
"uk": "Азербайджанська",
13363
"xloc": [
13726
- "default-mobile.handlebars->11->130",
13727
- "default.handlebars->47->1864",
13728
- "default3.handlebars->35->1703",
13364
+ "default-mobile.handlebars->11->136",
13365
+ "default.handlebars->47->1866",
13366
+ "default3.handlebars->35->1846",
13367
"login2.handlebars->7->24"
13368
]
13369
},
@@ -13755,15 +13393,21 @@
13393
"zh-cht": "壞的",
13394
"uk": "КЕПСЬКО",
13395
"xloc": [
13758
- "default-mobile.handlebars->11->754",
13759
- "default-mobile.handlebars->11->758",
13760
- "default-mobile.handlebars->11->762",
13761
- "default.handlebars->47->938",
13762
- "default.handlebars->47->942",
13763
- "default.handlebars->47->946",
13764
- "default3.handlebars->35->875",
13765
- "default3.handlebars->35->879",
13766
- "default3.handlebars->35->883"
13396
+ "default-mobile.handlebars->11->760",
13397
+ "default-mobile.handlebars->11->764",
13398
+ "default-mobile.handlebars->11->768",
13399
+ "default.handlebars->47->426",
13400
+ "default.handlebars->47->428",
13401
+ "default.handlebars->47->430",
13402
+ "default.handlebars->47->939",
13403
+ "default.handlebars->47->943",
13404
+ "default.handlebars->47->947",
13405
+ "default3.handlebars->35->423",
13406
+ "default3.handlebars->35->425",
13407
+ "default3.handlebars->35->427",
13408
+ "default3.handlebars->35->936",
13409
+ "default3.handlebars->35->940",
13410
+ "default3.handlebars->35->944"
13411
]
13412
},
13413
{
@@ -13792,9 +13436,9 @@
13436
"zh-cht": "的BIOS",
13437
"uk": "BIOS",
13438
"xloc": [
13795
- "default-mobile.handlebars->11->834",
13796
- "default.handlebars->47->1676",
13797
- "default3.handlebars->35->1537"
13439
+ "default-mobile.handlebars->11->840",
13440
+ "default.handlebars->47->1677",
13441
+ "default3.handlebars->35->1659"
13442
]
13443
},
13444
{
@@ -13932,9 +13576,9 @@
13576
"zh-cht": "退格",
13577
"uk": "BackSpace",
13578
"xloc": [
13935
- "default-mobile.handlebars->11->643",
13936
- "default.handlebars->47->1409",
13937
- "default3.handlebars->35->1302"
13579
+ "default-mobile.handlebars->11->649",
13580
+ "default.handlebars->47->1410",
13581
+ "default3.handlebars->35->1397"
13582
]
13583
},
13584
{
@@ -13964,7 +13608,8 @@
13608
"uk": "Фоновий та Інтерактивний",
13609
"xloc": [
13610
"agentinvite.handlebars->3->8",
13967
- "default.handlebars->47->600"
13611
+ "default.handlebars->47->603",
13612
+ "default3.handlebars->35->600"
13613
]
13614
},
13615
{
@@ -13993,14 +13638,14 @@
13638
"zh-cht": "背景與互動",
13639
"uk": "Фоновий та Інтерактивний",
13640
"xloc": [
13996
- "default.handlebars->47->2423",
13997
- "default.handlebars->47->2430",
13998
- "default.handlebars->47->562",
13999
- "default.handlebars->47->583",
14000
- "default3.handlebars->35->2250",
14001
- "default3.handlebars->35->2256",
14002
- "default3.handlebars->35->524",
14003
- "default3.handlebars->35->544"
13641
+ "default.handlebars->47->2427",
13642
+ "default.handlebars->47->2434",
13643
+ "default.handlebars->47->565",
13644
+ "default.handlebars->47->586",
13645
+ "default3.handlebars->35->2423",
13646
+ "default3.handlebars->35->2430",
13647
+ "default3.handlebars->35->562",
13648
+ "default3.handlebars->35->583"
13649
]
13650
},
13651
{
@@ -14030,15 +13675,16 @@
13675
"uk": "Лише Фоновий",
13676
"xloc": [
13677
"agentinvite.handlebars->3->9",
14033
- "default.handlebars->47->2424",
14034
- "default.handlebars->47->2432",
14035
- "default.handlebars->47->563",
14036
- "default.handlebars->47->584",
14037
- "default.handlebars->47->601",
14038
- "default3.handlebars->35->2251",
14039
- "default3.handlebars->35->2258",
14040
- "default3.handlebars->35->525",
14041
- "default3.handlebars->35->545"
13678
+ "default.handlebars->47->2428",
13679
+ "default.handlebars->47->2436",
13680
+ "default.handlebars->47->566",
13681
+ "default.handlebars->47->587",
13682
+ "default.handlebars->47->604",
13683
+ "default3.handlebars->35->2424",
13684
+ "default3.handlebars->35->2432",
13685
+ "default3.handlebars->35->563",
13686
+ "default3.handlebars->35->584",
13687
+ "default3.handlebars->35->601"
13688
]
13689
},
13690
{
@@ -14098,10 +13744,10 @@
13744
"zh-cht": "備用碼",
13745
"uk": "Резервні Коди",
13746
"xloc": [
14101
- "default.handlebars->47->2984",
14102
- "default.handlebars->47->3211",
14103
- "default3.handlebars->35->2775",
14104
- "default3.handlebars->35->2984"
13747
+ "default.handlebars->47->2988",
13748
+ "default.handlebars->47->3215",
13749
+ "default3.handlebars->35->2981",
13750
+ "default3.handlebars->35->3202"
13751
]
13752
},
13753
{
@@ -14132,7 +13778,7 @@
13778
"xloc": [
13779
"default-mobile.handlebars->11->64",
13780
"default.handlebars->47->209",
14135
- "default3.handlebars->35->199"
13781
+ "default3.handlebars->35->208"
13782
]
13783
},
13784
{
@@ -14162,7 +13808,7 @@
13808
"uk": "Шлях резервного копіювання не можна встановити у теці meshcentral-data, параметри резервного копіювання ігноруються.",
13809
"xloc": [
13810
"default.handlebars->47->105",
14165
- "default3.handlebars->35->104"
13811
+ "default3.handlebars->35->105"
13812
]
13813
},
13814
{
@@ -14191,8 +13837,8 @@
13837
"zh-cht": "錯誤的簽名",
13838
"uk": "Помилковий Підпис",
13839
"xloc": [
14194
- "default.handlebars->47->3306",
14195
- "default3.handlebars->35->3079"
13840
+ "default.handlebars->47->3310",
13841
+ "default3.handlebars->35->3297"
13842
]
13843
},
13844
{
@@ -14221,8 +13867,8 @@
13867
"zh-cht": "錯誤的網絡憑證",
13868
"uk": "Недійсний Веб-Сертифікат",
13869
"xloc": [
14224
- "default.handlebars->47->3305",
14225
- "default3.handlebars->35->3078"
13870
+ "default.handlebars->47->3309",
13871
+ "default3.handlebars->35->3296"
13872
]
13873
},
13874
{
@@ -14251,9 +13897,9 @@
13897
"zh-cht": "巴斯克",
13898
"uk": "Баскська",
13899
"xloc": [
14254
- "default-mobile.handlebars->11->131",
14255
- "default.handlebars->47->1865",
14256
- "default3.handlebars->35->1704",
13900
+ "default-mobile.handlebars->11->137",
13901
+ "default.handlebars->47->1867",
13902
+ "default3.handlebars->35->1847",
13903
"login2.handlebars->7->25"
13904
]
13905
},
@@ -14283,7 +13929,8 @@
13929
"zh-cht": "批處理文件上傳",
13930
"uk": "Пакетне Вивантаження Файлів",
13931
"xloc": [
14286
- "default.handlebars->47->783"
13932
+ "default.handlebars->47->784",
13933
+ "default3.handlebars->35->781"
13934
]
13935
},
13936
{
@@ -14356,8 +14003,8 @@
14003
"zh-cht": "將{0}個文件批量上傳到文件夾{1}",
14004
"uk": "Пакетне завантаження файлів ({0}) до теки {1}",
14005
"xloc": [
14359
- "default.handlebars->47->2620",
14360
- "default3.handlebars->35->2437"
14006
+ "default.handlebars->47->2624",
14007
+ "default3.handlebars->35->2620"
14008
]
14009
},
14010
{
@@ -14386,9 +14033,9 @@
14033
"zh-cht": "白俄羅斯文",
14034
"uk": "Білоруська",
14035
"xloc": [
14389
- "default-mobile.handlebars->11->133",
14390
- "default.handlebars->47->1867",
14391
- "default3.handlebars->35->1706",
14036
+ "default-mobile.handlebars->11->139",
14037
+ "default.handlebars->47->1869",
14038
+ "default3.handlebars->35->1849",
14039
"login2.handlebars->7->27"
14040
]
14041
},
@@ -14418,9 +14065,9 @@
14065
"zh-cht": "孟加拉",
14066
"uk": "Бенгальська",
14067
"xloc": [
14421
- "default-mobile.handlebars->11->134",
14422
- "default.handlebars->47->1868",
14423
- "default3.handlebars->35->1707",
14068
+ "default-mobile.handlebars->11->140",
14069
+ "default.handlebars->47->1870",
14070
+ "default3.handlebars->35->1850",
14071
"login2.handlebars->7->28"
14072
]
14073
},
@@ -14488,9 +14135,9 @@
14135
"nl": "BitLocker",
14136
"uk": "BitLocker",
14137
"xloc": [
14491
- "default-mobile.handlebars->11->890",
14492
- "default.handlebars->47->1732",
14493
- "default3.handlebars->35->1593"
14138
+ "default-mobile.handlebars->11->896",
14139
+ "default.handlebars->47->1733",
14140
+ "default3.handlebars->35->1715"
14141
]
14142
},
14143
{
@@ -14500,9 +14147,9 @@
14147
"pl": "Informacje o BitLocker",
14148
"uk": "Інформація о BitLocker",
14149
"xloc": [
14503
- "default-mobile.handlebars->11->911",
14504
- "default.handlebars->47->1753",
14505
- "default3.handlebars->35->1614"
14150
+ "default-mobile.handlebars->11->917",
14151
+ "default.handlebars->47->1754",
14152
+ "default3.handlebars->35->1736"
14153
]
14154
},
14155
{
@@ -14531,9 +14178,9 @@
14178
"zh-cht": "引導加載程序",
14179
"uk": "Завантажувач",
14180
"xloc": [
14534
- "default-mobile.handlebars->11->791",
14535
- "default.handlebars->47->1623",
14536
- "default3.handlebars->35->1486"
14181
+ "default-mobile.handlebars->11->797",
14182
+ "default.handlebars->47->1624",
14183
+ "default3.handlebars->35->1608"
14184
]
14185
},
14186
{
@@ -14562,9 +14209,9 @@
14209
"zh-cht": "波斯尼亞文",
14210
"uk": "Боснійська",
14211
"xloc": [
14565
- "default-mobile.handlebars->11->135",
14566
- "default.handlebars->47->1869",
14567
- "default3.handlebars->35->1708",
14212
+ "default-mobile.handlebars->11->141",
14213
+ "default.handlebars->47->1871",
14214
+ "default3.handlebars->35->1851",
14215
"login2.handlebars->7->29"
14216
]
14217
},
@@ -14594,9 +14241,9 @@
14241
"zh-cht": "布列塔尼",
14242
"uk": "Бретонська",
14243
"xloc": [
14597
- "default-mobile.handlebars->11->136",
14598
- "default.handlebars->47->1870",
14599
- "default3.handlebars->35->1709",
14244
+ "default-mobile.handlebars->11->142",
14245
+ "default.handlebars->47->1872",
14246
+ "default3.handlebars->35->1852",
14247
"login2.handlebars->7->30"
14248
]
14249
},
@@ -14626,9 +14273,9 @@
14273
"zh-cht": "廣播",
14274
"uk": "Широкомовне",
14275
"xloc": [
14629
- "default.handlebars->47->2878",
14276
+ "default.handlebars->47->2882",
14277
"default.handlebars->container->column_l->p4->3->1->0->3->1",
14631
- "default3.handlebars->35->2676",
14278
+ "default3.handlebars->35->2875",
14279
"default3.handlebars->container->column_l->p4->3->1->0->1->3"
14280
]
14281
},
@@ -14658,7 +14305,8 @@
14305
"zh-cht": "廣播消息",
14306
"uk": "Широкомовне Повідомлення",
14307
"xloc": [
14661
- "default.handlebars->47->2794"
14308
+ "default.handlebars->47->2798",
14309
+ "default3.handlebars->35->2793"
14310
]
14311
},
14312
{
@@ -14687,8 +14335,8 @@
14335
"zh-cht": "向所有連接的用戶廣播消息。",
14336
"uk": "Широкомовне повідомлення всім підключеним користувачам.",
14337
"xloc": [
14690
- "default.handlebars->47->2789",
14691
- "default3.handlebars->35->2592"
14338
+ "default.handlebars->47->2793",
14339
+ "default3.handlebars->35->2788"
14340
]
14341
},
14342
{
@@ -14717,8 +14365,8 @@
14365
"zh-cht": "瀏覽器",
14366
"uk": "Браузер",
14367
"xloc": [
14720
- "default.handlebars->47->3185",
14721
- "default3.handlebars->35->2958"
14368
+ "default.handlebars->47->3189",
14369
+ "default3.handlebars->35->3176"
14370
]
14371
},
14372
{
@@ -14777,7 +14425,7 @@
14425
"zh-cht": "瀏覽器默認",
14426
"uk": "Типовий Браузер",
14427
"xloc": [
14780
- "default-mobile.handlebars->11->95",
14428
+ "default-mobile.handlebars->11->101",
14429
"default.handlebars->47->64",
14430
"default3.handlebars->35->64"
14431
]
@@ -14808,9 +14456,9 @@
14456
"zh-cht": "保加利亞文",
14457
"uk": "Болгарська",
14458
"xloc": [
14811
- "default-mobile.handlebars->11->132",
14812
- "default.handlebars->47->1866",
14813
- "default3.handlebars->35->1705",
14459
+ "default-mobile.handlebars->11->138",
14460
+ "default.handlebars->47->1868",
14461
+ "default3.handlebars->35->1848",
14462
"login2.handlebars->7->26"
14463
]
14464
},
@@ -14840,9 +14488,9 @@
14488
"zh-cht": "緬甸文",
14489
"uk": "Бірманська",
14490
"xloc": [
14843
- "default-mobile.handlebars->11->137",
14844
- "default.handlebars->47->1871",
14845
- "default3.handlebars->35->1710",
14491
+ "default-mobile.handlebars->11->143",
14492
+ "default.handlebars->47->1873",
14493
+ "default3.handlebars->35->1853",
14494
"login2.handlebars->7->31"
14495
]
14496
},
@@ -14872,8 +14520,8 @@
14520
"zh-cht": "默認情況下,非活動設備將在 1 天后移除。",
14521
"uk": "Типово неактивні пристрої видаляються через 1 день.",
14522
"xloc": [
14875
- "default.handlebars->47->2326",
14876
- "default3.handlebars->35->2158"
14523
+ "default.handlebars->47->2330",
14524
+ "default3.handlebars->35->2326"
14525
]
14526
},
14527
{
@@ -14902,8 +14550,8 @@
14550
"zh-cht": "默認情況下,不活動的設備將在 {0} 天后被移除。",
14551
"uk": "Типово неактивні пристрої видаляються через {0} дн.",
14552
"xloc": [
14905
- "default.handlebars->47->2327",
14906
- "default3.handlebars->35->2159"
14553
+ "default.handlebars->47->2331",
14554
+ "default3.handlebars->35->2327"
14555
]
14556
},
14557
{
@@ -14945,8 +14593,8 @@
14593
"zh-cht": "字節輸入",
14594
"uk": "Байт Вх.",
14595
"xloc": [
14948
- "default.handlebars->47->3181",
14949
- "default3.handlebars->35->2954"
14596
+ "default.handlebars->47->3185",
14597
+ "default3.handlebars->35->3172"
14598
]
14599
},
14600
{
@@ -14975,8 +14623,8 @@
14623
"zh-cht": "字節輸出",
14624
"uk": "Байт Вих.",
14625
"xloc": [
14978
- "default.handlebars->47->3182",
14979
- "default3.handlebars->35->2955"
14626
+ "default.handlebars->47->3186",
14627
+ "default3.handlebars->35->3173"
14628
]
14629
},
14630
{
@@ -15052,11 +14700,11 @@
14700
"zh-cht": "CCM",
14701
"uk": "CCM",
14702
"xloc": [
15055
- "default-mobile.handlebars->11->509",
15056
- "default.handlebars->47->434",
15057
- "default.handlebars->47->914",
15058
- "default3.handlebars->35->406",
15059
- "default3.handlebars->35->851"
14703
+ "default-mobile.handlebars->11->515",
14704
+ "default.handlebars->47->437",
14705
+ "default.handlebars->47->915",
14706
+ "default3.handlebars->35->434",
14707
+ "default3.handlebars->35->912"
14708
]
14709
},
14710
{
@@ -15085,7 +14733,8 @@
14733
"zh-cht": "CCM模式",
14734
"uk": "Режим CCM",
14735
"xloc": [
15088
- "default.handlebars->47->2279"
14736
+ "default.handlebars->47->2283",
14737
+ "default3.handlebars->35->2276"
14738
]
14739
},
14740
{
@@ -15093,15 +14742,15 @@
14742
"en": "CD-ROM",
14743
"nl": "CD-ROM",
14744
"xloc": [
15096
- "default-mobile.handlebars->11->883",
15097
- "default-mobile.handlebars->11->895",
15098
- "default-mobile.handlebars->11->902",
15099
- "default.handlebars->47->1725",
15100
- "default.handlebars->47->1737",
15101
- "default.handlebars->47->1744",
15102
- "default3.handlebars->35->1586",
15103
- "default3.handlebars->35->1598",
15104
- "default3.handlebars->35->1605"
14745
+ "default-mobile.handlebars->11->889",
14746
+ "default-mobile.handlebars->11->901",
14747
+ "default-mobile.handlebars->11->908",
14748
+ "default.handlebars->47->1726",
14749
+ "default.handlebars->47->1738",
14750
+ "default.handlebars->47->1745",
14751
+ "default3.handlebars->35->1708",
14752
+ "default3.handlebars->35->1720",
14753
+ "default3.handlebars->35->1727"
14754
]
14755
},
14756
{
@@ -15130,13 +14779,13 @@
14779
"zh-cht": "CIRA",
14780
"uk": "CIRA",
14781
"xloc": [
15133
- "default-mobile.handlebars->11->470",
15134
- "default.handlebars->47->3331",
15135
- "default.handlebars->47->411",
15136
- "default.handlebars->47->719",
15137
- "default3.handlebars->35->3104",
15138
- "default3.handlebars->35->383",
15139
- "default3.handlebars->35->677"
14782
+ "default-mobile.handlebars->11->476",
14783
+ "default.handlebars->47->3335",
14784
+ "default.handlebars->47->414",
14785
+ "default.handlebars->47->720",
14786
+ "default3.handlebars->35->3322",
14787
+ "default3.handlebars->35->411",
14788
+ "default3.handlebars->35->717"
14789
]
14790
},
14791
{
@@ -15165,8 +14814,8 @@
14814
"zh-cht": "CIRA伺服器",
14815
"uk": "Сервер CIRA",
14816
"xloc": [
15168
- "default.handlebars->47->3379",
15169
- "default3.handlebars->35->3151"
14817
+ "default.handlebars->47->3383",
14818
+ "default3.handlebars->35->3370"
14819
]
14820
},
14821
{
@@ -15195,8 +14844,8 @@
14844
"zh-cht": "CIRA伺服器指令",
14845
"uk": "Команди Сервера CIRA",
14846
"xloc": [
15198
- "default.handlebars->47->3380",
15199
- "default3.handlebars->35->3152"
14847
+ "default.handlebars->47->3384",
14848
+ "default3.handlebars->35->3371"
14849
]
14850
},
14851
{
@@ -15226,7 +14875,7 @@
14875
"uk": "Локальні імена FQDN CIRA ігноруються, коли сервер працює в режимі лише LAN або лише WAN.",
14876
"xloc": [
14877
"default.handlebars->47->91",
15229
- "default3.handlebars->35->90"
14878
+ "default3.handlebars->35->91"
14879
]
14880
},
14881
{
@@ -15255,7 +14904,8 @@
14904
"zh-cht": "CIRA設置",
14905
"uk": "Налаштування CIRA",
14906
"xloc": [
15258
- "default.handlebars->47->2287"
14907
+ "default.handlebars->47->2291",
14908
+ "default3.handlebars->35->2283"
14909
]
14910
},
14911
{
@@ -15284,14 +14934,14 @@
14934
"zh-cht": "CPU",
14935
"uk": "ЦП",
14936
"xloc": [
15287
- "default-mobile.handlebars->11->840",
15288
- "default.handlebars->47->1598",
15289
- "default.handlebars->47->1682",
15290
- "default.handlebars->47->3355",
14937
+ "default-mobile.handlebars->11->846",
14938
+ "default.handlebars->47->1599",
14939
+ "default.handlebars->47->1683",
14940
+ "default.handlebars->47->3359",
14941
"default.handlebars->container->column_l->p40->3->1->p40type->5",
15292
- "default3.handlebars->35->1461",
15293
- "default3.handlebars->35->1543",
15294
- "default3.handlebars->35->3128",
14942
+ "default3.handlebars->35->1583",
14943
+ "default3.handlebars->35->1665",
14944
+ "default3.handlebars->35->3346",
14945
"default3.handlebars->container->column_l->p40->3->3->p40type->5"
14946
]
14947
},
@@ -15321,8 +14971,8 @@
14971
"zh-cht": "CPU負載",
14972
"uk": "Навантаження ЦП",
14973
"xloc": [
15324
- "default.handlebars->47->3320",
15325
- "default3.handlebars->35->3093"
14974
+ "default.handlebars->47->3324",
14975
+ "default3.handlebars->35->3311"
14976
]
14977
},
14978
{
@@ -15351,8 +15001,8 @@
15001
"zh-cht": "最近15分鐘的CPU負載",
15002
"uk": "Навантаження ЦП за останні 15 хвилин",
15003
"xloc": [
15354
- "default.handlebars->47->3323",
15355
- "default3.handlebars->35->3096"
15004
+ "default.handlebars->47->3327",
15005
+ "default3.handlebars->35->3314"
15006
]
15007
},
15008
{
@@ -15381,8 +15031,8 @@
15031
"zh-cht": "最近5分鐘的CPU負載",
15032
"uk": "Навантаження ЦП за останні 5 хвилин",
15033
"xloc": [
15384
- "default.handlebars->47->3322",
15385
- "default3.handlebars->35->3095"
15034
+ "default.handlebars->47->3326",
15035
+ "default3.handlebars->35->3313"
15036
]
15037
},
15038
{
@@ -15411,8 +15061,8 @@
15061
"zh-cht": "最近一分鐘的CPU負載",
15062
"uk": "Навантаження ЦП за останню хвилину",
15063
"xloc": [
15414
- "default.handlebars->47->3321",
15415
- "default3.handlebars->35->3094"
15064
+ "default.handlebars->47->3325",
15065
+ "default3.handlebars->35->3312"
15066
]
15067
},
15068
{
@@ -15441,11 +15091,11 @@
15091
"zh-cht": "CR+LF",
15092
"uk": "CR+LF",
15093
"xloc": [
15444
- "default.handlebars->47->1490",
15445
- "default.handlebars->47->1521",
15094
+ "default.handlebars->47->1491",
15095
+ "default.handlebars->47->1522",
15096
"default.handlebars->container->column_l->p12->termTable->1->1->4->1->1->terminalSettingsButtons",
15447
- "default3.handlebars->35->1374",
15448
- "default3.handlebars->35->1404",
15097
+ "default3.handlebars->35->1476",
15098
+ "default3.handlebars->35->1507",
15099
"default3.handlebars->container->column_l->p12->termTable->1->1->4->1->3->terminalSettingsButtons",
15100
"sharing.handlebars->11->25",
15101
"sharing.handlebars->11->39",
@@ -15478,8 +15128,8 @@
15128
"zh-cht": "CSV",
15129
"uk": "CSV",
15130
"xloc": [
15481
- "default.handlebars->47->2700",
15482
- "default3.handlebars->35->2517"
15131
+ "default.handlebars->47->2704",
15132
+ "default3.handlebars->35->2700"
15133
]
15134
},
15135
{
@@ -15508,12 +15158,12 @@
15158
"zh-cht": "CSV格式",
15159
"uk": "Формат CSV",
15160
"xloc": [
15511
- "default.handlebars->47->2704",
15512
- "default.handlebars->47->2781",
15513
- "default.handlebars->47->792",
15514
- "default3.handlebars->35->2520",
15515
- "default3.handlebars->35->2585",
15516
- "default3.handlebars->35->741"
15161
+ "default.handlebars->47->2708",
15162
+ "default.handlebars->47->2785",
15163
+ "default.handlebars->47->793",
15164
+ "default3.handlebars->35->2704",
15165
+ "default3.handlebars->35->2780",
15166
+ "default3.handlebars->35->790"
15167
]
15168
},
15169
{
@@ -15522,8 +15172,8 @@
15172
"nl": "Het CSV bestandsformaat is als volgt:",
15173
"uk": "Формат файлу CSV нижче:",
15174
"xloc": [
15525
- "default.handlebars->47->2767",
15526
- "default3.handlebars->35->2577"
15175
+ "default.handlebars->47->2771",
15176
+ "default3.handlebars->35->2766"
15177
]
15178
},
15179
{
@@ -15578,8 +15228,8 @@
15228
"zh-cht": "呼叫錯誤",
15229
"uk": "Помилка Виклику",
15230
"xloc": [
15581
- "default.handlebars->47->3396",
15582
- "default3.handlebars->35->3165"
15231
+ "default.handlebars->47->3400",
15232
+ "default3.handlebars->35->3387"
15233
]
15234
},
15235
{
@@ -15592,10 +15242,10 @@
15242
"pl": "CallMeBot",
15243
"uk": "CallMeBot",
15244
"xloc": [
15595
- "default.handlebars->47->1790",
15596
- "default.handlebars->47->3019",
15597
- "default3.handlebars->35->1642",
15598
- "default3.handlebars->35->2810"
15245
+ "default.handlebars->47->1791",
15246
+ "default.handlebars->47->3023",
15247
+ "default3.handlebars->35->1772",
15248
+ "default3.handlebars->35->3016"
15249
]
15250
},
15251
{
@@ -15625,7 +15275,7 @@
15275
"uk": "Не можна мати більше 4 локальних FQDN CIRA. Ігнорування значення.",
15276
"xloc": [
15277
"default.handlebars->47->92",
15628
- "default3.handlebars->35->91"
15278
+ "default3.handlebars->35->92"
15279
]
15280
},
15281
{
@@ -15655,14 +15305,13 @@
15305
"uk": "Скасувати",
15306
"xloc": [
15307
"agent-translations.json",
15658
- "default-mobile.handlebars->11->323",
15308
+ "default-mobile.handlebars->11->329",
15309
"default-mobile.handlebars->dialog->idx_dlgButtonBar",
15660
- "default.handlebars->47->2143",
15661
- "default.handlebars->47->3385",
15662
- "default.handlebars->47->535",
15310
+ "default.handlebars->47->2147",
15311
+ "default.handlebars->47->3389",
15312
+ "default.handlebars->47->538",
15313
"default.handlebars->container->dialog->idx_dlgButtonBar",
15664
- "default3.handlebars->35->2005",
15665
- "default3.handlebars->35->498",
15314
+ "default3.handlebars->35->535",
15315
"default3.handlebars->container->xxAddAgentModal->xxAddAgentModalConf->1->5->idx_dlgCancelButton",
15316
"login-mobile.handlebars->dialog->idx_dlgButtonBar",
15317
"login.handlebars->dialog->idx_dlgButtonBar",
@@ -15781,30 +15430,30 @@
15430
"zh-cht": "容量",
15431
"uk": "Ємність",
15432
"xloc": [
15784
- "default-mobile.handlebars->11->858",
15433
"default-mobile.handlebars->11->864",
15434
"default-mobile.handlebars->11->870",
15787
- "default-mobile.handlebars->11->875",
15788
- "default-mobile.handlebars->11->877",
15789
- "default-mobile.handlebars->11->880",
15790
- "default-mobile.handlebars->11->892",
15791
- "default-mobile.handlebars->11->899",
15792
- "default.handlebars->47->1700",
15793
- "default.handlebars->47->1706",
15794
- "default.handlebars->47->1712",
15795
- "default.handlebars->47->1717",
15796
- "default.handlebars->47->1719",
15797
- "default.handlebars->47->1722",
15798
- "default.handlebars->47->1734",
15799
- "default.handlebars->47->1741",
15800
- "default3.handlebars->35->1561",
15801
- "default3.handlebars->35->1567",
15802
- "default3.handlebars->35->1573",
15803
- "default3.handlebars->35->1578",
15804
- "default3.handlebars->35->1580",
15805
- "default3.handlebars->35->1583",
15806
- "default3.handlebars->35->1595",
15807
- "default3.handlebars->35->1602"
15435
+ "default-mobile.handlebars->11->876",
15436
+ "default-mobile.handlebars->11->881",
15437
+ "default-mobile.handlebars->11->883",
15438
+ "default-mobile.handlebars->11->886",
15439
+ "default-mobile.handlebars->11->898",
15440
+ "default-mobile.handlebars->11->905",
15441
+ "default.handlebars->47->1701",
15442
+ "default.handlebars->47->1707",
15443
+ "default.handlebars->47->1713",
15444
+ "default.handlebars->47->1718",
15445
+ "default.handlebars->47->1720",
15446
+ "default.handlebars->47->1723",
15447
+ "default.handlebars->47->1735",
15448
+ "default.handlebars->47->1742",
15449
+ "default3.handlebars->35->1683",
15450
+ "default3.handlebars->35->1689",
15451
+ "default3.handlebars->35->1695",
15452
+ "default3.handlebars->35->1700",
15453
+ "default3.handlebars->35->1702",
15454
+ "default3.handlebars->35->1705",
15455
+ "default3.handlebars->35->1717",
15456
+ "default3.handlebars->35->1724"
15457
]
15458
},
15459
{
@@ -15833,15 +15482,15 @@
15482
"zh-cht": "容量/速度",
15483
"uk": "Ємність / Швидкість",
15484
"xloc": [
15836
- "default-mobile.handlebars->11->856",
15485
"default-mobile.handlebars->11->862",
15486
"default-mobile.handlebars->11->868",
15839
- "default.handlebars->47->1698",
15840
- "default.handlebars->47->1704",
15841
- "default.handlebars->47->1710",
15842
- "default3.handlebars->35->1559",
15843
- "default3.handlebars->35->1565",
15844
- "default3.handlebars->35->1571"
15487
+ "default-mobile.handlebars->11->874",
15488
+ "default.handlebars->47->1699",
15489
+ "default.handlebars->47->1705",
15490
+ "default.handlebars->47->1711",
15491
+ "default3.handlebars->35->1681",
15492
+ "default3.handlebars->35->1687",
15493
+ "default3.handlebars->35->1693"
15494
]
15495
},
15496
{
@@ -15850,15 +15499,15 @@
15499
"nl": "Resterende capaciteit",
15500
"uk": "Залишок ємності",
15501
"xloc": [
15853
- "default-mobile.handlebars->11->881",
15854
- "default-mobile.handlebars->11->893",
15855
- "default-mobile.handlebars->11->900",
15856
- "default.handlebars->47->1723",
15857
- "default.handlebars->47->1735",
15858
- "default.handlebars->47->1742",
15859
- "default3.handlebars->35->1584",
15860
- "default3.handlebars->35->1596",
15861
- "default3.handlebars->35->1603"
15502
+ "default-mobile.handlebars->11->887",
15503
+ "default-mobile.handlebars->11->899",
15504
+ "default-mobile.handlebars->11->906",
15505
+ "default.handlebars->47->1724",
15506
+ "default.handlebars->47->1736",
15507
+ "default.handlebars->47->1743",
15508
+ "default3.handlebars->35->1706",
15509
+ "default3.handlebars->35->1718",
15510
+ "default3.handlebars->35->1725"
15511
]
15512
},
15513
{
@@ -15887,9 +15536,9 @@
15536
"zh-cht": "加泰羅尼亞文",
15537
"uk": "Каталанська",
15538
"xloc": [
15890
- "default-mobile.handlebars->11->138",
15891
- "default.handlebars->47->1872",
15892
- "default3.handlebars->35->1711",
15539
+ "default-mobile.handlebars->11->144",
15540
+ "default.handlebars->47->1874",
15541
+ "default3.handlebars->35->1854",
15542
"login2.handlebars->7->32"
15543
]
15544
},
@@ -15919,8 +15568,8 @@
15568
"zh-cht": "在這裡為中心顯示地圖",
15569
"uk": "Центрувати мапу тут",
15570
"xloc": [
15922
- "default.handlebars->47->867",
15923
- "default3.handlebars->35->807"
15571
+ "default.handlebars->47->868",
15572
+ "default3.handlebars->35->865"
15573
]
15574
},
15575
{
@@ -15978,14 +15627,14 @@
15627
"default-mobile.handlebars->11->61",
15628
"default.handlebars->47->115",
15629
"default.handlebars->47->116",
15981
- "default3.handlebars->35->113",
15982
- "default3.handlebars->35->114"
15630
+ "default3.handlebars->35->115",
15631
+ "default3.handlebars->35->116"
15632
]
15633
},
This file is too large to show in full.
views/default-mobile.handlebars
+4
-4
@@ -1743,7 +1743,7 @@
1743
var secret = message.secret;
1744
if (secret.length == 52) { secret = secret.split(/(.............)/).filter(Boolean).join(' '); }
1745
else if (secret.length == 32) { secret = secret.split(/(....)/).filter(Boolean).join(' '); secret = secret.substring(0, 20) + '<br/>' + secret.substring(20) }
1746
- QH('d2optinfo', format("Install <a href=\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2\" rel=\"noreferrer noopener\" target=_blank>Google Authenticator</a> or a compatible application, use <a href=\"{0}\" rel=\"noreferrer noopener\" target=_blank> this link</a> or enter the secret below. Then, enter the current 6 digit token to activate 2-Step login.", message.url) + '<br /><br /><div style=width:100%;text-align:center><tt id=d2optsecret secret="' + message.secret + '" style=font-size:15px>' + secret + '</tt><br /><br />Token: <input type=text autocomplete="one-time-code" inputmode="numeric" pattern="[0-9]*" onkeypress=\"return (event.keyCode == 8) || (event.charCode >= 48 && event.charCode <= 57)\" onkeyup=account_addOtpCheck(event) onkeydown=account_addOtpCheck() maxlength=6 id=d2otpauthinput type=text></div>');
1746
+ QH('d2optinfo', format("Install" + ' <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2" rel="noreferrer noopener" target=_blank>' + "Google Authenticator" + '</a> ' + "or a compatible application, use <a href=\"{0}\" rel=\"noreferrer noopener\" target=_blank> this link</a> or enter the secret below. Then, enter the current 6 digit token to activate 2-Step login.", message.url) + '<br /><br /><div style=width:100%;text-align:center><tt id=d2optsecret secret="' + message.secret + '" style=font-size:15px>' + secret + '</tt><br /><br />Token: <input type=text autocomplete="one-time-code" inputmode="numeric" pattern="[0-9]*" onkeypress=\"return (event.keyCode == 8) || (event.charCode >= 48 && event.charCode <= 57)\" onkeyup=account_addOtpCheck(event) onkeydown=account_addOtpCheck() maxlength=6 id=d2otpauthinput type=text></div>');
1747
QV('idx_dlgOkButton', true);
1748
QE('idx_dlgOkButton', false);
1749
Q('d2otpauthinput').focus();
@@ -1753,12 +1753,12 @@
1753
}
1754
case 'otpauth-setup': {
1755
if (xxdialogMode) return;
1756
- setDialogMode(2, "Authenticator App", 1, null, message.success ? "<b style=color:green>2-step login activation successful</b>. You will now need a valid token to login again." : "<b style=color:red>2-step login activation failed</b>. Clear the secret from the application and try again. You only have a few minutes to enter the proper code.");
1756
+ setDialogMode(2, "Authenticator App", 1, null, message.success ? ('<b style=color:green>' + "Authenticator app activation successful." + '</b> ' + "You will now need a valid token to login again.") : ('<b style=color:red>' + "2-step login activation failed." + '</b> ' + "Clear the secret from the application and try again. You only have a few minutes to enter the proper code."));
1757
break;
1758
}
1759
case 'otpauth-clear': {
1760
if (xxdialogMode) return;
1761
- setDialogMode(2, "Authenticator App", 1, null, message.success ? "<b style=color:green>2-step login activation removed</b>. You can reactivate this feature at any time." : "<b style=color:red>2-step login activation removal failed</b>. Try again.");
1761
+ setDialogMode(2, "Authenticator App", 1, null, message.success ? ('<b>' + "Authenticator application removed." + '</b> ' + "You can reactivate this feature at any time.") : ('<b style=color:red>' + "2-step login activation removal failed." + '</b> ' + "Try again."));
1762
break;
1763
}
1764
case 'otpauth-getpasswords': {
@@ -6351,7 +6351,7 @@
6351
}
6352
if (hardware.network && hardware.network.dns) {
6353
x += '<tr><td><div class=style10 style=border-radius:5px;padding:8px>';
6354
- x += addDetailItem("<b>DNS Servers</b>", hardware.network.dns.join(", "));
6354
+ x += addDetailItem('<b>' + "DNS Servers" + '</b>', hardware.network.dns.join(", "));
6355
x += '</div></td></tr>';
6356
}
6357
x += '</table>';
views/default.handlebars
+12
-12
@@ -3011,7 +3011,7 @@
3011
var secret = message.secret;
3012
if (secret.length == 52) { secret = secret.split(/(.............)/).filter(Boolean).join(' '); }
3013
else if (secret.length == 32) { secret = secret.split(/(....)/).filter(Boolean).join(' '); secret = secret.substring(0, 20) + '<br/>' + secret.substring(20) }
3014
- QH('d2optinfo', '<table style=width:380px><tr><td style=vertical-align:top>' + format("Install <a href=\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2\" rel=\"noreferrer noopener\" target=_blank>Google Authenticator</a> or a compatible application and scan the barcode, use <a href=\"{0}\" rel=\"noreferrer noopener\" target=_blank>this link</a> or enter the secret. Then, enter the current 6 digit token below to activate 2-Step login.", message.url) + '<br /><br />' + 'Secret <img src=images/link4.png height=10 width=10 title="' + "Copy Secret to clipboard" + '" style=cursor:pointer onclick=d2CopySecretToClip()>' + '<br /><tt id=d2optsecret secret="' + message.secret + '" style=font-size:12px>' + secret + '</tt><br /><br /></td><td style=width:1px;vertical-align:top><a href="' + message.url + '" rel="noreferrer noopener" target=_blank><div id="qrcode"></div></a></td><tr><td colspan=2 style="text-align:center;border-top:1px solid black"><br />' + "Enter the token here for 2-step login:" + ' <input type=text autocomplete="one-time-code" inputmode="numeric" pattern="[0-9]*" onkeypress="return (event.keyCode == 8) || (event.charCode >= 48 && event.charCode <= 57)" onkeyup=account_addOtpCheck(event) onkeydown=account_addOtpCheck() maxlength=6 id=d2otpauthinput type=text></td></table>');
3014
+ QH('d2optinfo', '<table style=width:380px><tr><td style=vertical-align:top>' + format("Install" + ' <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2" rel="noreferrer noopener" target=_blank>' + "Google Authenticator" + '</a> ' + "or a compatible application and scan the barcode, use <a href=\"{0}\" rel=\"noreferrer noopener\" target=_blank>this link</a> or enter the secret. Then, enter the current 6 digit token below to activate 2-Step login.", message.url) + '<br /><br />' + 'Secret <img src=images/link4.png height=10 width=10 title="' + "Copy Secret to clipboard" + '" style=cursor:pointer onclick=d2CopySecretToClip()>' + '<br /><tt id=d2optsecret secret="' + message.secret + '" style=font-size:12px>' + secret + '</tt><br /><br /></td><td style=width:1px;vertical-align:top><a href="' + message.url + '" rel="noreferrer noopener" target=_blank><div id="qrcode"></div></a></td><tr><td colspan=2 style="text-align:center;border-top:1px solid black"><br />' + "Enter the token here for 2-step login:" + ' <input type=text autocomplete="one-time-code" inputmode="numeric" pattern="[0-9]*" onkeypress="return (event.keyCode == 8) || (event.charCode >= 48 && event.charCode <= 57)" onkeyup=account_addOtpCheck(event) onkeydown=account_addOtpCheck() maxlength=6 id=d2otpauthinput type=text></td></table>');
3015
new QRCode(Q('qrcode'), { text: message.url, width: 128, height: 128, colorDark: '#000000', colorLight: '#EEE', correctLevel: QRCode.CorrectLevel.H });
3016
QV('idx_dlgOkButton', true);
3017
QE('idx_dlgOkButton', false);
@@ -3066,7 +3066,7 @@
3066
if (xxdialogMode && (xxdialogTag != 'otpauth-hardware-manage')) return;
3067
var start = '<div style="border-radius:6px;border:2px solid #CCC;background-color:#BBB;width:100%;box-sizing:border-box;margin-bottom:6px"><div style="margin:3px;font-family:Arial, Helvetica, sans-serif;font-size:16px;font-weight:bold"><table style=width:100%;text-align:left>';
3068
var end = '</table></div></div>';
3069
- var x = "<a href=\"https://www.yubico.com/\" rel=\"noreferrer noopener\" target=\"_blank\">Hardware keys</a> are used as secondary login authentication.";
3069
+ var x = '<a href="https://www.yubico.com/" rel="noreferrer noopener" target="_blank">' + "Hardware keys" + '</a> ' + "are used as secondary login authentication.";
3070
x += '<div style="max-height:150px;overflow-y:auto;overflow-x:hidden;margin-top:6px;margin-bottom:6px">';
3071
if (message.keys && message.keys.length > 0) {
3072
for (var i in message.keys) {
@@ -4898,13 +4898,13 @@
4898
r += '<span style=line-height:20px>' + groupingTags + '</span>';
4899
}
4900
if (deviceViewSettings.devsCols.indexOf('windowsav') >= 0) { // Windows AV
4901
- r += '<td style=text-align:center>' + ((node.wsc && node.wsc.antiVirus != null) ? (node.wsc.antiVirus == 'OK' ? "<span style=color:green>OK</span>" : "<span style=color:red>BAD</span>") : "");
4901
+ r += '<td style=text-align:center>' + ((node.wsc && node.wsc.antiVirus != null) ? (node.wsc.antiVirus == 'OK' ? '<span style=color:green>' + "OK" + '</span>' : '<span style=color:red>' + "BAD" + '</span>') : "");
4902
}
4903
if (deviceViewSettings.devsCols.indexOf('windowsupdate') >= 0) {// Windows Update
4904
- r += '<td style=text-align:center>' + ((node.wsc && node.wsc.autoUpdate != null) ? (node.wsc.autoUpdate == 'OK' ? "<span style=color:green>OK</span>" : "<span style=color:red>BAD</span>") : "");
4904
+ r += '<td style=text-align:center>' + ((node.wsc && node.wsc.autoUpdate != null) ? (node.wsc.autoUpdate == 'OK' ? '<span style=color:green>' + "OK" + '</span>' : '<span style=color:red>' + "BAD" + '</span>') : "");
4905
}
4906
if (deviceViewSettings.devsCols.indexOf('windowsfirewall') >= 0) { // Windows Firewall
4907
- r += '<td style=text-align:center>' + ((node.wsc && node.wsc.firewall != null) ? (node.wsc.firewall == 'OK' ? "<span style=color:green>OK</span>" : "<span style=color:red>BAD</span>") : "");
4907
+ r += '<td style=text-align:center>' + ((node.wsc && node.wsc.firewall != null) ? (node.wsc.firewall == 'OK' ? '<span style=color:green>' + "OK" + '</span>' : '<span style=color:red>' + "BAD" + '</span>') : "");
4908
}
4909
if (deviceViewSettings.devsCols.indexOf('lastbootuptime') >= 0) { // Last Boot Up Time
4910
r += '<td style=text-align:center;font-size:x-small>' + ((node.lastbootuptime != null) ? printDateTime(new Date(node.lastbootuptime)) : "");
@@ -5614,10 +5614,10 @@
5614
5615
// QR code agent install
5616
x += '<div id=agins_qrcode style=display:none;min-height:180px><a id=agins_qrimage_a rel=\"noreferrer noopener\" target=_blank><div id=agins_qrimage style=float:right;margin-left:10px;width:180px;height:180px;cursor:pointer></div></a><div>' + format("To add a mobile device to group \"{0}\", download the MeshAgent application and scan this QR code.", EscapeHtml(mesh.name)) + '</div>';
5617
- x += "<table style=width:180px>";
5618
- x += "<tr><td style=text-align:center><a rel=\"noreferrer noopener\" target=_blank href=\"https://play.google.com/store/apps/details?id=com.meshcentral.agent2\"><img style=cursor:pointer src=\"images/google-play-140.png\" width=140 srcset=\"images/google-play-280.png 2x\" /></a></td></tr>";
5619
- x += "<tr><td style=text-align:center><a rel=\"noreferrer noopener\" target=_blank href=\"https://www.amazon.co.uk/gp/product/B097Z4Q7SK/\"><img style=cursor:pointer src=\"images/amazon-appstore-140.png\" width=140 srcset=\"images/amazon-appstore-280.png 2x\" /></a></td></tr>";
5620
- x += "</table>";
5617
+ x += '<table style=width:180px>';
5618
+ x += '<tr><td style=text-align:center><a title="' + "Google Play Store" + '"rel="noreferrer noopener" target=_blank href="https://play.google.com/store/apps/details?id=com.meshcentral.agent2"><img style=cursor:pointer src="images/google-play-140.png" width=140 srcset="images/google-play-280.png 2x" /></a></td></tr>';
5619
+ x += '<tr><td style=text-align:center><a title="' + "Amazon App Store" + '" rel="noreferrer noopener" target=_blank href="https://www.amazon.co.uk/gp/product/B097Z4Q7SK/"><img style=cursor:pointer src="images/amazon-appstore-140.png" width=140 srcset="images/amazon-appstore-280.png 2x" /></a></td></tr>';
5620
+ x += '</table>';
5621
x += addHtmlValue("Android APK", '<a onclick=downloadFile("meshagents?id=14' + (urlargs.key?('&key=' + urlargs.key):'') + '",null,true) title="' + "APK version of the MeshAgent" + '">' + "APK" + '</a> <img src=images/link4.png height=10 width=10 title="' + "Copy URL to clipboard" + '" style=cursor:pointer onclick=copyAgentUrl("meshagents?id=14&meshid=' + meshid.split('/')[2] + (urlargs.key?('&key=' + urlargs.key):'') + '")>');
5622
x += '</div>'
5623
@@ -5942,7 +5942,7 @@
5942
setDialogMode(2, "Edit Device Tags", 3, d2groupActionFunctionTagsExec, x);
5943
} else if (op == 108) {
5944
// Device notification
5945
- var x = "<div style=margin-bottom:4px>Perform batch device notification</div>";
5945
+ var x = '<div style=margin-bottom:4px>'+ "Perform batch device notification" + '</div>';
5946
x += '<select id=d2deviceop style=width:100%;margin-bottom:4px><option value=2>' + "Toast Notification" + '</option><option value=1>' + "Message Box" + '</option><option value=3>' + "Alert Box" + '</option></select>';
5947
x += '<input id=dp2notifyTitle maxlength=256 placeholder="' + "Title" + '" style=width:100%;box-sizing:border-box;margin-bottom:4px />';
5948
x += '<textarea id=d2notifyMsg style=background-color:#fcf3cf;width:100%;height:140px;resize:none;overflow-y:scroll;box-sizing:border-box;margin-bottom:4px></textarea>';
@@ -12231,7 +12231,7 @@
12231
}
12232
if (hardware.network && hardware.network.dns) {
12233
x += '<tr><td><div class=style10 style=border-radius:5px;padding:8px>';
12234
- x += addDetailItem("<b>DNS Servers</b>", hardware.network.dns.join(", "));
12234
+ x += addDetailItem('<b>' + "DNS Servers" + '</b>', hardware.network.dns.join(", "));
12235
x += '</div></td></tr>';
12236
}
12237
x += '</table>';
@@ -13407,7 +13407,7 @@
13407
13408
function server_showRestoreDlg() {
13409
if (xxdialogMode) return false;
13410
- var x = "Restore the server using a backup, <span style=color:red>this will delete the existing server data</span>. Only do this if you know what you are doing." + '<br /><br />';
13410
+ var x = "Restore the server using a backup," + ' <span style=color:red>' + "this will delete the existing server data." + '</span> ' + "Only do this if you know what you are doing." + '<br /><br />';
13411
x += '<form action="/restoreserver.ashx' + ((urlargs.key)?('?key=' + urlargs.key):'') + '" enctype="multipart/form-data" method="post"><div>';
13412
x += '<input type=hidden name=auth value=' + authCookie + '>';
13413
x += '<input id=account_dlgFileInput type=file name=datafile style=width:100% accept=".zip,application/octet-stream,application/zip,application/x-zip,application/x-zip-compressed" onchange=account_validateServerRestore()><br /><br />';
views/default3.handlebars
+343
-475
@@ -281,15 +281,6 @@
281
</div>
282
</div>
283
</div>
284
- {{!-- <table id=EventsSubMenu cellpadding=0 cellspacing=0 class=style1>
285
- <tr>
286
- <td tabindex=0 id=EventsLive class="topbar_td style3x" onmouseup=go(3,event)
287
- onkeypress="if (event.key == 'Enter') go(3)">Events</td>
288
- <td tabindex=0 id=EventsReport class="topbar_td style3x" onmouseup=go(60,event)
289
- onkeypress="if (event.key == 'Enter') go(60)">Reports</td>
290
- <td class="topbar_td_end style3"> </td>
291
- </tr>
292
- </table> --}}
284
</div>
285
<div id=UserSubMenuSpan style="display:none">
286
<table id=UserSubMenu cellpadding=0 cellspacing=0 class=style1>
@@ -603,7 +594,7 @@
594
</div>
595
<div id=p2logintokens></div>
596
<strong>Device Groups</strong>
606
- <span id="p2createMeshLink1"> - <button class="btn btn-primary btn-sm" onclick="return account_createMesh()"><i class="fa-fw fa-solid fa-plus-circle"></i> New</button></span>
597
+ <span id="p2createMeshLink1"> - <button class="btn btn-primary btn-sm" onclick="return account_createMesh()"><i class="fa-fw fa-solid fa-circle-plus"></i> New</button></span>
598
<br /><br />
599
<div id=p2meshes></div>
600
<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>
@@ -1466,50 +1457,20 @@
1457
<div class='fs-4 fw-bold'>General - <span id=p30userName></span></div>
1458
</div>
1459
<div id="p30info" style="overflow-y:auto">
1469
- {{!-- <table style="width:100%" cellpadding="0" cellspacing="0">
1470
- <tr>
1471
- <td style=width:auto valign=top>
1472
- <div id=p30html></div>
1473
- </td>
1474
- <td style=width:20px></td>
1475
- <td style=width:200px;position:relative valign=top>
1476
- <img id="p30userAuthServiceLogo" loading="lazy" style="display:none"
1477
- class=userAuthStrategyLogo width=64 height=64>
1478
- <picture id=MainUserImage
1479
- style="display:none;border-width:0px;height:200px;width:200px;float:right"
1480
- onclick="account_manageImage(1)">
1481
- <source type="image/webp" width=200 height=200 srcset="images/webp/user-256.webp" />
1482
- <img alt="" width=200 height=200 src=images/user-256.png />
1483
- </picture>
1484
- <img id=MainUserImageEx alt="" width=200 height=200 src=images/user-256.png
1485
- onclick="account_manageImage(1)" />
1486
- <div style="width:100%;text-align:center"><strong><span
1487
- id=MainUserState></span></strong></div>
1488
- </td>
1489
- </tr>
1490
- </table><br /> --}}
1460
<div class="row">
1492
- <!-- First column: p30html div -->
1461
<div class="col">
1462
<div id="p30html"></div>
1463
</div>
1496
-
1497
- <!-- Spacer column (20px width) -->
1464
<div class="col-auto" style="width: 20px;"></div>
1499
-
1500
- <!-- Second column: User image and state -->
1465
<div class="col-auto" style="width: 200px; position: relative;">
1466
<img id="p30userAuthServiceLogo" loading="lazy" style="display:none" class="userAuthStrategyLogo" width="64" height="64">
1503
-
1467
<picture id="MainUserImage"
1468
style="display:none; border-width:0px; height:200px; width:200px; float:right"
1469
onclick="account_manageImage(1)">
1470
<source type="image/webp" width="200" height="200" srcset="images/webp/user-256.webp" />
1471
<img alt="" width="200" height="200" src="images/user-256.png" />
1472
</picture>
1510
-
1473
<img id="MainUserImageEx" alt="" width="200" height="200" src="images/user-256.png" onclick="account_manageImage(1)" />
1512
-
1474
<div style="width:100%;text-align:center;">
1475
<strong><span id="MainUserState"></span></strong>
1476
</div>
@@ -1533,10 +1494,10 @@
1494
<tr>
1495
{{!-- <td class="h1"></td> --}}
1496
<!--<td> <input type=button onclick=refreshUsersEvents() value="Refresh" /></td>-->
1536
- <td class="auto-style1">
1537
- <div class="d-inline-flex align-items-center m-1">
1538
- <label for="p31filterevents" class="form-label me-2">Filter</label>
1539
- <select id=p31filterevents class="form-select-sm" onchange=refreshUsersEvents()>
1497
+ <td class="auto-style1 d-flex justify-content-end p-1">
1498
+ <div class="d-flex align-items-center">
1499
+ <label for="p31filterevents" class="me-1">Filter</label>
1500
+ <select id=p31filterevents class="form-select-sm me-2" onchange=refreshUsersEvents()>
1501
<option value="">All Logs</option>
1502
<option value=agentlog>Agent Logs</option>
1503
<option value=relaylog>Relay Logs</option>
@@ -1546,10 +1507,8 @@
1507
<option value=changenode>Change Node Logs</option>
1508
<option value=removenode>Remove Node Logs</option>
1509
</select>
1549
- </div>
1550
- <div class="d-inline-flex align-items-center">
1551
- <label for="p31limitdropdown" class="form-label me-2">Show</label>
1552
- <select id=p31limitdropdown class="form-select-sm" onchange=refreshUsersEvents()>
1510
+ <label for="p31limitdropdown" class="me-1">Show</label>
1511
+ <select id=p31limitdropdown class="form-select-sm me-2" onchange=refreshUsersEvents()>
1512
<option value=60>Last 60</option>
1513
<option value=120>Last 120</option>
1514
<option value=250>Last 250</option>
@@ -1557,8 +1516,8 @@
1516
<option value=1000>Last 1000</option>
1517
<option value="">No limit</option>
1518
</select>
1519
+ <a href=# onclick=p3showDownloadEventsDialog(3)><i class="fa-solid fa-download" role="button" title="Download Events"></i></a>
1520
</div>
1561
- <a href=# onclick=p3showDownloadEventsDialog(3)><i class="fa-solid fa-download" title="Download Events" style=cursor:pointer></i></a>
1521
</td>
1522
{{!-- <td class="h2"></td> --}}
1523
</tr>
@@ -1688,33 +1647,11 @@
1647
<div class='fs-4 fw-bold'>User Group - <span id=p51groupName></span></div>
1648
</div>
1649
<div id="p51info" style="overflow-y:auto">
1691
- {{!-- <table style="width:100%" cellpadding="0" cellspacing="0">
1692
- <tr>
1693
- <td style=width:auto valign=top>
1694
- <div id=p51group></div>
1695
- </td>
1696
- <td style=width:20px></td>
1697
- <td style=width:200px valign=top>
1698
- <picture id=MainUserImage style=border-width:0px;height:200px;width:200px;float:right>
1699
- <source type="image/webp" width=200 height=200
1700
- srcset="images/webp/group-256.webp" />
1701
- <img alt="" width=200 height=200 src=images/group-256.png />
1702
- </picture>
1703
- <div style="width:100%;text-align:center"><strong><span
1704
- id=MainUserState></span></strong></div>
1705
- </td>
1706
- </tr>
1707
- </table> --}}
1650
<div class="row">
1709
- <!-- First column: p51group div -->
1651
<div class="col">
1652
<div id="p51group"></div>
1653
</div>
1713
-
1714
- <!-- Spacer column (20px width) -->
1654
<div class="col-auto" style="width: 20px;"></div>
1716
-
1717
- <!-- Second column: User image and state -->
1655
<div class="col-auto" style="width: 200px;">
1656
<picture id="MainUserImage" style="border-width:0px;height:200px;width:200px;float:right">
1657
<source type="image/webp" width="200" height="200"
@@ -1726,7 +1663,6 @@
1663
</div>
1664
</div>
1665
</div>
1729
-
1666
<div id=p51group2></div>
1667
<br />
1668
</div>
@@ -1826,10 +1762,10 @@
1762
</div>
1763
</div>
1764
<div id=dialog4 style="">
1829
- <input id="d4WrapButton" class="btn btn-primary me-2 mb-2" type="button" value="Wrap On" onclick="d4ToggleWrap()" />
1830
- <input id="d4SizeButton" class="btn btn-primary me-2 mb-2" type="button" value="Small" onclick="d4ToggleSize()" />
1831
- <input id="d4EncodingButton" class="btn btn-primary me-2 mb-2" type="button" value="Raw" onclick="d4ToggleEncoding()" />
1832
- <input id="d4LineBreakButton" class="btn btn-primary me-2 mb-2" type="button" value="Windows" onclick="d4ToggleLineBreak()" />
1765
+ <input id="d4WrapButton" class="btn btn-primary me-1 mb-1" type="button" value="Wrap On" onclick="d4ToggleWrap()" />
1766
+ <input id="d4SizeButton" class="btn btn-primary me-1 mb-1" type="button" value="Small" onclick="d4ToggleSize()" />
1767
+ <input id="d4EncodingButton" class="btn btn-primary me-1 mb-1" type="button" value="Raw" onclick="d4ToggleEncoding()" />
1768
+ <input id="d4LineBreakButton" class="btn btn-primary me-1 mb-1" type="button" value="Windows" onclick="d4ToggleLineBreak()" />
1769
<textarea id=d4editorarea autocomplete="off" style="height:calc(100vh - 286px);width:100%;overflow:scroll;resize:none;white-space:pre"></textarea>
1770
</div>
1771
<div id=dialog7 style="">
@@ -1947,12 +1883,12 @@
1883
<button type="button" class="btn btn-primary" data-bs-dismiss="modal" id="idx_dlgCancelButton">Cancel</button>
1884
<button type="button" class="btn btn-outline-success" id="idx_dlgOkButton" >OK</button>
1885
<button type="button" class="btn btn-outline-danger" id="idx_dlgDeleteButton" style="display:none">Delete</button>
1950
- {{!-- <div id="idx_dlgMoreButtons">
1886
+ <!-- <div id="idx_dlgMoreButtons">
1887
<a href="#" id="idx_dlgMoreButtons1" class="btn btn-primary"
1888
title="Toggle advanced options" onclick="MoreToggle(true)">▼</a>
1889
<a href="#" id="idx_dlgMoreButtons2" class="btn btn-primary"
1890
title="Toggle advanced options" onclick="MoreToggle(false)">▲</a>
1955
- </div> --}}
1891
+ </div> -->
1892
</div>
1893
</div>
1894
</div>
@@ -2617,7 +2553,7 @@
2553
x += '<input type=radio id=night2 name=nightmoderadio value=2 ' + ((cNightMode == 2) ? 'checked' : '') + '><label for=night2>' + "Light mode" + '</label><br>';
2554
x += '<input type=radio id=night1 name=nightmoderadio value=1 ' + ((cNightMode == 1) ? 'checked' : '') + '><label for=night1>' + "Dark mode" + '</label><br>';
2555
xxdialogButtons = 3;
2620
- setModalContent('xxAddAgent', 'Night Mode', x);
2556
+ setModalContent('xxAddAgent', "Night Mode", x);
2557
showModal('xxAddAgentModal', 'idx_dlgOkButton', toggleNightModeEx);
2558
2559
QV('uiMenu', false);
@@ -2990,7 +2926,8 @@
2926
23: "Unable to load agent icon file: {0}.",
2927
24: "Unable to load agent logo file: {0}.",
2928
25: "This NodeJS version does not support OpenID.",
2993
- 26: "This NodeJS version does not support Discord.js."
2929
+ 26: "This NodeJS version does not support Discord.js.",
2930
+ 27: "Firebase now requires a service account JSON file, Firebase disabled."
2931
};
2932
var x = '';
2933
for (var i in message.warnings) {
@@ -3388,12 +3325,12 @@
3325
x += addHtmlValue2('<label><input id=d2updateCheck2 type=checkbox class="form-check-input me-2" onclick=server_showVersionDlgUpdate()' + (((message.tags.latest == "Unknown") || (message.tags.current == message.tags.latest) || ((features & 2048) == 0)) ? ' disabled' : '') + ' /> ' + "Latest Version" + '</label>', '<b>' + EscapeHtml(message.tags.latest) + '</b>');
3326
x += '</div>';
3327
if (((message.tags.current == message.tags.latest) && (message.tags.current == message.tags.stable)) || ((features & 2048) == 0)) {
3391
- setModalContent('xxAddAgent', 'MeshCentral Version', x);
3328
+ setModalContent('xxAddAgent', "MeshCentral Version", x);
3329
showModal('xxAddAgentModal', 'idx_dlgOkButton');
3330
} else {
3331
x += '<hr />' + "Check and click OK to start server self-update.";
3332
xxdialogTag = message.tags;
3396
- setModalContent('xxAddAgent', 'MeshCentral Version', x);
3333
+ setModalContent('xxAddAgent', "MeshCentral Version", x);
3334
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
3335
server_showVersionDlgEx(2, message.tags);
3336
});
@@ -3405,13 +3342,13 @@
3342
case 'servererrors': {
3343
if ((xxdialogMode == 2) && (xxdialogTag == 'MeshCentralServerErrors')) {
3344
if (message.data == null) {
3408
- setModalContent('xxAddAgent', 'Server Errors', 'Server has no error log.');
3345
+ setModalContent('xxAddAgent', "Server Errors", "Server has no error log.");
3346
showModal('xxAddAgentModal', 'idx_dlgOkButton');
3347
} else {
3348
var x = '<div class="dialogText dialogTextLog"><pre id=d2ServerErrorsLogPre>' + EscapeHtml(message.data) + '</pre></div>';
3349
x += '<br /><div style=float:right><i role=button class="fa-fw fa-solid fa-download fa-sm" title="' + "Download error log" + '" onclick=d2CopyServerErrorsToClip()></i></div>';
3350
x += '<div><label><input id=d2clearErrorsCheck type=checkbox class="form-check-input me-2" onclick=server_showErrorsDlgUpdate() /> ' + "Check and click OK to clear error log." + '</label></div>';
3414
- setModalContent('xxAddAgent', 'MeshCentral Server Errors', x);
3351
+ setModalContent('xxAddAgent', "MeshCentral Server Errors", x);
3352
showModal('xxAddAgentModal', 'idx_dlgOkButton', server_showErrorsDlgEx);
3353
server_showErrorsDlgUpdate();
3354
}
@@ -3421,9 +3358,9 @@
3358
case 'serverconfig': {
3359
if ((xxdialogMode == 2) && (xxdialogTag == 'MeshCentralServerConfig')) {
3360
if (message.data == null) {
3424
- setModalContent('xxAddAgent', 'Server Configuration', 'Server has no config file.', 'extra-large');
3361
+ setModalContent('xxAddAgent', "Server Configuration", 'Server has no config file.', 'extra-large');
3362
} else {
3426
- setModalContent('xxAddAgent', 'Server Configuration', 4, 'extra-large');
3363
+ setModalContent('xxAddAgent', "Server Configuration", 4, 'extra-large');
3364
QV('d4EncodingButton', false);
3365
QV('d4LineBreakButton', false);
3366
Q('d4editorarea').value = message.data;
@@ -3518,7 +3455,7 @@
3455
var secret = message.secret;
3456
if (secret.length == 52) { secret = secret.split(/(.............)/).filter(Boolean).join(' '); }
3457
else if (secret.length == 32) { secret = secret.split(/(....)/).filter(Boolean).join(' '); secret = secret.substring(0, 20) + '<br/>' + secret.substring(20) }
3521
- QH('d2optinfo', '<table style=width:380px><tr><td style=vertical-align:top>' + format("Install <a href=\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2\" rel=\"noreferrer noopener\" target=_blank>Google Authenticator</a> or a compatible application and scan the barcode, use <a href=\"{0}\" rel=\"noreferrer noopener\" target=_blank>this link</a> or enter the secret. Then, enter the current 6 digit token below to activate 2-Step login.", message.url) + '<br /><br />' + 'Secret <img src=images/link4.png height=10 width=10 title="' + "Copy Secret to clipboard" + '" style=cursor:pointer onclick=d2CopySecretToClip()>' + '<br /><tt id=d2optsecret secret="' + message.secret + '" style=font-size:12px>' + secret + '</tt><br /><br /></td><td style=width:1px;vertical-align:top><a href="' + message.url + '" rel="noreferrer noopener" target=_blank><div id="qrcode"></div></a></td><tr><td colspan=2 style="text-align:center;border-top:1px solid black"><br />' + "Enter the token here for 2-step login:" + ' <input type=text autocomplete="one-time-code" inputmode="numeric" pattern="[0-9]*" onkeypress="return (event.keyCode == 8) || (event.charCode >= 48 && event.charCode <= 57)" onkeyup=account_addOtpCheck(event) onkeydown=account_addOtpCheck() maxlength=6 id=d2otpauthinput type=text></td></table>');
3458
+ QH('d2optinfo', '<table style=width:380px><tr><td style=vertical-align:top>' + format("Install" + ' <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2" rel="noreferrer noopener" target=_blank>' + "Google Authenticator" + '</a> ' + "or a compatible application and scan the barcode, use <a href=\"{0}\" rel=\"noreferrer noopener\" target=_blank>this link</a> or enter the secret. Then, enter the current 6 digit token below to activate 2-Step login.", message.url) + '<br /><br />' + 'Secret <img src=images/link4.png height=10 width=10 title="' + "Copy Secret to clipboard" + '" style=cursor:pointer onclick=d2CopySecretToClip()>' + '<br /><tt id=d2optsecret secret="' + message.secret + '" style=font-size:12px>' + secret + '</tt><br /><br /></td><td style=width:1px;vertical-align:top><a href="' + message.url + '" rel="noreferrer noopener" target=_blank><div id="qrcode"></div></a></td><tr><td colspan=2 style="text-align:center;border-top:1px solid black"><br />' + "Enter the token here for 2-step login:" + ' <input type=text autocomplete="one-time-code" inputmode="numeric" pattern="[0-9]*" onkeypress="return (event.keyCode == 8) || (event.charCode >= 48 && event.charCode <= 57)" onkeyup=account_addOtpCheck(event) onkeydown=account_addOtpCheck() maxlength=6 id=d2otpauthinput type=text></td></table>');
3459
new QRCode(Q('qrcode'), { text: message.url, width: 128, height: 128, colorDark: '#000000', colorLight: '#EEE', correctLevel: QRCode.CorrectLevel.H });
3460
QV('idx_dlgOkButton', true);
3461
QE('idx_dlgOkButton', false);
@@ -3529,13 +3466,13 @@
3466
}
3467
case 'otpauth-setup': {
3468
if (xxdialogMode) return;
3532
- setModalContent('xxAddAgent', 'Authenticator App', message.success ? ('<b style=color:green>' + "Authenticator app activation successful." + '</b> ' + "You will now need a valid token to login again.") : ('<b style=color:red>' + "2-step login activation failed." + '</b> ' + "Clear the secret from the application and try again. You only have a few minutes to enter the proper code."));
3469
+ setModalContent('xxAddAgent', "Authenticator App", message.success ? ('<b style=color:green>' + "Authenticator app activation successful." + '</b> ' + "You will now need a valid token to login again.") : ('<b style=color:red>' + "2-step login activation failed." + '</b> ' + "Clear the secret from the application and try again. You only have a few minutes to enter the proper code."));
3470
showModal('xxAddAgentModal', 'idx_dlgOkButton');
3471
break;
3472
}
3473
case 'otpauth-clear': {
3474
if (xxdialogMode) return;
3538
- setModalContent('xxAddAgent', 'Authenticator App', message.success ? ('<b>' + "Authenticator application removed." + '</b> ' + "You can reactivate this feature at any time.") : ('<b style=color:red>' + "2-step login activation removal failed." + '</b> ' + "Try again."));
3475
+ setModalContent('xxAddAgent', "Authenticator App", message.success ? ('<b>' + "Authenticator application removed." + '</b> ' + "You can reactivate this feature at any time.") : ('<b style=color:red>' + "2-step login activation removal failed." + '</b> ' + "Try again."));
3476
showModal('xxAddAgentModal', 'idx_dlgOkButton');
3477
break;
3478
}
@@ -3561,14 +3498,14 @@
3498
x += '<tr><td>' + "No Active Tokens";
3499
}
3500
x += '</table></div></div><br />';
3564
- x += '<div><input type=button value=' + "Close" + ' onclick=setDialogMode(0) style=float:right></input>';
3501
+ x += '<div>';
3502
x += '<input type=button value="' + "Generate New Tokens" + '" onclick="account_manageOtp(1);"></input>';
3503
if (message.passwords != null) {
3504
x += '<input type=button value="' + "Clear Tokens" + '" onclick="account_manageOtp(2);"></input>';
3505
x += ' <img src=images/link4.png height=10 width=10 title="' + "Copy valid codes to clipboard" + '" style=cursor:pointer onclick=copyTextToClip2("' + encodeURIComponentEx(clipb) + '")>';
3506
}
3507
x += '</div><br />';
3571
- setModalContent('xxAddAgent', 'Manage Backup Codes', x);
3508
+ setModalContent('xxAddAgent', "Manage Backup Codes", x);
3509
showModal('xxAddAgentModal', 'idx_dlgOkButton');
3510
break;
3511
}
@@ -3576,7 +3513,7 @@
3513
if (xxdialogMode && (xxdialogTag != 'otpauth-hardware-manage')) return;
3514
var start = '<div style="border-radius:6px;border:2px solid #CCC;background-color:#BBB;width:100%;box-sizing:border-box;margin-bottom:6px"><div style="margin:3px;font-family:Arial, Helvetica, sans-serif;font-size:16px;font-weight:bold"><table style=width:100%;text-align:left>';
3515
var end = '</table></div></div>';
3579
- var x = "<a href=\"https://www.yubico.com/\" rel=\"noreferrer noopener\" target=\"_blank\">Hardware keys</a> are used as secondary login authentication.";
3516
+ var x = '<a href="https://www.yubico.com/" rel="noreferrer noopener" target="_blank">' + "Hardware keys" + '</a> ' + "are used as secondary login authentication.";
3517
x += '<div style="max-height:150px;overflow-y:auto;overflow-x:hidden;margin-top:6px;margin-bottom:6px">';
3518
if (message.keys && message.keys.length > 0) {
3519
for (var i in message.keys) {
@@ -3587,7 +3524,7 @@
3524
x += start + '<tr style=text-align:center><td>' + "No Keys Configured" + end;
3525
}
3526
x += '</div>';
3590
- x += '<div><input type=button value="' + "Close" + '" onclick=setDialogMode(0) style=float:right></input>';
3527
+ x += '<div>';
3528
var hkeycount = (typeof userinfo.otphkeys == 'number') ? userinfo.otphkeys : 0;
3529
if ((typeof serverinfo.maxfidokeys != 'number') || (serverinfo.maxfidokeys > hkeycount)) { // Check if we we reached maximum hardware keys
3530
if ((features & 0x00020000) != 0) { x += '<input id=d2addkey3 type=button value="' + "Add Key" + '" onclick="account_addhkey(3);"></input>'; }
@@ -3596,7 +3533,7 @@
3533
x += "Maximum keys reached.";
3534
}
3535
x += '</div><br />';
3599
- setModalContent('xxAddAgent', 'Manage Security Keys', x);
3536
+ setModalContent('xxAddAgent', "Manage Security Keys", x);
3537
showModal('xxAddAgentModal', 'idx_dlgOkButton');
3538
if (u2fSupported() == false) { QE('d2addkey1', false); }
3539
break;
@@ -3605,7 +3542,7 @@
3542
if (message.result) {
3543
meshserver.send({ action: 'otp-hkey-get' }); // Success, ask for the full list of keys.
3544
} else {
3608
- setModalContent('xxAddAgent', 'Add Security Key', '<br />' + "Error, Unable to add key." + '<br /><br />');
3545
+ setModalContent('xxAddAgent', "Add Security Key", '<br />' + "Error, Unable to add key." + '<br /><br />');
3546
showModal('xxAddAgentModal', 'idx_dlgOkButton');
3547
}
3548
break;
@@ -3615,7 +3552,7 @@
3552
if (message.result == true) {
3553
meshserver.send({ action: 'otp-hkey-get' }); // Success, ask for the full list of keys.
3554
} else {
3618
- setModalContent('xxAddAgent', 'Add Security Key', '<br />' + "Error, Unable to add key." + '<br /><br />');
3555
+ setModalContent('xxAddAgent', "Add Security Key", '<br />' + "Error, Unable to add key." + '<br /><br />');
3556
showModal('xxAddAgentModal', 'idx_dlgOkButton');
3557
3558
}
@@ -3624,7 +3561,7 @@
3561
case 'webauthn-startregister': {
3562
if (xxdialogMode && (xxdialogTag != 'otpauth-hardware-manage')) return;
3563
var x = "Press the key button now." + '<br /><br /><div style=width:100%;text-align:center><img width=120 height=117 src="images/hardware-keypress-120.png" /></div><input id=dp1keyname style=display:none value=' + message.name + ' />';
3627
- setModalContent('xxAddAgent', 'Add Security Key', x);
3564
+ setModalContent('xxAddAgent', "Add Security Key", x);
3565
var publicKey = message.request;
3566
message.request.challenge = Uint8Array.from(atob(message.request.challenge), function (c) { return c.charCodeAt(0) })
3567
message.request.user.id = Uint8Array.from(atob(message.request.user.id), function (c) { return c.charCodeAt(0) })
@@ -3635,7 +3572,7 @@
3572
}, function (error) {
3573
// Error
3574
console.log("ERROR: " + error);
3638
- setModalContent('xxAddAgent', 'Add Security Key', "ERROR: " + error);
3575
+ setModalContent('xxAddAgent', "Add Security Key", "ERROR: " + error);
3576
});
3577
showModal('xxAddAgentModal', 'idx_dlgOkButton');
3578
break;
@@ -3645,7 +3582,7 @@
3582
var x = '<table><tr><td><img src="images/phone80.png" style=padding:8px>';
3583
x += '<td>' + "Check your phone and enter the verification code.";
3584
x += '<br /><br /><div style=width:100%;text-align:center>' + "Verification code:" + ' <input type=tel pattern="[0-9]" inputmode="number" maxlength=6 id=d2phoneCodeInput onKeyUp=account_managePhoneCodeValidate() onkeypress="if (event.key==\'Enter\') account_managePhoneCodeValidate(1)"></div></table>';
3648
- setModalContent('xxAddAgent', 'Phone Notifications', x);
3585
+ setModalContent('xxAddAgent', "Phone Notifications", x);
3586
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => account_managePhoneConfirm(3, message.cookie));
3587
Q('d2phoneCodeInput').focus();
3588
account_managePhoneCodeValidate();
@@ -3656,7 +3593,7 @@
3593
var x = '<table><tr><td><img src="images/messaging40.png" style=padding:8px>';
3594
x += '<td>' + "Check your messaging application and enter the verification code.";
3595
x += '<br /><br /><div style=width:100%;text-align:center>' + "Verification code:" + ' <input type=tel pattern="[0-9]" inputmode="number" maxlength=6 id=d2phoneCodeInput onKeyUp=account_managePhoneCodeValidate() onkeypress="if (event.key==\'Enter\') account_managePhoneCodeValidate(1)"></div></table>';
3659
- setModalContent('xxAddAgent', 'Messaging Notifications', x);
3596
+ setModalContent('xxAddAgent', "Messaging Notifications", x);
3597
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => account_manageMessagingConfirm(3, message.cookie));
3598
Q('d2phoneCodeInput').focus();
3599
account_managePhoneCodeValidate();
@@ -4391,7 +4328,7 @@
4328
x += addHtmlValue("User Consent", y.join(', '));
4329
var type = ''; if (message.p <= 7) { type = ['', "Remote Terminal Link", "Remote Desktop Link", "Remote Desktop + Terminal Link", "Remote Files Link", "Remote Terminal + Files Link", "Remote Desktop + Files Link", "Remote Desktop + Terminal + Files Link"][message.p]; } else if (message.p == 8) { type = format("HTTP/{0} link", message.port); } else if (message.p == 16) { type = format("HTTPS/{0}", message.port); }
4330
x += '<div id=agentInvitationLinkDiv style="text-align:center;font-size:large;margin:16px"><a href="' + message.url + '" id=agentInvitationLink rel="noreferrer noopener" target="_blank" style=cursor:pointer>' + type + '</a> <i class="fa-regular fa-copy" title="' + "Copy link to clipboard" + '" style=cursor:pointer onclick=d2CopyInviteToClip()></i></div></div>';
4394
- setModalContent('xxAddAgent', 'Share Device', x);
4331
+ setModalContent('xxAddAgent', "Share Device", x);
4332
showModal('xxAddAgentModal', 'idx_dlgOkButton');
4333
break;
4334
}
@@ -4410,7 +4347,7 @@
4347
x += addHtmlValue('MPS Cert Hash', '<input style=width:230px readonly value="' + message.mpsCertHash + '" />');
4348
}
4349
*/
4413
- setModalContent('xxAddAgent', 'MQTT Credentials', x);
4350
+ setModalContent('xxAddAgent', "MQTT Credentials", x);
4351
showModal('xxAddAgentModal', 'idx_dlgOkButton');
4352
break;
4353
}
@@ -4434,7 +4371,7 @@
4371
var vSelect = '<select id="lastPluginVersion">';
4372
message.info.versionList.forEach(function (v) { vSelect += '<option value="' + v.zipball_url + '">' + v.name + '</option>'; });
4373
vSelect += '</select>';
4437
- setModalContent('xxAddAgent', 'Plugin Action', format('Select the version to downgrade the plugin: {0}', message.info.name) + '<hr />' + vSelect + '<hr />' + "Please be aware that downgrading is not recommended. Please only do so in the event that a recent upgrade has broken something." + + '<input id="lastPluginAct" type="hidden" value="downgrade" /><input id="lastPluginId" type="hidden" value="' + message.info.id + '" />');
4374
+ setModalContent('xxAddAgent', "Plugin Action", format('Select the version to downgrade the plugin: {0}', message.info.name) + '<hr />' + vSelect + '<hr />' + "Please be aware that downgrading is not recommended. Please only do so in the event that a recent upgrade has broken something." + + '<input id="lastPluginAct" type="hidden" value="downgrade" /><input id="lastPluginId" type="hidden" value="' + message.info.id + '" />');
4375
showModal('xxAddAgentModal', 'idx_dlgOkButton', pluginActionEx);
4376
break;
4377
}
@@ -4447,7 +4384,7 @@
4384
var x = '<img style=float:right src="images/googledrive-48.png" /><div>' + "Nagivate to the URL below, grant access and copy the token code back." + '</div><br />';
4385
x += addHtmlValue("Activation", '<a href=\"' + message.url + '\" rel="noreferrer noopener" target="_blank">Browse to this URL</a>');
4386
x += addHtmlFormFloating("Code", '<input id=gdcode onkeyup=server_setupGoogleDriveBackupCheck3() class=form-control></input>');
4450
- setModalContent('xxAddAgent', 'Google Drive Backup', x);
4387
+ setModalContent('xxAddAgent', "Google Drive Backup", x);
4388
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => server_setupGoogleDriveBackupEx(3, 'gd2'));
4389
Q('gdcode').focus();
4390
QE('idx_dlgOkButton', false);
@@ -4456,7 +4393,7 @@
4393
break;
4394
}
4395
case 'pluginError': {
4459
- setModalContent('xxAddAgent', 'Plugin Error', message.msg);
4396
+ setModalContent('xxAddAgent', "Plugin Error", message.msg);
4397
showModal('xxAddAgentModal', 'idx_dlgOkButton');
4398
break;
4399
}
@@ -4487,7 +4424,7 @@
4424
}
4425
x += '</table></div>';
4426
}
4490
- setModalContent('xxAddAgent', 'Previous Logins', x);
4427
+ setModalContent('xxAddAgent', "Previous Logins", x);
4428
showModal('xxAddAgentModal', 'idx_dlgOkButton');
4429
break;
4430
}
@@ -4500,9 +4437,9 @@
4437
var x = "Take note of this username and password, the password cannot be shown again." + '<br /><br />';
4438
x += addHtmlValue("Name", EscapeHtml(message.name))
4439
if (message.expire != 0) { x += addHtmlValue("Expire", EscapeHtml(printDateTime(new Date(message.expire)))); }
4503
- x += addHtmlValue("Username", '<i class="fa-regular fa-copy" title="' + "Copy link to clipboard..." + '" style="margin:9px;cursor:pointer;float:right" onclick=copyTextToClip2("' + encodeURIComponentEx(message.tokenUser) + '")></i><div class=selecttext style=width:230px;padding:5px;background-color:orange;border-radius:5px;font-size:15px>' + EscapeHtml(message.tokenUser) + '</div>');
4504
- x += addHtmlValue("Password", '<i class="fa-regular fa-copy" title="' + "Copy link to clipboard..." + '" style="margin:9px;cursor:pointer;float:right" onclick=copyTextToClip2("' + encodeURIComponentEx(message.tokenPass) + '")></i><div class=selecttext style=width:230px;padding:5px;background-color:orange;border-radius:5px;font-size:15px>' + EscapeHtml(message.tokenPass) + '</div>');
4505
- setModalContent('xxAddAgent', 'Create Login Token', x);
4440
+ x += addHtmlValue("Username", '<i class="fa-regular fa-copy" title="' + "Copy link to clipboard" + '" style="margin:9px;cursor:pointer;float:right" onclick=copyTextToClip2("' + encodeURIComponentEx(message.tokenUser) + '")></i><div class=selecttext style=width:230px;padding:5px;background-color:orange;border-radius:5px;font-size:15px>' + EscapeHtml(message.tokenUser) + '</div>');
4441
+ x += addHtmlValue("Password", '<i class="fa-regular fa-copy" title="' + "Copy link to clipboard" + '" style="margin:9px;cursor:pointer;float:right" onclick=copyTextToClip2("' + encodeURIComponentEx(message.tokenPass) + '")></i><div class=selecttext style=width:230px;padding:5px;background-color:orange;border-radius:5px;font-size:15px>' + EscapeHtml(message.tokenPass) + '</div>');
4442
+ setModalContent('xxAddAgent', "Create Login Token", x);
4443
showModal('xxAddAgentModal', 'idx_dlgOkButton');
4444
break;
4445
}
@@ -4666,7 +4603,7 @@
4603
x += '<label><input id=d2c7 type=checkbox class="form-check-input me-2"' + ((deviceViewSettings.devsCols.indexOf('lastseen') >= 0) ? ' checked' : '') + '>' + "Last Seen" + '</label><br />';
4604
x += '<label><input id=d2c15 type=checkbox class="form-check-input me-2"' + ((deviceViewSettings.devsCols.indexOf('amthost') >= 0) ? ' checked' : '') + '>' + "Intel® AMT hostname" + '</label><br />';
4605
x += '<label><input id=d2c17 type=checkbox class="form-check-input me-2"' + ((deviceViewSettings.devsCols.indexOf('amtstate') >= 0) ? ' checked' : '') + '>' + "Intel® AMT state" + '</label><br />';
4669
- setModalContent('xxAddAgent', 'Device View Columns', x);
4606
+ setModalContent('xxAddAgent', "Device View Columns", x);
4607
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => onDeviceViewSettingsEx());
4608
}
4609
@@ -5437,13 +5374,13 @@
5374
r += '<span style=line-height:20px>' + groupingTags + '</span>';
5375
}
5376
if (deviceViewSettings.devsCols.indexOf('windowsav') >= 0) { // Windows AV
5440
- r += '<td style=text-align:center>' + ((node.wsc && node.wsc.antiVirus != null) ? (node.wsc.antiVirus == 'OK' ? "<span style=color:green>OK</span>" : "<span style=color:red>BAD</span>") : "");
5377
+ r += '<td style=text-align:center>' + ((node.wsc && node.wsc.antiVirus != null) ? (node.wsc.antiVirus == 'OK' ? '<span style=color:green>' + "OK" + '</span>' : '<span style=color:red>' + "BAD" + '</span>') : "");
5378
}
5379
if (deviceViewSettings.devsCols.indexOf('windowsupdate') >= 0) {// Windows Update
5443
- r += '<td style=text-align:center>' + ((node.wsc && node.wsc.autoUpdate != null) ? (node.wsc.autoUpdate == 'OK' ? "<span style=color:green>OK</span>" : "<span style=color:red>BAD</span>") : "");
5380
+ r += '<td style=text-align:center>' + ((node.wsc && node.wsc.autoUpdate != null) ? (node.wsc.autoUpdate == 'OK' ? '<span style=color:green>' + "OK" + '</span>' : '<span style=color:red>' + "BAD" + '</span>') : "");
5381
}
5382
if (deviceViewSettings.devsCols.indexOf('windowsfirewall') >= 0) { // Windows Firewall
5446
- r += '<td style=text-align:center>' + ((node.wsc && node.wsc.firewall != null) ? (node.wsc.firewall == 'OK' ? "<span style=color:green>OK</span>" : "<span style=color:red>BAD</span>") : "");
5383
+ r += '<td style=text-align:center>' + ((node.wsc && node.wsc.firewall != null) ? (node.wsc.firewall == 'OK' ? '<span style=color:green>' + "OK" + '</span>' : '<span style=color:red>' + "BAD" + '</span>') : "");
5384
}
5385
if (deviceViewSettings.devsCols.indexOf('lastbootuptime') >= 0) { // Last Boot Up Time
5386
r += '<td style=text-align:center;font-size:x-small>' + ((node.lastbootuptime != null) ? printDateTime(new Date(node.lastbootuptime)) : "");
@@ -5721,7 +5658,7 @@
5658
}
5659
}
5660
if (count > 8) {
5724
- setModalContent('xxAddAgent', 'Connect All', format("Are you sure you want to connect to {0} devices?", count));
5661
+ setModalContent('xxAddAgent', "Connect All", format("Are you sure you want to connect to {0} devices?", count));
5662
var closeFunc = function(event,a) {
5663
document.getElementById('xxAddAgentModal').removeEventListener('hide.bs.modal', closeFunc);
5664
Q('autoConnectDesktopCheckbox').checked = false;
@@ -5780,7 +5717,7 @@
5717
d7bitmapscaling.value = multidesktopsettings.scaling;
5718
d7encoding.value = multidesktopsettings.agentencoding;
5719
if (multidesktopsettings.framerate) { d7framelimiter.value = multidesktopsettings.framerate; } else { d7framelimiter.value = 100; }
5783
- setModalContent('xxAddAgent', 'Remote Desktop Settings', x);
5720
+ setModalContent('xxAddAgent', "Remote Desktop Settings", x);
5721
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => showMultiDesktopSettingsChanged());
5722
}
5723
@@ -5877,7 +5814,7 @@
5814
x += addHtmlFormFloating("Device Name", '<input id=dp1devicename class=form-control maxlength=32 autocomplete=off onchange=validateLocalDeviceToMesh() onkeyup=validateLocalDeviceToMesh() />');
5815
x += addHtmlFormFloating("Hostname", '<input id=dp1hostname class=form-control maxlength=32 autocomplete=off placeholder="' + "Same as device name" + '" onchange=validateLocalDeviceToMesh() onkeyup=validateLocalDeviceToMesh() />');
5816
x += addHtmlFormFloating("Type", '<select id=dp1type class=form-select><option value=4>' + "Windows (RDP)" + '</option><option value=6>' + "Linux (SSH/SCP/VNC)" + '</option><option value=29>' + "macOS (SSH/SCP/VNC)" + '</option></select>');
5880
- setModalContent('xxAddAgent', 'Add local device', x);
5817
+ setModalContent('xxAddAgent', "Add local device", x);
5818
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => addLocalDeviceToMeshEx(3, meshid));
5819
validateLocalDeviceToMesh();
5820
Q('dp1devicename').focus();
@@ -5903,7 +5840,7 @@
5840
x += addHtmlFormFloating("Password", '<input id=dp1password type=password class="form-control" autocomplete=off maxlength=32 onchange=validateDeviceToMesh() onkeyup=validateDeviceToMesh() />');
5841
x += addHtmlFormFloating("Security", '<select id=dp1tls class="form-select"><option value=0>' + "No TLS security" + '</option><option value=1>' + "TLS security required" + '</option></select>');
5842
5906
- setModalContent('xxAddAgent', 'Add Intel® AMT device', x);
5843
+ setModalContent('xxAddAgent', "Add Intel® AMT device", x);
5844
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => addDeviceToMeshEx(3, meshid));
5845
5846
validateDeviceToMesh();
@@ -5922,7 +5859,7 @@
5859
function showAmtImport(meshid) {
5860
if (xxdialogMode) return;
5861
var x = "Create many Intel® AMT device at once by importing a JSON file with the following format:" + '<br /><pre>[\r\n {\r\n "fqdn":"mycomputer.com",\r\n "uuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",\r\n "version":"12.0.1",\r\n "username":"admin",\r\n "password":"password",\r\n "tls":true\r\n }\r\n]</pre><input type=file id=d4importFile class="form-control" accept=".json" onchange=showAmtImportValidate() />';
5925
- setModalContent('xxAddAgent', 'Intel® AMT Device Import', x);
5862
+ setModalContent('xxAddAgent', "Intel® AMT Device Import", x);
5863
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => showAmtImportEx(3, meshid));
5864
QE('idx_dlgOkButton', false);
5865
}
@@ -5938,14 +5875,14 @@
5875
try {
5876
j = JSON.parse(r.target.result);
5877
} catch (ex) {
5941
- setModalContent('xxAddAgent', 'Intel® AMT Device Import', format("Invalid JSON file: {0}.", ex));
5878
+ setModalContent('xxAddAgent', "Intel® AMT Device Import", format("Invalid JSON file: {0}.", ex));
5879
showModal('xxAddAgentModal', 'idx_dlgOkButton');
5880
return;
5881
}
5882
if (j != null) {
5883
meshserver.send({ action: 'importamtdevices', meshid: meshid, amtdevices: j });
5884
} else {
5948
- setModalContent('xxAddAgent', 'Intel® AMT Device Import', "Invalid JSON file format.");
5885
+ setModalContent('xxAddAgent', "Intel® AMT Device Import", "Invalid JSON file format.");
5886
showModal('xxAddAgentModal', 'idx_dlgOkButton');
5887
}
5888
};
@@ -5970,7 +5907,7 @@
5907
if (serverinfo.amtAcmFqdn != null) {
5908
x += ('<div style=margin-top:8px>' + "For ACM activation, Intel® AMT will need to be set to the following trusted FQDN:" + ' <b>' + serverinfo.amtAcmFqdn.join(', ') + '</b></div>');
5909
}
5973
- setModalContent('xxAddAgent', 'Intel® AMT setup', x);
5910
+ setModalContent('xxAddAgent', "Intel® AMT setup", x);
5911
showModal('xxAddAgentModal', 'idx_dlgOkButton');
5912
Q('idx_dlgOkButton').focus();
5913
return false;
@@ -5985,7 +5922,7 @@
5922
x += addHtmlFormFloating("New Password*", '<input id=dp1password2 type=password class="form-control" autocomplete=off maxlength=32 onchange=validateAmtAcmSetupEx() onkeyup=validateAmtAcmSetupEx() />');
5923
if ((features2 & 0x00000020) && (currentMesh.mtype == 1) && (serverinfo.amtProvServerMeshId == currentMesh._id)) { x += '<label><input id=dp1lanprov type=checkbox class="form-check-input me-2" /> ' + "Use for bare-metal LAN activation." + '</label>'; } // Intel AMT LAN provisioning server is active.
5924
x += '<div><span id=dp10passNotify style="font-size:10px"> ' + "* 8 characters, 1 upper, 1 lower, 1 numeric, 1 non-alpha numeric." + '</span></div>';
5988
- setModalContent('xxAddAgent', 'Intel® AMT ACM', x);
5925
+ setModalContent('xxAddAgent', "Intel® AMT ACM", x);
5926
showModal('xxAddAgentModal', 'idx_dlgOkButton', showAmtAcmSetupEx);
5927
Q('dp1password0').focus();
5928
validateAmtAcmSetupEx();
@@ -6019,7 +5956,7 @@
5956
x += '<input type=hidden id=amtScanMeshId value="' + meshid + '" />';
5957
x += '<div style="padding:10px;margin-bottom:5px"><input id="idx_dlgCancelButton2" type="button" value="' + "Cancel" + '" style="" onclick="dialogclose(0)" /><input id="idx_dlgOkButton2" type="button" value="OK" style="" onclick="dialogclose(1)" /><div><input id="d2scanSelectButton" type="button" value="' + "Select All" + '" onclick="scanSelectAll()" /></div></div>';
5958
xxdialogTag = meshid;
6022
- setModalContent('xxAddAgent', 'Scan for Intel® AMT devices', x);
5959
+ setModalContent('xxAddAgent', "Scan for Intel® AMT devices", x);
5960
showModal('xxAddAgentModal', 'idx_dlgOkButton', addAmtScanToMeshEx);
5961
QE('idx_dlgOkButton2', false);
5962
QE('d2scanSelectButton', false);
@@ -6098,7 +6035,7 @@
6035
x += '<div id=d2agentInstallTypeDiv2>';
6036
x += addHtmlFormFloating("Installation Type", '<select id=agentInviteType class=form-select><option value=0>' + "Background and interactive" + '</option><option value=2>' + "Background only" + '</option><option value=1>' + "Interactive only" + '</option></select>');
6037
x += '</div>';
6101
- x += addHtmlFormFloating("Message (optional)", '<textarea id="agentInviteMessage" class="form-control" style="height:100px;resize:none;" maxlength="1024"></textarea>');
6038
+ x += addHtmlFormFloating("Message" + ' ' + "(optional)", '<textarea id="agentInviteMessage" class="form-control" style="height:100px;resize:none;" maxlength="1024"></textarea>');
6039
x += '</div>';
6040
}
6041
x += '<div id=urlInviteDiv>' + format("Invite someone to install the mesh agent by sharing an invitation link. This link points the user to installation instructions for the \"{0}\" device group. The link is public and no account for this server is needed.", EscapeHtml(mesh.name)) + '<br /><br />';
@@ -6109,7 +6046,7 @@
6046
x += '</div>';
6047
x += '<div id=agentInvitationLinkDiv style="text-align:center;font-size:large;margin:16px;display:none"><a href=# id=agentInvitationLink rel="noreferrer noopener" target="_blank" style=cursor:pointer></a> <img src=images/link4.png height=10 width=10 title="' + "Copy link to clipboard" + '" style=cursor:pointer onclick=d2CopyInviteToClip()></div></div>';
6048
xxdialogTag = meshid;
6112
- setModalContent('xxAddAgent', 'Invite', x);
6049
+ setModalContent('xxAddAgent', "Invite", x);
6050
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
6051
performAgentInvite(3, meshid);
6052
});
@@ -6158,11 +6095,11 @@
6095
if (xxdialogMode) return false;
6096
var mesh = meshes[meshid], x = '', installType = 0, moreoptions = '';
6097
6161
- var opts = '<select id="aginsSelect" onchange="addAgentToMeshClick()" class="form-select"><option value="0">Windows</option><option value="1">Linux / BSD</option><option value="5">Linux / BSD / macOS Binary Installer</option><option value="2">Apple macOS</option>';
6162
- if ((features & 2) == 0) { opts += '<option value="6">Mobile device</option>'; } // Don't display mobile setup in LAN mode.
6163
- opts += '<option value="7">MeshCentral Assistant</option>';
6164
- opts += '<option value="3">Windows (UnInstall)</option><option value="4">Linux / BSD (UnInstall)</option><option value="8">Apple macOS (UnInstall)</option></select>';
6165
- x += addHtmlFormFloating('Operating System', opts);
6098
+ var opts = '<select id=aginsSelect onchange=addAgentToMeshClick() class=form-select><option value=0>' + "Windows" + '</option><option value=1>' + "Linux / BSD" + '</option><option value=5>' + "Linux / BSD / macOS Binary Installer" + '</option><option value=2>' + "Apple macOS" + '</option>';
6099
+ if ((features & 2) == 0) { opts += '<option value=6>' + "Mobile device" + '</option>'; } // Don't display mobile setup in LAN mode.
6100
+ opts += '<option value=7>' + "MeshCentral Assistant" + '</option>';
6101
+ opts += '<option value=3>' + "Windows (UnInstall)" + '</option><option value=4>' + "Linux / BSD (UnInstall)" + '</option><option value=8>' + "Apple macOS (UnInstall)" + '</option></select>';
6102
+ x += addHtmlFormFloating("Operating System", opts);
6103
6104
var servername = serverinfo.name;
6105
if ((servername.indexOf('.') == -1) || ((features & 2) != 0)) { servername = window.location.hostname; } // If the server name is not set or it's in LAN-only mode, use the URL hostname as server name.
@@ -6174,14 +6111,14 @@
6111
var binaryInstallAgents = { 6: 'Linux x86-64', 5: 'Linux x86-32', 10005: 'Apple OSX Universal', 25: 'Linux ARM-HF, Rasberry Pi', 26: 'Linux ARM64-HF', 28: 'Linux MIPS24KC (OpenWRT)', 30: 'FreeBSD x86-64', 32: 'Linux ARM 64 bit (glibc/2.24 NOKVM)', 36: 'OpenWRT x86-64', 37: 'OpenBSD x86-64', 40: 'Linux MIPSEL24KC (OpenWRT)', 41: 'ARMADA/CORTEX-A53/MUSL (OpenWRT)', 16: 'Apple macOS x86-64', 29: 'Apple macOS ARM-64' };
6112
for (var i in binaryInstallAgentsOrder) { moreoptions += '<option value="' + binaryInstallAgentsOrder[i] + '">' + binaryInstallAgents[binaryInstallAgentsOrder[i]] + '</option>' }
6113
x += '<div id="aginsSysTypeDiv">';
6177
- x += addHtmlFormFloating('System Type', '<select id="aginsSysType" onchange="addAgentToMeshClick()" class="form-select">' + moreoptions + '</select>');
6114
+ x += addHtmlFormFloating("System Type", '<select id="aginsSysType" onchange="addAgentToMeshClick()" class="form-select">' + moreoptions + '</select>');
6115
x += '</div>';
6116
6117
// Add agent and assistant installation type option
6118
x += '<div id="aginsTypeDiv">';
6182
- x += addHtmlFormFloating('Installation Type', '<select id="aginsType" onchange="addAgentToMeshClick()" class="form-select"><option value="0">Background & interactive</option><option value="2">Background only</option><option value="1">Interactive only</option></select>');
6119
+ x += addHtmlFormFloating("Installation Type", '<select id="aginsType" onchange="addAgentToMeshClick()" class="form-select"><option value="0">' + "Background & interactive" + '</option><option value="2">' + "Background only" + '</option><option value="1">' + "Interactive only" + '</option></select>');
6120
x += '</div><div id="asinsTypeDiv">';
6184
- x += addHtmlFormFloating('Installation Type', '<select id="asinsType" onchange="addAgentToMeshClick()" class="form-select"><option value="2">Application, Connect on user request</option><option value="3">Application, Always connected</option><option value="0">System Tray, Connect on user request</option><option value="1">System Tray, Always connected</option><option value="4">System Tray, Monitor only</option></select>');
6121
+ x += addHtmlFormFloating("Installation Type", '<select id="asinsType" onchange="addAgentToMeshClick()" class="form-select"><option value="2">' + "Application, Connect on user request" + '</option><option value="3">' + "Application, Always connected" + '</option><option value="0">' + "System Tray, Connect on user request" + '</option><option value="1">' + "System Tray, Always connected" + '</option><option value="4">' + "System Tray, Monitor only" + '</option></select>');
6122
x += '</div><hr>';
6123
6124
// \/:*?"<>|
@@ -6209,11 +6146,11 @@
6146
x += '</div>';
6147
6148
// QR code agent install
6212
- x += '<div id=agins_qrcode style=display:none;min-height:180px><a id=agins_qrimage_a rel=\"noreferrer noopener\" target=_blank><div id=agins_qrimage style=float:right;margin-left:10px;width:180px;height:180px;cursor:pointer></div></a><div>' + format("To add a mobile device to group \"{0}\", download the MeshAgent application and scan this QR code.", EscapeHtml(mesh.name)) + '</div>';
6213
- x += "<table style=width:180px>";
6214
- x += "<tr><td style=text-align:center><a rel=\"noreferrer noopener\" target=_blank href=\"https://play.google.com/store/apps/details?id=com.meshcentral.agent2\"><img style=cursor:pointer src=\"images/google-play-140.png\" width=140 srcset=\"images/google-play-280.png 2x\" /></a></td></tr>";
6215
- x += "<tr><td style=text-align:center><a rel=\"noreferrer noopener\" target=_blank href=\"https://www.amazon.co.uk/gp/product/B097Z4Q7SK/\"><img style=cursor:pointer src=\"images/amazon-appstore-140.png\" width=140 srcset=\"images/amazon-appstore-280.png 2x\" /></a></td></tr>";
6216
- x += "</table>";
6149
+ x += '<div id=agins_qrcode style=display:none;min-height:180px><a id=agins_qrimage_a rel="noreferrer noopener" target=_blank><div id=agins_qrimage style=float:right;margin-left:10px;width:180px;height:180px;cursor:pointer></div></a><div>' + format("To add a mobile device to group \"{0}\", download the MeshAgent application and scan this QR code.", EscapeHtml(mesh.name)) + '</div>';
6150
+ x += '<table style=width:180px>';
6151
+ x += '<tr><td style=text-align:center><a title="' + "Google Play Store" + '"rel="noreferrer noopener" target=_blank href="https://play.google.com/store/apps/details?id=com.meshcentral.agent2"><img style=cursor:pointer src="images/google-play-140.png" width=140 srcset="images/google-play-280.png 2x" /></a></td></tr>';
6152
+ x += '<tr><td style=text-align:center><a title="' + "Amazon App Store" + '" rel="noreferrer noopener" target=_blank href="https://www.amazon.co.uk/gp/product/B097Z4Q7SK/"><img style=cursor:pointer src="images/amazon-appstore-140.png" width=140 srcset="images/amazon-appstore-280.png 2x" /></a></td></tr>';
6153
+ x += '</table>';
6154
x += addHtmlValue("Android APK", '<a class=text-decoration-underline onclick=downloadFile("meshagents?id=14' + (urlargs.key ? ('&key=' + urlargs.key) : '') + '",null,true) title="' + "APK version of the MeshAgent" + '">' + "APK" + '</a> <i class="fa-regular fa-clipboard" title="' + "Copy URL to clipboard" + '" style=cursor:pointer onclick=copyAgentUrl("meshagents?id=14&meshid=' + meshid.split('/')[2] + (urlargs.key ? ('&key=' + urlargs.key) : '') + '")></i>');
6155
x += '</div>'
6156
@@ -6250,7 +6187,7 @@
6187
x += addHtmlValue("Command" + ' <i class="fa-regular fa-clipboard" title="' + "Copy agent URL to clipboard" + '" style=cursor:pointer onclick=copyAgentIdValue("aginsbincmd")></i>', '<input id=aginsbincmd type=text class="form-control" readonly value=\'wget -O meshagent' + (((features & 0x80000000) != 0) ? ' --no-check-certificate' : '') + ' \"https://' + servername + portStr + domainUrl + 'meshagents?id=' + meshid.split('/')[2].split('$').join('%24').split('@').join('%40') + '\' />', ['col-md-4 d-flex align-items-center', 'col-md-8']);
6188
x += '</div>';
6189
6253
- setModalContent("xxAddAgent", "Add Mesh Agent", x);
6190
+ setModalContent('xxAddAgent', "Add Mesh Agent", x);
6191
showModal('xxAddAgentModal', 'idx_dlgOkButton');
6192
6193
// Create the QR code
@@ -6352,67 +6289,6 @@
6289
};
6290
}
6291
6355
- function account_createMesh() {
6356
- // Check if we are disallowed from creating a device group
6357
- if ((userinfo.siteadmin != 0xFFFFFFFF) && ((userinfo.siteadmin & 64) != 0)) {
6358
- setModalContent('xxAddAgent', 'New Device Group', "This account does not have the rights to create a new device group.");
6359
- return false;
6360
- }
6361
-
6362
- // Remind the user to verify the email address
6363
- if ((userinfo.emailVerified !== true) && (serverinfo.emailcheck == true) && (userinfo.siteadmin != 0xFFFFFFFF)) {
6364
- setModalContent('xxAddAgent', 'Account Security', "Unable to access this feature until an email address is verified. This is required for password recovery. Go to the \"My Account\" tab to change and verify an email address.");
6365
- return false;
6366
- }
6367
-
6368
- // Remind the user to add two-factor authentication
6369
- if ((features & 0x00040000) && (count2factoraAuths() == 0)) {
6370
- setModalContent('xxAddAgent', 'Account Security', "Unable to access this feature until two-factor authentication is enabled. This is required for extra security. Go to the \"My Account\" tab and look at the \"Account Security\" section.");
6371
- return false;
6372
- }
6373
-
6374
- // Look for all relay devices
6375
- var relayDevices = [];
6376
- if ((features & 2) == 0) {
6377
- for (var i in nodes) {
6378
- var node = nodes[i];
6379
- if ((node.mtype == 2) && (node.agent != null) && (GetNodeRights(node) == 0xFFFFFFFF)) {
6380
- relayDevices.push(node);
6381
- }
6382
- }
6383
- }
6384
-
6385
- // We are allowed, let's prompt for information
6386
- var x = "Create a new device group using the options below" + '<br /><br />', localGroupType = '';
6387
- x += addHtmlFormFloating("<label for=dp2meshname class=form-label>Name</>", '<input id=dp2meshname maxlength=128 class=form-control onchange=account_validateMeshCreate() onkeyup=account_validateMeshCreate(event,1) />');
6388
- if ((features & 1) == 0) { localGroupType += '<option value=3>' + "Local devices, no agent" + '</option>'; }
6389
- if (((features & 2) == 0) && (relayDevices.length > 0)) { localGroupType += '<option value=103>' + "No agent devices relayed thru agent" + '</option>'; }
6390
- if (features2 & 0x10000) {
6391
- if ((features & 1) == 0) { localGroupType += '<option value=4>' + "IP-KVM / Power device" + '</option>'; }
6392
- if (((features & 2) == 0) && (relayDevices.length > 0)) { localGroupType += '<option value=104>' + "IP-KVM / Power device relayed thru agent" + '</option>'; }
6393
- }
6394
- x += addHtmlFormFloating("<label for=dp2meshtype class=form-label>Type</label>", '<select id=dp2meshtype class=form-select onchange=account_validateMeshCreate() onkeyup=account_validateMeshCreate(event,2) ><option value=2>' + "Manage using a software agent" + '</option><option value=1>' + "Intel® AMT only, no agent" + '</option>' + localGroupType + '</select>');
6395
- if (relayDevices.length > 0) {
6396
- x += '<div id=d2devrelaydiv style=display:none>';
6397
- relayDevices.sort(nameSort);
6398
- var relayDevices2 = [];
6399
- for (var i in relayDevices) { relayDevices2.push('<option value="' + relayDevices[i]._id + '">' + EscapeHtml(relayDevices[i].name) + '</option>'); }
6400
- x += addHtmlFormFloating('<label for=d2devrelay class="form-label">Relay Device</label>', '<select id=d2devrelay onchange=account_validateMeshCreate() onkeyup=account_validateMeshCreate(event,2) class="form-select" >' + relayDevices2.join('') + '</select>');
6401
- x += '</div>';
6402
- }
6403
- x += addHtmlValue('<label for=dp2meshdesc class="form-label">Description</label>', '<div style=width:230px;margin:0;padding:0><textarea id=dp2meshdesc maxlength=1024 style=width:100%;resize:none class="form-control"></textarea></div>');
6404
- x += '<div id=d2ipkvm style=display:none><hr />';
6405
- x += addHtmlFormFloating("<label for=dp2ipkvmmodel class=form-label>Model</label>", '<select id=dp2ipkvmmodel onchange=account_validateMeshCreate() onkeyup=account_validateMeshCreate(event,2) class="form-select" ><option value=1>' + "Raritan Dominion KX III" + '</option><option value=2>' + "Web Power Switch 7" + '</option></select>');
6406
- x += addHtmlFormFloating("<label for=dp2ipkvmhost class=form-label>Hostname</label>", '<input id=dp2ipkvmhost maxlength=128 onchange=account_validateMeshCreate() onkeyup=account_validateMeshCreate(event,1) class="form-control" />');
6407
- x += addHtmlFormFloating("<label for=dp2ipkvmuser class=form-label>Username</label>", '<input id=dp2ipkvmuser maxlength=128 onchange=account_validateMeshCreate() onkeyup=account_validateMeshCreate(event,1) class="form-control" />');
6408
- x += addHtmlFormFloating("<label for=dp2ipkvmpass class=form-label>Password</label>", '<input id=dp2ipkvmpass type=password maxlength=128 onchange=account_validateMeshCreate() onkeyup=account_validateMeshCreate(event,1) class="form-control" />');
6409
- x += '</div>';
6410
-
6411
- // Inject content into the modal
6412
- setModalContent('xxAddAgent', 'New Device Group', x);
6413
- return true;
6414
- }
6415
-
6292
function copyAgentIdValue(id) {
6293
copyTextToClip(Q(id).value);
6294
// Show notification
@@ -6594,7 +6470,7 @@
6470
6471
// Remind the user to add two factor authentication
6472
if ((features & 0x00040000) && (count2factoraAuths() == 0)) {
6597
- setModalContent('xxAddAgent', 'Account Security', "Unable to access this feature until two-factor authentication is enabled. This is required for extra security. Go to the \"My Account\" tab and look at the \"Account Security\" section.");
6473
+ setModalContent('xxAddAgent', "Account Security", "Unable to access this feature until two-factor authentication is enabled. This is required for extra security. Go to the \"My Account\" tab and look at the \"Account Security\" section.");
6474
showModal('xxAddAgentModal', 'idx_dlgOkButton');
6475
return;
6476
}
@@ -6631,7 +6507,7 @@
6507
var x = "Select an operation to perform on all selected devices. Actions will be performed only with proper rights." + '<br /><br />';
6508
x += addHtmlFormFloating("Operation", '<select id=d2groupop class="form-select">' + addedOptionsStr + '</select>');
6509
6634
- setModalContent('xxAddAgent', 'Group Action', x);
6510
+ setModalContent('xxAddAgent', "Group Action", x);
6511
showModal('xxAddAgentModal', 'idx_dlgOkButton', groupActionFunctionEx);
6512
}
6513
@@ -6668,7 +6544,7 @@
6544
if (y != '') { x += '<div style=padding:8px>' + y + '</div>'; } else { x += '<br />'; }
6545
}
6546
x += '<label><input id=d2check type=checkbox class="form-check-input me-2" onchange=d2groupActionFunctionDelCheck() />' + "Confirm" + '</label>';
6671
- setModalContent('xxAddAgent', 'Delete Devices', x);
6547
+ setModalContent('xxAddAgent', "Delete Devices", x);
6548
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => d2groupActionFunctionDelExec());
6549
QE('idx_dlgOkButton', false);
6550
} else if (op == 102) {
@@ -6699,11 +6575,11 @@
6575
for (var i in allTags) { y += '<span style=padding:4px;background-color:#BBB;border-radius:3px;cursor:pointer onclick=showEditNodeValueDialogAddTag("' + encodeURIComponentEx(allTags[i]) + '")>' + EscapeHtml(allTags[i]) + '</span> '; }
6576
x += '<div style=margin-top:8px;width:370px;line-height:26px;max-height:160px;overflow-y:auto>' + y + '</div>';
6577
}
6702
- setModalContent('xxAddAgent', 'Edit Device Tags', x);
6578
+ setModalContent('xxAddAgent', "Edit Device Tags", x);
6579
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => d2groupActionFunctionTagsExec());
6580
} else if (op == 108) {
6581
// Device notification
6706
- var x = "<div style=margin-bottom:4px>Perform batch device notification</div>";
6582
+ var x = '<div style=margin-bottom:4px>'+ "Perform batch device notification" + '</div>';
6583
x += '<select id=d2deviceop class="form-select-sm me-2" style=width:100%;margin-bottom:4px><option value=2>' + "Toast Notification" + '</option><option value=1>' + "Message Box" + '</option><option value=3>' + "Alert Box" + '</option></select>';
6584
x += '<input id=dp2notifyTitle maxlength=256 placeholder="' + "Title" + '" style=width:100%;box-sizing:border-box;margin-bottom:4px />';
6585
x += '<textarea id=d2notifyMsg style=width:100%;height:140px;resize:none;overflow-y:scroll;box-sizing:border-box;margin-bottom:4px></textarea>';
@@ -6715,7 +6591,7 @@
6591
x += '<option value=60>' + "Show for 60 minutes" + '</option>';
6592
x += '<option value=0>' + "Show message until dismissed by user" + '</option>';
6593
x += '</select>';
6718
- setModalContent('xxAddAgent', 'Device Notification', x);
6594
+ setModalContent('xxAddAgent', "Device Notification", x);
6595
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => d2groupActionFunctionNotifyExec());
6596
Q('d2notifyMsg').focus();
6597
} else if (op == 109) {
@@ -6730,23 +6606,23 @@
6606
if (linuxtype) { x += addHtmlFormFloating("Linux Path", '<input type=text class="form-control" onchange="d2batchUploadValidate()" onkeyup="d2batchUploadValidate()" name=linuxpath id=d2linuxuploadpath placeholder="/tmp" value="" />'); }
6607
x += '<br /><label><input type=checkbox class="form-check-input me-2" name=createFolder />' + "Create folder if it does not exists?" + '</label><br />';
6608
x += '<label><input type=checkbox class="form-check-input me-2" name=overwriteFiles />' + "Overwrite if file exists?" + '</label></form>';
6733
- setModalContent('xxAddAgent', 'Batch File Upload', x);
6609
+ setModalContent('xxAddAgent', "Batch File Upload", x);
6610
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => d2batchUploadValidateOk());
6611
d2batchUploadValidate();
6612
} else if (op == 110) {
6613
// Force agent update
6614
var x = "Force agent update on selected devices?" + '<br /><br />';
6739
- setModalContent('xxAddAgent', 'Force agent update', x);
6615
+ setModalContent('xxAddAgent', "Force agent update", x);
6616
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => d2groupActionFunctionAgentUpdateExec());
6617
} else if (op == 111) {
6618
// Clear agent core
6619
var x = "Clear agent core on selected devices?" + '<br /><br />';
6744
- setModalContent('xxAddAgent', 'Clear agent core', x);
6620
+ setModalContent('xxAddAgent', "Clear agent core", x);
6621
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => d2groupActionFunctionAgentClearCoreExec());
6622
} else if (op == 112) {
6623
// Upload default server core
6624
var x = "Upload default server core on selected devices?" + '<br /><br />';
6749
- setModalContent('xxAddAgent', 'Upload default server core', x);
6625
+ setModalContent('xxAddAgent', "Upload default server core", x);
6626
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => d2groupActionFunctionAgentDefaultCodeExec());
6627
} else {
6628
// Power operation
@@ -6808,7 +6684,7 @@
6684
x += addHtmlValue("JSON Format", '<a href=# style=cursor:pointer onclick=\'return p2downloadDeviceInfoJSON()\'>' + "devicelist.json" + '</a>');
6685
if (intelamtpresent) { x += addHtmlValue("Intel® AMT JSON", '<a href=# style=cursor:pointer onclick=\'return p2downloadAmtInfoJSON()\'>' + "computerlist.json" + '</a>'); }
6686
x += '<div style=margin-top:8px><label><input type=checkbox class="form-check-input me-2" id=d2DevInfoDetailsCheck />' + "Include device details" + '</label></div>';
6811
- setModalContent('xxAddAgent', 'Device Information Export', x);
6687
+ setModalContent('xxAddAgent', "Device Information Export", x);
6688
showModal('xxAddAgentModal', 'idx_dlgOkButton');
6689
}
6690
@@ -6933,7 +6809,7 @@
6809
x += '<div id=d2runfile style=display:none><input id=d2runfileex class="form-control" type=file onchange=d2runCommandValidate() id=d2localFile name=files onchange=d2runCommandValidate() /></div>';
6810
if (userinfo.siteadmin & 8) { x += '<div id=d2runsfile style=display:none><div id=d2serveraction valign=bottom><input type=button id=p2FolderUp disabled="disabled" onclick=d3folderup() value="Up" /> <span id=p2CurrentFolder></span></div><div id=d2serverfiles></div></div>'; }
6811
}
6936
- setModalContent('xxAddAgent', 'Run Commands', x);
6812
+ setModalContent('xxAddAgent', "Run Commands", x);
6813
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
6814
d2groupActionFunctionRunCommands(3, options);
6815
});
@@ -7364,7 +7240,7 @@
7240
function cmaltportaction(action) {
7241
if (xxdialogMode) return;
7242
var x = "RDP remote connection port:" + '<br /><br /><input type=text placeholder="3389" inputmode="numeric" pattern="[0-9]*" onkeypress="return (event.keyCode == 8) || (event.charCode >= 48 && event.charCode <= 57)" maxlength=5 id=d10rdpport type=text>';
7367
- setModalContent('xxAddAgent', 'RDP Connection', x);
7243
+ setModalContent('xxAddAgent', "RDP Connection", x);
7244
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
7245
// Save the new RDP port to the server
7246
var rdpport = ((Q('d10rdpport').value.length > 0) ? parseInt(Q('d10rdpport').value) : 3389);
@@ -7378,7 +7254,7 @@
7254
function cmsshportaction(action) {
7255
if (xxdialogMode) return;
7256
var x = "SSH remote connection port:" + '<br /><br /><input type=text placeholder="22" inputmode="numeric" pattern="[0-9]*" onkeypress="return (event.keyCode == 8) || (event.charCode >= 48 && event.charCode <= 57)" maxlength=5 id=d10sshport type=text>';
7381
- setModalContent('xxAddAgent', 'SSH Connection', x);
7257
+ setModalContent('xxAddAgent', "SSH Connection", x);
7258
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
7259
// Save the new SSH port to the server
7260
var sshport = ((Q('d10sshport').value.length > 0) ? parseInt(Q('d10sshport').value) : 22);
@@ -7392,7 +7268,7 @@
7268
function cmrfbportaction(action) {
7269
if (xxdialogMode) return;
7270
var x = "VNC remote connection port:" + '<br /><br /><input type=text placeholder="5900" inputmode="numeric" pattern="[0-9]*" onkeypress="return (event.keyCode == 8) || (event.charCode >= 48 && event.charCode <= 57)" maxlength=5 id=d10rfbport type=text>';
7395
- setModalContent('xxAddAgent', 'VNC Connection', x);
7271
+ setModalContent('xxAddAgent', "VNC Connection", x);
7272
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
7273
// Save the new RFB port to the server
7274
var rfbport = ((Q('d10rfbport').value.length > 0) ? parseInt(Q('d10rfbport').value) : 3389);
@@ -7406,7 +7282,7 @@
7282
function cmhttpportaction(action) {
7283
if (xxdialogMode) return;
7284
var x = "HTTP remote connection port:" + '<br /><br /><input type=text placeholder="80" inputmode="numeric" pattern="[0-9]*" onkeypress="return (event.keyCode == 8) || (event.charCode >= 48 && event.charCode <= 57)" maxlength=5 id=d10httpport type=text>';
7409
- setModalContent('xxAddAgent', 'HTTP Connection', x);
7285
+ setModalContent('xxAddAgent', "HTTP Connection", x);
7286
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
7287
// Save the new HTTP port to the server
7288
var httpport = ((Q('d10httpport').value.length > 0) ? parseInt(Q('d10httpport').value) : 80);
@@ -7420,7 +7296,7 @@
7296
function cmhttpsportaction(action) {
7297
if (xxdialogMode) return;
7298
var x = "HTTPS remote connection port:" + '<br /><br /><input type=text placeholder="443" inputmode="numeric" pattern="[0-9]*" onkeypress="return (event.keyCode == 8) || (event.charCode >= 48 && event.charCode <= 57)" maxlength=5 id=d10httpsport type=text>';
7423
- setModalContent('xxAddAgent', 'HTTPS Connection', x);
7299
+ setModalContent('xxAddAgent', "HTTPS Connection", x);
7300
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
7301
// Save the new HTTP port to the server
7302
var httpsport = ((Q('d10httpsport').value.length > 0) ? parseInt(Q('d10httpsport').value) : 443);
@@ -7436,7 +7312,7 @@
7312
var filetreexx = p13sort_files(p13filetree.dir);
7313
var file = filetreexx[parseInt(contextelement.attributes.fileindex.nodeValue)];
7314
if (action == 1) { // Rename the file
7439
- setModalContent('xxAddAgent', 'Rename', '<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% value="' + file.n + '" />');
7315
+ setModalContent('xxAddAgent', "Rename", '<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% value="' + file.n + '" />');
7316
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p13renamefileEx(3, { action: 'rename', path: p13filetreelocation.join('/'), oldname: file.n }));
7317
focusTextBox('p13renameinput');
7318
p13fileNameCheck();
@@ -7446,7 +7322,7 @@
7322
} else { messagebox("File Editor", "Only files less than 200k can be edited."); }
7323
} else if (action == 3) {
7324
// Delete the file
7449
- setModalContent('xxAddAgent', 'Delete', "Delete item?");
7325
+ setModalContent('xxAddAgent', "Delete", "Delete item?");
7326
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p13deletefileCm(3, file));
7327
}
7328
}
@@ -7941,7 +7817,7 @@
7817
x += '<div class=noselect id=' + nodes[i]._id + '-rowid onclick=selectNodeToPlace(event,\'' + nodes[i]._id + '\') style=background-color:lightgray;margin-bottom:4px;border-radius:2px><input name=PlaceMapDeviceCheckbox id=' + nodes[i]._id + '-checkid type=checkbox class="form-check-input me-2" style=width:16px;display:inline />';
7818
x += '<div class=j' + nodes[i].icon + ' style=width:16px;height:16px;margin-top:2px;margin-right:4px;display:inline-block></div><div style=width:16px;display:inline>' + nodes[i].name + '</div></div>';
7819
}
7944
- setModalContent('xxAddAgent', 'Select a node to place', x + '</div>');
7820
+ setModalContent('xxAddAgent', "Select a node to place", x + '</div>');
7821
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => placeNodeEx(3, coords));
7822
onPlaceNodeInputChange();
7823
}
@@ -8161,14 +8037,14 @@
8037
if (event && ((event.which == 3) || (event.button == 2))) return; // ignore right click events here as handled elsewhere
8038
// Remind the user to verify the email address
8039
if ((userinfo.emailVerified !== true) && (serverinfo.emailcheck == true) && (userinfo.siteadmin != 0xFFFFFFFF)) {
8164
- setModalContent('xxAddAgent', 'Account Security', "Unable to access this feature until a email address is verified. This is required for password recovery. Go to the \"My Account\" tab to change and verify an email address.");
8040
+ setModalContent('xxAddAgent', "Account Security", "Unable to access this feature until a email address is verified. This is required for password recovery. Go to the \"My Account\" tab to change and verify an email address.");
8041
showModal('xxAddAgentModal', 'idx_dlgOkButton');
8042
return;
8043
}
8044
8045
// Remind the user to add two factor authentication
8046
if ((features & 0x00040000) && (count2factoraAuths() == 0)) {
8171
- setModalContent('xxAddAgent', 'Account Security', "Unable to access this feature until two-factor authentication is enabled. This is required for extra security. Go to the \"My Account\" tab and look at the \"Account Security\" section.");
8047
+ setModalContent('xxAddAgent', "Account Security", "Unable to access this feature until two-factor authentication is enabled. This is required for extra security. Go to the \"My Account\" tab and look at the \"Account Security\" section.");
8048
showModal('xxAddAgentModal', 'idx_dlgOkButton');
8049
return;
8050
}
@@ -8739,14 +8615,14 @@
8615
// Show user device permissions
8616
x = '';
8617
if (meshrights & 7) {
8742
- x += '<button class="btn btn-primary btn-sm me-2" onclick="return p20showAddMeshUserDialog(5)" style=cursor:pointer;margin-right:10px><i class="fa-solid fa-plus-circle"></i> ' + "Add User" + '</button>';
8618
+ x += '<button class="btn btn-primary btn-sm me-2" onclick="return p20showAddMeshUserDialog(5)" style=cursor:pointer;margin-right:10px><i class="fa-solid fa-circle-plus"></i> ' + "Add User" + '</button>';
8619
if (usergroups != null) {
8620
var userGroupCount = 0, newUserGroup = false;
8621
for (var i in usergroups) {
8622
if ((usergroups[i].membershipType != null) || (usergroups[i]._id.split('/')[1] != nodeid.split('/')[1])) continue;
8623
userGroupCount++; if ((currentNode.links == null) || (currentNode.links[i] == null)) { newUserGroup = true; }
8624
}
8749
- if ((userGroupCount > 0) && (newUserGroup)) { x += '<a href=# onclick="return p20showAddMeshUserDialog(6)" style=cursor:pointer;margin-right:10px><i class="fa-solid fa-plus-circle"></i> ' + "Add User Group" + '</a>'; }
8625
+ if ((userGroupCount > 0) && (newUserGroup)) { x += '<a href=# onclick="return p20showAddMeshUserDialog(6)" style=cursor:pointer;margin-right:10px><i class="fa-solid fa-circle-plus"></i> ' + "Add User Group" + '</a>'; }
8626
}
8627
}
8628
@@ -8841,11 +8717,11 @@
8717
function setIpPduState(op) {
8718
if (op == 0) {
8719
// Turn off
8844
- setModalContent('xxAddAgent', 'Power Operation', 'Perform power off?');
8720
+ setModalContent('xxAddAgent', "Power Operation", 'Perform power off?');
8721
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () { meshserver.send({ action: 'poweraction', nodeids: [currentNode._id], actiontype: 2 }); });
8722
} else {
8723
// Turn on
8848
- setModalContent('xxAddAgent', 'Power Operation', 'Perform power on?');
8724
+ setModalContent('xxAddAgent', "Power Operation", 'Perform power on?');
8725
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () { meshserver.send({ action: 'wakedevices', nodeids: [currentNode._id] }); });
8726
}
8727
}
@@ -8870,7 +8746,7 @@
8746
x += '<div><label><input id=p20emsgDeviceDisconnect type=checkbox class="form-check-input me-2" />' + "Device disconnections" + '</label></div>';
8747
x += '<div><label><input id=p20emsgDeviceHelp type=checkbox class="form-check-input me-2" />' + "Help requests" + '</label></div>';
8748
}
8873
- setModalContent('xxAddAgent', 'Notification Settings', x);
8749
+ setModalContent('xxAddAgent', "Notification Settings", x);
8750
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p20editDeviceNotifyEx(3, fx));
8751
Q('p20notifyIntelDeviceConnect').checked = (devNotify & 2);
8752
Q('p20notifyIntelDeviceDisconnect').checked = (devNotify & 4);
@@ -8974,7 +8850,7 @@
8850
8851
function writeDeviceEvent(nodeid) {
8852
if (xxdialogMode) return;
8977
- setModalContent('xxAddAgent', 'Add Device Event', '<textarea id=d2devEvent style=width:100%;height:200px;resize:none;overflow-y:scroll></textarea><span style=font-size:10px>' + "This will add an entry to this device's event log." + '<span>');
8853
+ setModalContent('xxAddAgent', "Add Device Event", '<textarea id=d2devEvent style=width:100%;height:200px;resize:none;overflow-y:scroll></textarea><span style=font-size:10px>' + "This will add an entry to this device's event log." + '<span>');
8854
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
8855
writeDeviceEventEx(3, nodeid);
8856
});
@@ -8988,8 +8864,8 @@
8864
if (noteid == null) { noteid = encodeURIComponentEx('p' + userinfo._id); }
8865
var x = '<textarea id=d2devNotes ro=' + readonly + ' noteid=' + noteid + ' readonly class="form-control" style=width:100%;height:200px;resize:none;overflow-y:scroll></textarea>';
8866
if (noteid.startsWith('node%2F%2F')) { x += '<span style=font-size:10px>' + "Device group notes can be viewed and changed by other device group administrators." + '<span>'; }
8991
-
8992
- setModalContent('xxAddAgent', 'Notes', x);
8867
+ if (showNotesPanel) { x += ' <span style=font-size:10px><a target=_blank href=\'https://www.markdownguide.org/cheat-sheet/\'>' + "Markdown syntax supported" + '</a></span>'; }
8868
+ setModalContent('xxAddAgent', "Notes", x);
8869
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
8870
showNotesEx(2, noteid);
8871
});
@@ -9051,7 +8927,7 @@
8927
function deviceUrlFunction() {
8928
if (xxdialogMode) return;
8929
xxdialogButtons = 3;
9054
- setModalContent('xxAddAgent', 'Open Page on Device', '<input id=d2devurl placeholder="http://server.com" style=width:100%;overflow-y:scroll onkeyup=deviceUrlFunctionValidate() onchange=deviceUrlFunctionValidate()></input>');
8930
+ setModalContent('xxAddAgent', "Open Page on Device", '<input id=d2devurl placeholder="http://server.com" style=width:100%;overflow-y:scroll onkeyup=deviceUrlFunctionValidate() onchange=deviceUrlFunctionValidate()></input>');
8931
showModal('xxAddAgentModal', 'idx_dlgOkButton', deviceUrlFunctionEx);
8932
8933
Q('d2devurl').focus();
@@ -9079,7 +8955,7 @@
8955
x += '<option value=0>' + "Show message until dismissed by user" + '</option>';
8956
x += '</select>';
8957
xxdialogButtons = 3;
9082
- setModalContent('xxAddAgent', 'Device Message', x);
8958
+ setModalContent('xxAddAgent', "Device Message", x);
8959
showModal('xxAddAgentModal', 'idx_dlgOkButton', deviceMessageFunctionEx);
8960
Q('d2devMessage').focus();
8961
}
@@ -9108,7 +8984,7 @@
8984
// Called to lock or unlock remote desktop user input
8985
function deskInputLockFunction(value) {
8986
if (xxdialogMode || desktop == null || desktop.State != 3) return;
9111
- setModalContent('xxAddAgent', 'Remote Input Lock', (value == 1) ? "Lock remote user's mouse and keyboard?" : "Unlock remote user's mouse and keyboard?");
8987
+ setModalContent('xxAddAgent', "Remote Input Lock", (value == 1) ? "Lock remote user's mouse and keyboard?" : "Unlock remote user's mouse and keyboard?");
8988
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () { try { desktop.m.SendRemoteInputLock(value); } catch (ex) { } });
8989
}
8990
@@ -9142,7 +9018,7 @@
9018
x += '<option value=0>' + "Show message until dismissed by user" + '</option>';
9019
x += '</select>';
9020
xxdialogButtons = 3;
9145
- setModalContent('xxAddAgent', 'Device Notification', x);
9021
+ setModalContent('xxAddAgent', "Device Notification", x);
9022
showModal('xxAddAgentModal', 'idx_dlgOkButton', deviceToastFunctionEx);
9023
Q('d2notifyMsg').focus();
9024
}
@@ -9165,7 +9041,7 @@
9041
// Lock desktop
9042
function deviceLockFunction() {
9043
if ((xxdialogMode == null) && (desktop != null) && (desktop.contype == 1)) {
9168
- setModalContent('xxAddAgent', 'Lock Desktop', "Lock user desktop?");
9044
+ setModalContent('xxAddAgent', "Lock Desktop", "Lock user desktop?");
9045
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () { if ((desktop != null) && (desktop.contype == 1)) { desktop.sendCtrlMsg('{"ctrlChannel":"102938","type":"lock"}'); } });
9046
}
9047
}
@@ -9227,7 +9103,7 @@
9103
x += '<div id=d2httpsPortSelector>' + addHtmlFormFloating("Port", '<input id=d2httpsPort class="form-control" value=443 onkeyup=showShareDeviceValidate()></input>') + '</div>';
9104
9105
xxdialogButtons = 3;
9230
- setModalContent('xxAddAgent', 'Share Device', x);
9106
+ setModalContent('xxAddAgent', "Share Device", x);
9107
showModal('xxAddAgentModal', 'idx_dlgOkButton', showShareDeviceEx);
9108
9109
showShareDeviceValidate();
@@ -9324,7 +9200,7 @@
9200
x += addHtmlFormFloating("Operation", y);
9201
if (count == 0) { x = "No actions currently available for this device."; }
9202
xxdialogButtons = (count == 0) ? 2 : 3; xxdialogTag = x + z;
9327
- setModalContent('xxAddAgent', 'Device Action', x);
9203
+ setModalContent('xxAddAgent', "Device Action", x);
9204
showModal('xxAddAgentModal', 'idx_dlgOkButton', deviceActionFunctionEx);
9205
if (count > 0) { deviceActionFunctionValidate(); }
9206
}
@@ -9360,7 +9236,7 @@
9236
}
9237
x += '<select id=d2cmduser style=width:100%;margin-bottom:4px><option value=0>' + "Run as agent" + '</option><option value=1>' + "Run as user, agent if no user" + '</option><option value=2>' + "Must run as user" + '</option></select>';
9238
x += '<textarea id=d2runcmd style=width:100%;height:200px;resize:none;overflow-y:scroll></textarea>';
9363
- setModalContent('xxAddAgent', 'Run Commands', x);
9239
+ setModalContent('xxAddAgent', "Run Commands", x);
9240
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => deviceRunCmdsFunctionEx());
9241
Q('d2runcmd').focus();
9242
//QE('idx_dlgOkButton', true);
@@ -9371,23 +9247,23 @@
9247
Q('d3auth').value = authCookie;
9248
Q('d3filter').value = '.efi';
9249
Q('d3attrib').value = currentNode._id;
9374
- setModalContent('xxAddAgent', 'Intel® AMT One Click Recovery', x);
9250
+ setModalContent('xxAddAgent', "Intel® AMT One Click Recovery", x);
9251
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => deviceActionOneClickRecovery());
9252
d3init();
9253
} else if (op == 302) { // Intel AMT power on
9378
- setModalContent('xxAddAgent', 'Intel® AMT Power Operation', "Perform Intel® AMT power on?");
9254
+ setModalContent('xxAddAgent', "Intel® AMT Power Operation", "Perform Intel® AMT power on?");
9255
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () { meshserver.send({ action: 'poweraction', nodeids: [currentNode._id], actiontype: parseInt(op) }); });
9256
} else if (op == 308) { // Intel AMT power off
9381
- setModalContent('xxAddAgent', 'Intel® AMT Power Operation', "Perform Intel® AMT power off?<br><br><b>NOTE: If there is an active AMT session, then power off command will be rejected, so you must disconnect from the AMT session first!</b>");
9257
+ setModalContent('xxAddAgent', "Intel® AMT Power Operation", "Perform Intel® AMT power off?<br><br><b>NOTE: If there is an active AMT session, then power off command will be rejected, so you must disconnect from the AMT session first!</b>");
9258
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () { meshserver.send({ action: 'poweraction', nodeids: [currentNode._id], actiontype: parseInt(op) }); });
9259
} else if (op == 310) { // Intel AMT reset
9384
- setModalContent('xxAddAgent', 'Intel® AMT Power Operation', "Perform Intel® AMT reset?");
9260
+ setModalContent('xxAddAgent', "Intel® AMT Power Operation", "Perform Intel® AMT reset?");
9261
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () { meshserver.send({ action: 'poweraction', nodeids: [currentNode._id], actiontype: parseInt(op) }); });
9262
} else if (op == 311) { // Intel AMT power on to BIOS
9263
setModalContent('xxAddAgent', "Intel® AMT Power Operation", "Perform Intel® AMT power on to BIOS?");
9264
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () { meshserver.send({ action: 'poweraction', nodeids: [currentNode._id], actiontype: parseInt(op) + ((xxcurrentView == 12) ? 2 : 0) }); });
9265
} else if (op == 312) { // Intel AMT reset to BIOS
9390
- setModalContent('xxAddAgent', 'Intel® AMT Power Operation', "Perform Intel® AMT reset to BIOS?");
9266
+ setModalContent('xxAddAgent', "Intel® AMT Power Operation", "Perform Intel® AMT reset to BIOS?");
9267
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () { meshserver.send({ action: 'poweraction', nodeids: [currentNode._id], actiontype: parseInt(op) + ((xxcurrentView == 12) ? 2 : 0) }); });
9268
} else if ((op == 400) || (op == 401)) {
9269
// Flash / vibrate
@@ -9518,7 +9394,7 @@
9394
// Only display the TLS setting if the Intel AMT manager is not running on the server. With the manager TLS is auto-detected.
9395
if ((features2 & 1) == 0) { x += addHtmlFormFloating("Security", '<select id=dp10tls class="form-select"><option value=0>' + "No TLS security" + '</option><option value=1>' + "TLS security required" + '</option></select>'); }
9396
if ((node.intelamt.user != null) && (node.intelamt.user != '')) { buttons = 7; }
9521
- setModalContent('xxAddAgent', 'Edit Intel® AMT credentials', x);
9397
+ setModalContent('xxAddAgent', "Edit Intel® AMT credentials", x);
9398
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => editDeviceAmtSettingsEx(buttons, { node: node, func: func, arg: arg }));
9399
if ((node.intelamt.user != null) && (node.intelamt.user != '')) { Q('dp10username').value = node.intelamt.user; } else { Q('dp10username').value = 'admin'; }
9400
if ((features2 & 1) == 0) { Q('dp10tls').value = node.intelamt.tls; }
@@ -9550,7 +9426,7 @@
9426
if (xxdialogMode) return false;
9427
var x = addHtmlFormFloating("Topic", '<input id=dp2topic class="form-control" maxlength=64 onchange=p10validateSendMqttMsgDialog() onkeyup=p10validateSendMqttMsgDialog(event,1) />');
9428
x += addHtmlFormFloating("Message", '<textarea id=dp2msg class="form-control" maxlength=4096 style=width:100%;height:150px;resize:none onchange=p10validateSendMqttMsgDialog() onkeyup=p10validateSendMqttMsgDialog(event,1)></textarea>');
9553
- setModalContent('xxAddAgent', 'Send MQTT message', x);
9429
+ setModalContent('xxAddAgent', "Send MQTT message", x);
9430
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p10showSendMqttMsgDialogEx(3, nodeids));
9431
p10validateSendMqttMsgDialog();
9432
Q('dp2topic').focus();
@@ -9573,7 +9449,7 @@
9449
x += '<br /><br />';
9450
if (nodeids.length > 1) { x += "This will not remove the devices from the server, but the devices will not longer be able to connect to the server. All remote access to the devices will be lost. The devices must be connected for this command to work."; } else { x += "This will not remove this device from the server, but the device will not longer be able to connect to the server. All remote access to the device will be lost. The device must be connect for this command to work."; }
9451
x += '<br /><br /><label style=color:red><input id=p10check type=checkbox class="form-check-input me-2" onchange=p10validateDeleteNodeDialog() />' + "Confirm" + '</label>';
9576
- setModalContent('xxAddAgent', 'Uninstall agent', x);
9452
+ setModalContent('xxAddAgent', "Uninstall agent", x);
9453
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p10showSendUninstallAgentDialogEx(3, nodeids));
9454
9455
p10validateSendUninstallAgentDialog();
@@ -9598,10 +9474,10 @@
9474
if (count > 0) {
9475
var x = (nodeids.length == 1) ? ("Select a new group for this device" + '<br /><br />') : ("Select a new group for selected devices" + '<br /><br />');
9476
x += addHtmlFormFloating("New Device Group", y);
9601
- setModalContent('xxAddAgent', 'Change Group', x);
9477
+ setModalContent('xxAddAgent', "Change Group", x);
9478
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p10showChangeGroupDialogEx(3, nodeids));
9479
} else {
9604
- setModalContent('xxAddAgent', 'Change Group', 'No other device group of same type exists.');
9480
+ setModalContent('xxAddAgent', "Change Group", 'No other device group of same type exists.');
9481
showModal('xxAddAgentModal', 'idx_dlgOkButton');
9482
}
9483
return false;
@@ -9616,7 +9492,7 @@
9492
if (xxdialogMode) return false;
9493
var x = format("Are you sure you want to delete node {0}?", EscapeHtml(currentNode.name)) + '<br /><br /><label><input id=p10check type=checkbox class="form-check-input me-2" onchange=p10validateDeleteNodeDialog() />' + "Confirm" + '</label>';
9494
xxdialogButtons = 3; xxdialogTag = nodeid;
9619
- setModalContent('xxAddAgent', 'Delete Node', x);
9495
+ setModalContent('xxAddAgent', "Delete Node", x);
9496
showModal('xxAddAgentModal', 'idx_dlgOkButton', p10showDeleteNodeDialogEx);
9497
p10validateDeleteNodeDialog();
9498
return false;
@@ -9726,7 +9602,7 @@
9602
//var x = '<div><a href="https://www.google.com/maps/preview/@' + lat + ',' + lng + ',12z" rel="noreferrer noopener" target=_blank>Open in Google maps</a></div>';
9603
var x = '<div id=d2map style=width:100%;height:300px></div>';
9604
xxdialogTag = '@xxmap';
9729
- setModalContent('xxAddAgent', 'Device Location', x);
9605
+ setModalContent('xxAddAgent', "Device Location", x);
9606
showModal('xxAddAgentModal', 'idx_dlgOkButton');
9607
return false;
9608
}
@@ -9735,7 +9611,7 @@
9611
function p10showNodeNetInfoDialog() {
9612
if (xxdialogMode) return false;
9613
xxdialogButtons = 1; xxdialogTag = 'if' + currentNode._id;
9738
- setModalContent('xxAddAgent', 'Network Interfaces', '<div id=d2netinfo>' + "Loading..." + '</div>');
9614
+ setModalContent('xxAddAgent', "Network Interfaces", '<div id=d2netinfo>' + "Loading..." + '</div>');
9615
showModal('xxAddAgentModal', 'idx_dlgOkButton');
9616
9617
meshserver.send({ action: 'getnetworkinfo', nodeid: currentNode._id });
@@ -9802,7 +9678,7 @@
9678
if (mode == 1) { x += addHtmlValue("Action File", '<a onclick=downloadFile("meshagents?meshaction=route&nodeid=' + nodeid + (urlargs.key ? ('&key=' + urlargs.key) : '') + '") class=link-primary>' + "MeshAction (.txt)" + '</a>'); }
9679
x += '</div>';
9680
xxdialogButtons = 9; xxdialogMode = 'fileDownload';
9805
- setModalContent('xxAddAgent', 'Download MeshCmd', x);
9681
+ setModalContent('xxAddAgent', "Download MeshCmd", x);
9682
showModal('xxAddAgentModal', 'idx_dlgOkButton');
9683
meshCmdOsClick();
9684
}
@@ -9838,7 +9714,7 @@
9714
x += '<div tabindex=0 style="display:inline-block;margin:0 10px 0 10px" class=i7 onclick=p10setIcon(7) onkeypress="if (event.key==\'Enter\') p10setIcon(7)"></div>';
9715
x += '<div tabindex=0 style="display:inline-block;margin:0 10px 0 10px" class=i8 onclick=p10setIcon(8) onkeypress="if (event.key==\'Enter\') p10setIcon(8)"></div>';
9716
x += '<br /><br /></div>';
9841
- setModalContent('xxAddAgent', 'Icon Selection', x);
9717
+ setModalContent('xxAddAgent', "Icon Selection", x);
9718
showModal('xxAddAgentModal', 'idx_dlgOkButton');
9719
QV('id_dialogclose', true);
9720
}
@@ -9849,12 +9725,12 @@
9725
}
9726
9727
function showClearSshDialog() {
9852
- setModalContent('xxAddAgent', 'Edit Device', 'Clear SSH credentials?');
9728
+ setModalContent('xxAddAgent', "Edit Device", 'Clear SSH credentials?');
9729
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => showClearSshDialogEx(3));
9730
}
9731
function showClearSshDialogEx(button, mode) { meshserver.send({ action: 'changedevice', nodeid: currentNode._id, ssh: 0 }); }
9732
function showClearRdpDialog() {
9857
- setModalContent('xxAddAgent', 'Edit Device', 'Clear RDP credentials?');
9733
+ setModalContent('xxAddAgent', "Edit Device", 'Clear RDP credentials?');
9734
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => showClearRdpDialogEx(3));
9735
}
9736
function showClearRdpDialogEx(button, mode) { meshserver.send({ action: 'changedevice', nodeid: currentNode._id, rdp: 0 }); }
@@ -9884,7 +9760,7 @@
9760
x += y + '</select>'
9761
setModalContent('xxAddAgent', "Edit Tags", x);
9762
$('#dp10devicevalue').select2({
9887
- theme: "bootstrap-5",
9763
+ theme: 'bootstrap-5',
9764
width: $( this ).data( 'width' ) ? $( this ).data( 'width' ) : $( this ).hasClass( 'w-100' ) ? '100%' : 'style',
9765
placeholder: showEditNodeValueDialog_modes3[mode],
9766
closeOnSelect: false,
@@ -9894,7 +9770,7 @@
9770
});
9771
} else {
9772
x = addHtmlFormFloating(showEditNodeValueDialog_modes[mode], '<input id=dp10devicevalue class="form-control" maxlength=' + showEditNodeValueDialog_modes4[mode] + ' placeholder="' + showEditNodeValueDialog_modes3[mode] + '" onchange=p10editdevicevalueValidate(' + mode + ',event) onkeyup=p10editdevicevalueValidate(' + mode + ',event) class=form-control/>');
9897
- setModalContent('xxAddAgent', 'Edit Device', x);
9773
+ setModalContent('xxAddAgent', "Edit Device", x);
9774
if (Array.isArray(v)) { v = v.join(', '); }
9775
Q('dp10devicevalue').value = v;
9776
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
@@ -10298,7 +10174,7 @@
10174
x += addHtmlFormFloating("Alt Shell", '<input type=text id=d2altshell class="form-control" maxlength=2048 />');
10175
x += addHtmlFormFloating("Working Dir", '<input type=text id=d2workdir class="form-control" maxlength=2048 />');
10176
x += MoreEnd();
10301
- setModalContent('xxAddAgent', 'RDP Credentials', x);
10177
+ setModalContent('xxAddAgent', "RDP Credentials", x);
10178
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => askRdpCredentialsEx());
10179
}
10180
@@ -10366,7 +10242,7 @@
10242
}
10243
}
10244
xxdialogTag = 'sessionMetadata' + cid;
10369
- setModalContent('xxAddAgent', 'Session Information', x);
10245
+ setModalContent('xxAddAgent', "Session Information", x);
10246
showModal('xxAddAgentModal', 'idx_dlgOkButton');
10247
}
10248
}
@@ -10520,7 +10396,7 @@
10396
}
10397
10398
xxdialogButtons = 3;
10523
- setModalContent('xxAddAgent', 'Remote Desktop Settings', 7);
10399
+ setModalContent('xxAddAgent', "Remote Desktop Settings", 7);
10400
showModal('xxAddAgentModal', 'idx_dlgOkButton', showDesktopSettingsChanged);
10401
}
10402
@@ -10840,7 +10716,7 @@
10716
for (var i = 0; i < 26; i++) { x += '<option value=' + (i + 65) + '>' + String.fromCharCode(i + 65) + '</option>'; }
10717
x += '</select> <input type=button value=' + "Add" + ' onclick=addDeskCustomizeKey() /></div>';
10718
x += '<div style=width:100%;padding:2px;text-align:center><input type=button value="' + "Restore Default Keyboard Shortcuts" + '" onclick=restoreDeskCustomizeKey() /></div>';
10843
- setModalContent('xxAddAgent', 'Keyboard Shortcuts Customization', x);
10719
+ setModalContent('xxAddAgent', "Keyboard Shortcuts Customization", x);
10720
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => deskCustomizeKeysEx());
10721
deskUpdateShortcutList();
10722
}
@@ -10909,7 +10785,7 @@
10785
x += addHtmlFormFloating("Value", '<input type=text id=d2shortcutvalue class="form-control" maxlength=256 autocomplete=off onkeyup=deskCustomizeStringsUpdate(event) />');
10786
x += addHtmlFormFloating('', '<input id=d2addbutton type=button value=' + "Add" + ' onclick=addDeskCustomizeString() class="form-control" />');
10787
x + '</div>';
10912
- setModalContent('xxAddAgent', 'Keyboard Strings Customization', x);
10788
+ setModalContent('xxAddAgent', "Keyboard Strings Customization", x);
10789
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => deskCustomizeStringsEx());
10790
deskUpdateStringsList();
10791
deskCustomizeStringsUpdate();
@@ -11063,7 +10939,7 @@
10939
Q('DeskType').blur();
10940
var x = '<div>' + "Enter text and click OK to remotely type it. Make sure to place the remote cursor at the correct position before proceeding." + '<div>';
10941
x += '<textarea id=d2typeText style="margin-top:5px;width:100%;height:184px;resize:none" maxlength=2000>' + (text ? EscapeHtml(text) : '') + '</textarea>';
11066
- setModalContent('xxAddAgent', 'Remote Keyboard Entry', x);
10942
+ setModalContent('xxAddAgent', "Remote Keyboard Entry", x);
10943
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => showDeskTypeEx());
10944
Q('d2typeText').focus();
10945
}
@@ -11127,7 +11003,7 @@
11003
x += '<textarea id=d2clipText style="width:100%;height:184px;resize:none" maxlength=65535></textarea>';
11004
x += '<input type=button value="Close" style=width:80px;float:right onclick=dialogclose(0)><div style=height:26px;margin-top:3px><span id=linuxClipWarn style=display:none>' + "Remote clipboard is valid for 60 seconds." + '</span> </div><div></div>';
11005
xxdialogTag = 'clipboard';
11130
- setModalContent('xxAddAgent', 'Remote Clipboard', x);
11006
+ setModalContent('xxAddAgent', "Remote Clipboard", x);
11007
showModal('xxAddAgentModal', 'idx_dlgOkButton');
11008
Q('d2clipText').focus();
11009
}
@@ -11329,7 +11205,7 @@
11205
}
11206
x += '<br/><div style=float:right;margin-bottom:12px><input type=button value="' + "Close" + '" onclick=showServiceDetailsDialogEx(0,' + index + ')></div><div style=margin-bottom:12px><input type=button value="' + "Start" + '" onclick=showServiceDetailsDialogEx(1,' + index + ')><input type=button value="' + "Stop" + '" onclick=showServiceDetailsDialogEx(2,' + index + ')><input type=button value="' + "Restart" + '" onclick=showServiceDetailsDialogEx(3,' + index + ')></div>';
11207
xxdialogTag = "service_" + index;
11332
- setModalContent('xxAddAgent', 'Service Details', x);
11208
+ setModalContent('xxAddAgent', "Service Details", x);
11209
showModal('xxAddAgentModal', 'idx_dlgOkButton');
11210
}
11211
}
@@ -11341,7 +11217,7 @@
11217
if (service != null) {
11218
meshserver.send({ action: 'msg', type: 'service', nodeid: currentNode._id, serviceName: service.name });
11219
xxdialogTag = "service_" + index;
11344
- setModalContent('xxAddAgent', 'Service Details', 'Requesting Service Details...');
11220
+ setModalContent('xxAddAgent', "Service Details", 'Requesting Service Details...');
11221
showModal('xxAddAgentModal', 'idx_dlgOkButton');
11222
}
11223
return false;
@@ -11427,7 +11303,7 @@
11303
function dmousewheel(e) { setSessionActivity(); e.addx = Q('DeskParent').scrollLeft; e.addy = Q('DeskParent').scrollTop; if (!xxdialogMode && desktop != null && Q('DeskControl').checked) { if ((webRtcDesktop != null) && (webRtcDesktop.softdesktop != null)) { webRtcDesktop.softdesktop.m.mousewheel(e); desktop.m.sendKeepAlive(); } else { if (desktop.m.mousewheel) { desktop.m.mousewheel(e); } } haltEvent(e); return true; } return false; }
11304
function drotate(x) { if (!xxdialogMode && desktop != null) { desktop.m.setRotation(desktop.m.rotation + x); deskAdjust(); deskAdjust(); } }
11305
function stopProcess(id, name) {
11430
- setModalContent('xxAddAgent', 'Process Control', format("Stop process #{0} \"{1}\"?", id, name));
11306
+ setModalContent('xxAddAgent', "Process Control", format("Stop process #{0} \"{1}\"?", id, name));
11307
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => stopProcessEx(3, id));
11308
return false;
11309
}
@@ -11601,7 +11477,7 @@
11477
x += addHtmlFormFloating("Password", '<input type=password id=dp2keypass2 class="form-control" maxlength=64 autocomplete=off onkeyup=sshAuthUpdate(event) />');
11478
x += '</div>';
11479
}
11604
- setModalContent('xxAddAgent', 'Authentication', x);
11480
+ setModalContent('xxAddAgent', "Authentication", x);
11481
var closeFunc = function(event,a) {
11482
document.getElementById('xxAddAgentModal').removeEventListener('hide.bs.modal', closeFunc);
11483
connectTerminal();
@@ -11871,7 +11747,7 @@
11747
function showTermPasteDialog() {
11748
if (!terminal || xxdialogMode) return;
11749
Q('pastebutton').blur();
11874
- setModalContent('xxAddAgent', 'Paste', '<textarea id=d2pasteText style="width:100%;height:184px;resize:none"></textarea>');
11750
+ setModalContent('xxAddAgent', "Paste", '<textarea id=d2pasteText style="width:100%;height:184px;resize:none"></textarea>');
11751
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => showTermPasteDialogEx());
11752
Q('d2pasteText').focus();
11753
}
@@ -12058,19 +11934,19 @@
11934
setDialogMode(0); // Close the dialog box
11935
} else if ((data.msg == 'zipping') && ((!xxdialogMode) || (xxdialogTag == 'fileMsgDialog'))) {
11936
// Show the dialog box message
12061
- setModalContent('xxAddAgent', 'File Operation', '<div style=margin:10px>' + "Compressing files..." + '</div>');
11937
+ setModalContent('xxAddAgent', "File Operation", '<div style=margin:10px>' + "Compressing files..." + '</div>');
11938
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p13fileOperationDialogEx(10));
11939
} else if ((data.msg == 'unzipping') && ((!xxdialogMode) || (xxdialogTag == 'fileMsgDialog'))) {
11940
// Show the dialog box message
12065
- setModalContent('xxAddAgent', 'File Operation', '<div style=margin:10px>' + "Unzipping file..." + '</div>');
11941
+ setModalContent('xxAddAgent', "File Operation", '<div style=margin:10px>' + "Unzipping file..." + '</div>');
11942
showModal('xxAddAgentModal', 'idx_dlgOkButton');
11943
} else if ((data.msg == 'unziperror') && ((!xxdialogMode) || (xxdialogTag == 'fileMsgDialog'))) {
11944
// Show the dialog box message
12069
- setModalContent('xxAddAgent', 'File Operation', '<div style=margin:10px>' + "Unzipping Error" + '</div><br />' + EscapeHtml(data.error));
11945
+ setModalContent('xxAddAgent', "File Operation", '<div style=margin:10px>' + "Unzipping Error" + '</div><br />' + EscapeHtml(data.error));
11946
showModal('xxAddAgentModal', 'idx_dlgOkButton');
11947
} else if ((data.msg == 'zippingFile') && ((!xxdialogMode) || (xxdialogTag == 'fileMsgDialog'))) {
11948
// Show the dialog box message
12073
- setModalContent('xxAddAgent', 'File Operation', '<div style=margin:10px>' + EscapeHtml(data.file) + '</div><br /><progress value=' + EscapeHtml(data.progress) + ' style=width:100% max=100 />');
11949
+ setModalContent('xxAddAgent', "File Operation", '<div style=margin:10px>' + EscapeHtml(data.file) + '</div><br /><progress value=' + EscapeHtml(data.progress) + ' style=width:100% max=100 />');
11950
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p13fileOperationDialogEx(10));
11951
}
11952
return;
@@ -12220,7 +12096,7 @@
12096
}
12097
12098
function p13openfilefolder() {
12223
- setModalContent('xxAddAgent', 'Open File/Folder', 'Are you sure you want to open this file/folder on the remote devices desktop ?');
12099
+ setModalContent('xxAddAgent', "Open File/Folder", 'Are you sure you want to open this file/folder on the remote devices desktop ?');
12100
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p13openfilefolderEx());
12101
}
12102
function p13openfilefolderEx() {
@@ -12236,7 +12112,7 @@
12112
12113
function p13gotofolder() {
12114
xxdialogButtons = 3;
12239
- setModalContent('xxAddAgent', 'Go To Folder', '<input type=text id=p13folderinput style=width:100% placeholder="' + (isWindowsNode(currentNode) ? 'C:\\' : '/var/www') + '" />');
12115
+ setModalContent('xxAddAgent', "Go To Folder", '<input type=text id=p13folderinput style=width:100% placeholder="' + (isWindowsNode(currentNode) ? 'C:\\' : '/var/www') + '" />');
12116
showModal('xxAddAgentModal', 'idx_dlgOkButton', p13gotofolderEx);
12117
focusTextBox('p13folderinput');
12118
}
@@ -12275,7 +12151,7 @@
12151
x += '<div id=d2findResults style="width:100%;height:184px;background-color:white;border:1px solid black;padding:3px;overflow:scroll;margin-top:8px"></div>';
12152
x += '<div style=margin-top:8px><input id=filefind_dlgCancelButton type=button value=' + "Close" + ' style=float:right;width:80px;margin-left:5px onclick=p13findfileCancel()>';
12153
x += '<input id=filefind_dlgOkButton type=submit value=' + "Search" + ' style=float:right;width:80px onclick=p13findfileEx()><br /><br /></div>';
12278
- setModalContent('xxAddAgent', 'Find Files', x);
12154
+ setModalContent('xxAddAgent', "Find Files", x);
12155
showModal('xxAddAgentModal', 'idx_dlgOkButton');
12156
p13findfileValidate();
12157
Q('d2findFilter').focus();
@@ -12376,14 +12252,14 @@
12252
function p13getFileSelAllowedExt(ext) { var checkboxes = document.getElementsByName('fd'); for (var i = 0; i < checkboxes.length; i++) { if ((checkboxes[i].checked) && (!p13filetree.dir[checkboxes[i].value].n.endsWith(ext))) return false; } return true; }
12253
function p13selectallfile() { var nv = (p13getFileSelCount() == 0), checkboxes = document.getElementsByName('fd'); for (var i = 0; i < checkboxes.length; i++) { checkboxes[i].checked = nv; } p13setActions(); }
12254
function p13createfolder() {
12379
- setModalContent('xxAddAgent', 'New Folder', '<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% />');
12255
+ setModalContent('xxAddAgent', "New Folder", '<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% />');
12256
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p13createfolderEx());
12257
focusTextBox('p13renameinput'); p13fileNameCheck();
12258
}
12259
function p13createfolderEx() { files.sendText({ action: 'mkdir', reqid: 1, path: p13filetreelocation.join('/') + '/' + Q('p13renameinput').value }); p13folderup(999); }
12260
function p13deletefile() {
12261
var cc = p13getFileSelCount(), rec = (p13getFileSelDirCount() > 0) ? '<br /><br /><label><input type=checkbox class="form-check-input me-2" id=p13recdeleteinput>' + "Recursive delete" + '</label><br>' : '<input type=checkbox class="form-check-input me-2" id=p13recdeleteinput style=\'display:none\'>';
12386
- setModalContent('xxAddAgent', 'Delete', (cc > 1) ? (format("Delete {0} selected items?", cc) + rec) : ("Delete selected item?" + rec));
12262
+ setModalContent('xxAddAgent', "Delete", (cc > 1) ? (format("Delete {0} selected items?", cc) + rec) : ("Delete selected item?" + rec));
12263
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p13deletefileEx());
12264
}
12265
function p13deletefileEx() { var delfiles = [], checkboxes = document.getElementsByName('fd'); for (var i = 0; i < checkboxes.length; i++) { if (checkboxes[i].checked) { delfiles.push(p13filetree.dir[checkboxes[i].value].n); } } files.sendText({ action: 'rm', reqid: 1, path: p13filetreelocation.join('/'), delfiles: delfiles, rec: Q('p13recdeleteinput').checked }); p13folderup(999); }
@@ -12394,7 +12270,7 @@
12270
renamefile = p13filetree.dir[checkboxes[i].value].n;
12271
}
12272
}
12397
- setModalContent('xxAddAgent', 'Rename', '<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% value="' + renamefile + '" />');
12273
+ setModalContent('xxAddAgent', "Rename", '<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% value="' + renamefile + '" />');
12274
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p13renamefileEx(3, { oldname: renamefile }));
12275
focusTextBox('p13renameinput');
12276
p13fileNameCheck();
@@ -12402,7 +12278,7 @@
12278
function p13renamefileEx(b, t) { t.newname = Q('p13renameinput').value; files.sendText(t); p13folderup(999); }
12279
function p13fileNameCheck(e) { var x = isFilenameValid(Q('p13renameinput').value); QE('idx_dlgOkButton', x); if ((x == true) && (e != null) && (e.keyCode == 13)) { dialogclose(1); } }
12280
function p13uploadFile() {
12405
- setModalContent('xxAddAgent', 'Upload File', '<input type=file name=files id=p13uploadinput class="form-control" multiple=multiple onchange="updateUploadDialogOk(\'p13uploadinput\')" />');
12281
+ setModalContent('xxAddAgent', "Upload File", '<input type=file name=files id=p13uploadinput class="form-control" multiple=multiple onchange="updateUploadDialogOk(\'p13uploadinput\')" />');
12282
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p13uploadFileEx);
12283
updateUploadDialogOk('p13uploadinput');
12284
}
@@ -12429,7 +12305,7 @@
12305
input = (isWindowsNode(currentNode) ? '' : '/') + p13filetreelocation.join(slash) + slash + p13filetree.dir[checkboxes[i].value].n;
12306
}
12307
}
12432
- setModalContent('xxAddAgent', 'Unzip To Folder', '<input type=text id=p13unzipfolderinput maxlength=64 style=width:100% value="' + dest + '" />');
12308
+ setModalContent('xxAddAgent', "Unzip To Folder", '<input type=text id=p13unzipfolderinput maxlength=64 style=width:100% value="' + dest + '" />');
12309
showModal('xxAddAgentModal', 'idx_dlgOkButton', p13unzipFileEx(3, { action: 'unzip', input: input }));
12310
focusTextBox('p13unzipfolderinput');
12311
}
@@ -12442,7 +12318,7 @@
12318
function p13zipFiles() {
12319
var inputFiles = [], checkboxes = document.getElementsByName('fd');
12320
for (var i = 0; i < checkboxes.length; i++) { if (checkboxes[i].checked) { inputFiles.push(p13filetree.dir[checkboxes[i].value].n); } }
12445
- setModalContent('xxAddAgent', 'Zip Filename', '<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% value="" />');
12321
+ setModalContent('xxAddAgent', "Zip Filename", '<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% value="" />');
12322
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p13zipFilesEx(3, { action: 'zip', path: p13filetreelocation.join('/'), files: inputFiles }));
12323
focusTextBox('p13renameinput');
12324
p13fileNameCheck();
@@ -12465,7 +12341,7 @@
12341
if (p13clipboard.length > 1) { x = format("Confirm move of {0} entries to this location?", p13clipboard.length); } else { x = format("Confirm move of 1 entrie to this location?"); }
12342
}
12343
}
12468
- setModalContent('xxAddAgent', 'Paste', x);
12344
+ setModalContent('xxAddAgent', "Paste", x);
12345
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p13pasteFileEx);
12346
}
12347
function p13pasteFileEx() { files.sendText({ action: (p13clipboardCut == 0 ? 'copy' : 'move'), reqid: 1, scpath: p13clipboardFolder, dspath: p13targetpath, names: p13clipboard }); p13folderup(999); if (p13clipboardCut == 1) { p13clipboard = null, p13clipboardFolder = null, p13clipboardCut = 0; p13updateClipview(); } }
@@ -12536,7 +12412,7 @@
12412
gdownloadFile = { path: decodeURIComponent(x), file: decodeURIComponent(y), size: z, tsize: 0, data: '', state: 0, id: Math.random(), tag: tag }
12413
//console.log('p13downloadFileCancel', gdownloadFile);
12414
files.sendText({ action: 'download', sub: 'start', id: gdownloadFile.id, path: gdownloadFile.path });
12539
- setModalContent('xxAddAgent', 'Download File', '<div>' + gdownloadFile.file + '</div><br /><progress id=d2progressBar style=width:100% value=0 max=' + z + ' />');
12415
+ setModalContent('xxAddAgent', "Download File", '<div>' + gdownloadFile.file + '</div><br /><progress id=d2progressBar style=width:100% value=0 max=' + z + ' />');
12416
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p13downloadFileCancel);
12417
}
12418
@@ -12678,7 +12554,7 @@
12554
p13uploadFileContinue(1, files);
12555
} else {
12556
// Otherwise, prompt for confirmation
12681
- setModalContent('xxAddAgent', 'Upload File', p13uploadFileContinue, format((overWriteCount == 1) ? "Upload will overwrite 1 file. Continue?" : "Upload will overwrite {0} files. Continue?", overWriteCount));
12557
+ setModalContent('xxAddAgent', "Upload File", p13uploadFileContinue, format((overWriteCount == 1) ? "Upload will overwrite 1 file. Continue?" : "Upload will overwrite {0} files. Continue?", overWriteCount));
12558
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p13uploadFileContinue(3, files));
12559
}
12560
}
@@ -12688,7 +12564,7 @@
12564
uploadFile.xpath = p13filetreelocation.join('/');
12565
uploadFile.xfiles = files;
12566
uploadFile.xfilePtr = -1;
12691
- setModalContent('xxAddAgent', 'Upload File', '<div id=p13dfileName>' + "Connecting..." + '</div><br /><progress id=d2progressBar style=width:100% value=0 max=0 />');
12567
+ setModalContent('xxAddAgent', "Upload File", '<div id=p13dfileName>' + "Connecting..." + '</div><br /><progress id=d2progressBar style=width:100% value=0 max=0 />');
12568
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p13uploadFileCancel(10));
12569
p13uploadNextFile();
12570
}
@@ -12904,7 +12780,7 @@
12780
}
12781
x += '</div>';
12782
12907
- setModalContent('xxAddAgent', 'Event Details', x);
12783
+ setModalContent('xxAddAgent', "Event Details", x);
12784
showModal('xxAddAgentModal', 'idx_dlgOkButton');
12785
}
12786
}
@@ -13173,7 +13049,7 @@
13049
}
13050
if (hardware.network && hardware.network.dns) {
13051
x += '<tr><td><div class=style10 style=border-radius:5px;padding:8px>';
13176
- x += addDetailItem("<b>DNS Servers</b>", hardware.network.dns.join(", "));
13052
+ x += addDetailItem('<b>' + "DNS Servers" + '</b>', hardware.network.dns.join(", "));
13053
x += '</div></td></tr>';
13054
}
13055
x += '</table>';
@@ -13635,7 +13511,7 @@
13511
else if (e.altKey == true) { meshserver.send({ action: 'uploadagentcore', nodeids: [consoleNode._id], type: 'clear' }); } // Clear the core
13512
else if (e.ctrlKey == true) { p15uploadCore2(); } // Upload the core from a file
13513
else {
13638
- setModalContent('xxAddAgent', 'Perform Agent Action', addHtmlFormFloating("Action", '<select id=d3coreMode class="form-select me-2"><option value=1>' + "Upload default server core" + '</option><option value=2>' + "Clear the core" + '</option><option value=6>' + "Upload recovery core" + '</option><option value=7>' + "Upload tiny core" + '</option><option value=3>' + "Upload a core file" + '</option><option value=4>' + "Soft disconnect agent" + '</option><option value=5>' + "Hard disconnect agent" + '</option></select>'));
13514
+ setModalContent('xxAddAgent', "Perform Agent Action", addHtmlFormFloating("Action", '<select id=d3coreMode class="form-select me-2"><option value=1>' + "Upload default server core" + '</option><option value=2>' + "Clear the core" + '</option><option value=6>' + "Upload recovery core" + '</option><option value=7>' + "Upload tiny core" + '</option><option value=3>' + "Upload a core file" + '</option><option value=4>' + "Soft disconnect agent" + '</option><option value=5>' + "Hard disconnect agent" + '</option><option value=8>' + "Restart agent service" + '</select>'));
13515
showModal('xxAddAgentModal', 'idx_dlgOkButton', p15uploadCoreEx);
13516
}
13517
}
@@ -13662,6 +13538,9 @@
13538
} else if (Q('d3coreMode').value == 7) {
13539
// Upload a tiny core
13540
meshserver.send({ action: 'uploadagentcore', nodeids: [consoleNode._id], type: 'tiny' });
13541
+ } else if (Q('d3coreMode').value == 8) {
13542
+ // Restart MeshAgent service
13543
+ meshserver.send({ action: 'msg', type: 'console', nodeid: consoleNode._id, value:'service restart' });
13544
}
13545
}
13546
@@ -13672,7 +13551,7 @@
13551
Q('d3auth').value = authCookie;
13552
Q('d3filter').value = '.js';
13553
Q('d3attrib').value = currentNode._id;
13675
- setModalContent('xxAddAgent', 'Upload Mesh Agent Core', '');
13554
+ setModalContent('xxAddAgent', "Upload Mesh Agent Core", '');
13555
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p15uploadCoreEx2);
13556
d3init();
13557
}
@@ -13696,7 +13575,7 @@
13575
function account_viewPreviousLogins() {
13576
if (xxdialogMode) return;
13577
xxdialogTag = 'previousLogins';
13699
- setModalContent('xxAddAgent', 'Previous Logins', 'Loading...');
13578
+ setModalContent('xxAddAgent', "Previous Logins", 'Loading...');
13579
showModal('xxAddAgentModal', 'idx_dlgOkButton');
13580
meshserver.send({ action: 'previousLogins' });
13581
}
@@ -13706,7 +13585,7 @@
13585
var user = (mode == 0) ? userinfo : currentUser;
13586
var x = '<input id=p2file type=file class="form-control" accept="image/*" onchange=account_manageImageEx()><div style=width:100%><canvas id=p2canvas width=256 height=256 style="width:256px;height:256px;margin-left:60px;margin-top:8px;border-radius:16px;background: var(--sub-menu-bg);border: 1px solid #cfcdcd; cursor: pointer;" onclick=account_canvasClick() /></div>';
13587
13709
- setModalContent('xxAddAgent', 'Manage Account Image', x);
13588
+ setModalContent('xxAddAgent', "Manage Account Image", x);
13589
showModal('xxAddAgentModal', 'idx_dlgOkButton', account_manageImageEx2);
13590
13591
var ctx = Q('p2canvas').getContext('2d');
@@ -13753,7 +13632,7 @@
13632
x = '<table style=width:100%><tr><td style=width:56px><img src="images/phone80.png" style=padding:8px>';
13633
x += '<td style=text-align:center><div style=padding:6px>' + "Verified phone number" + '</div><div style=font-size:20px>' + EscapeHtml(userinfo.phone) + '</div>';
13634
x += '<div style=margin:10px><label><input id=d2delPhone type=checkbox class="form-check-input me-2" onclick=account_managePhoneRemoveValidate() />' + "Remove phone number" + '</label></div>';
13756
- setModalContent('xxAddAgent', 'Phone Notifications', x);
13635
+ setModalContent('xxAddAgent', "Phone Notifications", x);
13636
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => account_managePhoneRemove);
13637
account_managePhoneRemoveValidate();
13638
} else {
@@ -13761,7 +13640,7 @@
13640
x += '<td>' + "Enter your SMS capable phone number. Once verified, the number may be used for login verification and other notifications.";
13641
x += '<br /><br /><div style=width:100%;text-align:center>' + "Phone number:" + ' <input type=tel pattern="[0-9]" autocomplete="tel" inputmode="tel" maxlength=18 id=d2phoneinput onKeyUp=account_managePhoneValidate() onkeypress="if (event.key==\'Enter\') account_managePhoneValidate(1)"></div></table>';
13642
xxdialogTag = 'verifyPhone';
13764
- setModalContent('xxAddAgent', 'Phone Notifications', x);
13643
+ setModalContent('xxAddAgent', "Phone Notifications", x);
13644
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => account_managePhoneAdd);
13645
Q('d2phoneinput').focus();
13646
account_managePhoneValidate();
@@ -13783,7 +13662,7 @@
13662
x = '<table style=width:100%><tr><td style=width:56px><img src="images/messaging40.png" style=padding:8px>';
13663
x += '<td style=text-align:center><div style=padding:6px>' + "Verified handle" + '</div><div style=font-weight:bold>' + EscapeHtml(userinfo.msghandle) + '</div>';
13664
x += '<div style=margin:10px><label><input id=d2delPhone type=checkbox class="form-check-input me-2" onclick=account_managePhoneRemoveValidate() />' + "Remove messaging" + '</label></div>';
13786
- setModalContent('xxAddAgent', 'Messaging Notifications', x);
13665
+ setModalContent('xxAddAgent', "Messaging Notifications", x);
13666
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => account_manageMessagingRemove);
13667
account_managePhoneRemoveValidate();
13668
} else {
@@ -13809,7 +13688,7 @@
13688
x += '<div id=d2ntfyinfo style=display:none><br /><a href="' + (serverinfo.userMsgNftyUrl ? serverinfo.userMsgNftyUrl : 'https://ntfy.sh/') + '" target="_ntfy">' + "Free service at ntfy.sh" + '</a></div>';
13689
x += '<div id=d2slackinfo style=display:none><br /><a href=https://api.slack.com/messaging/webhooks target="_slack">' + "Slack Webhook Setup" + '</a></div>';
13690
xxdialogTag = 'VerifyMessaging';
13812
- setModalContent('xxAddAgent', 'Messaging Notifications', x);
13691
+ setModalContent('xxAddAgent', "Messaging Notifications", x);
13692
showModal('xxAddAgentModal', 'idx_dlgOkButton', account_manageMessagingAdd());
13693
Q('d2handleinput').focus();
13694
account_manageMessagingValidate();
@@ -13839,31 +13718,22 @@
13718
function account_manageAuthEmail() {
13719
if (xxdialogMode || ((features & 0x00800000) == 0)) return;
13720
var emailU2Fenabled = ((userinfo.otpekey == 1) && (userinfo.email != null) && (userinfo.emailVerified == true));
13842
- setModalContent('xxAddAgent', 'Email Authentication', "When enabled, on each login, you will be given the option to receive a login token to you email account for added security." + '<br /><br /><label><input id=email2facheck type=checkbox class="form-check-input me-2" ' + (emailU2Fenabled ? 'checked' : '') + '/>' + "Enable email two-factor authentication." + '</label>');
13721
+ setModalContent('xxAddAgent', "Email Authentication", "When enabled, on each login, you will be given the option to receive a login token to you email account for added security." + '<br /><br /><label><input id=email2facheck type=checkbox class="form-check-input me-2" ' + (emailU2Fenabled ? 'checked' : '') + '/>' + "Enable email two-factor authentication." + '</label>');
13722
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
13723
if (emailU2Fenabled != Q('email2facheck').checked) { meshserver.send({ action: 'otpemail', enabled: Q('email2facheck').checked }); }
13724
});
13725
}
13726
13848
- function account_manageAuthDuo() {
13849
- if (xxdialogMode || ((features2 & 0x20000000) == 0)) return;
13850
- var duoU2Fenabled = ((userinfo.otpduo == 1));
13851
- setModalContent('xxAddAgent', 'Duo Authentication', "When enabled, on each login, you will be given the option to use Duo for added security." + '<br /><br /><label><input id=duo2facheck type=checkbox class="form-check-input me-2" ' + (duoU2Fenabled ? 'checked' : '') + '/>' + "Enable Duo two-factor authentication." + '</label>');
13852
- showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
13853
- if (duoU2Fenabled != Q('duo2facheck').checked) { meshserver.send({ action: 'otpduo', enabled: Q('duo2facheck').checked }); }
13854
- });
13855
- }
13856
-
13727
function account_manageAuthDuo() {
13728
if (xxdialogMode || ((features2 & 0x20000000) == 0)) return;
13729
var duoU2Fenabled = ((userinfo.otpduo == 1));
13730
if (duoU2Fenabled == false) {
13861
- setModalContent('xxAddAgent', 'Duo Authentication', "Confirm enabling of Duo 2FA login security. Once enabled you will be given the option to use Duo at login for added security. Click ok to go thru the steps to enable Duo." + '<p style="text-align:center;margin-top:10px"><img src="images/duo-2fa-250.png"></p>');
13731
+ setModalContent('xxAddAgent', "Duo Authentication", "Confirm enabling of Duo 2FA login security. Once enabled you will be given the option to use Duo at login for added security. Click ok to go thru the steps to enable Duo." + '<p style="text-align:center;margin-top:10px"><img src="images/duo-2fa-250.png"></p>');
13732
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
13733
window.location.href = '/add-duo?rurl=' + encodeURIComponentEx(window.location.href) + ((urlargs.key)?('&key=' + urlargs.key):'');
13734
});
13735
} else {
13866
- setModalContent('xxAddAgent', 'Duo Authentication', '<p><label><input id=duo2facheck type=checkbox onclick=account_manageAuthDuoConfirm() />' + ' ' + "Confirm disabling 2FA Duo login security." + '</label></p>' + '<p style="text-align: center"><img src="images/duo-2fa-250-disable.png"></p>');
13736
+ setModalContent('xxAddAgent', "Duo Authentication", '<p><label><input id=duo2facheck type=checkbox onclick=account_manageAuthDuoConfirm() />' + ' ' + "Confirm disabling 2FA Duo login security." + '</label></p>' + '<p style="text-align: center"><img src="images/duo-2fa-250-disable.png"></p>');
13737
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
13738
meshserver.send({ action: 'otpduo', enabled: false });
13739
});
@@ -13884,7 +13754,7 @@
13754
function account_addOtp() {
13755
if (xxdialogMode || (userinfo.otpsecret == 1) || ((features & 4096) == 0)) return;
13756
xxdialogTag = 'otpauth-request';
13887
- setModalContent('xxAddAgent', 'Authenticator App', ('<div id=d2optinfo>' + "Loading..." + '</div>'));
13757
+ setModalContent('xxAddAgent', "Authenticator App", ('<div id=d2optinfo>' + "Loading..." + '</div>'));
13758
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () { meshserver.send({ action: 'otpauth-setup', secret: Q('d2optsecret').attributes.secret.value, token: Q('d2otpauthinput').value }); });
13759
meshserver.send({ action: 'otpauth-request' });
13760
}
@@ -13897,7 +13767,7 @@
13767
13768
function account_removeOtp() {
13769
if (xxdialogMode || (userinfo.otpsecret != 1) || ((features & 4096) == 0)) return;
13900
- setModalContent('xxAddAgent', 'Authenticator App', 'Confirm removal of authenticator application 2-step login?');
13770
+ setModalContent('xxAddAgent', "Authenticator App", "Confirm removal of authenticator application 2-step login?");
13771
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () { meshserver.send({ action: 'otpauth-clear' }); });
13772
}
13773
@@ -13912,7 +13782,7 @@
13782
if (xxdialogMode || ((features2 & 0x40) == 0)) return;
13783
if (userinfo.otpdev == 1) {
13784
// Remove the 2FA device
13915
- setModalContent('xxAddAgent', 'Authentication Device', 'Confirm removal of push authentication device?');
13785
+ setModalContent('xxAddAgent', "Authentication Device", "Confirm removal of push authentication device?");
13786
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () { meshserver.send({ action: 'otpdev-clear' }); });
13787
} else {
13788
// Create a list of all mobile devices
@@ -13920,7 +13790,7 @@
13790
for (var i in nodes) { var node = nodes[i]; if ((node.agent != null) && (node.agent.id == 14) && (node.pmt == 1) && (GetNodeRights(node) == 0xFFFFFFFF)) { mobileDevices.push(node); } }
13791
if (mobileDevices.length == 0) {
13792
// No mobile devices found
13923
- setModalContent('xxAddAgent', 'Authentication Device', 'In order to use push notification authentication, a mobile device must be setup in your account with full rights.');
13793
+ setModalContent('xxAddAgent', "Authentication Device", 'In order to use push notification authentication, a mobile device must be setup in your account with full rights.');
13794
showModal('xxAddAgentModal', 'idx_dlgOkButton');
13795
} else {
13796
// Set a 2FA device
@@ -13929,7 +13799,7 @@
13799
for (var i in mobileDevices) { y += '<option value="' + mobileDevices[i]._id + '">' + EscapeHtml(mobileDevices[i].name) + '</option>'; }
13800
y += '</select>';
13801
x += addHtmlFormFloating("Device", y);
13932
- setModalContent('xxAddAgent', 'Authentication Device', x);
13802
+ setModalContent('xxAddAgent', "Authentication Device", x);
13803
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () { meshserver.send({ action: 'otpdev-set', nodeid: Q('d2devselect').value }); });
13804
}
13805
}
@@ -13952,7 +13822,7 @@
13822
x += addHtmlFormFloating("Key Name", '<input id=dp1keyname class="form-control" maxlength=20 autocomplete=off placeholder="' + "MyKey" + '" onkeyup=account_addhkeyValidate(event,1) />');
13823
x += addHtmlFormFloating("YubiKey™ OTP", '<input id=dp1key class="form-control" autocomplete=off onkeyup=account_addhkeyValidate(event,2) />');
13824
}
13955
- setModalContent('xxAddAgent', 'Add Security Key', x);
13825
+ setModalContent('xxAddAgent', "Add Security Key", x);
13826
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => account_addhkeyEx(3, type));
13827
Q('dp1keyname').focus();
13828
}
@@ -13967,7 +13837,7 @@
13837
if (type == 2) {
13838
meshserver.send({ action: 'otp-hkey-yubikey-add', name: name, otp: Q('dp1key').value });
13839
xxdialogTag = 'otpauth-hardware-manage';
13970
- setModalContent('xxAddAgent', 'Add Security Key', '<br />' + "Checking..." + '<br /><br /><br />');
13840
+ setModalContent('xxAddAgent', "Add Security Key", '<br />' + "Checking..." + '<br /><br /><br />');
13841
showModal('xxAddAgentModal', 'idx_dlgOkButton');
13842
} else if (type == 3) {
13843
meshserver.send({ action: 'webauthn-startregister', name: name });
@@ -14003,7 +13873,7 @@
13873
y += '<br /><a rel="noreferrer noopener" target="_blank" href="translator.htm">' + "Help translate MeshCentral" + '</a>';
13874
}
13875
14006
- setModalContent('xxAddAgent', 'Localization Settings', y);
13876
+ setModalContent('xxAddAgent', "Localization Settings", y);
13877
showModal('xxAddAgentModal', 'idx_dlgOkButton', account_showLocalizationSettingsEx);
13878
return false;
13879
}
@@ -14036,12 +13906,12 @@
13906
var options = { 0: "Unlimited", 1: "1 minute", 5: "5 minutes", 10: "10 minutes", 15: "15 minutes", 30: "30 minutes", 45: "45 minutes", 60: "60 minutes", 120: "2 hours", 240: "4 hours", 480: "8 hours", 720: "12 hours", 960: "16 hours", 1440: "24 hours", 2880: "2 days", 5760: "4 days", 10080: "7 days" }
13907
for (var i in options) { y += '<option value=' + i + '>' + options[i] + '</option>'; }
13908
x += '<div class="form-floating mb-3">';
14039
- x += '<input type=text class="boxsize form-control" id=d2tokenName maxlength="100" placeholder="Token Name" onchange=account_createLoginTokenValidate() onkeyup=account_createLoginTokenValidate()>';
14040
- x += '<label for=d2tokenName>Token Name</label>';
13909
+ x += '<input type=text class="boxsize form-control" id=d2tokenName maxlength="100" placeholder="' + "Token Name" + '" onchange=account_createLoginTokenValidate() onkeyup=account_createLoginTokenValidate()>';
13910
+ x += '<label for=d2tokenName>' + "Token Name" + '</label>';
13911
x += '</div>';
14042
- x += addHtmlFormFloating('Expire Time', '<select class="boxsize form-select" id=d2tokenExpire>' + y + '</select>')
13912
+ x += addHtmlFormFloating("Expire Time", '<select class="boxsize form-select" id=d2tokenExpire>' + y + '</select>')
13913
14044
- setModalContent('xxAddAgent', 'Create Login Token', x);
13914
+ setModalContent('xxAddAgent', "Create Login Token", x);
13915
showModal('xxAddAgentModal', 'idx_dlgOkButton', account_createLoginTokenEx);
13916
13917
QE('idx_dlgOkButton', false);
@@ -14065,7 +13935,7 @@
13935
x += '<div class="form-check"><label><input id=p2notifyIntelDeviceDisconnect class="form-check-input me-2" type=checkbox />' + "Device disconnections" + '</label></div>';
13936
x += '<div class="form-check"><label><input id=p2notifyIntelAmtKvmActions class="form-check-input me-2" type=checkbox />' + "Intel® AMT desktop and serial events" + '</label></div>';
13937
14068
- setModalContent('xxAddAgent', 'Notification Settings', x);
13938
+ setModalContent('xxAddAgent', "Notification Settings", x);
13939
showModal('xxAddAgentModal', 'idx_dlgOkButton', account_showAccountNotifySettingsEx);
13940
13941
var n = getstore('notifications', 0);
@@ -14090,7 +13960,7 @@
13960
function account_showVerifyEmail() {
13961
if (xxdialogMode || (userinfo.emailVerified == true) || (serverinfo.emailcheck != true)) return false;
13962
var x = "Click ok to send a verification mail to:" + '<br /><div style=padding:8px><b>' + EscapeHtml(userinfo.email) + '</b></div>' + "Please wait a few minute to receive the verification.";
14093
- setModalContent('xxAddAgent', 'Email Verification', x);
13963
+ setModalContent('xxAddAgent', "Email Verification", x);
13964
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => account_showVerifyEmailEx);
13965
return false;
13966
}
@@ -14104,7 +13974,7 @@
13974
var x = "Change your account email address here." + '<br /><br />';
13975
x += '<div class="form-floating"><input id=dp2email class="form-control" maxlength=256 onchange=account_validateEmail() onkeyup=account_validateEmail(event) placeholder=Email /> <label for=dp2email>Email</label></div>';
13976
14107
- setModalContent('xxAddAgent', 'Email Address Change', x);
13977
+ setModalContent('xxAddAgent', "Email Address Change", x);
13978
showModal('xxAddAgentModal', 'idx_dlgOkButton', account_changeEmail);
13979
13980
if (userinfo.email != null) { Q('dp2email').value = userinfo.email; }
@@ -14140,7 +14010,7 @@
14010
x += '</div>';
14011
x += '</form>';
14012
14143
- setModalContent('xxAddAgent', 'Delete Account', x);
14013
+ setModalContent('xxAddAgent', "Delete Account", x);
14014
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
14015
dialogclose(1);
14016
});
@@ -14189,7 +14059,7 @@
14059
//x += '<input id=account_dlgOkButton type=submit value=OK style="float:right;width:80px" onclick=dialogclose(1)>';
14060
//x += '</div><br /></form>';
14061
14192
- setModalContent('xxAddAgent', 'Change Password', x);
14062
+ setModalContent('xxAddAgent', "Change Password", x);
14063
showModal('xxAddAgentModal', 'idx_dlgOkButton', account_showChangePasswordEx);
14064
14065
Q('apassword0').focus();
@@ -14208,29 +14078,29 @@
14078
function account_showThemesSwitcher() {
14079
if (xxdialogMode) return false;
14080
var themes = [
14211
- { value: "default", label: "Default" },
14212
- { value: "cerulean", label: "Cerulean" },
14213
- { value: "cosmo", label: "Cosmo" },
14214
- { value: "cyborg", label: "Cyborg" },
14215
- { value: "darkly", label: "Darkly" },
14216
- { value: "flatly", label: "Flatly" },
14217
- { value: "journal", label: "Journal" },
14218
- { value: "litera", label: "Litera" },
14219
- { value: "lumen", label: "Lumen" },
14220
- { value: "lux", label: "Lux" },
14221
- { value: "materia", label: "Materia" },
14222
- { value: "minty", label: "Minty" },
14223
- { value: "morph", label: "Morph" },
14224
- { value: "pulse", label: "Pulse" },
14225
- { value: "sandstone", label: "Sandstone" },
14226
- { value: "simplex", label: "Simplex" },
14227
- { value: "sketchy", label: "Sketchy" },
14228
- { value: "solar", label: "Solar" },
14229
- { value: "spacelab", label: "Spacelab" },
14230
- { value: "united", label: "United" },
14231
- { value: "vapor", label: "Vapor" },
14232
- { value: "yeti", label: "Yeti" },
14233
- { value: "zephyr", label: "Zephyr" }
14081
+ { value: 'default', label: "Default" },
14082
+ { value: 'cerulean', label: "Cerulean" },
14083
+ { value: 'cosmo', label: "Cosmo" },
14084
+ { value: 'cyborg', label: "Cyborg" },
14085
+ { value: 'darkly', label: "Darkly" },
14086
+ { value: 'flatly', label: "Flatly" },
14087
+ { value: 'journal', label: "Journal" },
14088
+ { value: 'litera', label: "Litera" },
14089
+ { value: 'lumen', label: "Lumen" },
14090
+ { value: 'lux', label: "Lux" },
14091
+ { value: 'materia', label: "Materia" },
14092
+ { value: 'minty', label: "Minty" },
14093
+ { value: 'morph', label: "Morph" },
14094
+ { value: 'pulse', label: "Pulse" },
14095
+ { value: 'sandstone', label: "Sandstone" },
14096
+ { value: 'simplex', label: "Simplex" },
14097
+ { value: 'sketchy', label: "Sketchy" },
14098
+ { value: 'solar', label: "Solar" },
14099
+ { value: 'spacelab', label: "Spacelab" },
14100
+ { value: 'united', label: "United" },
14101
+ { value: 'vapor', label: "Vapor" },
14102
+ { value: 'yeti', label: "Yeti" },
14103
+ { value: 'zephyr', label: "Zephyr" }
14104
];
14105
14106
var currentTheme = getstore('theme') || 'default';
@@ -14238,11 +14108,11 @@
14108
14109
// Create a set of themes already in "Recent Themes" to avoid duplicates
14110
var recentThemesSet = new Set(lastThemes);
14241
- var x = '<div class="form-group"><label for="theme-switcher">Select a theme:</label>';
14111
+ var x = '<div class="form-group"><label for="theme-switcher">' + "Select a theme" + ':</label>';
14112
x += '<select id="theme-switcher" class="form-select" onchange="account_switchThemeEx()">';
14113
// Add "Recent Themes" optgroup
14114
if (lastThemes.length > 0) {
14245
- x += '<optgroup label="Recent Themes">';
14115
+ x += '<optgroup label="' + "Recent Themes" + '"">';
14116
lastThemes.forEach(function (theme) {
14117
var selected = theme === currentTheme ? ' selected' : '';
14118
x += `<option value="${theme}"${selected}>${theme.charAt(0).toUpperCase() + theme.slice(1)}</option>`;
@@ -14250,7 +14120,7 @@
14120
x += '</optgroup>';
14121
}
14122
// Add "All Themes" optgroup, excluding duplicates
14253
- x += '<optgroup label="All Themes">';
14123
+ x += '<optgroup label="' + "All Themes" + '">';
14124
themes.forEach(function (theme) {
14125
if (!recentThemesSet.has(theme.value)) {
14126
var selected = theme.value === currentTheme ? ' selected' : '';
@@ -14260,16 +14130,16 @@
14130
x += '</optgroup>';
14131
x += '</select></div>';
14132
14263
- setModalContent('xxAddAgent', 'Switch Theme', x);
14133
+ setModalContent('xxAddAgent', "Switch theme", x);
14134
showModal('xxAddAgentModal', 'idx_dlgOkButton');
14135
return false;
14136
}
14137
14138
function account_switchThemeEx() {
14269
- var themeSwitcher = document.getElementById("theme-switcher");
14139
+ var themeSwitcher = document.getElementById('theme-switcher');
14140
const selectedTheme = themeSwitcher.value;
14141
const safeTheme = encodeURIComponent(selectedTheme);
14272
- var themeStylesheet = document.getElementById("theme-stylesheet");
14142
+ var themeStylesheet = document.getElementById('theme-stylesheet');
14143
var newThemeStylesheet = `styles/themes/${safeTheme}/bootstrap.min.css`;
14144
themeStylesheet.href = newThemeStylesheet;
14145
// Save selected theme
@@ -14291,21 +14161,21 @@
14161
function account_createMesh() {
14162
// Check if we are disallowed from creating a device group
14163
if ((userinfo.siteadmin != 0xFFFFFFFF) && ((userinfo.siteadmin & 64) != 0)) {
14294
- setModalContent('xxAddAgent', 'New Device Group', 'This account does not have the rights to create a new device group.');
14164
+ setModalContent('xxAddAgent', "New Device Group", 'This account does not have the rights to create a new device group.');
14165
showModal('xxAddAgentModal', 'idx_dlgOkButton');
14166
return false;
14167
}
14168
14169
// Remind the user to verify the email address
14170
if ((userinfo.emailVerified !== true) && (serverinfo.emailcheck == true) && (userinfo.siteadmin != 0xFFFFFFFF)) {
14301
- setModalContent('xxAddAgent', 'Account Security', 'Unable to access this feature until an email address is verified. This is required for password recovery. Go to the "My Account" tab to change and verify an email address.');
14171
+ setModalContent('xxAddAgent', "Account Security", 'Unable to access this feature until a email address is verified. This is required for password recovery. Go to the "My Account" tab to change and verify an email address.');
14172
showModal('xxAddAgentModal', 'idx_dlgOkButton');
14173
return false;
14174
}
14175
14176
// Remind the user to add two-factor authentication
14177
if ((features & 0x00040000) && (count2factoraAuths() == 0)) {
14308
- setModalContent('xxAddAgent', 'Account Security', 'Unable to access this feature until two-factor authentication is enabled. This is required for extra security. Go to the "My Account" tab and look at the "Account Security" section.');
14178
+ setModalContent('xxAddAgent', "Account Security", 'Unable to access this feature until two-factor authentication is enabled. This is required for extra security. Go to the "My Account" tab and look at the "Account Security" section.');
14179
showModal('xxAddAgentModal', 'idx_dlgOkButton');
14180
return false;
14181
}
@@ -14322,7 +14192,7 @@
14192
}
14193
14194
// Prepare the modal content
14325
- var x = "Create a new device group using the options below" + '<br /><br />';
14195
+ var x = "Create a new device group using the options below." + '<br /><br />';
14196
var localGroupType = '';
14197
14198
x += addHtmlFormFloating("Name", '<input id=dp2meshname maxlength=128 placeholder="Name" class=form-control onchange=account_validateMeshCreate() onkeyup=account_validateMeshCreate(event,1) />');
@@ -14350,7 +14220,7 @@
14220
x += '</div>';
14221
14222
// Inject content into the modal
14353
- setModalContent('xxAddAgent', 'New Device Group', x);
14223
+ setModalContent('xxAddAgent', "New Device Group", x);
14224
14225
// Show the modal
14226
showModal('xxAddAgentModal', 'idx_dlgOkButton', account_createMeshEx);
@@ -14491,7 +14361,7 @@
14361
function updateLoginTokens() {
14362
var x = '', count = 1;
14363
if ((loginTokens != null) && (loginTokens.length > 0)) {
14494
- x += '<p><strong>' + "Active Login Tokens" + '</strong> - <span id="p2createMeshLink1"> <button class="btn btn-primary btn-sm" onclick="return account_createLoginToken()"><i class="fa-fw fa-solid fa-plus-circle"></i> ' + "New" + '</button></span></p>';
14364
+ x += '<p><strong>' + "Active Login Tokens" + '</strong> - <span id="p2createMeshLink1"> <button class="btn btn-primary btn-sm" onclick="return account_createLoginToken()"><i class="fa-fw fa-solid fa-circle-plus"></i> ' + "New" + '</button></span></p>';
14365
x += '<div style=margin-left:40px><table class="table table-hover table-striped"><tbody><tr class="table-active"><th scope=col style=text-align:left;width:430px>' + "Name" + '</th><th scope=col style=text-align:left>' + "Username" + '</th></tr>';
14366
for (var i = 0; i < loginTokens.length; i++) {
14367
var ltoken = loginTokens[i];
@@ -14517,7 +14387,7 @@
14387
var x = "Confirm removal of this login token?" + '<br /><br />';
14388
x += addHtmlValue("Name", EscapeHtml(token.name));
14389
x += addHtmlValue("Username", EscapeHtml(token.tokenUser));
14520
- setModalContent('xxAddAgent', 'Remove Login Token', x);
14390
+ setModalContent('xxAddAgent', "Remove Login Token", x);
14391
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => function (b, tokenUser) { meshserver.send({ action: 'loginTokens', remove: [tokenUser] }); });
14392
}
14393
@@ -14536,14 +14406,14 @@
14406
x += addHtmlValue("Credentials", '<a href="https://console.developers.google.com/apis/api/drive.googleapis.com/credentials" rel="noreferrer noopener" target="_blank">' + "Google Drive Console" + '</a>');
14407
x += addHtmlFormFloating("Client ID", '<input id=gdclientid class="form-control" placeholder="xxxxxxxx.apps.googleusercontent.com" onkeyup=server_setupGoogleDriveBackupCheck1()></input>');
14408
x += addHtmlFormFloating("Client Secret", '<input id=gdclientsecret class="form-control" onkeyup=server_setupGoogleDriveBackupCheck1()></input>');
14539
- setModalContent('xxAddAgent', 'Google Drive Backup', x);
14409
+ setModalContent('xxAddAgent', "Google Drive Backup", x);
14410
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => server_setupGoogleDriveBackupEx(3, 'gd1'));
14411
Q('gdclientid').focus();
14412
QE('idx_dlgOkButton', false);
14413
} else if (gd.state == 3) {
14414
var x = '<img style=float:right src="images/googledrive-48.png" /><div>' + "Google Drive backup is currently active." + '</div>';
14415
x += '<br /><label><input id=gdcheck type=checkbox class="form-check-input me-2" onchange=server_setupGoogleDriveBackupCheck2() />' + "Remove Configuration" + '</label>';
14546
- setModalContent('xxAddAgent', 'Google Drive Backup', x);
14416
+ setModalContent('xxAddAgent', "Google Drive Backup", x);
14417
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => server_setupGoogleDriveBackupEx(3, 'gd0'));
14418
QE('idx_dlgOkButton', false);
14419
}
@@ -14561,28 +14431,26 @@
14431
14432
function server_showRestoreDlg() {
14433
if (xxdialogMode) return false;
14564
- var x = "Restore the server using a backup, <span style=color:red>this will delete the existing server data</span>. Only do this if you know what you are doing." + '<br /><br />';
14434
+ var x = "Restore the server using a backup," + ' <span style=color:red>' + "this will delete the existing server data." + '</span> ' + "Only do this if you know what you are doing." + '<br /><br />';
14435
x += '<form action="/restoreserver.ashx' + ((urlargs.key) ? ('?key=' + urlargs.key) : '') + '" enctype="multipart/form-data" method="post"><div>';
14436
x += '<input type=hidden name=auth value=' + authCookie + '>';
14567
- x += '<input id=account_dlgFileInput type=file name=datafile class="form-control" accept=".zip,application/octet-stream,application/zip,application/x-zip,application/x-zip-compressed" onchange=account_validateServerRestore()><br /><br />';
14568
- x += '<input id=account_dlgCancelButton type=button value=' + "Cancel" + ' style=float:right;width:80px;margin-left:5px>';
14569
- x += '<input id=account_dlgOkButton type=submit value=' + "OK" + ' style=float:right;width:80px onclick=dialogclose(1)>';
14570
- x += '</div><br /><br /></form>';
14437
+ x += '<input id=account_dlgFileInput type=file name=datafile class="form-control" accept=".zip,application/octet-stream,application/zip,application/x-zip,application/x-zip-compressed" onchange=account_validateServerRestore()>';
14438
+ x += '</div></form>';
14439
14572
- setModalContent('xxAddAgent', 'Restore Server', x);
14440
+ setModalContent('xxAddAgent', "Restore Server", x);
14441
showModal('xxAddAgentModal', 'idx_dlgOkButton');
14442
account_validateServerRestore();
14443
return false;
14444
}
14445
14446
function account_validateServerRestore() {
14579
- QE('account_dlgOkButton', Q('account_dlgFileInput').files.length == 1);
14447
+ QE('idx_dlgOkButton', Q('account_dlgFileInput').files.length == 1);
14448
}
14449
14450
function server_showVersionDlg() {
14451
if (xxdialogMode) return false;
14452
xxdialogMode = 2; xxdialogTag = 'MeshCentralServerUpdate';
14585
- setModalContent('xxAddAgent', 'MeshCentral Version', 'Loading...');
14453
+ setModalContent('xxAddAgent', "MeshCentral Version", "Loading...");
14454
showModal('xxAddAgentModal', 'idx_dlgOkButton');
14455
meshserver.send({ action: 'serverversion' });
14456
return false;
@@ -14604,7 +14472,7 @@
14472
function server_showErrorsDlg() {
14473
if (xxdialogMode) return false;
14474
xxdialogMode = 2; xxdialogTag = 'MeshCentralServerErrors';
14607
- setModalContent('xxAddAgent', 'Server Errors', 'Loading...');
14475
+ setModalContent('xxAddAgent', "Server Errors", "Loading...");
14476
meshserver.send({ action: 'servererrors' });
14477
return false;
14478
}
@@ -14759,7 +14627,7 @@
14627
if (meshrights & 1) { x += '<br><input type=button class="btn btn-primary btn-sm mb-1" value=' + "Notes" + ' title="' + "View notes about this device group" + '" onclick=showNotes(false,"' + encodeURIComponentEx(currentMesh._id) + '") />'; }
14628
x += '<br style=clear:both><br>';
14629
if (meshrights & 2) {
14762
- x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick="return p20showAddMeshUserDialog()"><i class="fa-solid fa-plus-circle"></i> ' + "Add Users" + '</button>';
14630
+ x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick="return p20showAddMeshUserDialog()"><i class="fa-solid fa-circle-plus"></i> ' + "Add Users" + '</button>';
14631
if (usergroups != null) {
14632
var userGroupCount = 0, newUserGroup = false;
14633
for (var i in usergroups) {
@@ -14767,7 +14635,7 @@
14635
userGroupCount++;
14636
if ((currentMesh.links == null) || (currentMesh.links[i] == null)) { newUserGroup = true; }
14637
}
14770
- if ((userGroupCount > 0) && (newUserGroup)) { x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick="return p20showAddMeshUserDialog(2)"><i class="fa-solid fa-plus-circle"></i> ' + "Add User Group" + '</button>'; }
14638
+ if ((userGroupCount > 0) && (newUserGroup)) { x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick="return p20showAddMeshUserDialog(2)"><i class="fa-solid fa-circle-plus"></i> ' + "Add User Group" + '</button>'; }
14639
}
14640
}
14641
@@ -14780,15 +14648,15 @@
14648
}
14649
*/
14650
if ((currentMesh.amt != null) && (currentMesh.amt.type > 0)) { // CCM Deactivate, CCM or ACM activation
14783
- x += '<button class="btn btn-primary btn-sm me-2" title="' + "Perform Intel® AMT activation and configuration." + '" onclick=\'return showAmtSetup("' + currentMesh._id + '")\'><i class="fa-solid fa-gear"></i> ' + "Setup" + '</button>';
14651
+ x += '<button class="btn btn-primary btn-sm me-2 mb-1" title="' + "Perform Intel® AMT activation and configuration." + '" onclick=\'return showAmtSetup("' + currentMesh._id + '")\'><i class="fa-solid fa-gear"></i> ' + "Setup" + '</button>';
14652
}
14653
}
14654
if ((currentMesh.mtype == 2) && ((userinfo.siteadmin == 0xFFFFFFFF) || ((userinfo.siteadmin & 4096) == 0))) {
14787
- x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick=\'return addAgentToMesh("' + currentMesh._id + '")\' title="' + "Add a new computer to this device group by installing the mesh agent." + '"><i class="fa-solid fa-plus-circle"></i> ' + "Add Agent" + '</button>';
14655
+ x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick=\'return addAgentToMesh("' + currentMesh._id + '")\' title="' + "Add a new computer to this device group by installing the mesh agent." + '"><i class="fa-solid fa-circle-plus"></i> ' + "Add Agent" + '</button>';
14656
x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick=\'return inviteAgentToMesh("' + currentMesh._id + '")\' title="' + "Invite someone to install the mesh agent on this device group." + '"><i class="fa-solid fa-user-plus"></i> ' + "Invite" + '</button>';
14657
}
14658
if ((currentMesh.mtype == 3) && ((userinfo.siteadmin == 0xFFFFFFFF) || ((userinfo.siteadmin & 4096) == 0))) {
14791
- x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick=\'return addLocalDeviceToMesh("' + currentMesh._id + '")\' title="' + "Add device located on the local network." + '"><i class="fa-solid fa-plus-circle"></i> ' + "Add Device" + '</button>';
14659
+ x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick=\'return addLocalDeviceToMesh("' + currentMesh._id + '")\' title="' + "Add device located on the local network." + '"><i class="fa-solid fa-circle-plus"></i> ' + "Add Device" + '</button>';
14660
}
14661
if (currentMesh.amt && (currentMesh.amt.type > 2) && ((userinfo.siteadmin == 0xFFFFFFFF) || ((userinfo.siteadmin & 4096) == 0))) { // ACM activation or Full Automatic
14662
x += '<button class="btn btn-primary btn-sm me-2 mb-1" title="' + "Switch Intel AMT to Admin Control Mode (ACM)." + '" onclick=\'return showAmtAcmSetup()\'><i class="fa-solid fa-circle-arrow-down"></i> ' + "ACM" + '</button>';
@@ -14927,7 +14795,7 @@
14795
function meshImportDeviceList() {
14796
if (xxdialogMode) return;
14797
var x = "Import a list of local Intel® AMT devices in MeshCommander JSON format." + '<br /><br /><input type=file id=d4importFile class="form-control" accept=".json" onchange=meshImportDeviceListValidate() />';
14930
- setModalContent('xxAddAgent', 'Import Intel® AMT Devices', x);
14798
+ setModalContent('xxAddAgent', "Import Intel® AMT Devices", x);
14799
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => meshImportDeviceListEx());
14800
QE('idx_dlgOkButton', false);
14801
}
@@ -14943,7 +14811,7 @@
14811
try {
14812
j = JSON.parse(r.target.result);
14813
} catch (ex) {
14946
- setModalContent('xxAddAgent', 'Import Intel® AMT Devices', format("Invalid JSON file: {0}.", ex));
14814
+ setModalContent('xxAddAgent', "Import Intel® AMT Devices", format("Invalid JSON file: {0}.", ex));
14815
showModal('xxAddAgentModal', 'idx_dlgOkButton');
14816
return;
14817
}
@@ -14962,10 +14830,10 @@
14830
}
14831
}
14832
if (ok == 0) {
14965
- setModalContent('xxAddAgent', 'User Account Import', 'Unable to import any device.');
14833
+ setModalContent('xxAddAgent', "User Account Import", 'Unable to import any device.');
14834
}
14835
} else {
14968
- setModalContent('xxAddAgent', 'Import Intel® AMT Devices', 'Invalid JSON file format.');
14836
+ setModalContent('xxAddAgent', "Import Intel® AMT Devices", 'Invalid JSON file format.');
14837
}
14838
showModal('xxAddAgentModal', 'idx_dlgOkButton');
14839
};
@@ -14976,10 +14844,10 @@
14844
if (xxdialogMode) return;
14845
var x = '', acmoption = '';
14846
if ((features & 0x100000) != 0) { acmoption = '<option value=3>' + "Simple Admin Control Mode (ACM)" + '</option>'; }
14979
- x += addHtmlFormFloating('Type', '<select id=dp20amtpolicy class="form-select" onchange=p20editMeshAmtChange()><option value=0>' + "No Policy" + '</option><option value=1>' + "Deactivate" + '</option><option value=2>' + "Simple Client Control Mode (CCM)" + '</option>' + acmoption + '<option value=4>' + "Fully Automatic" + '</option></select>')
14847
+ x += addHtmlFormFloating("Type", '<select id=dp20amtpolicy class="form-select" onchange=p20editMeshAmtChange()><option value=0>' + "No Policy" + '</option><option value=1>' + "Deactivate" + '</option><option value=2>' + "Simple Client Control Mode (CCM)" + '</option>' + acmoption + '<option value=4>' + "Fully Automatic" + '</option></select>')
14848
x += '<div id=dp20amtpolicydiv></div>';
14849
14982
- setModalContent('xxAddAgent', 'Intel® AMT Policy', x);
14850
+ setModalContent('xxAddAgent', "Intel® AMT Policy", x);
14851
showModal('xxAddAgentModal', 'idx_dlgOkButton', p20editMeshAmtEx);
14852
14853
if (currentMesh.amt) { Q('dp20amtpolicy').value = currentMesh.amt.type; }
@@ -15002,22 +14870,22 @@
14870
var ptype = Q('dp20amtpolicy').value, x = '';
14871
if ((ptype == 2) || (ptype == 3)) {
14872
var keeppass = ((currentMesh.amt != null) && (currentMesh.amt.password == 1)) ? '<option value=1 selected>' + "Keep existing password" + '</option>' : '';
15005
- x += addHtmlFormFloating('Password', '<select id=dp20amtpass class="form-select" onchange=dp20amtValidatePolicy() onkeyup=dp20amtValidatePolicy()><option value=0>' + "Randomize password" + '</option>' + keeppass + '<option value=2>' + "Select new password" + '</option></select>')
14873
+ x += addHtmlFormFloating("Password", '<select id=dp20amtpass class="form-select" onchange=dp20amtValidatePolicy() onkeyup=dp20amtValidatePolicy()><option value=0>' + "Randomize password" + '</option>' + keeppass + '<option value=2>' + "Select new password" + '</option></select>')
14874
x += '<div id=dp20amtpassdiv style=display:none>';
15007
- x += addHtmlFormFloating('New password*', '<input id=dp20amtpolicypass type=password class="form-control" maxlength=32 placeholder="New password*" onchange=dp20amtValidatePolicy() onkeyup=dp20amtValidatePolicy() autocomplete=off />');
15008
- x += addHtmlFormFloating('New password*', '<input id=dp20amtpolicypass2 type=password class="form-control" maxlength=32 placeholder="New password*" onchange=dp20amtValidatePolicy() onkeyup=dp20amtValidatePolicy() autocomplete=off />');
14875
+ x += addHtmlFormFloating("New password*", '<input id=dp20amtpolicypass type=password class="form-control" maxlength=32 placeholder="New password*" onchange=dp20amtValidatePolicy() onkeyup=dp20amtValidatePolicy() autocomplete=off />');
14876
+ x += addHtmlFormFloating("New password*", '<input id=dp20amtpolicypass2 type=password class="form-control" maxlength=32 placeholder="New password*" onchange=dp20amtValidatePolicy() onkeyup=dp20amtValidatePolicy() autocomplete=off />');
14877
x += '</div>';
15010
- if (ptype == 3) { x += addHtmlFormFloating('CCM mode', '<select id=dp20amtccmmode class="form-select" onchange=dp20amtValidatePolicy() onkeyup=dp20amtValidatePolicy()><option value=0>' + "Don't change, keep CCM if setup" + '</option><option value=1>' + "Deactivate CCM if setup" + '</option><option value=2>' + "Activate to CCM, if ACM fails" + '</option></select>'); }
14878
+ if (ptype == 3) { x += addHtmlFormFloating("CCM mode", '<select id=dp20amtccmmode class="form-select" onchange=dp20amtValidatePolicy() onkeyup=dp20amtValidatePolicy()><option value=0>' + "Don't change, keep CCM if setup" + '</option><option value=1>' + "Deactivate CCM if setup" + '</option><option value=2>' + "Activate to CCM, if ACM fails" + '</option></select>'); }
14879
x += '<div id=dp20amtbadpassdiv style=display:none>';
15012
- x += addHtmlFormFloating('Unknown password', '<select id=dp20amtbadpass class="form-select"><option value=0>' + "Do nothing" + '</option><option value=1>' + "If in CCM, reactivate Intel® AMT" + '</option></select>');
14880
+ x += addHtmlFormFloating("Unknown password", '<select id=dp20amtbadpass class="form-select"><option value=0>' + "Do nothing" + '</option><option value=1>' + "If in CCM, reactivate Intel® AMT" + '</option></select>');
14881
x += '</div>';
15014
- if ((features & 0x400) == 0) { x += addHtmlFormFloating('CIRA setup', '<select id=dp20amtcira class="form-select" title="Client Initiated Remote Access"><option value=0>' + "Do nothing" + '</option><option value=1>' + "Don't connect to server" + '</option><option value=2>' + "Connect to server" + '</option></select>'); }
14882
+ if ((features & 0x400) == 0) { x += addHtmlFormFloating("CIRA setup", '<select id=dp20amtcira class="form-select" title="' + "Client Initiated Remote Access" + '"><option value=0>' + "Do nothing" + '</option><option value=1>' + "Don't connect to server" + '</option><option value=2>' + "Connect to server" + '</option></select>'); }
14883
x += '<span id=dp10passNotify style="font-size:10px"> ' + "* 8 characters, 1 upper, 1 lower, 1 numeric, 1 non-alpha numeric." + '</span>';
14884
if ((currentMesh.mtype == 2) && (ptype == 2)) { x += '<span style="font-size:10px"> ' + "This policy will not impact devices with Intel® AMT in ACM mode." + '</span>'; }
14885
}
15018
- if (ptype == 0) { x = '<div class="row"><div class="col-2"><i class="fa-solid fa-times-circle text-danger" style="padding-right:8px; font-size:60px;"></i></div><div class="col-10">When this policy is selected, Intel® AMT is not managed by this server. Intel AMT can still be used by manually activating and configuring it.</div></div>'; }
15019
- if (ptype == 1) { x = '<div class="row"><div class="col-2"><i class="fa-solid fa-times-circle text-danger" style="font-size:60px; padding-right:8px; color:green;"></i></div><div class="col-10">When this policy is selected, any Intel® AMT in Client Control Mode (CCM) will be deactivated. Other devices will have CIRA cleared and can still be managed manually.</div></div>'; }
15020
- if (ptype == 4) { x = '<div class="row"><div class="col-2"><i class="fa-solid fa-check-circle text-success" style="font-size:60px; padding-right:8px; color:blue;"></i></div><div class="col-10">This is the recommended policy. Intel® AMT activation and management is completely automated and the server will attempt to make best possible use of hardware management.</div></div>'; }
14886
+ if (ptype == 0) { x = '<div class="row"><div class="col-2"><i class="fa-solid fa-times-circle text-danger" style="padding-right:8px; font-size:60px;"></i></div><div class="col-10">' + "When this policy is selected, Intel® AMT is not managed by this server. Intel AMT can still be used by manually activating and configuring it." + '</div></div>'; }
14887
+ if (ptype == 1) { x = '<div class="row"><div class="col-2"><i class="fa-solid fa-times-circle text-danger" style="font-size:60px; padding-right:8px; color:green;"></i></div><div class="col-10">' + "When this policy is selected, any Intel® AMT in Client Control Mode (CCM) will be deactivated. Other devices will have CIRA cleared and can still be managed manually." + '</div></div>'; }
14888
+ if (ptype == 4) { x = '<div class="row"><div class="col-2"><i class="fa-solid fa-check-circle text-success" style="font-size:60px; padding-right:8px; color:blue;"></i></div><div class="col-10">' + "This is the recommended policy. Intel® AMT activation and management is completely automated and the server will attempt to make best possible use of hardware management." + '</div></div>'; }
14889
QH('dp20amtpolicydiv', x);
14890
setTimeout(dp20amtValidatePolicy, 500);
14891
}
@@ -15058,7 +14926,7 @@
14926
if (xxdialogMode) return false;
14927
var x = format("Are you sure you want to delete group {0}? Deleting the device group will also delete all information about devices within this group.", EscapeHtml(currentMesh.name)) + '<br /><br />';
14928
x += '<label class=form-check-label><input id=p20check type=checkbox class="form-check-input m-2" onchange=p20validateDeleteMeshDialog() />' + "Confirm" + '</label>';
15061
- setModalContent('xxAddAgent', 'Delete Group', x);
14929
+ setModalContent('xxAddAgent', "Delete Group", x);
14930
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
14931
p20showDeleteMeshDialogEx(3, '');
14932
});
@@ -15085,13 +14953,13 @@
14953
if (relayDevices.length == 0) {
14954
// Relay relay devices available
14955
x = "No relay devices available.";
15088
- setModalContent('xxAddAgent', 'Edit Device Group', "No relay devices available.");
14956
+ setModalContent('xxAddAgent', "Edit Device Group", "No relay devices available.");
14957
showModal('xxAddAgentModal', 'idx_dlgOkButton');
14958
} else {
14959
var relayDevices2 = [];
14960
for (var i in relayDevices) { relayDevices2.push('<option value="' + (relayDevices[i]._id + '"' + ((currentMesh.relayid == relayDevices[i]._id) ? ' selected' : '')) + '>' + EscapeHtml(relayDevices[i].name) + '</option>'); }
14961
var x = addHtmlFormFloating("Relay Device", '<select id=d2devrelay class="form-select">' + relayDevices2.join('') + '</select>');
15094
- setModalContent('xxAddAgent', 'Edit Device Group', x);
14962
+ setModalContent('xxAddAgent', "Edit Device Group", x);
14963
showModal('xxAddAgentModal', 'idx_dlgOkButton', p20editmeshrelayEx);
14964
}
14965
}
@@ -15103,15 +14971,15 @@
14971
function p20editmesh(focus) {
14972
if (xxdialogMode) return;
14973
var x = '<div class="form-floating mb-2">';
15106
- x += '<input type=text class="form-control" id=dp20meshname maxlength=128 placeholder=Name onchange=p20editmeshValidate() onkeyup=p20editmeshValidate(event) />';
15107
- x += '<label for=dp20meshname>Name</label>';
14974
+ x += '<input type=text class="form-control" id=dp20meshname maxlength=128 placeholder="' + "Name" + '" onchange=p20editmeshValidate() onkeyup=p20editmeshValidate(event) />';
14975
+ x += '<label for=dp20meshname>' + "Name" + '</label>';
14976
x += '</div>';
14977
14978
x += '<div class="form-floating mb-2">';
15111
- x += '<textarea id=dp20meshdesc class="form-control" maxlength=1024 placeholder=Description></textarea>';
15112
- x += '<label for=dp20meshdesc>Description</label>';
14979
+ x += '<textarea id=dp20meshdesc class="form-control" maxlength=1024 placeholder="' + "Description" + '"></textarea>';
14980
+ x += '<label for=dp20meshdesc>' + "Description" + '</label>';
14981
x += '</div>';
15114
- setModalContent('xxAddAgent', 'Edit Device Group', x);
14982
+ setModalContent('xxAddAgent', "Edit Device Group", x);
14983
showModal('xxAddAgentModal', 'idx_dlgOkButton', p20editmeshEx);
14984
14985
Q('dp20meshname').value = currentMesh.name;
@@ -15209,7 +15077,7 @@
15077
}
15078
}
15079
15212
- setModalContent('xxAddAgent', 'Edit Device Group Features', x);
15080
+ setModalContent('xxAddAgent', "Edit Device Group Features", x);
15081
showModal('xxAddAgentModal', 'idx_dlgOkButton', p20editmeshfeaturesEx);
15082
p20editmeshfeaturesValidate();
15083
}
@@ -15345,7 +15213,7 @@
15213
15214
if (userid == null) {
15215
xxdialogButtons = 3; xxdialogTag = '';
15348
- setModalContent('xxAddAgent', 'Add Users to Device Group', x);
15216
+ setModalContent('xxAddAgent', "Add Users to Device Group", x);
15217
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
15218
p20showAddMeshUserDialogEx(xxdialogButtons, xxdialogTag);
15219
});
@@ -15713,7 +15581,7 @@
15581
15582
x += addHtmlValue("Permissions", r.join(", "));
15583
if (((userinfo._id) != xuserid) && (cmeshrights == 0xFFFFFFFF || (((cmeshrights & 2) != 0) && (meshrights != 0xFFFFFFFF)))) buttons += 4;
15716
- setModalContent('xxAddAgent', 'Device Group User', x);
15584
+ setModalContent('xxAddAgent', "Device Group User", x);
15585
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p20viewuserEx(buttons, xuserid));
15586
}
15587
}
@@ -15725,10 +15593,10 @@
15593
if (usergroups && usergroups[userid]) { uname = usergroups[userid].name; }
15594
if (userinfo._id == userid) { uname = userinfo.name; }
15595
if (userid.startsWith('user/')) {
15728
- setModalContent('xxAddAgent', 'Remove User Permissions', format("Confirm removal of rights for user \"{0}\"?", EscapeHtml(decodeURIComponent(uname))));
15596
+ setModalContent('xxAddAgent', "Remove User Permissions", format("Confirm removal of rights for user \"{0}\"?", EscapeHtml(decodeURIComponent(uname))));
15597
}
15598
if (userid.startsWith('ugrp/')) {
15731
- setModalContent('xxAddAgent', 'Remove User Group Permissions', format("Confirm removal of rights for user group \"{0}\"?", EscapeHtml(decodeURIComponent(uname))), userid);
15599
+ setModalContent('xxAddAgent', "Remove User Group Permissions", format("Confirm removal of rights for user group \"{0}\"?", EscapeHtml(decodeURIComponent(uname))), userid);
15600
}
15601
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p20viewuserEx2(3, userid));
15602
}
@@ -15760,7 +15628,7 @@
15628
x += '<div id=d2agentInstallTypeDiv>';
15629
x += addHtmlFormFloating("Installation Type", '<select id=agentInviteType class="form-select"><option value=0>' + "Background and interactive" + '</option><option value=2>' + "Background only" + '</option><option value=1>' + "Interactive only" + '</option></select>');
15630
x += '</div>';
15763
- setModalContent('xxAddAgent', 'Invite Codes', x);
15631
+ setModalContent('xxAddAgent', "Invite Codes", x);
15632
showModal('xxAddAgentModal', 'idx_dlgOkButton', p20editmeshInviteCodeEx);
15633
if (currentMesh.invite != null) {
15634
Q('agentJoinCheck').checked = true;
@@ -15775,7 +15643,7 @@
15643
x += '<div style=width:100%;text-align:center><a rel="noreferrer noopener" target=_blank href="' + url + '">' + url + '</a></div><br />';
15644
x += addHtmlValue("Invite Codes", currentMesh.invite.codes.join(', '));
15645
x += addHtmlValue("Installation Type", ["Background and interactive", "Interactive only", "Background only"][currentMesh.invite.flags & 3]);
15778
- setModalContent('xxAddAgent', 'Invite Codes', x);
15646
+ setModalContent('xxAddAgent', "Invite Codes", x);
15647
showModal('xxAddAgentModal', 'idx_dlgOkButton');
15648
}
15649
}
@@ -15826,7 +15694,7 @@
15694
x += '<div class="form-check"><label><input id=p20emsgDeviceHelp class="form-check-input me-2" type=checkbox />' + "Help requests" + '</label></div>';
15695
}
15696
15829
- setModalContent('xxAddAgent', 'Notification Settings', x);
15697
+ setModalContent('xxAddAgent', "Notification Settings", x);
15698
showModal('xxAddAgentModal', 'idx_dlgOkButton', p20editMeshNotifyEx);
15699
15700
Q('p20notifyIntelDeviceConnect').checked = (meshNotify & 2);
@@ -16136,7 +16004,7 @@
16004
}
16005
16006
function p5showPublicLink(u) {
16139
- setModalContent('xxAddAgent', 'Public Link', '<input type=text style=width:350px value="' + u + '" readonly /> <i class="fa-regular fa-copy" title="' + "Copy link to clipboard" + '" style="cursor:pointer" onclick=copyTextToClip2("' + encodeURIComponentEx(u) + '")></i>');
16007
+ setModalContent('xxAddAgent', "Public Link", '<input type=text style=width:350px value="' + u + '" readonly /> <i class="fa-regular fa-copy" title="' + "Copy link to clipboard" + '" style="cursor:pointer" onclick=copyTextToClip2("' + encodeURIComponentEx(u) + '")></i>');
16008
showModal('xxAddAgentModal', 'idx_dlgOkButton');
16009
return false;
16010
}
@@ -16181,7 +16049,7 @@
16049
function p5folderup(x) { if (x == null) { filetreelocation.pop(); } else { while (filetreelocation.length > x) { filetreelocation.pop(); } } updateFiles(); return false; }
16050
function p5folderset(x) { filetreelocation.push(decodeURIComponent(x)); updateFiles(); return false; }
16051
function p5createfolder() {
16184
- setModalContent('xxAddAgent', 'New Folder', '<input type=text id=p5renameinput class="form-control" maxlength=64 onkeyup=p5fileNameCheck(event) />');
16052
+ setModalContent('xxAddAgent', "New Folder", '<input type=text id=p5renameinput class="form-control" maxlength=64 onkeyup=p5fileNameCheck(event) />');
16053
showModal('xxAddAgentModal', 'idx_dlgOkButton', p5createfolderEx);
16054
focusTextBox('p5renameinput');
16055
p5fileNameCheck();
@@ -16189,7 +16057,7 @@
16057
function p5createfolderEx() { meshserver.send({ action: 'fileoperation', fileop: 'createfolder', path: filetreelocation, newfolder: Q('p5renameinput').value }); }
16058
function p5deletefile() {
16059
var cc = getFileSelCount(), rec = (getFileSelDirCount() > 0) ? '<br /><br /><label><input type=checkbox class="form-check-input me-2" id=p5recdeleteinput>' + "Recursive delete" + '</label><br>' : '<input type=checkbox id=p5recdeleteinput class="form-check-input me-2" style=\'display:none\'>';
16192
- setModalContent('xxAddAgent', 'Delete', (cc > 1) ? (format("Delete {0} selected items?", cc) + rec) : ("Delete selected item?" + rec));
16060
+ setModalContent('xxAddAgent', "Delete", (cc > 1) ? (format("Delete {0} selected items?", cc) + rec) : ("Delete selected item?" + rec));
16061
showModal('xxAddAgentModal', 'idx_dlgOkButton', p5deletefileEx);
16062
}
16063
function p5deletefileEx() { var delfiles = [], checkboxes = document.getElementsByName('fc'); for (var i = 0; i < checkboxes.length; i++) { if (checkboxes[i].checked) { delfiles.push(checkboxes[i].value); } } meshserver.send({ action: 'fileoperation', fileop: 'delete', path: filetreelocation, delfiles: delfiles, rec: Q('p5recdeleteinput').checked }); }
@@ -16198,7 +16066,7 @@
16066
for (var i = 0; i < checkboxes.length; i++) {
16067
if (checkboxes[i].checked) { renamefile = checkboxes[i].value; }
16068
}
16201
- setModalContent('xxAddAgent', 'Rename', '<input type=text id=p5renameinput class="form-control" maxlength=64 onkeyup=p5fileNameCheck(event) value="' + renamefile + '" />');
16069
+ setModalContent('xxAddAgent', "Rename", '<input type=text id=p5renameinput class="form-control" maxlength=64 onkeyup=p5fileNameCheck(event) value="' + renamefile + '" />');
16070
showModal('xxAddAgentModal', 'idx_dlgOkButton', p5renamefileEx);
16071
focusTextBox('p5renameinput'); p5fileNameCheck();
16072
}
@@ -16206,7 +16074,7 @@
16074
function p5fileNameCheck(e) { var x = isFilenameValid(Q('p5renameinput').value); QE('idx_dlgOkButton', x); if ((x == true) && (e && e.keyCode == 13)) { dialogclose(1); } }
16075
var isFilenameValid = (function () { var x1 = /^[^\\/:\*\?"<>\|]+$/, x2 = /^\./, x3 = /^(nul|prn|con|lpt[0-9]|com[0-9])(\.|$)/i; return function isFilenameValid(fname) { return x1.test(fname) && !x2.test(fname) && !x3.test(fname) && (fname[0] != '.'); } })();
16076
function p5uploadFile() {
16209
- setModalContent('xxAddAgent', 'Upload File', '<form method=post enctype=multipart/form-data action=uploadfile.ashx target=fileUploadFrame><input type=text name=link style=display:none id=p5uploadpath value="' + encodeURIComponentEx(filetreelinkpath) + '" /><input type=file name=files id=p5uploadinput class="form-control" multiple=multiple onchange="p5updateUploadDialogOk(\'p5uploadinput\')" /><input type=hidden name=authCookie value=' + authCookie + ' /><input type=submit id=p5loginSubmit class="btn btn-outline-success mt-2" style=display:none/><span id=p5confirmOverwriteSpan style=display:none><br/><label><input type=checkbox class="form-check-input me-2" id=p5confirmOverwrite onchange="p5updateUploadDialogOk(\'p5uploadinput\')" />' + "Confirm overwrite?" + '</label></span></ >');
16077
+ setModalContent('xxAddAgent', "Upload File", '<form method=post enctype=multipart/form-data action=uploadfile.ashx target=fileUploadFrame><input type=text name=link style=display:none id=p5uploadpath value="' + encodeURIComponentEx(filetreelinkpath) + '" /><input type=file name=files id=p5uploadinput class="form-control" multiple=multiple onchange="p5updateUploadDialogOk(\'p5uploadinput\')" /><input type=hidden name=authCookie value=' + authCookie + ' /><input type=submit id=p5loginSubmit class="btn btn-outline-success mt-2" style="display:none" /><span id=p5confirmOverwriteSpan style=display:none><br/><label><input type=checkbox class="form-check-input me-2" id=p5confirmOverwrite onchange="p5updateUploadDialogOk(\'p5uploadinput\')" />' + "Confirm overwrite?" + '</label></span></ >');
16078
showModal('xxAddAgentModal', 'idx_dlgOkButton', p5uploadFileEx);
16079
p5updateUploadDialogOk('p5uploadinput');
16080
}
@@ -16257,7 +16125,7 @@
16125
}
16126
function p5pasteFile() {
16127
var x = ''; if ((p5clipboard != null) && (p5clipboard.length > 0)) { x = format("Confirm {0} of {1} entrie{2} to this location?", (p5clipboardCut == 0 ? 'copy' : 'move'), p5clipboard.length, ((p5clipboard.length > 1) ? 's' : '')) }
16260
- setModalContent('xxAddAgent', 'Paste', x);
16128
+ setModalContent('xxAddAgent', "Paste", x);
16129
showModal('xxAddAgentModal', 'idx_dlgOkButton', p5pasteFileEx);
16130
16131
}
@@ -16295,7 +16163,7 @@
16163
p5PerformUpload(1, e.dataTransfer.files);
16164
} else {
16165
// Otherwise, prompt for confirmation
16298
- setModalContent('xxAddAgent', 'Upload File', format((overWriteCount == 1) ? "Upload will overwrite 1 file. Continue?" : "Upload will overwrite {0} files. Continue?", overWriteCount));
16166
+ setModalContent('xxAddAgent', "Upload File", format((overWriteCount == 1) ? "Upload will overwrite 1 file. Continue?" : "Upload will overwrite {0} files. Continue?", overWriteCount));
16167
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p5PerformUpload(3, e.dataTransfer.files));
16168
}
16169
}
@@ -16655,7 +16523,7 @@
16523
x += addHtmlFormFloating("Group By", '<select id=d2reportGroupBy class="form-select" onchange=p3showReportValidation()><option value=1>' + "None" + '</option><option value=2>' + "Device Group" + '</option><option value=3>' + "User" + '</option>');
16524
x += addHtmlFormFloating("Format", '<select id=d2reportFormat class="form-select" onchange=p3showReportValidation()><option value=1>' + "CSV" + '</option><option value=2>' + "JSON" + '</option>');
16525
x += '</div>';
16658
- setModalContent('xxAddAgent', 'Download Report', x);
16526
+ setModalContent('xxAddAgent', "Download Report", x);
16527
showModal('xxAddAgentModal', 'idx_dlgOkButton');
16528
p3showReportValidation();
16529
Q('d2reportType').focus();
@@ -16680,7 +16548,7 @@
16548
var x = "Download the list of events with one of the file formats below." + '<br /><br />';
16549
x += addHtmlValue("CSV Format", '<a href=# style=cursor:pointer onclick="return p3downloadEventsDialogCSV(' + mode + ')">' + "eventslist.csv" + '</a>');
16550
x += addHtmlValue("JSON Format", '<a href=# style=cursor:pointer onclick="return p3downloadEventsDialogJSON(' + mode + ')">' + "eventslist.json" + '</a>');
16683
- setModalContent('xxAddAgent', 'Event List Export', x);
16551
+ setModalContent('xxAddAgent', "Event List Export", x);
16552
showModal('xxAddAgentModal', 'idx_dlgOkButton');
16553
}
16554
@@ -16997,7 +16865,7 @@
16865
16866
function showSendSMS(userid) {
16867
if (xxdialogMode) return;
17000
- setModalContent('xxAddAgent', 'Send SMS', '<textarea id=d2smsText maxlength=160 style=background-color:#fcf3cf;width:100%;height:100px;resize:none onKeyUp=showSendSMSValidate()></textarea><span style=font-size:10px><span>');
16868
+ setModalContent('xxAddAgent', "Send SMS", '<textarea id=d2smsText maxlength=160 style=width:100%;height:100px;resize:none onKeyUp=showSendSMSValidate()></textarea><span style=font-size:10px><span>');
16869
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => showSendSMSEx(3, userid));
16870
Q('d2smsText').focus();
16871
showSendSMSValidate();
@@ -17008,7 +16876,7 @@
16876
16877
function showSendMessage(userid) {
16878
if (xxdialogMode) return;
17011
- setModalContent('xxAddAgent', 'Send Message', '<textarea id=d2smsText maxlength=160 style=background-color:#fcf3cf;width:100%;height:100px;resize:none onKeyUp=showSendSMSValidate()></textarea><span style=font-size:10px><span>');
16879
+ setModalContent('xxAddAgent', "Send Message", '<textarea id=d2smsText maxlength=160 style=width:100%;height:100px;resize:none onKeyUp=showSendSMSValidate()></textarea><span style=font-size:10px><span>');
16880
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => showSendMessageEx(3, userid));
16881
16882
Q('d2smsText').focus();
@@ -17019,10 +16887,10 @@
16887
16888
function showSendEmail(userid) {
16889
if (xxdialogMode) return;
17022
- var x = '<input id=d2emailSubject style=background-color:#fcf3cf;width:100% placeholder="' + "Subject" + '"></input>';
17023
- x += '<textarea id=d2emailText maxlength=10000 style="background-color:#fcf3cf;width:100%;height:200px;resize:none;overflow-y:auto" onKeyUp=showSendEmailValidate()></textarea>';
16890
+ var x = '<input id=d2emailSubject style=width:100% placeholder="' + "Subject" + '"></input>';
16891
+ x += '<textarea id=d2emailText maxlength=10000 style="width:100%;height:200px;resize:none;overflow-y:auto" onKeyUp=showSendEmailValidate()></textarea>';
16892
17025
- setModalContent('xxAddAgent', 'Send Email', x);
16893
+ setModalContent('xxAddAgent', "Send Email", x);
16894
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => showSendEmailEx(3, userid));
16895
16896
Q('d2emailSubject').focus();
@@ -17035,7 +16903,7 @@
16903
function showUserAlertDialog(e, userid) {
16904
if (xxdialogMode) return;
16905
haltEvent(e);
17038
- var x = '<div style=margin-bottom:6px>' + "Send a text notification to this user." + '</div><textarea id=d2notifyText maxlength=2048 style="width:100%;height:184px;resize:none;background-color:#fcf3cf"></textarea>';
16906
+ var x = '<div style=margin-bottom:6px>' + "Send a text notification to this user." + '</div><textarea id=d2notifyText maxlength=2048 style="width:100%;height:184px;resize:none"></textarea>';
16907
x += '<select style=width:100% id=broadcastMessageMaxTime>';
16908
x += '<option value=0>' + "Show message until dismissed by user" + '</option>';
16909
x += '<option value=10>' + "Show for 10 seconds" + '</option>';
@@ -17061,7 +16929,7 @@
16929
// Display the dialog box
16930
var x = '';
16931
x += '<label><input id=d2c1 type=checkbox class="form-check-input me-2"' + (userViewSettings.noViewLimit ? '' : ' checked') + '>' + "Only display first 100 users" + '</label><br />';
17064
- setModalContent('xxAddAgent', 'Users View', x);
16932
+ setModalContent('xxAddAgent', "Users View", x);
16933
showModal('xxAddAgentModal', 'idx_dlgOkButton', onUsersViewSettingsEx);
16934
}
16935
@@ -17079,7 +16947,7 @@
16947
x += "CSV file format is as follows:" + '<br />';
16948
x += '<pre>user,pass,email,resetNextLogin\r\nx1,x,x1@x,\r\nx2,x,,true\r\n</pre><br />';
16949
x += '<input type=file id=d4importFile class="form-control" accept=".json,.csv" onchange=p4batchAccountCreateValidate() />';
17082
- setModalContent('xxAddAgent', 'User Account Import', x);
16950
+ setModalContent('xxAddAgent', "User Account Import", x);
16951
showModal('xxAddAgentModal', 'idx_dlgOkButton', p4batchAccountCreateEx);
16952
//QE('idx_dlgOkButton', false);
16953
}
@@ -17132,18 +17000,18 @@
17000
if ((j[i].email != null) && ((typeof j[i].email != 'string') || (j[i].email.length < 1) || (j[i].email.length > 128))) { ok = false; }
17001
}
17002
if (ok == false) {
17135
- setModalContent('xxAddAgent', 'User Account Import', "Invalid CSV file format.");
17003
+ setModalContent('xxAddAgent', "User Account Import", "Invalid CSV file format.");
17004
} else {
17005
meshserver.send({ action: 'adduserbatch', users: j });
17006
}
17007
} else {
17140
- setModalContent('xxAddAgent', 'User Account Import', "Invalid CSV file format.");
17008
+ setModalContent('xxAddAgent', "User Account Import", "Invalid CSV file format.");
17009
}
17010
} else {
17011
try {
17012
j = JSON.parse(r.target.result);
17013
} catch (ex) {
17146
- setModalContent('xxAddAgent', 'User Account Import', format("Invalid JSON file: {0}.", ex));
17014
+ setModalContent('xxAddAgent', "User Account Import", format("Invalid JSON file: {0}.", ex));
17015
showModal('xxAddAgentModal', 'idx_dlgOkButton');
17016
return;
17017
}
@@ -17156,12 +17024,12 @@
17024
if ((j[i].email != null) && ((typeof j[i].email != 'string') || (j[i].email.length < 1) || (j[i].email.length > 128))) { ok = false; }
17025
}
17026
if (ok == false) {
17159
- setModalContent('xxAddAgent', 'User Account Import', "Invalid JSON file format.");
17027
+ setModalContent('xxAddAgent', "User Account Import", "Invalid JSON file format.");
17028
} else {
17029
meshserver.send({ action: 'adduserbatch', users: j });
17030
}
17031
} else {
17164
- setModalContent('xxAddAgent', 'User Account Import', "Invalid JSON file format.");
17032
+ setModalContent('xxAddAgent', "User Account Import", "Invalid JSON file format.");
17033
}
17034
showModal('xxAddAgentModal', 'idx_dlgOkButton');
17035
}
@@ -17174,7 +17042,7 @@
17042
var x = "Download the list of users with one of the file formats below." + '<br /><br />';
17043
x += addHtmlValue("CSV Format", '<a href=# style=cursor:pointer onclick=\'return p4downloadUserInfoCSV()\'>' + "userlist.csv" + '</a>');
17044
x += addHtmlValue("JSON Format", '<a href=# style=cursor:pointer onclick=\'return p4downloadUserInfoJSON()\'>' + "userlist.json" + '</a>');
17177
- setModalContent('xxAddAgent', 'User List Export', x);
17045
+ setModalContent('xxAddAgent', "User List Export", x);
17046
showModal('xxAddAgentModal', 'idx_dlgOkButton');
17047
}
17048
@@ -17207,14 +17075,14 @@
17075
17076
function showUserBroadcastDialog(targetid) {
17077
if (xxdialogMode) return;
17210
- var x = '<div style=margin-bottom:6px>' + "Broadcast a message to all connected users." + '</div><textarea id=broadcastMessage class="form-control mb-2" style="width:100%;height:184px;resize:none;background-color:#fcf3cf" value="" maxlength=2048 /></textarea>';
17078
+ var x = '<div style=margin-bottom:6px>' + "Broadcast a message to all connected users." + '</div><textarea id=broadcastMessage class="form-control mb-2" style="width:100%;height:184px;resize:none" value="" maxlength=2048 /></textarea>';
17079
x += '<select style=width:100% class="form-select" id=broadcastMessageMaxTime>';
17080
x += '<option value=0>' + "Show message until dismissed by user" + '</option>';
17081
x += '<option value=10>' + "Show for 10 seconds" + '</option>';
17082
x += '<option value=60>' + "Show for 1 minute" + '</option>';
17083
x += '<option value=300>' + "Show for 5 minutes" + '</option>';
17084
x += '</select>';
17217
- setModalContent('xxAddAgent', 'Broadcast Message', x);
17085
+ setModalContent('xxAddAgent', "Broadcast Message", x);
17086
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
17087
showUserBroadcastDialogEx(3, targetid ? decodeURIComponent(targetid) : null);
17088
});
@@ -17255,7 +17123,7 @@
17123
if (rc > 0) { x += '<div style=font-size:x-small;padding:6px>' + format("Requirements: {0}.", r.join(', ')) + '</div>'; }
17124
}
17125
17258
- setModalContent('xxAddAgent', 'Create Account', x);
17126
+ setModalContent('xxAddAgent', "Create Account", x);
17127
showModal('xxAddAgentModal', 'idx_dlgOkButton', showCreateNewAccountDialogEx);
17128
showCreateNewAccountDialogValidate();
17129
if ((features & 0x200000) == 0) { Q('p4name').focus(); } else { Q('p4email').focus(); }
@@ -17307,7 +17175,7 @@
17175
if (user.groups != null) { groups = user.groups.join(', ') }
17176
var x = "Enter a comma seperate list of administrative realms names." + '<br /><br />';
17177
x += `<div class="form-floating mb-2"><input id=dp4usergroups value="${groups}" class="form-control" placeholder="Name1, Name2, Name3" maxlength=256 onchange=p4validateUserGroups() onkeyup=p4validateUserGroups() /><label for=dp4usergroups>Realms</label></div>`;
17310
- setModalContent('xxAddAgent', 'Administrative Realms', x);
17178
+ setModalContent('xxAddAgent', "Administrative Realms", x);
17179
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
17180
showUserGroupDialogEx(e, user);
17181
});
@@ -17338,7 +17206,7 @@
17206
if (user == null) return;
17207
var uself = (userinfo._id == user._id);
17208
var x = '';
17341
- x += '<div class="d-inline-flex align-items-center"><label class="form-label me-2"><input type=checkbox onchange=showUserAdminDialogValidate() class="form-check-input me-2" id=ua_fileaccess>' + "Server Files, " + '</label><input type=number class="me-1 form-control" onchange=showUserAdminDialogValidate() maxlength=10 id=ua_fileaccessquota>' + "k max, blank for default" + '</div><br><hr/>';
17209
+ x += '<div class="d-inline-flex align-items-center"><label class="form-label me-2"><input type=checkbox onchange=showUserAdminDialogValidate() class="form-check-input me-2" id=ua_fileaccess>' + "Server Files" + '</label>, <input type=number class="me-1 form-control" onchange=showUserAdminDialogValidate() maxlength=10 id=ua_fileaccessquota>' + "k max, blank for default" + '</div><br><hr/>';
17210
x += '<label><input type=checkbox onchange=showUserAdminDialogValidate() class="form-check-input me-2" id=ua_fulladmin>' + "Full Administrator" + '</label><br>';
17211
x += '<label><input type=checkbox onchange=showUserAdminDialogValidate() class="form-check-input me-2" id=ua_serverbackup>' + "Server Backup" + '</label><br>';
17212
x += '<label><input type=checkbox onchange=showUserAdminDialogValidate() class="form-check-input me-2" id=ua_serverrestore>' + "Server Restore" + '</label><br>';
@@ -17581,7 +17449,7 @@
17449
x += addHtmlFormFloating("Domain", y);
17450
}
17451
x += addHtmlFormFloating("Name", '<input id=p4name class=form-control maxlength=64 onchange=showCreateUserGroupDialogValidate() onkeyup=showCreateUserGroupDialogValidate() />');
17584
- x += addHtmlFormFloating("Description", '<textarea id=p4desc class=form-control value="" style=width:345px;height:60px;resize:none maxlength=1024 /></textarea>');
17452
+ x += addHtmlFormFloating("Description", '<textarea id=p4desc class=form-control value="" maxlength=1024 /></textarea>');
17453
setModalContent('xxAddAgent', (mode == 1) ? "Create User Group" : "Duplicate User Group", x);
17454
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
17455
showCreateUserGroupDialogEx(3, mode);
@@ -17682,7 +17550,7 @@
17550
17551
x = '<br />';
17552
if ((currentUserGroup.membershipType == null) && ((userinfo.siteadmin & 256) != 0)) {
17685
- x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick="return p51showAddUserDialog()"><i class="fa-solid fa-plus-circle"></i> ' + " Add Users" + '</button>';
17553
+ x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick="return p51showAddUserDialog()"><i class="fa-solid fa-circle-plus"></i> ' + "Add Users" + '</button>';
17554
}
17555
x += '<table class="table table-hover"><tbody><tr class="table-active"><th scope=col>' + "Group Members" + '</th><th scope=col></th></tr>';
17556
@@ -17715,7 +17583,7 @@
17583
count = 1;
17584
var deviceGroupCount = 0, newDeviceGroup = false;
17585
for (var i in meshes) { if (currentUserGroup._id.split('/')[1] != meshes[i]._id.split('/')[1]) continue; deviceGroupCount++; if ((currentUserGroup.links == null) || (currentUserGroup.links[i] == null)) { newDeviceGroup = true; } }
17718
- if ((deviceGroupCount > 0) && (newDeviceGroup)) { x += '<button class="btn btn-primary btn-sm me-2 mb-1"onclick="return p20showAddMeshUserDialog(3)"><i class="fa-solid fa-plus-circle"></i> ' + " Add Device Group" + '</button>'; }
17586
+ if ((deviceGroupCount > 0) && (newDeviceGroup)) { x += '<button class="btn btn-primary btn-sm me-2 mb-1"onclick="return p20showAddMeshUserDialog(3)"><i class="fa-solid fa-circle-plus"></i> ' + "Add Device Group" + '</button>'; }
17587
x += '<table class="table table-hover"><tbody><tr class="table-active"><th scope=col>' + "Common Device Groups" + '</th><th scope=col></th></tr>';
17588
if (currentUserGroup.links) {
17589
var omeshes = [];
@@ -17739,7 +17607,7 @@
17607
// Display all devices for this user group
17608
count = 1;
17609
x += '<br />';
17742
- if (currentUserGroup._id.split('/')[1] == userinfo._id.split('/')[1]) { x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick="return p20showAddMeshUserDialog(7)"><i class="fa-solid fa-plus-circle"></i> ' + " Add Device" + '</button>'; }
17610
+ if (currentUserGroup._id.split('/')[1] == userinfo._id.split('/')[1]) { x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick="return p20showAddMeshUserDialog(7)"><i class="fa-solid fa-circle-plus"></i> ' + "Add Device" + '</button>'; }
17611
x += '<table class="table table-hover"><tbody><tr class="table-active"><th scope=col>' + "Common Devices" + '</th><th scope=col></th></tr>';
17612
if (currentUserGroup.links) {
17613
var onodes = [];
@@ -17782,7 +17650,7 @@
17650
x += '<div><label><input type=checkbox class="form-check-input me-2" id=d51flag1 ' + ((flags & 2) ? 'checked' : '') + '>' + "Record sessions" + '</label><br></div>';
17651
}
17652
xxdialogButtons = 3;
17785
- setModalContent('xxAddAgent', 'Edit User Group Features', x);
17653
+ setModalContent('xxAddAgent', "Edit User Group Features", x);
17654
showModal('xxAddAgentModal', 'idx_dlgOkButton', p51edituserGroupFeaturesEx);
17655
}
17656
@@ -17798,7 +17666,7 @@
17666
if (xxdialogMode) return;
17667
var node = getNodeFromId(decodeURIComponent(nodeid));
17668
if (node == null) return;
17801
- setModalContent('xxAddAgent', 'Remove Device Permissions', format("Confirm removal of access rights for device \"{0}\"?", node.name));
17669
+ setModalContent('xxAddAgent', "Remove Device Permissions", format("Confirm removal of access rights for device \"{0}\"?", node.name));
17670
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p51removeDeviceFromUserGroupEx(3, node._id));
17671
}
17672
@@ -17810,7 +17678,7 @@
17678
if (xxdialogMode) return;
17679
var mesh = meshes[decodeURIComponent(meshid)];
17680
if (mesh == null) return;
17813
- setModalContent('xxAddAgent', 'Remove Device Group Permissions', format("Confirm removal of access rights for device group \"{0}\"?", mesh.name));
17681
+ setModalContent('xxAddAgent', "Remove Device Group Permissions", format("Confirm removal of access rights for device group \"{0}\"?", mesh.name));
17682
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => p51removeMeshFromUserGroupEx(3, mesh._id));
17683
}
17684
function p51editgroup(focus, nameReadOnly) {
@@ -17819,7 +17687,7 @@
17687
x += addHtmlFormFloating("Description", '<textarea id=dp51desc class="form-control" maxlength=1024 style=width:100%;resize:none></textarea>');
17688
17689
xxdialogButtons = 3;
17822
- setModalContent('xxAddAgent', 'Edit User Group', x);
17690
+ setModalContent('xxAddAgent', "Edit User Group", x);
17691
showModal('xxAddAgentModal', 'idx_dlgOkButton', p51editgroupEx);
17692
17693
Q('dp51name').value = currentUserGroup.name;
@@ -17842,7 +17710,7 @@
17710
x += '<label><input id=p51check type=checkbox class="form-check-input me-2" onchange=p51validateDeleteGroupDialog() />' + "Confirm" + '</label>';
17711
17712
xxdialogButtons = 3;
17845
- setModalContent('xxAddAgent', 'Delete User Group', x);
17713
+ setModalContent('xxAddAgent', "Delete User Group", x);
17714
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
17715
p51showDeleteUserGroupDialogEx(xxdialogButtons, xxdialogTag);
17716
});
@@ -17870,7 +17738,7 @@
17738
var uname = userid.split('/')[2];
17739
if (users && users[userid]) { uname = users[userid].name; }
17740
if (userinfo._id == userid) { uname = userinfo.name; }
17873
- setModalContent('xxAddAgent', 'Remove User Membership', format("Confirm membership removal of user \"{0}\"?", EscapeHtml(decodeURIComponent(uname))));
17741
+ setModalContent('xxAddAgent', "Remove User Membership", format("Confirm membership removal of user \"{0}\"?", EscapeHtml(decodeURIComponent(uname))));
17742
showModal('xxAddAgentModal', 'idx_dlgOkButton', p51viewuserEx2(3, userid));
17743
}
17744
function p51viewuserEx2(button, userid) { meshserver.send({ action: 'removeuserfromusergroup', ugrpid: currentUserGroup._id, userid: userid }); }
@@ -17884,7 +17752,7 @@
17752
x += '<div id=dp51usersuggest class=suggestionBox style=\'top:30px;left:130px;display:none\'></div>';
17753
x += '</div><br>';
17754
17887
- setModalContent('xxAddAgent', 'Add Users to User Group', x);
17755
+ setModalContent('xxAddAgent', "Add Users to User Group", x);
17756
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
17757
p51showAddUserDialogEx(3, xxdialogTag)
17758
});
@@ -18112,18 +17980,18 @@
17980
x += '</table></div><br />';
17981
17982
// Add action buttons
18115
- x += '<input type=button class="btn btn-primary btn-sm" value="' + "Notes" + '" title="' + "View notes about this user" + '" onclick=showNotes(false,"' + encodeURIComponentEx(user._id) + '") />';
18116
- if (user.phone && (features & 0x02000000)) { x += '<input type=button class="btn btn-primary btn-sm" value="' + "SMS" + '" title="' + "Send a SMS message to this user" + '" onclick=showSendSMS("' + encodeURIComponentEx(user._id) + '") />'; }
18117
- if (user.msghandle && (features2 & 0x02000000)) { x += '<input type=button class="btn btn-primary btn-sm" value="' + "Message" + '" title="' + "Send a message to this user" + '" onclick=showSendMessage("' + encodeURIComponentEx(user._id) + '") />'; }
18118
- if ((typeof user.email == 'string') && (user.emailVerified === true) && (features & 0x00000040)) { x += '<input type=button class="btn btn-primary btn-sm" value="' + "Email" + '" title="' + "Send a email message to this user" + '" onclick=showSendEmail("' + encodeURIComponentEx(user._id) + '") />'; }
17983
+ x += '<input type=button class="btn btn-primary btn-sm me-1" value="' + "Notes" + '" title="' + "View notes about this user" + '" onclick=showNotes(false,"' + encodeURIComponentEx(user._id) + '") />';
17984
+ if (user.phone && (features & 0x02000000)) { x += '<input type=button class="btn btn-primary btn-sm me-1" value="' + "SMS" + '" title="' + "Send a SMS message to this user" + '" onclick=showSendSMS("' + encodeURIComponentEx(user._id) + '") />'; }
17985
+ if (user.msghandle && (features2 & 0x02000000)) { x += '<input type=button class="btn btn-primary btn-sm me-1" value="' + "Message" + '" title="' + "Send a message to this user" + '" onclick=showSendMessage("' + encodeURIComponentEx(user._id) + '") />'; }
17986
+ if ((typeof user.email == 'string') && (user.emailVerified === true) && (features & 0x00000040)) { x += '<input type=button class="btn btn-primary btn-sm me-1" value="' + "Email" + '" title="' + "Send a email message to this user" + '" onclick=showSendEmail("' + encodeURIComponentEx(user._id) + '") />'; }
17987
if (!self && ((activeSessions > 0) || ((features2 & 8) && (user.webpush)))) {
18120
- x += '<input type=button class="btn btn-primary btn-sm" value="' + "Notify" + '" title="' + "Send user notification" + '" onclick=showUserAlertDialog(event,"' + encodeURIComponentEx(user._id) + '") />';
18121
- x += '<input type=button class="btn btn-primary btn-sm" value="' + "Chat" + '" title="' + "Chat" + '" onclick=userChat(event,"' + encodeURIComponentEx(user._id) + '","' + encodeURIComponentEx(user.name) + '") />';
17988
+ x += '<input type=button class="btn btn-primary btn-sm me-1" value="' + "Notify" + '" title="' + "Send user notification" + '" onclick=showUserAlertDialog(event,"' + encodeURIComponentEx(user._id) + '") />';
17989
+ x += '<input type=button class="btn btn-primary btn-sm me-1" value="' + "Chat" + '" title="' + "Chat" + '" onclick=userChat(event,"' + encodeURIComponentEx(user._id) + '","' + encodeURIComponentEx(user.name) + '") />';
17990
if ((activeSessions > 0) && (serverinfo != null) && (serverinfo.altmessenging != null)) {
17991
for (var i in serverinfo.altmessenging) {
17992
var am = serverinfo.altmessenging[i];
17993
if ((am.type == null) || (am.type == 'user')) {
18126
- x += '<input type=button class="btn btn-primary btn-sm" value="' + EscapeHtml(am.name) + '" onclick=altUserChat(event,"' + encodeURIComponentEx(user._id) + '","' + encodeURIComponentEx(user.name) + '",' + i + ') />';
17994
+ x += '<input type=button class="btn btn-primary btn-sm me-1" value="' + EscapeHtml(am.name) + '" onclick=altUserChat(event,"' + encodeURIComponentEx(user._id) + '","' + encodeURIComponentEx(user.name) + '",' + i + ') />';
17995
}
17996
}
17997
}
@@ -18175,8 +18043,8 @@
18043
var x = '<table style=width:100%><tr><td style=width:56px><img src="images/phone80.png" style=padding:8px>';
18044
x += '<td style=width:100%;text-align:center>' + "SMS capable phone number for this user." + '<br />' + "Leave blank for none.";
18045
x += '<br /><br /><div style=width:100%;text-align:center>' + "Phone number:" + ' <input type=tel pattern="[0-9]" autocomplete="tel" value="' + (currentUser.phone ? currentUser.phone : '') + '" inputmode="tel" maxlength=18 id=d2phoneinput onKeyUp=p30editPhoneValidate() onkeypress="if (event.key==\'Enter\') p30editPhoneValidate(1)"></div></table>';
18178
- xxdialogButtons = 3; xxdialogTag = "verifyPhone";
18179
- setModalContent('xxAddAgent', 'Phone Notifications', x);
18046
+ xxdialogButtons = 3; xxdialogTag = 'verifyPhone';
18047
+ setModalContent('xxAddAgent', "Phone Notifications", x);
18048
showModal('xxAddAgentModal', 'idx_dlgOkButton', p30editPhoneEx);
18049
Q('d2phoneinput').focus();
18050
p30editPhoneValidate();
@@ -18205,7 +18073,7 @@
18073
x += '<div id=d2ntfyinfo style=display:none><br /><a href="' + (serverinfo.userMsgNftyUrl ? serverinfo.userMsgNftyUrl : 'https://ntfy.sh/') + '" target="_ntfy">' + "Free service at ntfy.sh" + '</a></div>';
18074
x += '<div id=d2slackinfo style=display:none><br /><a href=https://api.slack.com/messaging/webhooks target="_slack">' + "Slack Webhook Setup" + '</a></div>';
18075
xxdialogButtons = 3; xxdialogTag = 'verifyMessaging';
18208
- setModalContent('xxAddAgent', 'Messaging Notifications', x);
18076
+ setModalContent('xxAddAgent', "Messaging Notifications", x);
18077
showModal('xxAddAgentModal', 'idx_dlgOkButton', p30editMessagingEx);
18078
Q('d2handleinput').focus();
18079
if (currentUser.msghandle) {
@@ -18279,7 +18147,7 @@
18147
x += '<div><label><input type=checkbox id=d20flag10 class="form-check-input me-2" onchange=p20edituserfeaturesValidate() ' + ((removeRights & 0x00000040) ? 'checked' : '') + '>' + "No Wake" + '</label><br></div>';
18148
x += '<div><label><input type=checkbox id=d20flag11 class="form-check-input me-2" onchange=p20edituserfeaturesValidate() ' + ((removeRights & 0x00040000) ? 'checked' : '') + '>' + "No Reset/Off" + '</label><br></div>';
18149
18282
- setModalContent('xxAddAgent', 'Edit User Features', x);
18150
+ setModalContent('xxAddAgent', "Edit User Features", x);
18151
showModal('xxAddAgentModal', 'idx_dlgOkButton', p20edituserfeaturesEx);
18152
18153
p20edituserfeaturesValidate();
@@ -18377,7 +18245,7 @@
18245
// Display the previous logins of this user
18246
function p30viewPreviousLogins() {
18247
if (xxdialogMode) return;
18380
- setModalContent('xxAddAgent', 'Previous Logins', 'Loading...');
18248
+ setModalContent('xxAddAgent', "Previous Logins", 'Loading...');
18249
meshserver.send({ action: 'previousLogins', userid: currentUser._id });
18250
}
18251
@@ -18445,7 +18313,7 @@
18313
// Display common device groups
18314
var deviceGroupCount = 0, newDeviceGroup = false;
18315
for (var i in meshes) { if (meshes[i]._id.split('/')[1] != currentUser._id.split('/')[1]) continue; deviceGroupCount++; if ((currentUser.links == null) || (currentUser.links[i] == null)) { newDeviceGroup = true; } }
18448
- if ((deviceGroupCount > 0) && (newDeviceGroup)) { x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick="return p20showAddMeshUserDialog(1)"><i class="fa-solid fa-plus-circle"></i> ' + "Add Device Group" + '</button>'; }
18316
+ if ((deviceGroupCount > 0) && (newDeviceGroup)) { x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick="return p20showAddMeshUserDialog(1)"><i class="fa-solid fa-circle-plus"></i> ' + "Add Device Group" + '</button>'; }
18317
x += '<table class="table table-hover"><tbody><tr class="table-active"><th scope=col>' + "Common Device Groups" + '</th><th scope=col></th></tr>';
18318
if (currentUser.links) {
18319
var omeshes = [];
@@ -18478,7 +18346,7 @@
18346
userGroupCount++;
18347
if ((currentUser.links == null) || (currentUser.links[i] == null)) { newUserGroup = true; }
18348
}
18481
- if ((userGroupCount > 0) && (newUserGroup)) { x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick="return p30showAddUserGroupDialog()"><i class="fa-solid fa-plus-circle"></i> ' + "Add User Group" + '</button>'; }
18349
+ if ((userGroupCount > 0) && (newUserGroup)) { x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick="return p30showAddUserGroupDialog()"><i class="fa-solid fa-circle-plus"></i> ' + "Add User Group" + '</button>'; }
18350
}
18351
x += '<table class="table table-hover"><tbody><tr class="table-active"><th scope=col>' + "User Group Memberships" + '</th><th scope=col></th></tr>';
18352
if (currentUser.links) {
@@ -18503,7 +18371,7 @@
18371
// Display common devices
18372
count = 1;
18373
x += '<br />';
18506
- if (currentUser._id.split('/')[1] == userinfo._id.split('/')[1]) { x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick="return p20showAddMeshUserDialog(4)"><i class="fa-solid fa-plus-circle"></i> ' + "Add Device" + '</button>'; }
18374
+ if (currentUser._id.split('/')[1] == userinfo._id.split('/')[1]) { x += '<button class="btn btn-primary btn-sm me-2 mb-1" onclick="return p20showAddMeshUserDialog(4)"><i class="fa-solid fa-circle-plus"></i> ' + "Add Device" + '</button>'; }
18375
x += '<table class="table table-hover"><tbody><tr class="table-active"><th scope=col>' + "Common Devices" + '</th><th scope=col></th></tr>';
18376
if (currentUser.links) {
18377
// Sort the list of devices to display
@@ -18530,14 +18398,14 @@
18398
18399
function p30removeDeviceSharing(event, nodeid, publicid, guestname) {
18400
if (xxdialogMode) return;
18533
- setModalContent('xxAddAgent', 'Remove Device Share', format("Confirm removal of device share \"{0}\"?", decodeURIComponent(guestname)));
18401
+ setModalContent('xxAddAgent', "Remove Device Share", format("Confirm removal of device share \"{0}\"?", decodeURIComponent(guestname)));
18402
showModal('xxAddAgentModal', 'idx_dlgOkButton', function (b, tag) { meshserver.send({ action: 'removeDeviceShare', nodeid: tag[0], publicid: tag[1] }); }, 3, [decodeURIComponent(nodeid), decodeURIComponent(publicid)]);
18403
}
18404
18405
function p30removeNodeFromUser(event, nodeid) {
18406
if (xxdialogMode) return;
18407
var node = getNodeFromId(decodeURIComponent(nodeid));
18540
- setModalContent('xxAddAgent', 'Remove Device Permissions', format("Confirm removal of access rights for device \"{0}\"?", node.name));
18408
+ setModalContent('xxAddAgent', "Remove Device Permissions", format("Confirm removal of access rights for device \"{0}\"?", node.name));
18409
showModal('xxAddAgentModal', 'idx_dlgOkButton', function (b, node) { meshserver.send({ action: 'adddeviceuser', nodeid: node._id, nodename: node.name, userids: [currentUser._id], rights: 0, remove: true }); }, 3, node);
18410
}
18411
@@ -18548,11 +18416,11 @@
18416
xxdialogButtons = 3; xxdialogTag = user;
18417
if (userid.startsWith('user/')) {
18418
if (users) { user = users[userid]; if (user != null) { name = user.name; } }
18551
- setModalContent('xxAddAgent', 'Remove User Permissions', name ? format("Confirm removal of access rights for user \"{0}\"?", name) : "Confirm removal of access rights?");
18419
+ setModalContent('xxAddAgent', "Remove User Permissions", name ? format("Confirm removal of access rights for user \"{0}\"?", name) : "Confirm removal of access rights?");
18420
showModal('xxAddAgentModal', 'idx_dlgOkButton', function (b, user) { meshserver.send({ action: 'adddeviceuser', nodeid: currentNode._id, nodename: currentNode.name, userids: [userid], rights: 0, remove: true }); });
18421
} else if (userid.startsWith('ugrp/')) {
18422
if (usergroups) { user = usergroups[userid]; if (user != null) { name = user.name; } }
18555
- setModalContent('xxAddAgent', 'Remove User Group Permissions', name ? format("Confirm removal of access rights for user group \"{0}\"?", name) : "Confirm removal of access rights?");
18423
+ setModalContent('xxAddAgent', "Remove User Group Permissions", name ? format("Confirm removal of access rights for user group \"{0}\"?", name) : "Confirm removal of access rights?");
18424
showModal('xxAddAgentModal', 'idx_dlgOkButton', function (b, user) {
18425
meshserver.send({ action: 'adddeviceuser', nodeid: currentNode._id, nodename: currentNode.name, userids: [userid], rights: 0, remove: true });
18426
});
@@ -18564,7 +18432,7 @@
18432
if (xxdialogMode || (usergroups == null)) return;
18433
var groupid = decodeURIComponent(ugrpid), group = usergroups[groupid];
18434
var name = (group != null) ? EscapeHtml(group.name) : ('<i>' + "Unknown" + '</i>');
18567
- setModalContent('xxAddAgent', 'Remove User Group Membership', format("Confirm membership removal of user group \"{0}\"?", name));
18435
+ setModalContent('xxAddAgent', "Remove User Group Membership", format("Confirm membership removal of user group \"{0}\"?", name));
18436
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
18437
p30RemoveUserGroupEx(3, groupid);
18438
});
@@ -18583,7 +18451,7 @@
18451
}
18452
var x = addHtmlFormFloating("User Group", '<select id=dp2groupid class="form-select">' + y + '</select>');
18453
xxdialogButtons = 3;
18586
- setModalContent('xxAddAgent', 'Add Membership', x);
18454
+ setModalContent('xxAddAgent', "Add Membership", x);
18455
showModal('xxAddAgentModal', 'idx_dlgOkButton', p30showAddUserGroupDialogEx);
18456
Q('dp2groupid').focus();
18457
return false;
@@ -18598,7 +18466,7 @@
18466
var mesh = meshes[decodeURIComponent(meshid)];
18467
if (mesh == null) return;
18468
18601
- setModalContent('xxAddAgent', 'Remove Device Group Permissions', format("Confirm removal of access rights for device group \"{0}\"?", mesh.name));
18469
+ setModalContent('xxAddAgent', "Remove Device Group Permissions", format("Confirm removal of access rights for device group \"{0}\"?", mesh.name));
18470
showModal('xxAddAgentModal', 'idx_dlgOkButton', function () {
18471
p30removeMeshFromUserEx(3, mesh._id);
18472
});
@@ -18796,7 +18664,7 @@
18664
if (rec.userids) { for (var i in rec.userids) { x += addHtmlValue4("User", rec.userids[i].split('/')[2]); } }
18665
18666
xxdialogButtons = 9;
18799
- setModalContent('xxAddAgent', 'Recording Details', x);
18667
+ setModalContent('xxAddAgent', "Recording Details", x);
18668
showModal('xxAddAgentModal', 'idx_dlgOkButton', null);
18669
}
18670
@@ -18970,7 +18838,7 @@
18838
x += addHtmlValue("", '<div style=width:250px><label><input type=checkbox class="form-check-input me-2" id=d2showTraffic ' + ((settings.showTraffic) ? 'checked' : '') + '>' + "Show Traffic" + '</label><div>');
18839
x += '</div>';
18840
18973
- setModalContent('xxAddAgent', 'Generate Report', x);
18841
+ setModalContent('xxAddAgent', "Generate Report", x);
18842
showModal('xxAddAgentModal', 'idx_dlgOkButton', generateReportDialogEx);
18843
generateReportDialogValidate();
18844
@@ -19857,7 +19725,7 @@
19725
if (typeof e.args[i] == 'object') { x += EscapeHtml(JSON.stringify(e.args[i])) + '<br /><br />'; } else { x += EscapeHtml(e.args[i]) + '<br /><br />'; }
19726
}
19727
xxdialogButtons = 1;
19860
- setModalContent('xxAddAgent', 'Server Tracing Event', '<div class=selecttext style=max-height:300px;overflow-y:auto>' + x + '</div>');
19728
+ setModalContent('xxAddAgent', "Server Tracing Event", '<div class=selecttext style=max-height:300px;overflow-y:auto>' + x + '</div>');
19729
showModal('xxAddAgentModal', 'idx_dlgOkButton', null);
19730
}
19731
@@ -19892,7 +19760,7 @@
19760
//x += '<div><label><input type=checkbox id=p41c13 ' + ((serverTraceSources.indexOf('swarmcmd') >= 0) ? 'checked' : '') + ">' + "Legacy Swarm Server Commands" + '</label></div>";
19761
x += '</div>';
19762
//setDialogMode(2, "Server Tracing", 7, setServerTracingEx, x);
19895
- setModalContent('xxAddAgent', 'Server Tracing', x);
19763
+ setModalContent('xxAddAgent', "Server Tracing", x);
19764
showModal('xxAddAgentModal', 'idx_dlgOkButton', setServerTracingEx);
19765
}
19766
@@ -20021,7 +19889,7 @@
19889
// Remind the user to add two factor authentication
19890
if ((features & 0x00040000) && (count2factoraAuths() == 0) && (x > 2)) {
19891
x = 2;
20024
- setModalContent('xxAddAgent', 'Account Security', 'Unable to access this feature until two - factor authentication is enabled.This is required for extra security.Go to the \"My Account\" tab and look at the \"Account Security\" section.');
19892
+ setModalContent('xxAddAgent', "Account Security", 'Unable to access this feature until two - factor authentication is enabled.This is required for extra security.Go to the \"My Account\" tab and look at the \"Account Security\" section.');
19893
showModal('xxAddAgentModal', 'idx_dlgOkButton');
19894
}
19895
@@ -20337,7 +20205,7 @@
20205
} else {
20206
var plugin = null;
20207
for (var i in installedPluginList) { if (installedPluginList[i]._id == id) { plugin = installedPluginList[i]; } }
20340
- setModalContent('xxAddAgent', 'Plugin Action', format("Are you sure you want to {0} the plugin: {1}", elem.value, plugin.name) + '<input id="lastPluginAct" type="hidden" value="' + elem.value + '" /><input id="lastPluginId" type="hidden" value="' + id + '" /><input id="lastPluginVersion" type="hidden" value="" />');
20208
+ setModalContent('xxAddAgent', "Plugin Action", format("Are you sure you want to {0} the plugin: {1}", elem.value, plugin.name) + '<input id="lastPluginAct" type="hidden" value="' + elem.value + '" /><input id="lastPluginId" type="hidden" value="' + id + '" /><input id="lastPluginVersion" type="hidden" value="" />');
20209
showModal('xxAddAgentModal', 'idx_dlgOkButton', () => pluginActionEx());
20210
}
20211
elem.value = '';
views/login2.handlebars
+1
-1
@@ -412,7 +412,7 @@
412
var showLanguageSelect = '{{{showLanguageSelect}}}';
413
414
function startup() {
415
- if (decodeURIComponent('{{{loginpicture}}}') == 'true') { Q('loginPicture').src = "loginlogo.png"; }
415
+ if (decodeURIComponent('{{{loginpicture}}}') == 'true') { Q('loginPicture').src = 'loginlogo.png'; }
416
417
QV('welcomeTextRow', welcomeText != '');
418
QH('welcomeText', welcomeText);