Added device sharing link revocation.

Ylian Saint-Hilaire committed Oct 30, 2020 at 17:08 UTC 248909d0560af68221674ecef0236b2dba91228f
12 files changed +1829 -1539
agents/meshcore.js
+5 -1
@@ -2590,7 +2590,7 @@ function createMeshCore(agent) {
2590 var response = null;
2591 switch (cmd) {
2592 case 'help': { // Displays available commands
2593 - var fin = '', f = '', availcommands = 'coredump,service,fdsnapshot,fdcount,startupoptions,alert,agentsize,versions,help,info,osinfo,args,print,type,dbkeys,dbget,dbset,dbcompact,eval,parseuri,httpget,nwslist,plugin,wsconnect,wssend,wsclose,notify,ls,ps,kill,netinfo,location,power,wakeonlan,setdebug,smbios,rawsmbios,toast,lock,users,sendcaps,openurl,getscript,getclip,setclip,log,av,cpuinfo,sysinfo,apf,scanwifi,wallpaper,agentmsg';
2593 + var fin = '', f = '', availcommands = 'coreinfo, coredump,service,fdsnapshot,fdcount,startupoptions,alert,agentsize,versions,help,info,osinfo,args,print,type,dbkeys,dbget,dbset,dbcompact,eval,parseuri,httpget,nwslist,plugin,wsconnect,wssend,wsclose,notify,ls,ps,kill,netinfo,location,power,wakeonlan,setdebug,smbios,rawsmbios,toast,lock,users,sendcaps,openurl,getscript,getclip,setclip,log,av,cpuinfo,sysinfo,apf,scanwifi,wallpaper,agentmsg';
2594 if (process.platform == 'win32') { availcommands += ',safemode,wpfhwacceleration,uac'; }
2595 if (amt != null) { availcommands += ',amt,amtconfig,amtevents'; }
2596 if (process.platform != 'freebsd') { availcommands += ',vm';}
@@ -2606,6 +2606,10 @@ function createMeshCore(agent) {
2606 response = "Available commands: \r\n" + fin + ".";
2607 break;
2608 }
2609 + case 'coreinfo': {
2610 + response = JSON.stringify(meshCoreObj, null, 2);
2611 + break;
2612 + }
2613 case 'agentmsg': {
2614 if (args['_'].length == 0) {
2615 response = "Proper usage:\r\n agentmsg add \"[message]\" [iconIndex]\r\n agentmsg remove [index]\r\n agentmsg list"; // Display usage
amtmanager.js
+3 -3
@@ -432,11 +432,11 @@ module.exports.CreateAmtManager = function (parent) {
432 // Connect now
433 var comm;
434 if (dev.tlsfail !== true) {
435 - parent.debug('amt', 'Relay-Connect', "TLS", dev.name, user, pass);
435 + parent.debug('amt', (dev.connType == 1) ? 'Relay-Connect' : 'LMS-Connect', "TLS", dev.name, user, pass);
436 comm = CreateWsmanComm(dev.nodeid, 16993, user, pass, 1, null, ciraconn); // Perform TLS
437 comm.xtlsFingerprint = 0; // Perform no certificate checking
438 } else {
439 - parent.debug('amt', 'Relay-Connect', "NoTLS", dev.name, user, pass);
439 + parent.debug('amt', (dev.connType == 1) ? 'Relay-Connect' : 'LMS-Connect', "NoTLS", dev.name, user, pass);
440 comm = CreateWsmanComm(dev.nodeid, 16992, user, pass, 0, null, ciraconn); // No TLS
441 }
442 var wsstack = WsmanStackCreateService(comm);
@@ -608,7 +608,7 @@ module.exports.CreateAmtManager = function (parent) {
608 if ((typeof dev.aquired.user == 'string') && (dev.aquired.user != device.intelamt.user)) { change = 1; log = 1; device.intelamt.user = dev.aquired.user; changes.push('AMT user'); }
609 if ((typeof dev.aquired.pass == 'string') && (dev.aquired.pass != device.intelamt.pass)) { change = 1; log = 1; device.intelamt.pass = dev.aquired.pass; changes.push('AMT pass'); }
610 if ((typeof dev.aquired.mpspass == 'string') && (dev.aquired.mpspass != device.intelamt.mpspass)) { change = 1; log = 1; device.intelamt.mpspass = dev.aquired.mpspass; changes.push('AMT MPS pass'); }
611 - if ((typeof dev.aquired.host == 'string') && (dev.aquired.host != device.host)) { change = 1; log = 1; device.host = dev.aquired.host; changes.push('host'); }
611 + if ((typeof dev.aquired.host == 'string') && (dev.aquired.host != device.intelamt.host)) { change = 1; log = 1; device.intelamt.host = dev.aquired.host; changes.push('AMT host'); }
612 if ((typeof dev.aquired.realm == 'string') && (dev.aquired.realm != device.intelamt.realm)) { change = 1; log = 1; device.intelamt.realm = dev.aquired.realm; changes.push('AMT realm'); }
613 if ((typeof dev.aquired.hash == 'string') && (dev.aquired.hash != device.intelamt.hash)) { change = 1; log = 1; device.intelamt.hash = dev.aquired.hash; changes.push('AMT hash'); }
614 if ((typeof dev.aquired.tls == 'number') && (dev.aquired.tls != device.intelamt.tls)) { change = 1; log = 1; device.intelamt.tls = dev.aquired.tls; changes.push('AMT TLS'); }
db.js
+17
@@ -851,6 +851,13 @@ module.exports.CreateDB = function (parent, func) {
851 }
852 }
853 };
854 + obj.GetAllTypeNodeFiltered = function (nodes, domain, type, id, func) {
855 + if (id && (id != '')) {
856 + sqlDbQuery('SELECT doc FROM meshcentral.main WHERE id = ? AND type = ? AND domain = ? AND nodeid IN (?)', [id, type, domain, nodes], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, docs); });
857 + } else {
858 + sqlDbQuery('SELECT doc FROM meshcentral.main WHERE type = ? AND domain = ? AND nodeid IN (?)', [type, domain, nodes], function (err, docs) { if (err == null) { for (var i in docs) { delete docs[i].type } } func(err, docs); });
859 + }
860 + };
861 obj.GetAllType = function (type, func) { sqlDbQuery('SELECT doc FROM meshcentral.main WHERE type = ?', [type], func); }
862 obj.GetAllIdsOfType = function (ids, domain, type, func) { sqlDbQuery('SELECT doc FROM meshcentral.main WHERE id IN (?) AND domain = ? AND type = ?', [ids, domain, type], func); }
863 obj.GetUserWithEmail = function (domain, email, func) { sqlDbQuery('SELECT doc FROM meshcentral.main WHERE domain = ? AND extra = ?', [domain, 'email/' + email], func); }
@@ -1010,6 +1017,11 @@ module.exports.CreateDB = function (parent, func) {
1017 obj.file.find(x, { type: 0 }).toArray(function (err, docs) { func(err, performTypedRecordDecrypt(docs)); });
1018 }
1019 };
1020 + obj.GetAllTypeNodeFiltered = function (nodes, domain, type, id, func) {
1021 + var x = { type: type, domain: domain, nodeid: { $in: nodes } };
1022 + if (id) { x._id = id; }
1023 + obj.file.find(x, { type: 0 }).toArray(function (err, docs) { func(err, performTypedRecordDecrypt(docs)); });
1024 + };
1025 obj.GetAllType = function (type, func) { obj.file.find({ type: type }).toArray(function (err, docs) { func(err, performTypedRecordDecrypt(docs)); }); };
1026 obj.GetAllIdsOfType = function (ids, domain, type, func) { obj.file.find({ type: type, domain: domain, _id: { $in: ids } }).toArray(function (err, docs) { func(err, performTypedRecordDecrypt(docs)); }); };
1027 obj.GetUserWithEmail = function (domain, email, func) { obj.file.find({ type: 'user', domain: domain, email: email }).toArray(function (err, docs) { func(err, performTypedRecordDecrypt(docs)); }); };
@@ -1163,6 +1175,11 @@ module.exports.CreateDB = function (parent, func) {
1175 obj.file.find(x, function (err, docs) { func(err, performTypedRecordDecrypt(docs)); });
1176 }
1177 };
1178 + obj.GetAllTypeNodeFiltered = function (nodes, domain, type, id, func) {
1179 + var x = { type: type, domain: domain, nodeid: { $in: nodes } };
1180 + if (id) { x._id = id; }
1181 + obj.file.find(x, function (err, docs) { func(err, performTypedRecordDecrypt(docs)); });
1182 + };
1183 obj.GetAllType = function (type, func) { obj.file.find({ type: type }, function (err, docs) { func(err, performTypedRecordDecrypt(docs)); }); };
1184 obj.GetAllIdsOfType = function (ids, domain, type, func) { obj.file.find({ type: type, domain: domain, _id: { $in: ids } }, function (err, docs) { func(err, performTypedRecordDecrypt(docs)); }); };
1185 obj.GetUserWithEmail = function (domain, email, func) { obj.file.find({ type: 'user', domain: domain, email: email }, { type: 0 }, function (err, docs) { func(err, performTypedRecordDecrypt(docs)); }); };
meshagent.js
+3 -30
@@ -1135,6 +1135,7 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
1135 case 'coreinfo':
1136 {
1137 // Sent by the agent to update agent information
1138 + // TODO: Check that this does not include outdates Intel AMT information
1139 ChangeAgentCoreInfo(command);
1140 break;
1141 }
@@ -1255,34 +1256,6 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
1256 }
1257 break;
1258 }
1258 - case 'acmactivate':
1259 - {
1260 - if (obj.agentInfo.capabilities & 0x20) return; // If this is a temporary device, don't do ACM activation.
1261 -
1262 - // Get the current Intel AMT policy
1263 - var mesh = parent.meshes[obj.dbMeshKey];
1264 - if ((mesh == null) || (mesh.amt == null) || (mesh.amt.type != 3) || (domain.amtacmactivation == null) || (domain.amtacmactivation.acmmatch == null) || (mesh.amt.password == null)) break; // If this is not the right policy, ignore this.
1265 -
1266 - // Get the Intel AMT admin password, randomize if needed.
1267 - var amtpassword = ((mesh.amt.password == '') ? getRandomAmtPassword() : mesh.amt.password);
1268 - if (checkAmtPassword(amtpassword) == false) return; // Invalid Intel AMT password, this should never happen.
1269 -
1270 - // Agent is asking the server to sign an Intel AMT ACM activation request
1271 - var signResponse = parent.parent.certificateOperations.signAcmRequest(domain, command, 'admin', amtpassword, obj.remoteaddrport, obj.dbNodeKey, obj.dbMeshKey, obj.agentInfo.computerName, obj.agentInfo.agentId); // TODO: Place account credentials!!!
1272 - if ((signResponse != null) && (signResponse.error == null)) {
1273 - // Log this activation event
1274 - var event = { etype: 'node', action: 'amtactivate', nodeid: obj.dbNodeKey, domain: domain.id, msgid: 58, msgArgs: [command.fqdn], msg: 'Device requested Intel(R) AMT ACM activation, FQDN: ' + command.fqdn, ip: obj.remoteaddrport };
1275 - if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the node. Another event will come.
1276 - parent.parent.DispatchEvent(parent.CreateMeshDispatchTargets(obj.dbMeshKey, [obj.dbNodeKey]), obj, event);
1277 -
1278 - // Update the device Intel AMT information
1279 - ChangeAgentCoreInfo({ 'intelamt': { user: 'admin', pass: amtpassword, uuid: command.uuid, realm: command.realm } });
1280 -
1281 - // Send the activation response
1282 - obj.send(JSON.stringify(signResponse));
1283 - }
1284 - break;
1285 - }
1259 case 'diagnostic':
1260 {
1261 if (typeof command.value == 'object') {
@@ -1482,13 +1455,13 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
1455 if (!device.intelamt) { device.intelamt = {}; }
1456 if ((command.intelamt.ver != null) && (typeof command.intelamt.ver == 'string') && (command.intelamt.ver.length < 12) && (device.intelamt.ver != command.intelamt.ver)) { changes.push('AMT version'); device.intelamt.ver = command.intelamt.ver; change = 1; log = 1; }
1457 if ((command.intelamt.sku != null) && (typeof command.intelamt.sku == 'number') && (device.intelamt.sku !== command.intelamt.sku)) { changes.push('AMT SKU'); device.intelamt.sku = command.intelamt.sku; change = 1; log = 1; }
1485 - if ((command.intelamt.state != null) && (typeof command.intelamt.state == 'number') && (device.intelamt.state != command.intelamt.state)) { changes.push('AMT state'); device.intelamt.state = command.intelamt.state; change = 1; log = 1; }
1458 + if ((command.intelamt.state != null) && (typeof command.intelamt.state == 'number') && (device.intelamt.state != command.intelamt.state)) { changes.push('AMT state'); console.log('agent', device.intelamt.state, command.intelamt.state); device.intelamt.state = command.intelamt.state; change = 1; log = 1; }
1459 if ((command.intelamt.flags != null) && (typeof command.intelamt.flags == 'number') && (device.intelamt.flags != command.intelamt.flags)) {
1460 if (device.intelamt.flags) { changes.push('AMT flags (' + device.intelamt.flags + ' --> ' + command.intelamt.flags + ')'); } else { changes.push('AMT flags (' + command.intelamt.flags + ')'); }
1461 device.intelamt.flags = command.intelamt.flags; change = 1; log = 1;
1462 }
1463 if ((command.intelamt.realm != null) && (typeof command.intelamt.realm == 'string') && (device.intelamt.realm != command.intelamt.realm)) { changes.push('AMT realm'); device.intelamt.realm = command.intelamt.realm; change = 1; log = 1; }
1491 - if ((command.intelamt.host != null) && (typeof command.intelamt.host == 'string') && (device.intelamt.host != command.intelamt.host)) { changes.push('AMT host'); device.intelamt.host = command.intelamt.host; change = 1; log = 1; }
1464 + //if ((command.intelamt.host != null) && (typeof command.intelamt.host == 'string') && (device.intelamt.host != command.intelamt.host)) { changes.push('AMT host'); device.intelamt.host = command.intelamt.host; change = 1; log = 1; }
1465 if ((command.intelamt.uuid != null) && (typeof command.intelamt.uuid == 'string') && (device.intelamt.uuid != command.intelamt.uuid)) { changes.push('AMT uuid'); device.intelamt.uuid = command.intelamt.uuid; change = 1; log = 1; }
1466 if ((command.intelamt.user != null) && (typeof command.intelamt.user == 'string') && (device.intelamt.user != command.intelamt.user)) { changes.push('AMT user'); device.intelamt.user = command.intelamt.user; change = 1; log = 1; }
1467 if ((command.intelamt.pass != null) && (typeof command.intelamt.pass == 'string') && (device.intelamt.pass != command.intelamt.pass)) { changes.push('AMT pass'); device.intelamt.pass = command.intelamt.pass; change = 1; log = 1; }
meshdesktopmultiplex.js
+36
@@ -803,7 +803,32 @@ function CreateDesktopMultiplexor(parent, domain, nodeid, func) {
803 return obj;
804 }
805
806 +function checkDeviceSharePublicIdentifier(parent, domain, nodeid, pid, func) {
807 + // Check the public id
808 + parent.db.GetAllTypeNodeFiltered([nodeid], domain.id, 'deviceshare', null, function (err, docs) {
809 + if ((err != null) || (docs.length == 0)) { func(false); return; }
810 +
811 + // Search for the device share public identifier
812 + var found = false;
813 + for (var i = 0; i < docs.length; i++) { if (docs[i].publicid == pid) { found = true; } }
814 + func(found);
815 + });
816 +}
817 +
818 module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie) {
819 + if ((cookie != null) && (typeof cookie.nid == 'string') && (typeof cookie.pid == 'string')) {
820 + checkDeviceSharePublicIdentifier(parent, domain, cookie.nid, cookie.pid, function (result) {
821 + // If the identifier if not found, close the connection
822 + if (result == false) { try { ws.close(); } catch (e) { } return; }
823 + // Public device sharing identifier found, continue as normal.
824 + CreateMeshRelayEx(parent, ws, req, domain, user, cookie);
825 + });
826 + } else {
827 + CreateMeshRelayEx(parent, ws, req, domain, user, cookie);
828 + }
829 +}
830 +
831 +function CreateMeshRelayEx(parent, ws, req, domain, user, cookie) {
832 const currentTime = Date.now();
833 if (cookie) {
834 if ((typeof cookie.expire == 'number') && (cookie.expire <= currentTime)) { delete req.query.nodeid; }
@@ -819,6 +844,14 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
844 obj.ruserid = null;
845 obj.req = req; // Used in multi-server.js
846
847 + // Setup subscription for desktop sharing public identifier
848 + // If the identifier is removed, drop the connection
849 + if ((cookie != null) && (typeof cookie.pid == 'string')) {
850 + obj.pid = cookie.pid;
851 + parent.parent.AddEventDispatch([obj.nodeid], obj);
852 + obj.HandleEvent = function (source, event, ids, id) { if ((event.action == 'removedDeviceShare') && (obj.pid == event.publicid)) { obj.close(); } }
853 + }
854 +
855 // Check relay authentication
856 if ((user == null) && (obj.req.query != null) && (obj.req.query.rauth != null)) {
857 const rcookie = parent.parent.decodeCookie(obj.req.query.rauth, parent.parent.loginCookieEncryptionKey, 240); // Cookie with 4 hour timeout
@@ -878,6 +911,9 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
911 // Clear timers if present
912 if (obj.pingtimer != null) { clearInterval(obj.pingtimer); delete obj.pingtimer; }
913 if (obj.pongtimer != null) { clearInterval(obj.pongtimer); delete obj.pongtimer; }
914 +
915 + // Unsubscribe
916 + if (obj.pid != null) { parent.parent.RemoveAllEventDispatch(obj); }
917 };
918
919 obj.sendAgentMessage = function (command, userid, domainid) {
meshrelay.js
+40
@@ -13,7 +13,33 @@
13 /*jshint esversion: 6 */
14 "use strict";
15
16 +
17 +function checkDeviceSharePublicIdentifier(parent, domain, nodeid, pid, func) {
18 + // Check the public id
19 + parent.db.GetAllTypeNodeFiltered([nodeid], domain.id, 'deviceshare', null, function (err, docs) {
20 + if ((err != null) || (docs.length == 0)) { func(false); return; }
21 +
22 + // Search for the device share public identifier
23 + var found = false;
24 + for (var i = 0; i < docs.length; i++) { if (docs[i].publicid == pid) { found = true; } }
25 + func(found);
26 + });
27 +}
28 +
29 module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie) {
30 + if ((cookie != null) && (typeof cookie.nid == 'string') && (typeof cookie.pid == 'string')) {
31 + checkDeviceSharePublicIdentifier(parent, domain, cookie.nid, cookie.pid, function (result) {
32 + // If the identifier if not found, close the connection
33 + if (result == false) { try { ws.close(); } catch (e) { } return; }
34 + // Public device sharing identifier found, continue as normal.
35 + CreateMeshRelayEx(parent, ws, req, domain, user, cookie);
36 + });
37 + } else {
38 + CreateMeshRelayEx(parent, ws, req, domain, user, cookie);
39 + }
40 +}
41 +
42 +function CreateMeshRelayEx(parent, ws, req, domain, user, cookie) {
43 const currentTime = Date.now();
44 if (cookie) {
45 if ((typeof cookie.expire == 'number') && (cookie.expire <= currentTime)) { try { ws.close(); parent.parent.debug('relay', 'Relay: Expires cookie (' + req.clientIp + ')'); } catch (e) { console.log(e); } return; }
@@ -26,6 +52,14 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
52 obj.ruserid = null;
53 obj.req = req; // Used in multi-server.js
54
55 + // Setup subscription for desktop sharing public identifier
56 + // If the identifier is removed, drop the connection
57 + if ((cookie != null) && (typeof cookie.pid == 'string')) {
58 + obj.pid = cookie.pid;
59 + parent.parent.AddEventDispatch([cookie.nid], obj);
60 + obj.HandleEvent = function (source, event, ids, id) { if ((event.action == 'removedDeviceShare') && (obj.pid == event.publicid)) { closeBothSides(); } }
61 + }
62 +
63 // Check relay authentication
64 if ((user == null) && (obj.req.query != null) && (obj.req.query.rauth != null)) {
65 const rcookie = parent.parent.decodeCookie(obj.req.query.rauth, parent.parent.loginCookieEncryptionKey, 240); // Cookie with 4 hour timeout
@@ -78,6 +112,9 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
112 delete obj.ws;
113 delete obj.peer;
114 delete obj.expireTimer;
115 +
116 + // Unsubscribe
117 + if (obj.pid != null) { parent.parent.RemoveAllEventDispatch(obj); }
118 };
119
120 obj.sendAgentMessage = function (command, userid, domainid) {
@@ -465,6 +502,9 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
502 delete obj.peer;
503 if (obj.pingtimer != null) { clearInterval(obj.pingtimer); delete obj.pingtimer; }
504 if (obj.pongtimer != null) { clearInterval(obj.pongtimer); delete obj.pongtimer; }
505 +
506 + // Unsubscribe
507 + if (obj.pid != null) { parent.parent.RemoveAllEventDispatch(obj); }
508 }
509
510 // Record a new entry in a recording log
meshuser.js
+130 -4
@@ -4577,9 +4577,107 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4577 ws.send(JSON.stringify({ action: 'createInviteLink', meshid: command.meshid, url: url, expire: command.expire, cookie: inviteCookie, responseid: command.responseid, tag: command.tag }));
4578 break;
4579 }
4580 + case 'deviceShares': {
4581 + var err = null;
4582 + if (common.validateString(command.nodeid, 8, 128) == false) { err = 'Invalid node id'; } // Check the nodeid
4583 +
4584 + // Handle any errors
4585 + if (err != null) {
4586 + if (command.responseid != null) { try { ws.send(JSON.stringify({ action: 'deviceShares', responseid: command.responseid, result: err })); } catch (ex) { } }
4587 + break;
4588 + }
4589 +
4590 + // Get the device rights
4591 + parent.GetNodeWithRights(domain, user, command.nodeid, function (node, rights, visible) {
4592 + // If node not found or we don't have remote control, reject.
4593 + if ((node == null) || ((rights & 8) == 0)) return;
4594 +
4595 + // If there is MESHRIGHT_DESKLIMITEDINPUT or MESHRIGHT_REMOTEVIEWONLY on this account, reject this request.
4596 + if ((rights != 0xFFFFFFFF) && ((rights & 4352) != 0)) return;
4597 +
4598 + parent.db.GetAllTypeNodeFiltered([command.nodeid], domain.id, 'deviceshare', null, function (err, docs) {
4599 + if (err != null) return;
4600 + var now = Date.now(), removed = false, okDocs = [];
4601 + for (var i = 0; i < docs.length; i++) {
4602 + const doc = docs[i];
4603 + if (doc.expireTime < now) {
4604 + // This share is expired.
4605 + parent.db.Remove(doc._id, function () { }); delete docs[i]; removed = true;
4606 + } else {
4607 + // This share is ok, remove extra data we don't need to send.
4608 + delete doc._id; delete doc.domain; delete doc.nodeid; delete doc.type;
4609 + okDocs.push(doc);
4610 + }
4611 + }
4612 + try { ws.send(JSON.stringify({ action: 'deviceShares', nodeid: command.nodeid, deviceShares: okDocs })); } catch (ex) { }
4613 +
4614 + // If we removed any shares, send device share update
4615 + if (removed == true) {
4616 + var targets = parent.CreateNodeDispatchTargets(node.meshid, node._id, ['server-users', user._id]);
4617 + parent.parent.DispatchEvent(targets, obj, { etype: 'node', nodeid: node._id, action: 'deviceShareUpdate', domain: domain.id, deviceShares: okDocs, nolog: 1 });
4618 + }
4619 + });
4620 + });
4621 +
4622 + break;
4623 + }
4624 + case 'removeDeviceShare': {
4625 + var err = null;
4626 + if (common.validateString(command.nodeid, 8, 128) == false) { err = 'Invalid node id'; } // Check the nodeid
4627 + else if (common.validateString(command.publicid, 1, 128) == false) { err = 'Invalid public id'; } // Check the public identifier
4628 +
4629 + // Handle any errors
4630 + if (err != null) {
4631 + if (command.responseid != null) { try { ws.send(JSON.stringify({ action: 'removeDeviceShare', responseid: command.responseid, result: err })); } catch (ex) { } }
4632 + break;
4633 + }
4634 +
4635 + // Get the device rights
4636 + parent.GetNodeWithRights(domain, user, command.nodeid, function (node, rights, visible) {
4637 + // If node not found or we don't have remote control, reject.
4638 + if ((node == null) || ((rights & 8) == 0)) return;
4639 +
4640 + // If there is MESHRIGHT_DESKLIMITEDINPUT or MESHRIGHT_REMOTEVIEWONLY on this account, reject this request.
4641 + if ((rights != 0xFFFFFFFF) && ((rights & 4352) != 0)) return;
4642 +
4643 + parent.db.GetAllTypeNodeFiltered([command.nodeid], domain.id, 'deviceshare', null, function (err, docs) {
4644 + if (err != null) return;
4645 +
4646 + // Remove device sharing
4647 + var now = Date.now(), removedExact = null, removed = false, okDocs = [];
4648 + for (var i = 0; i < docs.length; i++) {
4649 + const doc = docs[i];
4650 + if (doc.publicid == command.publicid) { parent.db.Remove(doc._id, function () { }); removedExact = doc; removed = true; }
4651 + else if (doc.expireTime < now) { parent.db.Remove(doc._id, function () { }); removed = true; } else {
4652 + // This share is ok, remove extra data we don't need to send.
4653 + delete doc._id; delete doc.domain; delete doc.nodeid; delete doc.type;
4654 + okDocs.push(doc);
4655 + }
4656 + }
4657 +
4658 + // Confirm removal if requested
4659 + if (command.responseid != null) { try { ws.send(JSON.stringify({ action: 'removeDeviceShare', responseid: command.responseid, nodeid: command.nodeid, publicid: doc.publicid, removed: removedExact })); } catch (ex) { } }
4660 +
4661 + // Event device share removal
4662 + if (removedExact != null) {
4663 + // Send out an event that we removed a device share
4664 + var targets = parent.CreateNodeDispatchTargets(node.meshid, node._id, ['server-users', user._id]);
4665 + var event = { etype: 'node', userid: user._id, username: user.name, nodeid: node._id, action: 'removedDeviceShare', msg: 'Removed Device Share', msgid: 102, msgArgs: [removedExact.guestName], domain: domain.id, publicid: command.publicid };
4666 + parent.parent.DispatchEvent(targets, obj, event);
4667 + }
4668 +
4669 + // If we removed any shares, send device share update
4670 + if (removed == true) {
4671 + var targets = parent.CreateNodeDispatchTargets(node.meshid, node._id, ['server-users', user._id]);
4672 + parent.parent.DispatchEvent(targets, obj, { etype: 'node', nodeid: node._id, action: 'deviceShareUpdate', domain: domain.id, deviceShares: okDocs, nolog: 1 });
4673 + }
4674 + });
4675 + });
4676 + break;
4677 + }
4678 case 'createDeviceShareLink': {
4679 var err = null, maxExpireMinutes = (typeof domain.maxguestsessionsharingtime == 'number') ? domain.maxguestsessionsharingtime : 60;
4582 - if (common.validateString(command.nodeid, 8, 128) == false) { err = 'Invalid node id'; } // Check the meshid
4680 + if (common.validateString(command.nodeid, 8, 128) == false) { err = 'Invalid node id'; } // Check the nodeid
4681 else if (common.validateString(command.guestname, 1, 128) == false) { err = 'Invalid guest name'; } // Check the guest name
4682 else if (common.validateInt(command.expire, 1, maxExpireMinutes) == false) { err = 'Invalid expire time'; } // Check the expire time in hours
4683 else if (common.validateInt(command.consent, 0, 256) == false) { err = 'Invalid flags'; } // Check the flags
@@ -4595,7 +4693,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4693 break;
4694 }
4695
4598 - // Get the device from the database
4696 + // Get the device rights
4697 parent.GetNodeWithRights(domain, user, command.nodeid, function (node, rights, visible) {
4698 // If node not found or we don't have remote control, reject.
4699 if ((node == null) || ((rights & 8) == 0)) return;
@@ -4604,8 +4702,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4702 if ((rights != 0xFFFFFFFF) && ((rights & 4352) != 0)) return;
4703
4704 // Create cookie
4607 - var expireTime = Date.now() + (60000 * command.expire);
4608 - const inviteCookie = parent.parent.encodeCookie({ a: 5, uid: user._id, gn: command.guestname, nid: node._id, cf: command.consent, expire: expireTime }, parent.parent.invitationLinkEncryptionKey);
4705 + var publicid = getRandomPassword();
4706 + var startTime = Date.now(), expireTime = Date.now() + (60000 * command.expire);
4707 + const inviteCookie = parent.parent.encodeCookie({ a: 5, uid: user._id, gn: command.guestname, nid: node._id, cf: command.consent, start: startTime, expire: expireTime, pid: publicid }, parent.parent.invitationLinkEncryptionKey);
4708 if (inviteCookie == null) { if (command.responseid != null) { try { ws.send(JSON.stringify({ action: 'createDeviceShareLink', responseid: command.responseid, result: 'Unable to generate shareing cookie' })); } catch (ex) { } } return; }
4709 command.expire = expireTime;
4710
@@ -4618,6 +4717,33 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4717 if (serverName.split('.') == 1) { url = '/' + xdomain + 'desktop?c=' + inviteCookie; }
4718 command.url = url;
4719 ws.send(JSON.stringify(command));
4720 +
4721 + // Create a device sharing database entry
4722 + parent.db.Set({ type: 'deviceshare', nodeid: node._id, domain: node.domain, publicid: publicid, startTime: startTime, expireTime: expireTime, userid: user._id, guestName: command.guestname, consent: command.consent, url: url });
4723 +
4724 + // Send out an event that we added a device share
4725 + var targets = parent.CreateNodeDispatchTargets(node.meshid, node._id, ['server-users', user._id]);
4726 + var event = { etype: 'node', userid: user._id, username: user.name, nodeid: node._id, action: 'addedDeviceShare', msg: 'Added Device Share', msgid: 101, msgArgs: [command.guestname, 'DATETIME:' + startTime, 'DATETIME:' + expireTime], domain: domain.id };
4727 + parent.parent.DispatchEvent(targets, obj, event);
4728 +
4729 + // Send device share update
4730 + parent.db.GetAllTypeNodeFiltered([command.nodeid], domain.id, 'deviceshare', null, function (err, docs) {
4731 + if (err != null) return;
4732 +
4733 + // Check device sharing
4734 + var now = Date.now();
4735 + for (var i = 0; i < docs.length; i++) {
4736 + const doc = docs[i];
4737 + if (doc.expireTime < now) { parent.db.Remove(doc._id, function () { }); delete docs[i]; } else {
4738 + // This share is ok, remove extra data we don't need to send.
4739 + delete doc._id; delete doc.domain; delete doc.nodeid; delete doc.type;
4740 + }
4741 + }
4742 +
4743 + // Send device share update
4744 + var targets = parent.CreateNodeDispatchTargets(node.meshid, node._id, ['server-users', user._id]);
4745 + parent.parent.DispatchEvent(targets, obj, { etype: 'node', nodeid: node._id, action: 'deviceShareUpdate', domain: domain.id, deviceShares: docs, nolog: 1 });
4746 + });
4747 });
4748 break;
4749 }
mpsserver.js
-39
@@ -701,7 +701,6 @@ module.exports.CreateMpsServer = function (parent, db, args, certificates) {
701 var addr = data.substring(10 + requestLen, 10 + requestLen + addrLen);
702 var port = common.ReadInt(data, 10 + requestLen + addrLen);
703 parent.debug('mpscmd', '--> GLOBAL_REQUEST', request, addr + ':' + port);
704 - ChangeHostname(socket, addr, socket.tag.SystemId);
704 if (socket.tag.boundPorts.indexOf(port) == -1) { socket.tag.boundPorts.push(port); }
705 SendTcpForwardSuccessReply(socket, port);
706 return 14 + requestLen + addrLen;
@@ -1131,44 +1130,6 @@ module.exports.CreateMpsServer = function (parent, db, args, certificates) {
1130 return cirachannel;
1131 };
1132
1134 - function ChangeHostname(socket, host, systemid) {
1135 - if (socket.tag.host === host) return; // Nothing to change
1136 - socket.tag.host = host;
1137 -
1138 - // Change the device
1139 - obj.db.Get(socket.tag.nodeid, function (err, nodes) {
1140 - if ((nodes == null) || (nodes.length !== 1)) return;
1141 - var node = nodes[0];
1142 -
1143 - // See if any changes need to be made
1144 - if ((node.intelamt != null) && (node.intelamt.host == host) && (node.name != null) && (node.name != '') && (node.intelamt.state == 2)) return;
1145 -
1146 - // Get the mesh for this device
1147 - obj.db.Get(node.meshid, function (err, meshes) {
1148 - if ((meshes == null) || (meshes.length !== 1)) return;
1149 - var mesh = meshes[0];
1150 -
1151 - // Ready the node change event
1152 - var changes = ['host'], event = { etype: 'node', action: 'changenode', nodeid: node._id };
1153 - event.msg = +": ";
1154 -
1155 - // Make the change & save
1156 - if (node.intelamt == null) node.intelamt = {};
1157 - node.intelamt.host = host;
1158 - node.intelamt.state = 2; // Set the state to activated, since this is pretty obvious, we have a CIRA connection.
1159 - if (((node.name == null) || (node.name == '')) && (host != null) && (host != '')) { node.name = host.split('.')[0]; } // If this system has no name, set it to the start of the domain name.
1160 - if (((node.name == null) || (node.name == '')) && (systemid != null)) { node.name = systemid; } // If this system still has no name, set it to the system GUID.
1161 - obj.db.Set(node);
1162 -
1163 - // Event the node change
1164 - event.msg = 'CIRA changed device ' + node.name + ' from group ' + mesh.name + ': ' + changes.join(', ');
1165 - event.node = parent.webserver.CloneSafeNode(node);
1166 - if (obj.db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the node. Another event will come.
1167 - obj.parent.DispatchEvent(['*', node.meshid], obj, event);
1168 - });
1169 - });
1170 - }
1171 -
1133 // Change a node to a new meshid, this is called when a node changes groups.
1134 obj.changeDeviceMesh = function (nodeid, newMeshId) {
1135 var connectionArray = obj.ciraConnections[nodeid];
public/scripts/amt-wsman-0.2.0-min.js
+1 -1
@@ -1 +1 @@
1 -var WsmanStackCreateService=function(e,s,r,a,o,t){var p={};function l(e){if(!e)return"";var s=" ";for(var r in e)e.hasOwnProperty(r)&&0===r.indexOf("@")&&(s+=r.substring(1)+'="'+e[r]+'" ');return s}function w(e){if(!e)return"";if("string"==typeof e)return e;if(e.InstanceID)return'<w:SelectorSet><w:Selector Name="InstanceID">'+e.InstanceID+"</w:Selector></w:SelectorSet>";var s="<w:SelectorSet>";for(var r in e)if(e.hasOwnProperty(r)){if(s+='<w:Selector Name="'+r+'">',e[r].ReferenceParameters){s+="<a:EndpointReference>",s+="<a:Address>"+e[r].Address+"</a:Address><a:ReferenceParameters><w:ResourceURI>"+e[r].ReferenceParameters.ResourceURI+"</w:ResourceURI><w:SelectorSet>";var a=e[r].ReferenceParameters.SelectorSet.Selector;if(Array.isArray(a))for(var o=0;o<a.length;o++)s+="<w:Selector"+l(a[o])+">"+a[o].Value+"</w:Selector>";else s+="<w:Selector"+l(a)+">"+a.Value+"</w:Selector>";s+="</w:SelectorSet></a:ReferenceParameters></a:EndpointReference>"}else s+=e[r];s+="</w:Selector>"}return s+="</w:SelectorSet>"}return p.NextMessageId=1,p.Address="/wsman",p.comm=CreateWsmanComm(e,s,r,a,o,t),p.PerformAjax=function(e,o,s,r,a){null==a&&(a=""),p.comm.PerformAjax('<?xml version=\"1.0\" encoding=\"utf-8\"?><Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:w="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd" xmlns="http://www.w3.org/2003/05/soap-envelope" '+a+"><Header><a:Action>"+e,function(e,s,r){if(200==s){var a=p.ParseWsman(e);a&&null!=a?o(p,a.Header.ResourceURI,a,200,r):o(p,null,{Header:{HttpError:s}},601,r)}else o(p,null,{Header:{HttpError:s}},s,r)},s,r)},p.CancelAllQueries=function(e){p.comm.CancelAllQueries(e)},p.GetNameFromUrl=function(e){var s=e.lastIndexOf("/");return-1==s?e:e.substring(s+1)},p.ExecSubscribe=function(e,s,r,a,o,t,n,l,d,c){var m="",i="";null!=d&&null!=c&&(m="<t:IssuedTokens><t:RequestSecurityTokenResponse><t:TokenType>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken</t:TokenType><t:RequestedSecurityToken><se:UsernameToken><se:Username>"+d+'</se:Username><se:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd#PasswordText">'+c+"</se:Password></se:UsernameToken></t:RequestedSecurityToken></t:RequestSecurityTokenResponse></t:IssuedTokens>",i='<Auth Profile="http://schemas.xmlsoap.org/ws/2004/08/eventing/DeliveryModes/secprofile/http/digest"/>'),l=null!=l&&null!=l?"<a:ReferenceParameters>"+l+"</a:ReferenceParameters>":"";var u="http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>"+w(n)+m+'</Header><Body><e:Subscribe><e:Delivery Mode="http://schemas.dmtf.org/wbem/wsman/1/wsman/'+s+'"><e:NotifyTo><a:Address>'+r+"</a:Address></e:NotifyTo>"+i+"</e:Delivery><e:Expires>PT0.000000S</e:Expires></e:Subscribe>";p.PerformAjax(u+"</Body></Envelope>",a,o,t,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing" xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:se="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:m="http://x.com"')},p.ExecUnSubscribe=function(e,s,r,a,o){var t="http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>"+w(o)+"</Header><Body><e:Unsubscribe/>";p.PerformAjax(t+"</Body></Envelope>",s,r,a,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing"')},p.ExecPut=function(e,s,r,a,o,t){var n="http://schemas.xmlsoap.org/ws/2004/09/transfer/Put</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60.000S</w:OperationTimeout>"+w(t)+"</Header><Body>"+function(e,s){if(!e||null==s)return"";var r=p.GetNameFromUrl(e),a="<r:"+r+' xmlns:r="'+e+'">';for(var o in s)if(s.hasOwnProperty(o)&&0!==o.indexOf("__")&&0!==o.indexOf("@")&&void 0!==s[o]&&null!==s[o]&&"function"!=typeof s[o])if("object"==typeof s[o]&&s[o].ReferenceParameters){a+="<r:"+o+"><a:Address>"+s[o].Address+"</a:Address><a:ReferenceParameters><w:ResourceURI>"+s[o].ReferenceParameters.ResourceURI+"</w:ResourceURI><w:SelectorSet>";var t=s[o].ReferenceParameters.SelectorSet.Selector;if(Array.isArray(t))for(var n=0;n<t.length;n++)a+="<w:Selector"+l(t[n])+">"+t[n].Value+"</w:Selector>";else a+="<w:Selector"+l(t)+">"+t.Value+"</w:Selector>";a+="</w:SelectorSet></a:ReferenceParameters></r:"+o+">"}else if(Array.isArray(s[o]))for(n=0;n<s[o].length;n++)a+="<r:"+o+">"+s[o][n].toString()+"</r:"+o+">";else a+="<r:"+o+">"+s[o].toString()+"</r:"+o+">";return a+="</r:"+r+">"}(e,s);p.PerformAjax(n+"</Body></Envelope>",r,a,o)},p.ExecCreate=function(e,s,r,a,o,t){var n=p.GetNameFromUrl(e),l="http://schemas.xmlsoap.org/ws/2004/09/transfer/Create</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+w(t)+"</Header><Body><g:"+n+' xmlns:g="'+e+'">';for(var d in s)l+="<g:"+d+">"+s[d]+"</g:"+d+">";p.PerformAjax(l+"</g:"+n+"></Body></Envelope>",r,a,o)},p.ExecCreateXml=function(e,s,r,a,o){var t=p.GetNameFromUrl(e);p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Create</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60.000S</w:OperationTimeout></Header><Body><r:"+t+' xmlns:r="'+e+'">'+s+"</r:"+t+"></Body></Envelope>",r,a,o)},p.ExecDelete=function(e,s,r,a,o){var t="http://schemas.xmlsoap.org/ws/2004/09/transfer/Delete</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+w(s)+"</Header><Body /></Envelope>";p.PerformAjax(t,r,a,o)},p.ExecGet=function(e,s,r,a){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Get</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body /></Envelope>",s,r,a)},p.ExecMethod=function(e,s,r,a,o,t,n){var l="";for(var d in r)if(null!=r[d])if(Array.isArray(r[d]))for(var c in r[d])l+="<r:"+d+">"+r[d][c]+"</r:"+d+">";else l+="<r:"+d+">"+r[d]+"</r:"+d+">";p.ExecMethodXml(e,s,l,a,o,t,n)},p.ExecMethodXml=function(e,s,r,a,o,t,n){p.PerformAjax(e+"/"+s+"</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+w(n)+"</Header><Body><r:"+s+'_INPUT xmlns:r="'+e+'">'+r+"</r:"+s+"_INPUT></Body></Envelope>",a,o,t)},p.ExecEnum=function(e,s,r,a){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Enumerate</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++'</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Enumerate xmlns="http://schemas.xmlsoap.org/ws/2004/09/enumeration" /></Body></Envelope>',s,r,a)},p.ExecPull=function(e,s,r,a,o){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Pull</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++'</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Pull xmlns="http://schemas.xmlsoap.org/ws/2004/09/enumeration"><EnumerationContext>'+s+"</EnumerationContext><MaxElements>999</MaxElements><MaxCharacters>99999</MaxCharacters></Pull></Body></Envelope>",r,a,o)},p.ParseWsman=function(s){try{s.childNodes||(s=function(e){{if(window.DOMParser)return(new DOMParser).parseFromString(e,"text/xml");var s=new ActiveXObject("Microsoft.XMLDOM");return s.async=!1,s.loadXML(e),s}}(s));var e,r={Header:{}},a=s.getElementsByTagName("Header")[0];if(!(a=a||s.getElementsByTagName("a:Header")[0]))return null;for(var o=0;o<a.childNodes.length;o++){var t=a.childNodes[o];r.Header[t.localName]=t.textContent}var n=s.getElementsByTagName("Body")[0];if(!(n=n||s.getElementsByTagName("a:Body")[0]))return null;if(0<n.childNodes.length){var l=(e=n.childNodes[0].localName).indexOf("_OUTPUT");-1!=l&&l==e.length-7&&(e=e.substring(0,e.length-7)),r.Header.Method=e,r.Body=function e(s){var r,a={};for(var o=0;o<s.childNodes.length;o++){var t=s.childNodes[o];"true"==(r=0==t.childElementCount?t.textContent:e(t))&&(r=!0),"false"==r&&(r=!1);var n=r;if(0<t.attributes.length){n={Value:r};for(var l=0;l<t.attributes.length;l++)n["@"+t.attributes[l].name]=t.attributes[l].value}a[t.localName]instanceof Array?a[t.localName].push(n):null==a[t.localName]?a[t.localName]=n:a[t.localName]=[a[t.localName],n]}return a}(n.childNodes[0])}return r}catch(e){return console.log("Unable to parse XML: "+s),null}},p}
\ No newline at end of file
1 +var WsmanStackCreateService=function(e,s,r,a,o,t){var p={};function l(e){if(!e)return"";var s=" ";for(var r in e)e.hasOwnProperty(r)&&0===r.indexOf("@")&&(s+=r.substring(1)+'="'+e[r]+'" ');return s}function w(e){if(!e)return"";if("string"==typeof e)return e;if(e.InstanceID)return'<w:SelectorSet><w:Selector Name="InstanceID">'+e.InstanceID+"</w:Selector></w:SelectorSet>";var s="<w:SelectorSet>";for(var r in e)if(e.hasOwnProperty(r)){if(s+='<w:Selector Name="'+r+'">',e[r].ReferenceParameters){s+="<a:EndpointReference>",s+="<a:Address>"+e[r].Address+"</a:Address><a:ReferenceParameters><w:ResourceURI>"+e[r].ReferenceParameters.ResourceURI+"</w:ResourceURI><w:SelectorSet>";var a=e[r].ReferenceParameters.SelectorSet.Selector;if(Array.isArray(a))for(var o=0;o<a.length;o++)s+="<w:Selector"+l(a[o])+">"+a[o].Value+"</w:Selector>";else s+="<w:Selector"+l(a)+">"+a.Value+"</w:Selector>";s+="</w:SelectorSet></a:ReferenceParameters></a:EndpointReference>"}else s+=e[r];s+="</w:Selector>"}return s+="</w:SelectorSet>"}return p.NextMessageId=1,p.Address="/wsman",p.comm=CreateWsmanComm(e,s,r,a,o,t),p.PerformAjax=function(e,o,s,r,a){null==a&&(a=""),p.comm.PerformAjax('<?xml version=\"1.0\" encoding=\"utf-8\"?><Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:w="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd" xmlns="http://www.w3.org/2003/05/soap-envelope" '+a+"><Header><a:Action>"+e,function(e,s,r){if(200==s){var a=p.ParseWsman(e);a&&null!=a?o(p,a.Header.ResourceURI,a,200,r):o(p,null,{Header:{HttpError:s}},601,r)}else o(p,null,{Header:{HttpError:s}},s,r)},s,r)},p.CancelAllQueries=function(e){p.comm.CancelAllQueries(e)},p.GetNameFromUrl=function(e){var s=e.lastIndexOf("/");return-1==s?e:e.substring(s+1)},p.ExecSubscribe=function(e,s,r,a,o,t,n,l,c,d){var m="",i="";null!=c&&null!=d&&(m="<t:IssuedTokens><t:RequestSecurityTokenResponse><t:TokenType>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken</t:TokenType><t:RequestedSecurityToken><se:UsernameToken><se:Username>"+c+'</se:Username><se:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd#PasswordText">'+d+"</se:Password></se:UsernameToken></t:RequestedSecurityToken></t:RequestSecurityTokenResponse></t:IssuedTokens>",i='<Auth Profile="http://schemas.xmlsoap.org/ws/2004/08/eventing/DeliveryModes/secprofile/http/digest"/>'),l=null!=l&&null!=l?"<a:ReferenceParameters>"+l+"</a:ReferenceParameters>":"";var u="http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>"+w(n)+m+'</Header><Body><e:Subscribe><e:Delivery Mode="http://schemas.dmtf.org/wbem/wsman/1/wsman/'+s+'"><e:NotifyTo><a:Address>'+r+"</a:Address></e:NotifyTo>"+i+"</e:Delivery><e:Expires>PT0.000000S</e:Expires></e:Subscribe>";p.PerformAjax(u+"</Body></Envelope>",a,o,t,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing" xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:se="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:m="http://x.com"')},p.ExecUnSubscribe=function(e,s,r,a,o){var t="http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>"+w(o)+"</Header><Body><e:Unsubscribe/>";p.PerformAjax(t+"</Body></Envelope>",s,r,a,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing"')},p.ExecPut=function(e,s,r,a,o,t){var n="http://schemas.xmlsoap.org/ws/2004/09/transfer/Put</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60.000S</w:OperationTimeout>"+w(t)+"</Header><Body>"+function(e,s){if(!e||null==s)return"";var r=p.GetNameFromUrl(e),a="<r:"+r+' xmlns:r="'+e+'">';for(var o in s)if(s.hasOwnProperty(o)&&0!==o.indexOf("__")&&0!==o.indexOf("@")&&void 0!==s[o]&&null!==s[o]&&"function"!=typeof s[o])if("object"==typeof s[o]&&s[o].ReferenceParameters){a+="<r:"+o+"><a:Address>"+s[o].Address+"</a:Address><a:ReferenceParameters><w:ResourceURI>"+s[o].ReferenceParameters.ResourceURI+"</w:ResourceURI><w:SelectorSet>";var t=s[o].ReferenceParameters.SelectorSet.Selector;if(Array.isArray(t))for(var n=0;n<t.length;n++)a+="<w:Selector"+l(t[n])+">"+t[n].Value+"</w:Selector>";else a+="<w:Selector"+l(t)+">"+t.Value+"</w:Selector>";a+="</w:SelectorSet></a:ReferenceParameters></r:"+o+">"}else if(Array.isArray(s[o]))for(n=0;n<s[o].length;n++)a+="<r:"+o+">"+s[o][n].toString()+"</r:"+o+">";else a+="<r:"+o+">"+s[o].toString()+"</r:"+o+">";return a+="</r:"+r+">"}(e,s);p.PerformAjax(n+"</Body></Envelope>",r,a,o)},p.ExecCreate=function(e,s,r,a,o,t){var n=p.GetNameFromUrl(e),l="http://schemas.xmlsoap.org/ws/2004/09/transfer/Create</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+w(t)+"</Header><Body><g:"+n+' xmlns:g="'+e+'">';for(var c in s)l+="<g:"+c+">"+s[c]+"</g:"+c+">";p.PerformAjax(l+"</g:"+n+"></Body></Envelope>",r,a,o)},p.ExecCreateXml=function(e,s,r,a,o){var t=p.GetNameFromUrl(e);p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Create</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60.000S</w:OperationTimeout></Header><Body><r:"+t+' xmlns:r="'+e+'">'+s+"</r:"+t+"></Body></Envelope>",r,a,o)},p.ExecDelete=function(e,s,r,a,o){var t="http://schemas.xmlsoap.org/ws/2004/09/transfer/Delete</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+w(s)+"</Header><Body /></Envelope>";p.PerformAjax(t,r,a,o)},p.ExecGet=function(e,s,r,a){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Get</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body /></Envelope>",s,r,a)},p.ExecMethod=function(e,s,r,a,o,t,n){var l="";for(var c in r)if(null!=r[c])if(Array.isArray(r[c]))for(var d in r[c])l+="<r:"+c+">"+r[c][d]+"</r:"+c+">";else l+="<r:"+c+">"+r[c]+"</r:"+c+">";p.ExecMethodXml(e,s,l,a,o,t,n)},p.ExecMethodXml=function(e,s,r,a,o,t,n){p.PerformAjax(e+"/"+s+"</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+w(n)+"</Header><Body><r:"+s+'_INPUT xmlns:r="'+e+'">'+r+"</r:"+s+"_INPUT></Body></Envelope>",a,o,t)},p.ExecEnum=function(e,s,r,a){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Enumerate</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++'</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Enumerate xmlns="http://schemas.xmlsoap.org/ws/2004/09/enumeration" /></Body></Envelope>',s,r,a)},p.ExecPull=function(e,s,r,a,o){p.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Pull</a:Action><a:To>"+p.Address+"</a:To><w:ResourceURI>"+e+"</w:ResourceURI><a:MessageID>"+p.NextMessageId+++'</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Pull xmlns="http://schemas.xmlsoap.org/ws/2004/09/enumeration"><EnumerationContext>'+s+"</EnumerationContext><MaxElements>999</MaxElements><MaxCharacters>99999</MaxCharacters></Pull></Body></Envelope>",r,a,o)},p.ParseWsman=function(s){try{s.childNodes||(s=function(e){{if(window.DOMParser)return(new DOMParser).parseFromString(e,"text/xml");var s=new ActiveXObject("Microsoft.XMLDOM");return s.async=!1,s.loadXML(e),s}}(s));var e,r={Header:{}},a=s.getElementsByTagName("Header")[0];if(!(a=a||s.getElementsByTagName("a:Header")[0]))return null;for(var o=0;o<a.childNodes.length;o++){var t=a.childNodes[o];r.Header[t.localName]=t.textContent}var n=s.getElementsByTagName("Body")[0];if(!(n=n||s.getElementsByTagName("a:Body")[0]))return null;if(0<n.childNodes.length){var l=(e=n.childNodes[0].localName).indexOf("_OUTPUT");-1!=l&&l==e.length-7&&(e=e.substring(0,e.length-7)),r.Header.Method=e,r.Body=function e(s){var r,a={};for(var o=0;o<s.childNodes.length;o++){var t=s.childNodes[o];"true"==(r=0==t.childElementCount?t.textContent:e(t))&&(r=!0),"false"==r&&(r=!1);var n=r;if(0<t.attributes.length){n={Value:r};for(var l=0;l<t.attributes.length;l++)n["@"+t.attributes[l].name]=t.attributes[l].value}a[t.localName]instanceof Array?a[t.localName].push(n):null==a[t.localName]?a[t.localName]=n:a[t.localName]=[a[t.localName],n]}return a}(n.childNodes[0])}return r}catch(e){return console.log("Unable to parse XML: "+s),null}},p}
\ No newline at end of file
translate/translate.json
+1502 -1447
@@ -17,8 +17,8 @@
17 "zh-chs": " + CIRA",
18 "zh-cht": " + CIRA",
19 "xloc": [
20 - "default.handlebars->29->1339",
21 - "default.handlebars->29->1341"
20 + "default.handlebars->29->1342",
21 + "default.handlebars->29->1344"
22 ]
23 },
24 {
@@ -204,7 +204,7 @@
204 "zh-chs": " 可以使用密码提示,但不建议使用。",
205 "zh-cht": " 可以使用密碼提示,但不建議使用。",
206 "xloc": [
207 - "default.handlebars->29->1252"
207 + "default.handlebars->29->1255"
208 ]
209 },
210 {
@@ -224,8 +224,8 @@
224 "zh-chs": " 用户需要先登录到该服务器一次,然后才能将其添加到设备组。",
225 "zh-cht": " 用戶需要先登入到該伺服器一次,然後才能將其新增到裝置群。",
226 "xloc": [
227 - "default.handlebars->29->1412",
228 - "default.handlebars->29->1872"
227 + "default.handlebars->29->1415",
228 + "default.handlebars->29->1877"
229 ]
230 },
231 {
@@ -419,7 +419,7 @@
419 "en": "* 8 characters, 1 upper, 1 lower, 1 numeric, 1 non-alpha numeric.",
420 "nl": "* 8 karakters, 1 hoofdletter, 1 normale letter, 1 nummeriek, 1 niet alfanumeriek.",
421 "xloc": [
422 - "default.handlebars->29->1381",
422 + "default.handlebars->29->1384",
423 "default.handlebars->29->305"
424 ]
425 },
@@ -495,7 +495,7 @@
495 "zh-cht": ",",
496 "xloc": [
497 "default-mobile.handlebars->9->467",
498 - "default.handlebars->29->1482"
498 + "default.handlebars->29->1485"
499 ]
500 },
501 {
@@ -536,7 +536,7 @@
536 "zh-chs": ",MQTT在线",
537 "zh-cht": ",MQTT在線",
538 "xloc": [
539 - "default.handlebars->29->994"
539 + "default.handlebars->29->997"
540 ]
541 },
542 {
@@ -556,7 +556,7 @@
556 "zh-chs": ",软体KVM",
557 "zh-cht": ",軟體KVM",
558 "xloc": [
559 - "default.handlebars->29->818",
559 + "default.handlebars->29->821",
560 "desktop.handlebars->3->13"
561 ]
562 },
@@ -579,9 +579,9 @@
579 "xloc": [
580 "default-mobile.handlebars->9->296",
581 "default-mobile.handlebars->9->305",
582 - "default.handlebars->29->825",
583 - "default.handlebars->29->858",
584 - "default.handlebars->29->870",
582 + "default.handlebars->29->828",
583 + "default.handlebars->29->861",
584 + "default.handlebars->29->873",
585 "desktop.handlebars->3->20",
586 "xterm.handlebars->9->6"
587 ]
@@ -702,7 +702,7 @@
702 "zh-chs": ",{0}观看",
703 "zh-cht": ",{0}觀看",
704 "xloc": [
705 - "default.handlebars->29->819",
705 + "default.handlebars->29->822",
706 "desktop.handlebars->3->14"
707 ]
708 },
@@ -767,9 +767,9 @@
767 "xloc": [
768 "default-mobile.handlebars->9->108",
769 "default-mobile.handlebars->9->307",
770 - "default.handlebars->29->1523",
771 - "default.handlebars->29->2027",
772 - "default.handlebars->29->875"
770 + "default.handlebars->29->1526",
771 + "default.handlebars->29->2034",
772 + "default.handlebars->29->878"
773 ]
774 },
775 {
@@ -825,7 +825,7 @@
825 "zh-chs": "1个活跃时段",
826 "zh-cht": "1個活躍時段",
827 "xloc": [
828 - "default.handlebars->29->1941"
828 + "default.handlebars->29->1946"
829 ]
830 },
831 {
@@ -847,7 +847,7 @@
847 "xloc": [
848 "default-mobile.handlebars->9->118",
849 "default-mobile.handlebars->9->471",
850 - "default.handlebars->29->1547",
850 + "default.handlebars->29->1550",
851 "download.handlebars->3->1",
852 "download2.handlebars->5->1"
853 ]
@@ -869,7 +869,7 @@
869 "zh-chs": "1条连接",
870 "zh-cht": "1位聯絡文",
871 "xloc": [
872 - "default.handlebars->29->821",
872 + "default.handlebars->29->824",
873 "desktop.handlebars->3->16"
874 ]
875 },
@@ -912,7 +912,7 @@
912 "zh-chs": "1组",
913 "zh-cht": "1群",
914 "xloc": [
915 - "default.handlebars->29->1906"
915 + "default.handlebars->29->1911"
916 ]
917 },
918 {
@@ -954,7 +954,7 @@
954 "zh-chs": "1分钟",
955 "zh-cht": "1分鐘",
956 "xloc": [
957 - "default.handlebars->29->710"
957 + "default.handlebars->29->713"
958 ]
959 },
960 {
@@ -1016,7 +1016,7 @@
1016 "zh-chs": "有1个用户没有显示,请使用搜索框查找用户...",
1017 "zh-cht": "有1個用戶沒有顯示,請使用搜尋框搜尋用戶...",
1018 "xloc": [
1019 - "default.handlebars->29->1696"
1019 + "default.handlebars->29->1701"
1020 ]
1021 },
1022 {
@@ -1082,7 +1082,7 @@
1082 "default-mobile.handlebars->9->172",
1083 "default-mobile.handlebars->9->175",
1084 "default-mobile.handlebars->9->178",
1085 - "default.handlebars->29->1700",
1085 + "default.handlebars->29->1705",
1086 "default.handlebars->29->250",
1087 "default.handlebars->29->253",
1088 "default.handlebars->29->256",
@@ -1214,7 +1214,7 @@
1214 "zh-chs": "10分钟",
1215 "zh-cht": "10分鐘",
1216 "xloc": [
1217 - "default.handlebars->29->712"
1217 + "default.handlebars->29->715"
1218 ]
1219 },
1220 {
@@ -1283,7 +1283,7 @@
1283 "en": "12 hours",
1284 "nl": "12 uur",
1285 "xloc": [
1286 - "default.handlebars->29->720"
1286 + "default.handlebars->29->723"
1287 ]
1288 },
1289 {
@@ -1325,28 +1325,28 @@
1325 "zh-chs": "15分钟",
1326 "zh-cht": "15分鐘",
1327 "xloc": [
1328 - "default.handlebars->29->713"
1328 + "default.handlebars->29->716"
1329 ]
1330 },
1331 {
1332 "en": "16 hours",
1333 "nl": "16 uur",
1334 "xloc": [
1335 - "default.handlebars->29->721"
1335 + "default.handlebars->29->724"
1336 ]
1337 },
1338 {
1339 "en": "2 days",
1340 "nl": "2 dagen",
1341 "xloc": [
1342 - "default.handlebars->29->723"
1342 + "default.handlebars->29->726"
1343 ]
1344 },
1345 {
1346 "en": "2 hours",
1347 "nl": "2 uur",
1348 "xloc": [
1349 - "default.handlebars->29->717"
1349 + "default.handlebars->29->720"
1350 ]
1351 },
1352 {
@@ -1437,7 +1437,7 @@
1437 "en": "24 hours",
1438 "nl": "24 uur",
1439 "xloc": [
1440 - "default.handlebars->29->722"
1440 + "default.handlebars->29->725"
1441 ]
1442 },
1443 {
@@ -1499,7 +1499,7 @@
1499 "zh-chs": "2FA备份代码已清除",
1500 "zh-cht": "2FA備份代碼已清除",
1501 "xloc": [
1502 - "default.handlebars->29->1658"
1502 + "default.handlebars->29->1661"
1503 ]
1504 },
1505 {
@@ -1519,8 +1519,8 @@
1519 "zh-chs": "启用第二因素身份验证",
1520 "zh-cht": "啟用第二因素身份驗證",
1521 "xloc": [
1522 - "default.handlebars->29->1713",
1523 - "default.handlebars->29->1928"
1522 + "default.handlebars->29->1718",
1523 + "default.handlebars->29->1933"
1524 ]
1525 },
1526 {
@@ -1639,7 +1639,7 @@
1639 "zh-chs": "30分钟",
1640 "zh-cht": "30分鐘",
1641 "xloc": [
1642 - "default.handlebars->29->714"
1642 + "default.handlebars->29->717"
1643 ]
1644 },
1645 {
@@ -1689,14 +1689,14 @@
1689 "en": "4 days",
1690 "nl": "4 dagen",
1691 "xloc": [
1692 - "default.handlebars->29->724"
1692 + "default.handlebars->29->727"
1693 ]
1694 },
1695 {
1696 "en": "4 hours",
1697 "nl": "4 uur",
1698 "xloc": [
1699 - "default.handlebars->29->718"
1699 + "default.handlebars->29->721"
1700 ]
1701 },
1702 {
@@ -1779,7 +1779,7 @@
1779 "zh-chs": "45分钟",
1780 "zh-cht": "45分鐘",
1781 "xloc": [
1782 - "default.handlebars->29->715"
1782 + "default.handlebars->29->718"
1783 ]
1784 },
1785 {
@@ -1819,7 +1819,7 @@
1819 "zh-chs": "5分钟",
1820 "zh-cht": "5分鐘",
1821 "xloc": [
1822 - "default.handlebars->29->711"
1822 + "default.handlebars->29->714"
1823 ]
1824 },
1825 {
@@ -1932,7 +1932,7 @@
1932 "en": "60 minutes",
1933 "nl": "60 minuten",
1934 "xloc": [
1935 - "default.handlebars->29->716"
1935 + "default.handlebars->29->719"
1936 ]
1937 },
1938 {
@@ -2052,7 +2052,7 @@
2052 "zh-chs": "7天电源状态",
2053 "zh-cht": "7天電源狀態",
2054 "xloc": [
2055 - "default.handlebars->29->751"
2055 + "default.handlebars->29->754"
2056 ]
2057 },
2058 {
@@ -2117,7 +2117,7 @@
2117 "xloc": [
2118 "default.handlebars->29->329",
2119 "default.handlebars->29->343",
2120 - "default.handlebars->29->719"
2120 + "default.handlebars->29->722"
2121 ]
2122 },
2123 {
@@ -2335,7 +2335,7 @@
2335 "zh-cht": "ACM",
2336 "xloc": [
2337 "default-mobile.handlebars->9->236",
2338 - "default.handlebars->29->1355",
2338 + "default.handlebars->29->1358",
2339 "default.handlebars->29->560"
2340 ]
2341 },
@@ -2461,7 +2461,7 @@
2461 "zh-chs": "拒绝访问",
2462 "zh-cht": "拒絕存取",
2463 "xloc": [
2464 - "default.handlebars->29->995"
2464 + "default.handlebars->29->998"
2465 ]
2466 },
2467 {
@@ -2503,7 +2503,7 @@
2503 "zh-chs": "访问服务器档案",
2504 "zh-cht": "存取伺服器檔案",
2505 "xloc": [
2506 - "default.handlebars->29->1878"
2506 + "default.handlebars->29->1883"
2507 ]
2508 },
2509 {
@@ -2592,8 +2592,8 @@
2592 "default-mobile.handlebars->9->93",
2593 "default-mobile.handlebars->9->95",
2594 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3AccountActions->p2AccountSecurity->1->0",
2595 - "default.handlebars->29->1261",
2596 - "default.handlebars->29->1263",
2595 + "default.handlebars->29->1264",
2596 + "default.handlebars->29->1266",
2597 "default.handlebars->29->529",
2598 "default.handlebars->29->531"
2599 ]
@@ -2656,7 +2656,7 @@
2656 "zh-chs": "帐户已更改:{0}",
2657 "zh-cht": "帳戶已更改:{0}",
2658 "xloc": [
2659 - "default.handlebars->29->1631"
2659 + "default.handlebars->29->1634"
2660 ]
2661 },
2662 {
@@ -2676,7 +2676,7 @@
2676 "zh-chs": "创建帐户,电子邮件为{0}",
2677 "zh-cht": "創建帳戶,電子郵件為{0}",
2678 "xloc": [
2679 - "default.handlebars->29->1630"
2679 + "default.handlebars->29->1633"
2680 ]
2681 },
2682 {
@@ -2696,7 +2696,7 @@
2696 "zh-chs": "创建帐户,用户名是{0}",
2697 "zh-cht": "帳戶已創建,用戶名是{0}",
2698 "xloc": [
2699 - "default.handlebars->29->1629"
2699 + "default.handlebars->29->1632"
2700 ]
2701 },
2702 {
@@ -2716,8 +2716,8 @@
2716 "zh-chs": "帐户已被锁定",
2717 "zh-cht": "帳戶已被鎖定",
2718 "xloc": [
2719 - "default.handlebars->29->1715",
2720 - "default.handlebars->29->1875"
2719 + "default.handlebars->29->1720",
2720 + "default.handlebars->29->1880"
2721 ]
2722 },
2723 {
@@ -2781,7 +2781,7 @@
2781 "zh-chs": "帐号登录",
2782 "zh-cht": "帳號登錄",
2783 "xloc": [
2784 - "default.handlebars->29->1566"
2784 + "default.handlebars->29->1569"
2785 ]
2786 },
2787 {
@@ -2801,7 +2801,7 @@
2801 "zh-chs": "帐户登出",
2802 "zh-cht": "帳戶登出",
2803 "xloc": [
2804 - "default.handlebars->29->1567"
2804 + "default.handlebars->29->1570"
2805 ]
2806 },
2807 {
@@ -2843,7 +2843,7 @@
2843 "zh-chs": "帐户密码已更改:{0}",
2844 "zh-cht": "帳戶密碼已更改:{0}",
2845 "xloc": [
2846 - "default.handlebars->29->1639"
2846 + "default.handlebars->29->1642"
2847 ]
2848 },
2849 {
@@ -2863,7 +2863,7 @@
2863 "zh-chs": "帐户已删除",
2864 "zh-cht": "帳戶已刪除",
2865 "xloc": [
2866 - "default.handlebars->29->1628"
2866 + "default.handlebars->29->1631"
2867 ]
2868 },
2869 {
@@ -2903,7 +2903,7 @@
2903 "zh-chs": "指令",
2904 "zh-cht": "指令",
2905 "xloc": [
2906 - "default.handlebars->29->1000",
2906 + "default.handlebars->29->1003",
2907 "default.handlebars->container->column_l->p42->p42tbl->1->0->8"
2908 ]
2909 },
@@ -2924,8 +2924,8 @@
2924 "zh-chs": "动作档案",
2925 "zh-cht": "動作檔案",
2926 "xloc": [
2927 - "default.handlebars->29->794",
2928 - "default.handlebars->29->796"
2927 + "default.handlebars->29->797",
2928 + "default.handlebars->29->799"
2929 ]
2930 },
2931 {
@@ -3023,7 +3023,7 @@
3023 "default-mobile.handlebars->9->370",
3024 "default.handlebars->29->553",
3025 "default.handlebars->29->555",
3026 - "default.handlebars->29->956"
3026 + "default.handlebars->29->959"
3027 ]
3028 },
3029 {
@@ -3046,6 +3046,12 @@
3046 "default.handlebars->29->202"
3047 ]
3048 },
3049 + {
3050 + "en": "Active Device Sharing",
3051 + "xloc": [
3052 + "default.handlebars->29->661"
3053 + ]
3054 + },
3055 {
3056 "cs": "Aktivní uživatel{0}",
3057 "de": "Aktive Benutzer{0}",
@@ -3083,7 +3089,7 @@
3089 "zh-chs": "添加代理",
3090 "zh-cht": "新增代理",
3091 "xloc": [
3086 - "default.handlebars->29->1351",
3092 + "default.handlebars->29->1354",
3093 "default.handlebars->29->283"
3094 ]
3095 },
@@ -3121,8 +3127,8 @@
3127 "zh-chs": "添加设备",
3128 "zh-cht": "新增裝置",
3129 "xloc": [
3124 - "default.handlebars->29->1852",
3125 - "default.handlebars->29->1976"
3130 + "default.handlebars->29->1857",
3131 + "default.handlebars->29->1981"
3132 ]
3133 },
3134 {
@@ -3142,7 +3148,7 @@
3148 "zh-chs": "添加设备日志",
3149 "zh-cht": "新增裝置日誌",
3150 "xloc": [
3145 - "default.handlebars->29->700"
3151 + "default.handlebars->29->703"
3152 ]
3153 },
3154 {
@@ -3162,9 +3168,9 @@
3168 "zh-chs": "添加设备组",
3169 "zh-cht": "新增裝置群",
3170 "xloc": [
3165 - "default.handlebars->29->1446",
3166 - "default.handlebars->29->1846",
3167 - "default.handlebars->29->1964",
3171 + "default.handlebars->29->1449",
3172 + "default.handlebars->29->1851",
3173 + "default.handlebars->29->1969",
3174 "default.handlebars->29->237"
3175 ]
3176 },
@@ -3185,7 +3191,7 @@
3191 "zh-chs": "添加设备组权限",
3192 "zh-cht": "新增裝置群權限",
3193 "xloc": [
3188 - "default.handlebars->29->1443"
3194 + "default.handlebars->29->1446"
3195 ]
3196 },
3197 {
@@ -3205,8 +3211,8 @@
3211 "zh-chs": "添加设备权限",
3212 "zh-cht": "新增裝置權限",
3213 "xloc": [
3208 - "default.handlebars->29->1448",
3209 - "default.handlebars->29->1450"
3214 + "default.handlebars->29->1451",
3215 + "default.handlebars->29->1453"
3216 ]
3217 },
3218 {
@@ -3303,7 +3309,7 @@
3309 "zh-chs": "添加成员身份",
3310 "zh-cht": "新增成員身份",
3311 "xloc": [
3306 - "default.handlebars->29->1994"
3312 + "default.handlebars->29->2001"
3313 ]
3314 },
3315 {
@@ -3343,8 +3349,8 @@
3349 "zh-chs": "添加安全密钥",
3350 "zh-cht": "新增安全密鑰",
3351 "xloc": [
3346 - "default.handlebars->29->1028",
3347 - "default.handlebars->29->1029",
3352 + "default.handlebars->29->1031",
3353 + "default.handlebars->29->1032",
3354 "default.handlebars->29->149",
3355 "default.handlebars->29->151",
3356 "default.handlebars->29->154",
@@ -3389,7 +3395,7 @@
3395 "zh-chs": "添加用户设备权限",
3396 "zh-cht": "新增用戶裝置權限",
3397 "xloc": [
3392 - "default.handlebars->29->1453"
3398 + "default.handlebars->29->1456"
3399 ]
3400 },
3401 {
@@ -3409,9 +3415,9 @@
3415 "zh-chs": "添加用户组",
3416 "zh-cht": "新增用戶群",
3417 "xloc": [
3412 - "default.handlebars->29->1347",
3413 - "default.handlebars->29->1445",
3414 - "default.handlebars->29->1970",
3418 + "default.handlebars->29->1350",
3419 + "default.handlebars->29->1448",
3420 + "default.handlebars->29->1975",
3421 "default.handlebars->29->654"
3422 ]
3423 },
@@ -3432,7 +3438,7 @@
3438 "zh-chs": "添加用户组设备权限",
3439 "zh-cht": "新增用戶群裝置權限",
3440 "xloc": [
3435 - "default.handlebars->29->1455"
3441 + "default.handlebars->29->1458"
3442 ]
3443 },
3444 {
@@ -3489,8 +3495,8 @@
3495 "zh-chs": "添加用户",
3496 "zh-cht": "新增用戶",
3497 "xloc": [
3492 - "default.handlebars->29->1346",
3493 - "default.handlebars->29->1841"
3498 + "default.handlebars->29->1349",
3499 + "default.handlebars->29->1846"
3500 ]
3501 },
3502 {
@@ -3510,7 +3516,7 @@
3516 "zh-chs": "将用户添加到设备组",
3517 "zh-cht": "將用戶新增到裝置群",
3518 "xloc": [
3513 - "default.handlebars->29->1442"
3519 + "default.handlebars->29->1445"
3520 ]
3521 },
3522 {
@@ -3530,7 +3536,7 @@
3536 "zh-chs": "将用户添加到用户组",
3537 "zh-cht": "將用戶新增到用戶群",
3538 "xloc": [
3533 - "default.handlebars->29->1874"
3539 + "default.handlebars->29->1879"
3540 ]
3541 },
3542 {
@@ -3647,7 +3653,7 @@
3653 "zh-chs": "通过安装Mesh Agent将新计算机添加到该设备组。",
3654 "zh-cht": "通過安裝Mesh Agent將新電腦新增到該裝置群。",
3655 "xloc": [
3650 - "default.handlebars->29->1350",
3656 + "default.handlebars->29->1353",
3657 "default.handlebars->29->282"
3658 ]
3659 },
@@ -3695,7 +3701,13 @@
3701 "zh-chs": "添加了身份验证应用程序",
3702 "zh-cht": "添加了身份驗證應用程序",
3703 "xloc": [
3698 - "default.handlebars->29->1655"
3704 + "default.handlebars->29->1658"
3705 + ]
3706 + },
3707 + {
3708 + "en": "Added device share {0} from {1} to {2}",
3709 + "xloc": [
3710 + "default.handlebars->29->1669"
3711 ]
3712 },
3713 {
@@ -3715,8 +3727,8 @@
3727 "zh-chs": "已将设备{0}添加到设备组{1}",
3728 "zh-cht": "已將設備{0}添加到設備組{1}",
3729 "xloc": [
3718 - "default.handlebars->29->1622",
3719 - "default.handlebars->29->1649"
3730 + "default.handlebars->29->1625",
3731 + "default.handlebars->29->1652"
3732 ]
3733 },
3734 {
@@ -3736,7 +3748,7 @@
3748 "zh-chs": "添加了安全密钥",
3749 "zh-cht": "添加了安全密鑰",
3750 "xloc": [
3739 - "default.handlebars->29->1660"
3751 + "default.handlebars->29->1663"
3752 ]
3753 },
3754 {
@@ -3756,7 +3768,7 @@
3768 "zh-chs": "已将用户组{0}添加到设备组{1}",
3769 "zh-cht": "已將用戶組{0}添加到設備組{1}",
3770 "xloc": [
3759 - "default.handlebars->29->1633"
3771 + "default.handlebars->29->1636"
3772 ]
3773 },
3774 {
@@ -3776,8 +3788,8 @@
3788 "zh-chs": "已将用户{0}添加到用户组{1}",
3789 "zh-cht": "已將用戶{0}添加到用戶組{1}",
3790 "xloc": [
3779 - "default.handlebars->29->1636",
3780 - "default.handlebars->29->1645"
3791 + "default.handlebars->29->1639",
3792 + "default.handlebars->29->1648"
3793 ]
3794 },
3795 {
@@ -3838,7 +3850,7 @@
3850 "zh-cht": "管理員控制模式(ACM)",
3851 "xloc": [
3852 "default-mobile.handlebars->9->372",
3841 - "default.handlebars->29->958"
3853 + "default.handlebars->29->961"
3854 ]
3855 },
3856 {
@@ -3859,7 +3871,7 @@
3871 "zh-cht": "管理員憑證",
3872 "xloc": [
3873 "default-mobile.handlebars->9->378",
3862 - "default.handlebars->29->964"
3874 + "default.handlebars->29->967"
3875 ]
3876 },
3877 {
@@ -3900,7 +3912,7 @@
3912 "zh-chs": "管理领域",
3913 "zh-cht": "管理領域",
3914 "xloc": [
3903 - "default.handlebars->29->1910"
3915 + "default.handlebars->29->1915"
3916 ]
3917 },
3918 {
@@ -3941,7 +3953,7 @@
3953 "zh-chs": "管理领域",
3954 "zh-cht": "管理領域",
3955 "xloc": [
3944 - "default.handlebars->29->1778"
3956 + "default.handlebars->29->1783"
3957 ]
3958 },
3959 {
@@ -3961,7 +3973,7 @@
3973 "zh-chs": "管理员",
3974 "zh-cht": "管理員",
3975 "xloc": [
3964 - "default.handlebars->29->1707"
3976 + "default.handlebars->29->1712"
3977 ]
3978 },
3979 {
@@ -3981,7 +3993,7 @@
3993 "zh-chs": "南非文",
3994 "zh-cht": "南非文",
3995 "xloc": [
3984 - "default.handlebars->29->1031"
3996 + "default.handlebars->29->1034"
3997 ]
3998 },
3999 {
@@ -4004,8 +4016,8 @@
4016 "default-mobile.handlebars->9->203",
4017 "default-mobile.handlebars->9->228",
4018 "default-mobile.handlebars->9->250",
4007 - "default.handlebars->29->1509",
4008 - "default.handlebars->29->1517",
4019 + "default.handlebars->29->1512",
4020 + "default.handlebars->29->1520",
4021 "default.handlebars->29->213",
4022 "default.handlebars->29->422",
4023 "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->1"
@@ -4028,8 +4040,8 @@
4040 "zh-chs": "代理+英特尔AMT",
4041 "zh-cht": "代理+Intel&reg; AMT",
4042 "xloc": [
4031 - "default.handlebars->29->1511",
4032 - "default.handlebars->29->1519"
4043 + "default.handlebars->29->1514",
4044 + "default.handlebars->29->1522"
4045 ]
4046 },
4047 {
@@ -4070,7 +4082,7 @@
4082 "zh-cht": "代理控制台",
4083 "xloc": [
4084 "default-mobile.handlebars->9->449",
4073 - "default.handlebars->29->1463"
4085 + "default.handlebars->29->1466"
4086 ]
4087 },
4088 {
@@ -4090,7 +4102,7 @@
4102 "zh-chs": "代理错误计数器",
4103 "zh-cht": "代理錯誤計數器",
4104 "xloc": [
4093 - "default.handlebars->29->2037"
4105 + "default.handlebars->29->2044"
4106 ]
4107 },
4108 {
@@ -4193,7 +4205,7 @@
4205 "zh-chs": "代理时段",
4206 "zh-cht": "代理時段",
4207 "xloc": [
4196 - "default.handlebars->29->2053"
4208 + "default.handlebars->29->2060"
4209 ]
4210 },
4211 {
@@ -4234,7 +4246,7 @@
4246 "zh-chs": "代理类型",
4247 "zh-cht": "代理類型",
4248 "xloc": [
4237 - "default.handlebars->29->1515",
4249 + "default.handlebars->29->1518",
4250 "default.handlebars->container->column_l->p21->3->1->meshOsChartDiv->1"
4251 ]
4252 },
@@ -4255,7 +4267,7 @@
4267 "zh-chs": "代理关闭了与服务器压缩的{0}%代理会话。已发送:{1},已压缩:{2}",
4268 "zh-cht": "代理關閉了與{0}%代理到服務器壓縮的會話。已發送:{1},已壓縮:{2}",
4269 "xloc": [
4258 - "default.handlebars->29->1619"
4270 + "default.handlebars->29->1622"
4271 ]
4272 },
4273 {
@@ -4317,7 +4329,7 @@
4329 "zh-chs": "代理离线",
4330 "zh-cht": "代理離線",
4331 "xloc": [
4320 - "default.handlebars->29->993"
4332 + "default.handlebars->29->996"
4333 ]
4334 },
4335 {
@@ -4337,7 +4349,7 @@
4349 "zh-chs": "代理在线",
4350 "zh-cht": "代理在線",
4351 "xloc": [
4340 - "default.handlebars->29->992"
4352 + "default.handlebars->29->995"
4353 ]
4354 },
4355 {
@@ -4365,7 +4377,7 @@
4377 "zh-chs": "代理",
4378 "zh-cht": "代理",
4379 "xloc": [
4368 - "default.handlebars->29->2069"
4380 + "default.handlebars->29->2076"
4381 ]
4382 },
4383 {
@@ -4385,7 +4397,7 @@
4397 "zh-chs": "阿尔巴尼亚文",
4398 "zh-cht": "阿爾巴尼亞文",
4399 "xloc": [
4388 - "default.handlebars->29->1032"
4400 + "default.handlebars->29->1035"
4401 ]
4402 },
4403 {
@@ -4428,7 +4440,7 @@
4440 "zh-chs": "全部可用",
4441 "zh-cht": "全部可用",
4442 "xloc": [
4431 - "default.handlebars->29->1670"
4443 + "default.handlebars->29->1675"
4444 ]
4445 },
4446 {
@@ -4465,7 +4477,7 @@
4477 "zh-chs": "所有事件",
4478 "zh-cht": "所有事件",
4479 "xloc": [
4468 - "default.handlebars->29->1668"
4480 + "default.handlebars->29->1673"
4481 ]
4482 },
4483 {
@@ -4485,9 +4497,9 @@
4497 "zh-chs": "全部聚焦",
4498 "zh-cht": "全部聚焦",
4499 "xloc": [
4488 - "default.handlebars->29->826",
4489 - "default.handlebars->29->828",
4490 - "default.handlebars->29->829"
4500 + "default.handlebars->29->829",
4501 + "default.handlebars->29->831",
4502 + "default.handlebars->29->832"
4503 ]
4504 },
4505 {
@@ -4507,8 +4519,8 @@
4519 "zh-chs": "允许用户管理此设备组和该组中的设备。",
4520 "zh-cht": "允許用戶管理此裝置群和該群中的裝置。",
4521 "xloc": [
4510 - "default.handlebars->29->1410",
4511 - "default.handlebars->29->1871"
4522 + "default.handlebars->29->1413",
4523 + "default.handlebars->29->1876"
4524 ]
4525 },
4526 {
@@ -4528,7 +4540,7 @@
4540 "zh-chs": "允许用户管理此设备。",
4541 "zh-cht": "允許用戶管理此裝置。",
4542 "xloc": [
4531 - "default.handlebars->29->1411"
4543 + "default.handlebars->29->1414"
4544 ]
4545 },
4546 {
@@ -4592,7 +4604,7 @@
4604 "zh-chs": "备用(F10 = ESC + 0)",
4605 "zh-cht": "備用(F10 = ESC + 0)",
4606 "xloc": [
4595 - "default.handlebars->29->863"
4607 + "default.handlebars->29->866"
4608 ]
4609 },
4610 {
@@ -4633,9 +4645,9 @@
4645 "zh-chs": "一直通知",
4646 "zh-cht": "一直通知",
4647 "xloc": [
4636 - "default.handlebars->29->1326",
4637 - "default.handlebars->29->1832",
4638 - "default.handlebars->29->1919",
4648 + "default.handlebars->29->1329",
4649 + "default.handlebars->29->1837",
4650 + "default.handlebars->29->1924",
4651 "default.handlebars->29->592"
4652 ]
4653 },
@@ -4656,9 +4668,9 @@
4668 "zh-chs": "一直提示",
4669 "zh-cht": "一直提示",
4670 "xloc": [
4659 - "default.handlebars->29->1327",
4660 - "default.handlebars->29->1833",
4661 - "default.handlebars->29->1920",
4671 + "default.handlebars->29->1330",
4672 + "default.handlebars->29->1838",
4673 + "default.handlebars->29->1925",
4674 "default.handlebars->29->593"
4675 ]
4676 },
@@ -4882,7 +4894,7 @@
4894 "zh-chs": "阿拉伯文(阿尔及利亚)",
4895 "zh-cht": "阿拉伯文(阿爾及利亞)",
4896 "xloc": [
4885 - "default.handlebars->29->1034"
4897 + "default.handlebars->29->1037"
4898 ]
4899 },
4900 {
@@ -4902,7 +4914,7 @@
4914 "zh-chs": "阿拉伯文(巴林)",
4915 "zh-cht": "阿拉伯文(巴林)",
4916 "xloc": [
4905 - "default.handlebars->29->1035"
4917 + "default.handlebars->29->1038"
4918 ]
4919 },
4920 {
@@ -4922,7 +4934,7 @@
4934 "zh-chs": "阿拉伯文(埃及)",
4935 "zh-cht": "阿拉伯文(埃及)",
4936 "xloc": [
4925 - "default.handlebars->29->1036"
4937 + "default.handlebars->29->1039"
4938 ]
4939 },
4940 {
@@ -4942,7 +4954,7 @@
4954 "zh-chs": "阿拉伯文(伊拉克)",
4955 "zh-cht": "阿拉伯文(伊拉克)",
4956 "xloc": [
4945 - "default.handlebars->29->1037"
4957 + "default.handlebars->29->1040"
4958 ]
4959 },
4960 {
@@ -4962,7 +4974,7 @@
4974 "zh-chs": "阿拉伯文(约旦)",
4975 "zh-cht": "阿拉伯文(約旦)",
4976 "xloc": [
4965 - "default.handlebars->29->1038"
4977 + "default.handlebars->29->1041"
4978 ]
4979 },
4980 {
@@ -4982,7 +4994,7 @@
4994 "zh-chs": "阿拉伯文(科威特)",
4995 "zh-cht": "阿拉伯文(科威特)",
4996 "xloc": [
4985 - "default.handlebars->29->1039"
4997 + "default.handlebars->29->1042"
4998 ]
4999 },
5000 {
@@ -5002,7 +5014,7 @@
5014 "zh-chs": "阿拉伯文(黎巴嫩)",
5015 "zh-cht": "阿拉伯文(黎巴嫩)",
5016 "xloc": [
5005 - "default.handlebars->29->1040"
5017 + "default.handlebars->29->1043"
5018 ]
5019 },
5020 {
@@ -5022,7 +5034,7 @@
5034 "zh-chs": "阿拉伯文(利比亚)",
5035 "zh-cht": "阿拉伯文(利比亞)",
5036 "xloc": [
5025 - "default.handlebars->29->1041"
5037 + "default.handlebars->29->1044"
5038 ]
5039 },
5040 {
@@ -5042,7 +5054,7 @@
5054 "zh-chs": "阿拉伯文(摩洛哥)",
5055 "zh-cht": "阿拉伯文(摩洛哥)",
5056 "xloc": [
5045 - "default.handlebars->29->1042"
5057 + "default.handlebars->29->1045"
5058 ]
5059 },
5060 {
@@ -5062,7 +5074,7 @@
5074 "zh-chs": "阿拉伯文(阿曼)",
5075 "zh-cht": "阿拉伯文(阿曼)",
5076 "xloc": [
5065 - "default.handlebars->29->1043"
5077 + "default.handlebars->29->1046"
5078 ]
5079 },
5080 {
@@ -5082,7 +5094,7 @@
5094 "zh-chs": "阿拉伯文(卡塔尔)",
5095 "zh-cht": "阿拉伯文(卡塔爾)",
5096 "xloc": [
5085 - "default.handlebars->29->1044"
5097 + "default.handlebars->29->1047"
5098 ]
5099 },
5100 {
@@ -5102,7 +5114,7 @@
5114 "zh-chs": "阿拉伯文(沙特阿拉伯)",
5115 "zh-cht": "阿拉伯文(沙特阿拉伯)",
5116 "xloc": [
5105 - "default.handlebars->29->1045"
5117 + "default.handlebars->29->1048"
5118 ]
5119 },
5120 {
@@ -5122,7 +5134,7 @@
5134 "zh-chs": "阿拉伯文(标准)",
5135 "zh-cht": "阿拉伯文(標準)",
5136 "xloc": [
5125 - "default.handlebars->29->1033"
5137 + "default.handlebars->29->1036"
5138 ]
5139 },
5140 {
@@ -5142,7 +5154,7 @@
5154 "zh-chs": "阿拉伯文(叙利亚)",
5155 "zh-cht": "阿拉伯文(敘利亞)",
5156 "xloc": [
5145 - "default.handlebars->29->1046"
5157 + "default.handlebars->29->1049"
5158 ]
5159 },
5160 {
@@ -5162,7 +5174,7 @@
5174 "zh-chs": "阿拉伯文(突尼斯)",
5175 "zh-cht": "阿拉伯文(突尼斯)",
5176 "xloc": [
5165 - "default.handlebars->29->1047"
5177 + "default.handlebars->29->1050"
5178 ]
5179 },
5180 {
@@ -5182,7 +5194,7 @@
5194 "zh-chs": "阿拉伯文(阿联酋)",
5195 "zh-cht": "阿拉伯文(阿聯酋)",
5196 "xloc": [
5185 - "default.handlebars->29->1048"
5197 + "default.handlebars->29->1051"
5198 ]
5199 },
5200 {
@@ -5202,7 +5214,7 @@
5214 "zh-chs": "阿拉伯文(也门)",
5215 "zh-cht": "阿拉伯文(也門)",
5216 "xloc": [
5205 - "default.handlebars->29->1049"
5217 + "default.handlebars->29->1052"
5218 ]
5219 },
5220 {
@@ -5222,7 +5234,7 @@
5234 "zh-chs": "阿拉贡文",
5235 "zh-cht": "阿拉貢文",
5236 "xloc": [
5225 - "default.handlebars->29->1050"
5237 + "default.handlebars->29->1053"
5238 ]
5239 },
5240 {
@@ -5243,7 +5255,7 @@
5255 "zh-cht": "結構",
5256 "xloc": [
5257 "default-mobile.handlebars->9->342",
5246 - "default.handlebars->29->918"
5258 + "default.handlebars->29->921"
5259 ]
5260 },
5261 {
@@ -5284,7 +5296,7 @@
5296 "zh-cht": "你確定要刪除群{0}嗎?刪除裝置群還將刪除該群中有關裝置的所有訊息。",
5297 "xloc": [
5298 "default-mobile.handlebars->9->418",
5287 - "default.handlebars->29->1386"
5299 + "default.handlebars->29->1389"
5300 ]
5301 },
5302 {
@@ -5304,7 +5316,7 @@
5316 "zh-chs": "您确定要删除节点{0}吗?",
5317 "zh-cht": "你確定要刪除節點{0}嗎?",
5318 "xloc": [
5307 - "default.handlebars->29->773"
5319 + "default.handlebars->29->776"
5320 ]
5321 },
5322 {
@@ -5324,7 +5336,7 @@
5336 "zh-chs": "您确定要卸载所选代理吗?",
5337 "zh-cht": "你確定要卸載所選代理嗎?",
5338 "xloc": [
5327 - "default.handlebars->29->762"
5339 + "default.handlebars->29->765"
5340 ]
5341 },
5342 {
@@ -5344,7 +5356,7 @@
5356 "zh-chs": "您确定要卸载所选的{0}代理吗?",
5357 "zh-cht": "你確定要卸載所選的{0}代理嗎?",
5358 "xloc": [
5347 - "default.handlebars->29->761"
5359 + "default.handlebars->29->764"
5360 ]
5361 },
5362 {
@@ -5364,7 +5376,7 @@
5376 "zh-chs": "您确定要{0}插件吗:{1}",
5377 "zh-cht": "你確定要{0}外掛嗎:{1}",
5378 "xloc": [
5367 - "default.handlebars->29->2109"
5379 + "default.handlebars->29->2116"
5380 ]
5381 },
5382 {
@@ -5384,7 +5396,7 @@
5396 "zh-chs": "亚美尼亚文",
5397 "zh-cht": "亞美尼亞文",
5398 "xloc": [
5387 - "default.handlebars->29->1051"
5399 + "default.handlebars->29->1054"
5400 ]
5401 },
5402 {
@@ -5444,7 +5456,7 @@
5456 "zh-chs": "阿萨姆文",
5457 "zh-cht": "阿薩姆文",
5458 "xloc": [
5447 - "default.handlebars->29->1052"
5459 + "default.handlebars->29->1055"
5460 ]
5461 },
5462 {
@@ -5464,7 +5476,7 @@
5476 "zh-chs": "阿斯图里亚斯文",
5477 "zh-cht": "阿斯圖里亞斯文",
5478 "xloc": [
5467 - "default.handlebars->29->1053"
5479 + "default.handlebars->29->1056"
5480 ]
5481 },
5482 {
@@ -5484,7 +5496,7 @@
5496 "zh-chs": "尝试激活英特尔(R)AMT ACM模式",
5497 "zh-cht": "嘗試激活英特爾(R)AMT ACM模式",
5498 "xloc": [
5487 - "default.handlebars->29->1588"
5499 + "default.handlebars->29->1591"
5500 ]
5501 },
5502 {
@@ -5504,7 +5516,7 @@
5516 "zh-chs": "认证软件",
5517 "zh-cht": "認證軟體",
5518 "xloc": [
5507 - "default.handlebars->29->1923"
5519 + "default.handlebars->29->1928"
5520 ]
5521 },
5522 {
@@ -5528,8 +5540,8 @@
5540 "default-mobile.handlebars->9->52",
5541 "default-mobile.handlebars->9->71",
5542 "default-mobile.handlebars->9->73",
5531 - "default.handlebars->29->1017",
5532 - "default.handlebars->29->1019",
5543 + "default.handlebars->29->1020",
5544 + "default.handlebars->29->1022",
5545 "default.handlebars->29->125",
5546 "default.handlebars->29->130"
5547 ]
@@ -5611,7 +5623,7 @@
5623 "zh-chs": "自动删除",
5624 "zh-cht": "自動刪除",
5625 "xloc": [
5614 - "default.handlebars->29->1313"
5626 + "default.handlebars->29->1316"
5627 ]
5628 },
5629 {
@@ -5675,7 +5687,7 @@
5687 "zh-chs": "可用內存",
5688 "zh-cht": "可用內存",
5689 "xloc": [
5678 - "default.handlebars->29->2062"
5690 + "default.handlebars->29->2069"
5691 ]
5692 },
5693 {
@@ -5695,7 +5707,7 @@
5707 "zh-chs": "阿塞拜疆文",
5708 "zh-cht": "阿塞拜疆文",
5709 "xloc": [
5698 - "default.handlebars->29->1054"
5710 + "default.handlebars->29->1057"
5711 ]
5712 },
5713 {
@@ -5716,7 +5728,7 @@
5728 "zh-cht": "的BIOS",
5729 "xloc": [
5730 "default-mobile.handlebars->9->384",
5719 - "default.handlebars->29->970"
5731 + "default.handlebars->29->973"
5732 ]
5733 },
5734 {
@@ -5831,8 +5843,8 @@
5843 "zh-chs": "背景与互动",
5844 "zh-cht": "背景與互動",
5845 "xloc": [
5834 - "default.handlebars->29->1492",
5835 - "default.handlebars->29->1499",
5846 + "default.handlebars->29->1495",
5847 + "default.handlebars->29->1502",
5848 "default.handlebars->29->335",
5849 "default.handlebars->29->349"
5850 ]
@@ -5854,8 +5866,8 @@
5866 "zh-chs": "仅背景",
5867 "zh-cht": "僅背景",
5868 "xloc": [
5857 - "default.handlebars->29->1493",
5858 - "default.handlebars->29->1500",
5869 + "default.handlebars->29->1496",
5870 + "default.handlebars->29->1503",
5871 "default.handlebars->29->336",
5872 "default.handlebars->29->350",
5873 "default.handlebars->29->364"
@@ -5898,7 +5910,7 @@
5910 "zh-chs": "备用码",
5911 "zh-cht": "備用碼",
5912 "xloc": [
5901 - "default.handlebars->29->1925"
5913 + "default.handlebars->29->1930"
5914 ]
5915 },
5916 {
@@ -5918,7 +5930,7 @@
5930 "zh-chs": "错误的签名",
5931 "zh-cht": "錯誤的簽名",
5932 "xloc": [
5921 - "default.handlebars->29->2044"
5933 + "default.handlebars->29->2051"
5934 ]
5935 },
5936 {
@@ -5938,7 +5950,7 @@
5950 "zh-chs": "错误的网络证书",
5951 "zh-cht": "錯誤的網絡憑證",
5952 "xloc": [
5941 - "default.handlebars->29->2043"
5953 + "default.handlebars->29->2050"
5954 ]
5955 },
5956 {
@@ -5958,7 +5970,7 @@
5970 "zh-chs": "巴斯克",
5971 "zh-cht": "巴斯克",
5972 "xloc": [
5961 - "default.handlebars->29->1055"
5973 + "default.handlebars->29->1058"
5974 ]
5975 },
5976 {
@@ -5998,7 +6010,7 @@
6010 "zh-chs": "白俄罗斯文",
6011 "zh-cht": "白俄羅斯文",
6012 "xloc": [
6001 - "default.handlebars->29->1057"
6013 + "default.handlebars->29->1060"
6014 ]
6015 },
6016 {
@@ -6018,7 +6030,7 @@
6030 "zh-chs": "孟加拉",
6031 "zh-cht": "孟加拉",
6032 "xloc": [
6021 - "default.handlebars->29->1058"
6033 + "default.handlebars->29->1061"
6034 ]
6035 },
6036 {
@@ -6061,7 +6073,7 @@
6073 "zh-chs": "波斯尼亚文",
6074 "zh-cht": "波斯尼亞文",
6075 "xloc": [
6064 - "default.handlebars->29->1059"
6076 + "default.handlebars->29->1062"
6077 ]
6078 },
6079 {
@@ -6081,7 +6093,7 @@
6093 "zh-chs": "布列塔尼",
6094 "zh-cht": "布列塔尼",
6095 "xloc": [
6084 - "default.handlebars->29->1060"
6096 + "default.handlebars->29->1063"
6097 ]
6098 },
6099 {
@@ -6101,7 +6113,7 @@
6113 "zh-chs": "广播",
6114 "zh-cht": "廣播",
6115 "xloc": [
6104 - "default.handlebars->29->1839",
6116 + "default.handlebars->29->1844",
6117 "default.handlebars->container->column_l->p4->3->1->0->3->1"
6118 ]
6119 },
@@ -6122,7 +6134,7 @@
6134 "zh-chs": "广播消息",
6135 "zh-cht": "廣播消息",
6136 "xloc": [
6125 - "default.handlebars->29->1760"
6137 + "default.handlebars->29->1765"
6138 ]
6139 },
6140 {
@@ -6142,7 +6154,7 @@
6154 "zh-chs": "向所有连接的用户广播消息。",
6155 "zh-cht": "向所有連接的用戶廣播消息。",
6156 "xloc": [
6145 - "default.handlebars->29->1755"
6157 + "default.handlebars->29->1760"
6158 ]
6159 },
6160 {
@@ -6162,7 +6174,7 @@
6174 "zh-chs": "保加利亚文",
6175 "zh-cht": "保加利亞文",
6176 "xloc": [
6165 - "default.handlebars->29->1056"
6177 + "default.handlebars->29->1059"
6178 ]
6179 },
6180 {
@@ -6182,7 +6194,7 @@
6194 "zh-chs": "缅甸文",
6195 "zh-cht": "緬甸文",
6196 "xloc": [
6185 - "default.handlebars->29->1061"
6197 + "default.handlebars->29->1064"
6198 ]
6199 },
6200 {
@@ -6245,7 +6257,7 @@
6257 "zh-chs": "CIRA服务器",
6258 "zh-cht": "CIRA伺服器",
6259 "xloc": [
6248 - "default.handlebars->29->2097"
6260 + "default.handlebars->29->2104"
6261 ]
6262 },
6263 {
@@ -6265,14 +6277,14 @@
6277 "zh-chs": "CIRA服务器命令",
6278 "zh-cht": "CIRA伺服器指令",
6279 "xloc": [
6268 - "default.handlebars->29->2098"
6280 + "default.handlebars->29->2105"
6281 ]
6282 },
6283 {
6284 "en": "CIRA setup",
6285 "nl": "CIRA setup",
6286 "xloc": [
6275 - "default.handlebars->29->1377"
6287 + "default.handlebars->29->1380"
6288 ]
6289 },
6290 {
@@ -6293,7 +6305,7 @@
6305 "zh-cht": "CPU",
6306 "xloc": [
6307 "default-mobile.handlebars->9->390",
6296 - "default.handlebars->29->976"
6308 + "default.handlebars->29->979"
6309 ]
6310 },
6311 {
@@ -6313,7 +6325,7 @@
6325 "zh-chs": "CPU负载",
6326 "zh-cht": "CPU負載",
6327 "xloc": [
6316 - "default.handlebars->29->2058"
6328 + "default.handlebars->29->2065"
6329 ]
6330 },
6331 {
@@ -6333,7 +6345,7 @@
6345 "zh-chs": "最近15分钟的CPU负载",
6346 "zh-cht": "最近15分鐘的CPU負載",
6347 "xloc": [
6336 - "default.handlebars->29->2061"
6348 + "default.handlebars->29->2068"
6349 ]
6350 },
6351 {
@@ -6353,7 +6365,7 @@
6365 "zh-chs": "最近5分钟的CPU负载",
6366 "zh-cht": "最近5分鐘的CPU負載",
6367 "xloc": [
6356 - "default.handlebars->29->2060"
6368 + "default.handlebars->29->2067"
6369 ]
6370 },
6371 {
@@ -6373,7 +6385,7 @@
6385 "zh-chs": "最近一分钟的CPU负载",
6386 "zh-cht": "最近一分鐘的CPU負載",
6387 "xloc": [
6376 - "default.handlebars->29->2059"
6388 + "default.handlebars->29->2066"
6389 ]
6390 },
6391 {
@@ -6393,8 +6405,8 @@
6405 "zh-chs": "CR+LF",
6406 "zh-cht": "CR+LF",
6407 "xloc": [
6396 - "default.handlebars->29->856",
6397 - "default.handlebars->29->865",
6408 + "default.handlebars->29->859",
6409 + "default.handlebars->29->868",
6410 "default.handlebars->container->column_l->p12->termTable->1->1->6->1->1->terminalSettingsButtons"
6411 ]
6412 },
@@ -6415,7 +6427,7 @@
6427 "zh-chs": "CSV",
6428 "zh-cht": "CSV",
6429 "xloc": [
6418 - "default.handlebars->29->1678"
6430 + "default.handlebars->29->1683"
6431 ]
6432 },
6433 {
@@ -6435,8 +6447,8 @@
6447 "zh-chs": "CSV格式",
6448 "zh-cht": "CSV格式",
6449 "xloc": [
6438 - "default.handlebars->29->1682",
6439 - "default.handlebars->29->1747",
6450 + "default.handlebars->29->1687",
6451 + "default.handlebars->29->1752",
6452 "default.handlebars->29->474"
6453 ]
6454 },
@@ -6457,7 +6469,7 @@
6469 "zh-chs": "呼叫错误",
6470 "zh-cht": "呼叫錯誤",
6471 "xloc": [
6460 - "default.handlebars->29->2110"
6472 + "default.handlebars->29->2117"
6473 ]
6474 },
6475 {
@@ -6479,7 +6491,7 @@
6491 "xloc": [
6492 "default-mobile.handlebars->9->82",
6493 "default-mobile.handlebars->dialog->idx_dlgButtonBar",
6482 - "default.handlebars->29->1291",
6494 + "default.handlebars->29->1294",
6495 "default.handlebars->container->dialog->idx_dlgButtonBar",
6496 "desktop.handlebars->p11->dialog->idx_dlgButtonBar",
6497 "login-mobile.handlebars->dialog->idx_dlgButtonBar",
@@ -6509,9 +6521,9 @@
6521 "default-mobile.handlebars->9->395",
6522 "default-mobile.handlebars->9->400",
6523 "default-mobile.handlebars->9->402",
6512 - "default.handlebars->29->981",
6513 - "default.handlebars->29->986",
6514 - "default.handlebars->29->988"
6524 + "default.handlebars->29->984",
6525 + "default.handlebars->29->989",
6526 + "default.handlebars->29->991"
6527 ]
6528 },
6529 {
@@ -6532,7 +6544,7 @@
6544 "zh-cht": "容量/速度",
6545 "xloc": [
6546 "default-mobile.handlebars->9->393",
6535 - "default.handlebars->29->979"
6547 + "default.handlebars->29->982"
6548 ]
6549 },
6550 {
@@ -6552,7 +6564,7 @@
6564 "zh-chs": "加泰罗尼亚文",
6565 "zh-cht": "加泰羅尼亞文",
6566 "xloc": [
6555 - "default.handlebars->29->1062"
6567 + "default.handlebars->29->1065"
6568 ]
6569 },
6570 {
@@ -6592,7 +6604,7 @@
6604 "zh-chs": "查莫罗",
6605 "zh-cht": "查莫羅",
6606 "xloc": [
6595 - "default.handlebars->29->1063"
6607 + "default.handlebars->29->1066"
6608 ]
6609 },
6610 {
@@ -6634,7 +6646,7 @@
6646 "zh-chs": "更改{0}的电邮",
6647 "zh-cht": "更改{0}的電郵",
6648 "xloc": [
6637 - "default.handlebars->29->1953"
6649 + "default.handlebars->29->1958"
6650 ]
6651 },
6652 {
@@ -6655,8 +6667,8 @@
6667 "zh-cht": "更改群",
6668 "xloc": [
6669 "default.handlebars->29->619",
6658 - "default.handlebars->29->770",
6659 - "default.handlebars->29->771"
6670 + "default.handlebars->29->773",
6671 + "default.handlebars->29->774"
6672 ]
6673 },
6674 {
@@ -6677,8 +6689,8 @@
6689 "zh-cht": "更改密碼",
6690 "xloc": [
6691 "default-mobile.handlebars->9->90",
6680 - "default.handlebars->29->1258",
6681 - "default.handlebars->29->1940"
6692 + "default.handlebars->29->1261",
6693 + "default.handlebars->29->1945"
6694 ]
6695 },
6696 {
@@ -6698,7 +6710,7 @@
6710 "zh-chs": "更改{0}的密码",
6711 "zh-cht": "更改{0}的密碼",
6712 "xloc": [
6701 - "default.handlebars->29->1960"
6713 + "default.handlebars->29->1965"
6714 ]
6715 },
6716 {
@@ -6718,7 +6730,7 @@
6730 "zh-chs": "更改{0}的真实名称",
6731 "zh-cht": "更改{0}的真實名稱",
6732 "xloc": [
6721 - "default.handlebars->29->1948"
6733 + "default.handlebars->29->1953"
6734 ]
6735 },
6736 {
@@ -6800,7 +6812,7 @@
6812 "zh-chs": "更改该用户的密码",
6813 "zh-cht": "更改該用戶的密碼",
6814 "xloc": [
6803 - "default.handlebars->29->1939"
6815 + "default.handlebars->29->1944"
6816 ]
6817 },
6818 {
@@ -6840,7 +6852,7 @@
6852 "zh-chs": "在此处更改您的帐户电邮地址。",
6853 "zh-cht": "在此處更改你的帳戶電郵地址。",
6854 "xloc": [
6843 - "default.handlebars->29->1245"
6855 + "default.handlebars->29->1248"
6856 ]
6857 },
6858 {
@@ -6860,7 +6872,7 @@
6872 "zh-chs": "在下面的框中两次输入旧密码和新密码,以更改帐户密码。",
6873 "zh-cht": "在下面的框中兩次輸入舊密碼和新密碼,以更改帳戶密碼。",
6874 "xloc": [
6863 - "default.handlebars->29->1251"
6875 + "default.handlebars->29->1254"
6876 ]
6877 },
6878 {
@@ -6880,7 +6892,7 @@
6892 "zh-chs": "更改帐户凭据",
6893 "zh-cht": "帳戶憑證已更改",
6894 "xloc": [
6883 - "default.handlebars->29->1640"
6895 + "default.handlebars->29->1643"
6896 ]
6897 },
6898 {
@@ -6900,7 +6912,7 @@
6912 "zh-chs": "{1}组中的设备{0}已更改:{2}",
6913 "zh-cht": "{1}組中的設備{0}已更改:{2}",
6914 "xloc": [
6903 - "default.handlebars->29->1624"
6915 + "default.handlebars->29->1627"
6916 ]
6917 },
6918 {
@@ -6920,7 +6932,7 @@
6932 "zh-chs": "语言从{1}更改为{2}",
6933 "zh-cht": "語言從{1}更改為{2}",
6934 "xloc": [
6923 - "default.handlebars->29->1568"
6935 + "default.handlebars->29->1571"
6936 ]
6937 },
6938 {
@@ -6940,8 +6952,8 @@
6952 "zh-chs": "已更改{0}的用户设备权限",
6953 "zh-cht": "已更改{0}的用戶設備權限",
6954 "xloc": [
6943 - "default.handlebars->29->1626",
6944 - "default.handlebars->29->1647"
6955 + "default.handlebars->29->1629",
6956 + "default.handlebars->29->1650"
6957 ]
6958 },
6959 {
@@ -6961,7 +6973,7 @@
6973 "zh-chs": "更改语言将需要刷新页面。",
6974 "zh-cht": "更改語言將需要刷新頁面。",
6975 "xloc": [
6964 - "default.handlebars->29->1230"
6976 + "default.handlebars->29->1233"
6977 ]
6978 },
6979 {
@@ -6981,9 +6993,9 @@
6993 "zh-chs": "聊天",
6994 "zh-cht": "聊天",
6995 "xloc": [
6984 - "default.handlebars->29->1699",
6985 - "default.handlebars->29->674",
6986 - "default.handlebars->29->695"
6996 + "default.handlebars->29->1704",
6997 + "default.handlebars->29->677",
6998 + "default.handlebars->29->698"
6999 ]
7000 },
7001 {
@@ -7005,8 +7017,8 @@
7017 "xloc": [
7018 "default-mobile.handlebars->9->439",
7019 "default-mobile.handlebars->9->459",
7008 - "default.handlebars->29->1438",
7009 - "default.handlebars->29->1474"
7020 + "default.handlebars->29->1441",
7021 + "default.handlebars->29->1477"
7022 ]
7023 },
7024 {
@@ -7046,7 +7058,7 @@
7058 "zh-chs": "车臣",
7059 "zh-cht": "車臣",
7060 "xloc": [
7049 - "default.handlebars->29->1064"
7061 + "default.handlebars->29->1067"
7062 ]
7063 },
7064 {
@@ -7146,8 +7158,8 @@
7158 "zh-chs": "检查...",
7159 "zh-cht": "檢查...",
7160 "xloc": [
7149 - "default.handlebars->29->1030",
7150 - "default.handlebars->29->2104"
7161 + "default.handlebars->29->1033",
7162 + "default.handlebars->29->2111"
7163 ]
7164 },
7165 {
@@ -7167,7 +7179,7 @@
7179 "zh-chs": "中文",
7180 "zh-cht": "中文",
7181 "xloc": [
7170 - "default.handlebars->29->1065"
7182 + "default.handlebars->29->1068"
7183 ]
7184 },
7185 {
@@ -7187,7 +7199,7 @@
7199 "zh-chs": "中文(香港)",
7200 "zh-cht": "中文(香港)",
7201 "xloc": [
7190 - "default.handlebars->29->1066"
7202 + "default.handlebars->29->1069"
7203 ]
7204 },
7205 {
@@ -7207,7 +7219,7 @@
7219 "zh-chs": "中文(中国)",
7220 "zh-cht": "中文(中國)",
7221 "xloc": [
7210 - "default.handlebars->29->1067"
7222 + "default.handlebars->29->1070"
7223 ]
7224 },
7225 {
@@ -7227,7 +7239,7 @@
7239 "zh-chs": "简体中文",
7240 "zh-cht": "簡體中文",
7241 "xloc": [
7230 - "default.handlebars->29->1227"
7242 + "default.handlebars->29->1230"
7243 ]
7244 },
7245 {
@@ -7247,7 +7259,7 @@
7259 "zh-chs": "中文(新加坡)",
7260 "zh-cht": "中文(新加坡)",
7261 "xloc": [
7250 - "default.handlebars->29->1068"
7262 + "default.handlebars->29->1071"
7263 ]
7264 },
7265 {
@@ -7267,7 +7279,7 @@
7279 "zh-chs": "中文(台湾)",
7280 "zh-cht": "中文(台灣)",
7281 "xloc": [
7270 - "default.handlebars->29->1069"
7282 + "default.handlebars->29->1072"
7283 ]
7284 },
7285 {
@@ -7287,7 +7299,7 @@
7299 "zh-chs": "繁体中文",
7300 "zh-cht": "繁體中文",
7301 "xloc": [
7290 - "default.handlebars->29->1228"
7302 + "default.handlebars->29->1231"
7303 ]
7304 },
7305 {
@@ -7328,7 +7340,7 @@
7340 "zh-chs": "楚瓦什",
7341 "zh-cht": "楚瓦什",
7342 "xloc": [
7331 - "default.handlebars->29->1070"
7343 + "default.handlebars->29->1073"
7344 ]
7345 },
7346 {
@@ -7371,11 +7383,11 @@
7383 "default-mobile.handlebars->9->330",
7384 "default-mobile.handlebars->9->332",
7385 "default-mobile.handlebars->9->59",
7374 - "default.handlebars->29->1562",
7375 - "default.handlebars->29->895",
7376 - "default.handlebars->29->897",
7377 - "default.handlebars->29->899",
7378 - "default.handlebars->29->901",
7386 + "default.handlebars->29->1565",
7387 + "default.handlebars->29->898",
7388 + "default.handlebars->29->900",
7389 + "default.handlebars->29->902",
7390 + "default.handlebars->29->904",
7391 "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->7",
7392 "default.handlebars->container->column_l->p41->3->1",
7393 "messenger.handlebars->xbottom"
@@ -7418,7 +7430,7 @@
7430 "zh-chs": "全部清除",
7431 "zh-cht": "全部清除",
7432 "xloc": [
7421 - "default.handlebars->29->2031"
7433 + "default.handlebars->29->2038"
7434 ]
7435 },
7436 {
@@ -7446,7 +7458,7 @@
7458 "zh-chs": "清除核心",
7459 "zh-cht": "清除核心",
7460 "xloc": [
7449 - "default.handlebars->29->1002"
7461 + "default.handlebars->29->1005"
7462 ]
7463 },
7464 {
@@ -7486,7 +7498,7 @@
7498 "zh-chs": "清除此通知",
7499 "zh-cht": "清除此通知",
7500 "xloc": [
7489 - "default.handlebars->29->2030"
7501 + "default.handlebars->29->2037"
7502 ]
7503 },
7504 {
@@ -7546,8 +7558,8 @@
7558 "zh-chs": "单击此处编辑设备组名称",
7559 "zh-cht": "單擊此處編輯裝置群名稱",
7560 "xloc": [
7549 - "default.handlebars->29->1302",
7550 - "default.handlebars->29->1513"
7561 + "default.handlebars->29->1305",
7562 + "default.handlebars->29->1516"
7563 ]
7564 },
7565 {
@@ -7587,7 +7599,7 @@
7599 "zh-chs": "单击此处编辑用户组名称",
7600 "zh-cht": "單擊此處編輯用戶群名稱",
7601 "xloc": [
7590 - "default.handlebars->29->1816"
7602 + "default.handlebars->29->1821"
7603 ]
7604 },
7605 {
@@ -7648,7 +7660,7 @@
7660 "zh-cht": "單擊確定將驗證電郵發送到:",
7661 "xloc": [
7662 "default-mobile.handlebars->9->75",
7651 - "default.handlebars->29->1242"
7663 + "default.handlebars->29->1245"
7664 ]
7665 },
7666 {
@@ -7689,7 +7701,7 @@
7701 "zh-cht": "客戶端控制模式(CCM)",
7702 "xloc": [
7703 "default-mobile.handlebars->9->371",
7692 - "default.handlebars->29->957"
7704 + "default.handlebars->29->960"
7705 ]
7706 },
7707 {
@@ -7709,7 +7721,7 @@
7721 "zh-chs": "客户编号",
7722 "zh-cht": "客戶編號",
7723 "xloc": [
7712 - "default.handlebars->29->1284"
7724 + "default.handlebars->29->1287"
7725 ]
7726 },
7727 {
@@ -7729,7 +7741,7 @@
7741 "zh-chs": "客户端启动的远程访问",
7742 "zh-cht": "客戶端啟動的遠程訪問",
7743 "xloc": [
7732 - "default.handlebars->29->1376"
7744 + "default.handlebars->29->1379"
7745 ]
7746 },
7747 {
@@ -7749,7 +7761,7 @@
7761 "zh-chs": "客户机密",
7762 "zh-cht": "客戶機密",
7763 "xloc": [
7752 - "default.handlebars->29->1285"
7764 + "default.handlebars->29->1288"
7765 ]
7766 },
7767 {
@@ -7793,7 +7805,7 @@
7805 "default-mobile.handlebars->9->57",
7806 "default.handlebars->29->137",
7807 "default.handlebars->29->145",
7796 - "default.handlebars->29->847"
7808 + "default.handlebars->29->850"
7809 ]
7810 },
7811 {
@@ -7813,7 +7825,7 @@
7825 "zh-chs": "封闭式桌面多路复用会话,{0}秒",
7826 "zh-cht": "封閉式桌面多路復用會話,{0}秒",
7827 "xloc": [
7816 - "default.handlebars->29->1573"
7828 + "default.handlebars->29->1576"
7829 ]
7830 },
7831 {
@@ -7897,9 +7909,9 @@
7909 "nl": "Opdrachten",
7910 "xloc": [
7911 "default-mobile.handlebars->9->461",
7900 - "default.handlebars->29->1476",
7901 - "default.handlebars->29->676",
7902 - "default.handlebars->29->697"
7912 + "default.handlebars->29->1479",
7913 + "default.handlebars->29->679",
7914 + "default.handlebars->29->700"
7915 ]
7916 },
7917 {
@@ -7919,8 +7931,8 @@
7931 "zh-chs": "通用设备组",
7932 "zh-cht": "通用裝置群",
7933 "xloc": [
7922 - "default.handlebars->29->1847",
7923 - "default.handlebars->29->1965"
7934 + "default.handlebars->29->1852",
7935 + "default.handlebars->29->1970"
7936 ]
7937 },
7938 {
@@ -7940,8 +7952,8 @@
7952 "zh-chs": "通用设备",
7953 "zh-cht": "通用裝置",
7954 "xloc": [
7943 - "default.handlebars->29->1853",
7944 - "default.handlebars->29->1977"
7955 + "default.handlebars->29->1858",
7956 + "default.handlebars->29->1982"
7957 ]
7958 },
7959 {
@@ -7961,7 +7973,7 @@
7973 "zh-chs": "压缩档案...",
7974 "zh-cht": "壓縮檔案...",
7975 "xloc": [
7964 - "default.handlebars->29->872"
7976 + "default.handlebars->29->875"
7977 ]
7978 },
7979 {
@@ -7982,7 +7994,7 @@
7994 "zh-cht": "將{1}入口{2}中的{0}限製到此位置?",
7995 "xloc": [
7996 "default-mobile.handlebars->9->127",
7985 - "default.handlebars->29->1557"
7997 + "default.handlebars->29->1560"
7998 ]
7999 },
8000 {
@@ -8004,14 +8016,14 @@
8016 "xloc": [
8017 "default-mobile.handlebars->9->288",
8018 "default-mobile.handlebars->9->419",
8007 - "default.handlebars->29->1387",
8008 - "default.handlebars->29->1727",
8009 - "default.handlebars->29->1806",
8010 - "default.handlebars->29->1867",
8011 - "default.handlebars->29->1963",
8019 + "default.handlebars->29->1390",
8020 + "default.handlebars->29->1732",
8021 + "default.handlebars->29->1811",
8022 + "default.handlebars->29->1872",
8023 + "default.handlebars->29->1968",
8024 "default.handlebars->29->450",
8013 - "default.handlebars->29->765",
8014 - "default.handlebars->29->774"
8025 + "default.handlebars->29->768",
8026 + "default.handlebars->29->777"
8027 ]
8028 },
8029 {
@@ -8032,7 +8044,7 @@
8044 "zh-cht": "確認將1個副本複製到此位置?",
8045 "xloc": [
8046 "default-mobile.handlebars->9->321",
8035 - "default.handlebars->29->890"
8047 + "default.handlebars->29->893"
8048 ]
8049 },
8050 {
@@ -8052,7 +8064,7 @@
8064 "zh-chs": "确认{0}个条目的复制到此位置?",
8065 "zh-cht": "確認{0}個條目的複製到此位置?",
8066 "xloc": [
8055 - "default.handlebars->29->889"
8067 + "default.handlebars->29->892"
8068 ]
8069 },
8070 {
@@ -8092,7 +8104,7 @@
8104 "zh-chs": "确认删除选定的帐户?",
8105 "zh-cht": "確認刪除所選帳戶?",
8106 "xloc": [
8095 - "default.handlebars->29->1726"
8107 + "default.handlebars->29->1731"
8108 ]
8109 },
8110 {
@@ -8132,7 +8144,7 @@
8144 "zh-chs": "确认删除选定的用户组?",
8145 "zh-cht": "確認刪除所選用戶群?",
8146 "xloc": [
8135 - "default.handlebars->29->1805"
8147 + "default.handlebars->29->1810"
8148 ]
8149 },
8150 {
@@ -8152,7 +8164,7 @@
8164 "zh-chs": "确认删除用户{0}?",
8165 "zh-cht": "確認刪除用戶{0}?",
8166 "xloc": [
8155 - "default.handlebars->29->1962"
8167 + "default.handlebars->29->1967"
8168 ]
8169 },
8170 {
@@ -8172,7 +8184,7 @@
8184 "zh-chs": "确认删除用户“ {0} ”的成员身份?",
8185 "zh-cht": "確認刪除用戶“ {0} ”的成員身份?",
8186 "xloc": [
8175 - "default.handlebars->29->1870"
8187 + "default.handlebars->29->1875"
8188 ]
8189 },
8190 {
@@ -8192,7 +8204,7 @@
8204 "zh-chs": "确认删除用户组“ {0} ”的成员身份?",
8205 "zh-cht": "確認刪除用戶群“ {0} ”的成員身份?",
8206 "xloc": [
8195 - "default.handlebars->29->1992"
8207 + "default.handlebars->29->1999"
8208 ]
8209 },
8210 {
@@ -8213,7 +8225,7 @@
8225 "zh-cht": "確認將1個條目移動到此位置?",
8226 "xloc": [
8227 "default-mobile.handlebars->9->323",
8216 - "default.handlebars->29->892"
8228 + "default.handlebars->29->895"
8229 ]
8230 },
8231 {
@@ -8233,7 +8245,7 @@
8245 "zh-chs": "确认将{0}个条目移到此位置?",
8246 "zh-cht": "確認將{0}個條目移到該位置?",
8247 "xloc": [
8236 - "default.handlebars->29->891"
8248 + "default.handlebars->29->894"
8249 ]
8250 },
8251 {
@@ -8273,7 +8285,7 @@
8285 "zh-chs": "确认覆盖?",
8286 "zh-cht": "確認覆蓋?",
8287 "xloc": [
8276 - "default.handlebars->29->1556"
8288 + "default.handlebars->29->1559"
8289 ]
8290 },
8291 {
@@ -8293,8 +8305,8 @@
8305 "zh-chs": "确认删除设备“ {0} ”的访问权限?",
8306 "zh-cht": "確認刪除裝置“ {0} ”的訪問權限?",
8307 "xloc": [
8296 - "default.handlebars->29->1860",
8297 - "default.handlebars->29->1983"
8308 + "default.handlebars->29->1865",
8309 + "default.handlebars->29->1990"
8310 ]
8311 },
8312 {
@@ -8314,8 +8326,8 @@
8326 "zh-chs": "确认删除设备组“ {0} ”的访问权限?",
8327 "zh-cht": "確認刪除裝置群“ {0} ”的訪問權限?",
8328 "xloc": [
8317 - "default.handlebars->29->1862",
8318 - "default.handlebars->29->1996"
8329 + "default.handlebars->29->1867",
8330 + "default.handlebars->29->2003"
8331 ]
8332 },
8333 {
@@ -8335,7 +8347,7 @@
8347 "zh-chs": "确认删除用户“ {0} ”的访问权限?",
8348 "zh-cht": "確認刪除用戶“ {0} ”的訪問權限?",
8349 "xloc": [
8338 - "default.handlebars->29->1985"
8350 + "default.handlebars->29->1992"
8351 ]
8352 },
8353 {
@@ -8355,7 +8367,7 @@
8367 "zh-chs": "确认删除用户组“ {0} ”的访问权限?",
8368 "zh-cht": "確認刪除用戶群“ {0} ”的訪問權限?",
8369 "xloc": [
8358 - "default.handlebars->29->1988"
8370 + "default.handlebars->29->1995"
8371 ]
8372 },
8373 {
@@ -8375,8 +8387,8 @@
8387 "zh-chs": "确认删除访问权限?",
8388 "zh-cht": "確認刪除訪問權限?",
8389 "xloc": [
8378 - "default.handlebars->29->1986",
8379 - "default.handlebars->29->1989"
8390 + "default.handlebars->29->1993",
8391 + "default.handlebars->29->1996"
8392 ]
8393 },
8394 {
@@ -8397,7 +8409,7 @@
8409 "zh-cht": "確認刪除身份驗證軟體兩步登入?",
8410 "xloc": [
8411 "default-mobile.handlebars->9->74",
8400 - "default.handlebars->29->1020"
8412 + "default.handlebars->29->1023"
8413 ]
8414 },
8415 {
@@ -8417,6 +8429,12 @@
8429 "zh-chs": "确认删除设备组{0}?",
8430 "zh-cht": "確認刪除裝置群{0}?"
8431 },
8432 + {
8433 + "en": "Confirm removal of device share \\\"{0}\\\"?",
8434 + "xloc": [
8435 + "default.handlebars->29->1988"
8436 + ]
8437 + },
8438 {
8439 "cs": "Potvrdit odebrání zařízení {0}?",
8440 "de": "Entfernen des Geräts {0} bestätigen?",
@@ -8468,7 +8486,7 @@
8486 "zh-chs": "确认删除用户“ {0} ”的权限?",
8487 "zh-cht": "確認刪除用戶“ {0} ”的權限?",
8488 "xloc": [
8471 - "default.handlebars->29->1485"
8489 + "default.handlebars->29->1488"
8490 ]
8491 },
8492 {
@@ -8488,7 +8506,7 @@
8506 "zh-chs": "确认删除用户组“ {0} ”的权限?",
8507 "zh-cht": "確認刪除用戶群“ {0} ”的權限?",
8508 "xloc": [
8491 - "default.handlebars->29->1487"
8509 + "default.handlebars->29->1490"
8510 ]
8511 },
8512 {
@@ -8548,8 +8566,8 @@
8566 "default-mobile.handlebars->9->303",
8567 "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
8568 "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3",
8551 - "default.handlebars->29->1330",
8552 - "default.handlebars->29->868",
8569 + "default.handlebars->29->1333",
8570 + "default.handlebars->29->871",
8571 "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1span",
8572 "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->connectbutton2span",
8573 "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3",
@@ -8596,7 +8614,7 @@
8614 "zh-chs": "连接到服务器",
8615 "zh-cht": "連接到伺服器",
8616 "xloc": [
8599 - "default.handlebars->29->1380"
8617 + "default.handlebars->29->1383"
8618 ]
8619 },
8620 {
@@ -8717,7 +8735,7 @@
8735 "zh-chs": "已连接的英特尔&reg;AMT",
8736 "zh-cht": "已連接的Intel&reg; AMT",
8737 "xloc": [
8720 - "default.handlebars->29->2049"
8738 + "default.handlebars->29->2056"
8739 ]
8740 },
8741 {
@@ -8737,7 +8755,7 @@
8755 "zh-chs": "已连接的用户",
8756 "zh-cht": "已连接的用户",
8757 "xloc": [
8740 - "default.handlebars->29->2054"
8758 + "default.handlebars->29->2061"
8759 ]
8760 },
8761 {
@@ -8758,7 +8776,7 @@
8776 "zh-cht": "現在已連接",
8777 "xloc": [
8778 "default-mobile.handlebars->9->346",
8761 - "default.handlebars->29->922"
8779 + "default.handlebars->29->925"
8780 ]
8781 },
8782 {
@@ -8805,7 +8823,7 @@
8823 "default.handlebars->29->246",
8824 "default.handlebars->29->273",
8825 "default.handlebars->29->9",
8808 - "default.handlebars->29->913",
8826 + "default.handlebars->29->916",
8827 "desktop.handlebars->3->2",
8828 "xterm.handlebars->9->2"
8829 ]
@@ -8827,7 +8845,7 @@
8845 "zh-chs": "连接数量",
8846 "zh-cht": "連接數量",
8847 "xloc": [
8830 - "default.handlebars->29->2068"
8848 + "default.handlebars->29->2075"
8849 ]
8850 },
8851 {
@@ -8847,7 +8865,7 @@
8865 "zh-chs": "连接转发器",
8866 "zh-cht": "連接轉發器",
8867 "xloc": [
8850 - "default.handlebars->29->2096"
8868 + "default.handlebars->29->2103"
8869 ]
8870 },
8871 {
@@ -8908,7 +8926,7 @@
8926 "zh-cht": "連接性",
8927 "xloc": [
8928 "default-mobile.handlebars->9->255",
8911 - "default.handlebars->29->1520",
8929 + "default.handlebars->29->1523",
8930 "default.handlebars->29->234",
8931 "default.handlebars->29->606",
8932 "default.handlebars->container->column_l->p21->3->1->meshConnChartDiv->1"
@@ -8931,8 +8949,8 @@
8949 "zh-chs": "控制台",
8950 "zh-cht": "控制台",
8951 "xloc": [
8934 - "default.handlebars->29->669",
8935 - "default.handlebars->29->690",
8952 + "default.handlebars->29->672",
8953 + "default.handlebars->29->693",
8954 "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevConsole",
8955 "default.handlebars->container->topbar->1->1->ServerSubMenuSpan->ServerSubMenu->1->0->ServerConsole",
8956 "default.handlebars->contextMenu->cxconsole"
@@ -8975,8 +8993,8 @@
8993 "zh-chs": "控制",
8994 "zh-cht": "控制",
8995 "xloc": [
8978 - "default.handlebars->29->668",
8979 - "default.handlebars->29->689",
8996 + "default.handlebars->29->671",
8997 + "default.handlebars->29->692",
8998 "messenger.handlebars->13->1"
8999 ]
9000 },
@@ -8997,7 +9015,7 @@
9015 "zh-chs": "Cookie编码器",
9016 "zh-cht": "Cookie編碼器",
9017 "xloc": [
9000 - "default.handlebars->29->2082"
9018 + "default.handlebars->29->2089"
9019 ]
9020 },
9021 {
@@ -9154,8 +9172,8 @@
9172 "zh-chs": "复制连结到剪贴板",
9173 "zh-cht": "複製連結到剪貼板",
9174 "xloc": [
9157 - "default.handlebars->29->1525",
9158 - "default.handlebars->29->1544",
9175 + "default.handlebars->29->1528",
9176 + "default.handlebars->29->1547",
9177 "default.handlebars->29->195",
9178 "default.handlebars->29->352"
9179 ]
@@ -9258,7 +9276,7 @@
9276 "zh-chs": "复制:“{0}”到“{1}”",
9277 "zh-cht": "複製:“{0}”到“{1}”",
9278 "xloc": [
9261 - "default.handlebars->29->1616"
9279 + "default.handlebars->29->1619"
9280 ]
9281 },
9282 {
@@ -9404,7 +9422,7 @@
9422 "zh-chs": "核心服务器",
9423 "zh-cht": "核心伺服器",
9424 "xloc": [
9407 - "default.handlebars->29->2081"
9425 + "default.handlebars->29->2088"
9426 ]
9427 },
9428 {
@@ -9424,7 +9442,7 @@
9442 "zh-chs": "科西嘉文",
9443 "zh-cht": "科西嘉文",
9444 "xloc": [
9427 - "default.handlebars->29->1071"
9445 + "default.handlebars->29->1074"
9446 ]
9447 },
9448 {
@@ -9444,7 +9462,7 @@
9462 "zh-chs": "创建帐号",
9463 "zh-cht": "創建帳號",
9464 "xloc": [
9447 - "default.handlebars->29->1774",
9465 + "default.handlebars->29->1779",
9466 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->12->1->1",
9467 "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1",
9468 "login2.handlebars->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1"
@@ -9487,7 +9505,7 @@
9505 "zh-chs": "创建用户组",
9506 "zh-cht": "創建用戶群",
9507 "xloc": [
9490 - "default.handlebars->29->1813"
9508 + "default.handlebars->29->1818"
9509 ]
9510 },
9511 {
@@ -9527,7 +9545,7 @@
9545 "zh-chs": "使用以下选项创建一个新的设备组。",
9546 "zh-cht": "使用以下選項創建一個新的裝置群。",
9547 "xloc": [
9530 - "default.handlebars->29->1265"
9548 + "default.handlebars->29->1268"
9549 ]
9550 },
9551 {
@@ -9567,7 +9585,7 @@
9585 "zh-chs": "创建文件夹:“{0}”",
9586 "zh-cht": "創建文件夾:“{0}”",
9587 "xloc": [
9570 - "default.handlebars->29->1609"
9588 + "default.handlebars->29->1612"
9589 ]
9590 },
9591 {
@@ -9587,7 +9605,7 @@
9605 "zh-chs": "通过导入以下格式的JSON档案一次创建多个帐户:",
9606 "zh-cht": "通過導入以下格式的JSON檔案一次創建多個帳戶:",
9607 "xloc": [
9590 - "default.handlebars->29->1738"
9608 + "default.handlebars->29->1743"
9609 ]
9610 },
9611 {
@@ -9629,7 +9647,7 @@
9647 "zh-chs": "创建的设备组:{0}",
9648 "zh-cht": "創建的設備組:{0}",
9649 "xloc": [
9632 - "default.handlebars->29->1620"
9650 + "default.handlebars->29->1623"
9651 ]
9652 },
9653 {
@@ -9649,7 +9667,7 @@
9667 "zh-chs": "创建一个连结,该连结允许没有帐户的访客将远程桌面访问此设备最多1小时。",
9668 "zh-cht": "創建一個鏈結,該鏈結允許沒有帳戶的訪客將遠程桌面訪問此裝置最多1小時。",
9669 "xloc": [
9652 - "default.handlebars->29->708"
9670 + "default.handlebars->29->711"
9671 ]
9672 },
9673 {
@@ -9669,7 +9687,7 @@
9687 "zh-chs": "创建",
9688 "zh-cht": "創建",
9689 "xloc": [
9672 - "default.handlebars->29->1899"
9690 + "default.handlebars->29->1904"
9691 ]
9692 },
9693 {
@@ -9689,7 +9707,7 @@
9707 "zh-chs": "创建时间",
9708 "zh-cht": "創作時間",
9709 "xloc": [
9692 - "default.handlebars->29->1312"
9710 + "default.handlebars->29->1315"
9711 ]
9712 },
9713 {
@@ -9731,8 +9749,8 @@
9749 "zh-chs": "创建者",
9750 "zh-cht": "創作者",
9751 "xloc": [
9734 - "default.handlebars->29->1310",
9735 - "default.handlebars->29->1311"
9752 + "default.handlebars->29->1313",
9753 + "default.handlebars->29->1314"
9754 ]
9755 },
9756 {
@@ -9752,7 +9770,7 @@
9770 "zh-chs": "证书",
9771 "zh-cht": "證書",
9772 "xloc": [
9755 - "default.handlebars->29->1282"
9773 + "default.handlebars->29->1285"
9774 ]
9775 },
9776 {
@@ -9772,7 +9790,7 @@
9790 "zh-chs": "克里语",
9791 "zh-cht": "克里語",
9792 "xloc": [
9775 - "default.handlebars->29->1072"
9793 + "default.handlebars->29->1075"
9794 ]
9795 },
9796 {
@@ -9792,7 +9810,7 @@
9810 "zh-chs": "克罗地亚文",
9811 "zh-cht": "克羅地亞文",
9812 "xloc": [
9795 - "default.handlebars->29->1073"
9813 + "default.handlebars->29->1076"
9814 ]
9815 },
9816 {
@@ -9959,7 +9977,7 @@
9977 "zh-chs": "捷克文",
9978 "zh-cht": "捷克文",
9979 "xloc": [
9962 - "default.handlebars->29->1074"
9980 + "default.handlebars->29->1077"
9981 ]
9982 },
9983 {
@@ -9999,7 +10017,7 @@
10017 "zh-chs": "丹麦文",
10018 "zh-cht": "丹麥文",
10019 "xloc": [
10002 - "default.handlebars->29->1075"
10020 + "default.handlebars->29->1078"
10021 ]
10022 },
10023 {
@@ -10019,7 +10037,7 @@
10037 "zh-chs": "数据通道",
10038 "zh-cht": "數據通道",
10039 "xloc": [
10022 - "default.handlebars->29->817",
10040 + "default.handlebars->29->820",
10041 "desktop.handlebars->3->12"
10042 ]
10043 },
@@ -10040,7 +10058,7 @@
10058 "zh-chs": "日期和时间",
10059 "zh-cht": "日期和時間",
10060 "xloc": [
10043 - "default.handlebars->29->1233"
10061 + "default.handlebars->29->1236"
10062 ]
10063 },
10064 {
@@ -10061,14 +10079,14 @@
10079 "zh-cht": "天",
10080 "xloc": [
10081 "default-mobile.handlebars->9->278",
10064 - "default.handlebars->29->749"
10082 + "default.handlebars->29->752"
10083 ]
10084 },
10085 {
10086 "en": "Deactivate",
10087 "nl": "Deactiveren",
10088 "xloc": [
10071 - "default.handlebars->29->1363"
10089 + "default.handlebars->29->1366"
10090 ]
10091 },
10092 {
@@ -10126,10 +10144,10 @@
10144 "zh-chs": "默认",
10145 "zh-cht": "默認",
10146 "xloc": [
10129 - "default.handlebars->29->1761",
10130 - "default.handlebars->29->1809",
10131 - "default.handlebars->29->1820",
10132 - "default.handlebars->29->1888"
10147 + "default.handlebars->29->1766",
10148 + "default.handlebars->29->1814",
10149 + "default.handlebars->29->1825",
10150 + "default.handlebars->29->1893"
10151 ]
10152 },
10153 {
@@ -10153,9 +10171,9 @@
10171 "default-mobile.handlebars->9->313",
10172 "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1",
10173 "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1",
10156 - "default.handlebars->29->1551",
10174 + "default.handlebars->29->1554",
10175 "default.handlebars->29->507",
10158 - "default.handlebars->29->881",
10176 + "default.handlebars->29->884",
10177 "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
10178 "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3",
10179 "default.handlebars->container->dialog->idx_dlgButtonBar->5",
@@ -10183,7 +10201,7 @@
10201 "zh-cht": "刪除帳戶",
10202 "xloc": [
10203 "default-mobile.handlebars->9->84",
10186 - "default.handlebars->29->1250"
10204 + "default.handlebars->29->1253"
10205 ]
10206 },
10207 {
@@ -10203,7 +10221,7 @@
10221 "zh-chs": "删除帐户",
10222 "zh-cht": "刪除帳戶",
10223 "xloc": [
10206 - "default.handlebars->29->1728"
10224 + "default.handlebars->29->1733"
10225 ]
10226 },
10227 {
@@ -10246,8 +10264,8 @@
10264 "xloc": [
10265 "default-mobile.handlebars->9->417",
10266 "default-mobile.handlebars->9->420",
10249 - "default.handlebars->29->1359",
10250 - "default.handlebars->29->1388"
10267 + "default.handlebars->29->1362",
10268 + "default.handlebars->29->1391"
10269 ]
10270 },
10271 {
@@ -10268,7 +10286,7 @@
10286 "zh-cht": "刪除節點",
10287 "xloc": [
10288 "default-mobile.handlebars->9->286",
10271 - "default.handlebars->29->775"
10289 + "default.handlebars->29->778"
10290 ]
10291 },
10292 {
@@ -10308,7 +10326,7 @@
10326 "zh-chs": "删除用户",
10327 "zh-cht": "刪除用戶",
10328 "xloc": [
10311 - "default.handlebars->29->1938"
10329 + "default.handlebars->29->1943"
10330 ]
10331 },
10332 {
@@ -10328,8 +10346,8 @@
10346 "zh-chs": "删除用户群组",
10347 "zh-cht": "刪除用戶群組",
10348 "xloc": [
10331 - "default.handlebars->29->1858",
10332 - "default.handlebars->29->1868"
10349 + "default.handlebars->29->1863",
10350 + "default.handlebars->29->1873"
10351 ]
10352 },
10353 {
@@ -10349,7 +10367,7 @@
10367 "zh-chs": "删除用户群组",
10368 "zh-cht": "刪除用戶群組",
10369 "xloc": [
10352 - "default.handlebars->29->1807"
10370 + "default.handlebars->29->1812"
10371 ]
10372 },
10373 {
@@ -10369,7 +10387,7 @@
10387 "zh-chs": "删除用户{0}",
10388 "zh-cht": "刪除用戶{0}",
10389 "xloc": [
10372 - "default.handlebars->29->1961"
10390 + "default.handlebars->29->1966"
10391 ]
10392 },
10393 {
@@ -10390,7 +10408,7 @@
10408 "zh-cht": "刪除帳戶",
10409 "xloc": [
10410 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->p3AccountActions->p2AccountActions->3->9->0",
10393 - "default.handlebars->29->1724",
10411 + "default.handlebars->29->1729",
10412 "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->p2AccountPassActions->7"
10413 ]
10414 },
@@ -10431,7 +10449,7 @@
10449 "zh-chs": "删除群组",
10450 "zh-cht": "刪除群組",
10451 "xloc": [
10434 - "default.handlebars->29->1803"
10452 + "default.handlebars->29->1808"
10453 ]
10454 },
10455 {
@@ -10471,7 +10489,7 @@
10489 "zh-chs": "递归删除:“{0}”,{1}个元素已删除",
10490 "zh-cht": "遞歸刪除:“{0}”,{1}個元素已刪除",
10491 "xloc": [
10474 - "default.handlebars->29->1611"
10492 + "default.handlebars->29->1614"
10493 ]
10494 },
10495 {
@@ -10493,8 +10511,8 @@
10511 "xloc": [
10512 "default-mobile.handlebars->9->124",
10513 "default-mobile.handlebars->9->315",
10496 - "default.handlebars->29->1553",
10497 - "default.handlebars->29->883"
10514 + "default.handlebars->29->1556",
10515 + "default.handlebars->29->886"
10516 ]
10517 },
10518 {
@@ -10514,7 +10532,7 @@
10532 "zh-chs": "删除用户群组{0}?",
10533 "zh-cht": "刪除用戶群組{0}?",
10534 "xloc": [
10517 - "default.handlebars->29->1866"
10535 + "default.handlebars->29->1871"
10536 ]
10537 },
10538 {
@@ -10536,8 +10554,8 @@
10554 "xloc": [
10555 "default-mobile.handlebars->9->123",
10556 "default-mobile.handlebars->9->314",
10539 - "default.handlebars->29->1552",
10540 - "default.handlebars->29->882"
10557 + "default.handlebars->29->1555",
10558 + "default.handlebars->29->885"
10559 ]
10560 },
10561 {
@@ -10577,7 +10595,7 @@
10595 "zh-chs": "删除:“{0}”",
10596 "zh-cht": "刪除:“{0}”",
10597 "xloc": [
10580 - "default.handlebars->29->1610"
10598 + "default.handlebars->29->1613"
10599 ]
10600 },
10601 {
@@ -10597,7 +10615,7 @@
10615 "zh-chs": "删除:“{0}”,{1}个元素已删除",
10616 "zh-cht": "刪除:“{0}”,已刪除{1}個元素",
10617 "xloc": [
10600 - "default.handlebars->29->1612"
10618 + "default.handlebars->29->1615"
10619 ]
10620 },
10621 {
@@ -10617,7 +10635,7 @@
10635 "zh-chs": "被拒绝",
10636 "zh-cht": "被拒絕",
10637 "xloc": [
10620 - "default.handlebars->29->813",
10638 + "default.handlebars->29->816",
10639 "desktop.handlebars->3->8"
10640 ]
10641 },
@@ -10714,19 +10732,19 @@
10732 "default-mobile.handlebars->9->352",
10733 "default-mobile.handlebars->9->409",
10734 "default-mobile.handlebars->9->422",
10717 - "default.handlebars->29->1270",
10718 - "default.handlebars->29->1307",
10719 - "default.handlebars->29->1390",
10720 - "default.handlebars->29->1812",
10721 - "default.handlebars->29->1822",
10722 - "default.handlebars->29->1823",
10723 - "default.handlebars->29->1864",
10735 + "default.handlebars->29->1273",
10736 + "default.handlebars->29->1310",
10737 + "default.handlebars->29->1393",
10738 + "default.handlebars->29->1817",
10739 + "default.handlebars->29->1827",
10740 + "default.handlebars->29->1828",
10741 + "default.handlebars->29->1869",
10742 "default.handlebars->29->548",
10743 "default.handlebars->29->549",
10744 "default.handlebars->29->77",
10727 - "default.handlebars->29->808",
10728 - "default.handlebars->29->928",
10729 - "default.handlebars->29->938",
10745 + "default.handlebars->29->811",
10746 + "default.handlebars->29->931",
10747 + "default.handlebars->29->941",
10748 "default.handlebars->container->column_l->p42->p42tbl->1->0->3"
10749 ]
10750 },
@@ -10765,10 +10783,10 @@
10783 "zh-cht": "桌面",
10784 "xloc": [
10785 "default-mobile.handlebars->9->267",
10768 - "default.handlebars->29->1396",
10769 - "default.handlebars->29->2008",
10786 + "default.handlebars->29->1399",
10787 + "default.handlebars->29->2015",
10788 "default.handlebars->29->513",
10771 - "default.handlebars->29->853",
10789 + "default.handlebars->29->856",
10790 "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevDesktop",
10791 "default.handlebars->contextMenu->cxdesktop",
10792 "desktop.handlebars->3->24"
@@ -10811,9 +10829,9 @@
10829 "zh-chs": "桌面通知",
10830 "zh-cht": "桌面通知",
10831 "xloc": [
10814 - "default.handlebars->29->1321",
10815 - "default.handlebars->29->1827",
10816 - "default.handlebars->29->1914",
10832 + "default.handlebars->29->1324",
10833 + "default.handlebars->29->1832",
10834 + "default.handlebars->29->1919",
10835 "default.handlebars->29->587"
10836 ]
10837 },
@@ -10834,9 +10852,9 @@
10852 "zh-chs": "桌面提示",
10853 "zh-cht": "桌面提示",
10854 "xloc": [
10837 - "default.handlebars->29->1320",
10838 - "default.handlebars->29->1826",
10839 - "default.handlebars->29->1913",
10855 + "default.handlebars->29->1323",
10856 + "default.handlebars->29->1831",
10857 + "default.handlebars->29->1918",
10858 "default.handlebars->29->586"
10859 ]
10860 },
@@ -10857,9 +10875,9 @@
10875 "zh-chs": "桌面提示+工具栏",
10876 "zh-cht": "桌面提示+工具欄",
10877 "xloc": [
10860 - "default.handlebars->29->1318",
10861 - "default.handlebars->29->1824",
10862 - "default.handlebars->29->1911",
10878 + "default.handlebars->29->1321",
10879 + "default.handlebars->29->1829",
10880 + "default.handlebars->29->1916",
10881 "default.handlebars->29->584"
10882 ]
10883 },
@@ -10901,9 +10919,9 @@
10919 "zh-chs": "桌面工具栏",
10920 "zh-cht": "桌面工具欄",
10921 "xloc": [
10904 - "default.handlebars->29->1319",
10905 - "default.handlebars->29->1825",
10906 - "default.handlebars->29->1912",
10922 + "default.handlebars->29->1322",
10923 + "default.handlebars->29->1830",
10924 + "default.handlebars->29->1917",
10925 "default.handlebars->29->585"
10926 ]
10927 },
@@ -10924,7 +10942,7 @@
10942 "zh-chs": "桌面时段",
10943 "zh-cht": "桌面時段",
10944 "xloc": [
10927 - "default.handlebars->29->852"
10945 + "default.handlebars->29->855"
10946 ]
10947 },
10948 {
@@ -11007,9 +11025,9 @@
11025 "zh-chs": "设备",
11026 "zh-cht": "裝置",
11027 "xloc": [
11010 - "default.handlebars->29->1419",
11028 + "default.handlebars->29->1422",
11029 "default.handlebars->29->186",
11012 - "default.handlebars->29->1980",
11030 + "default.handlebars->29->1985",
11031 "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->5"
11032 ]
11033 },
@@ -11031,7 +11049,7 @@
11049 "zh-cht": "裝置指令",
11050 "xloc": [
11051 "default-mobile.handlebars->9->277",
11034 - "default.handlebars->29->740"
11052 + "default.handlebars->29->743"
11053 ]
11054 },
11055 {
@@ -11058,14 +11076,14 @@
11076 "zh-chs": "设备组",
11077 "zh-cht": "裝置群",
11078 "xloc": [
11061 - "default.handlebars->29->1414",
11079 "default.handlebars->29->1417",
11063 - "default.handlebars->29->1418",
11064 - "default.handlebars->29->1675",
11065 - "default.handlebars->29->1850",
11066 - "default.handlebars->29->1856",
11067 - "default.handlebars->29->1968",
11068 - "default.handlebars->29->2017"
11080 + "default.handlebars->29->1420",
11081 + "default.handlebars->29->1421",
11082 + "default.handlebars->29->1680",
11083 + "default.handlebars->29->1855",
11084 + "default.handlebars->29->1861",
11085 + "default.handlebars->29->1973",
11086 + "default.handlebars->29->2024"
11087 ]
11088 },
11089 {
@@ -11086,7 +11104,7 @@
11104 "zh-cht": "裝置群用戶",
11105 "xloc": [
11106 "default-mobile.handlebars->9->468",
11089 - "default.handlebars->29->1483"
11107 + "default.handlebars->29->1486"
11108 ]
11109 },
11110 {
@@ -11107,11 +11125,11 @@
11125 "zh-cht": "裝置群",
11126 "xloc": [
11127 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->3",
11110 - "default.handlebars->29->1691",
11111 - "default.handlebars->29->1797",
11112 - "default.handlebars->29->1837",
11113 - "default.handlebars->29->1908",
11114 - "default.handlebars->29->2052",
11128 + "default.handlebars->29->1696",
11129 + "default.handlebars->29->1802",
11130 + "default.handlebars->29->1842",
11131 + "default.handlebars->29->1913",
11132 + "default.handlebars->29->2059",
11133 "default.handlebars->container->column_l->p2->p2info->7"
11134 ]
11135 },
@@ -11152,7 +11170,7 @@
11170 "zh-chs": "设备位置",
11171 "zh-cht": "裝置位置",
11172 "xloc": [
11155 - "default.handlebars->29->776"
11173 + "default.handlebars->29->779"
11174 ]
11175 },
11176 {
@@ -11172,7 +11190,7 @@
11190 "zh-chs": "设备消息",
11191 "zh-cht": "裝置訊息",
11192 "xloc": [
11175 - "default.handlebars->29->705"
11193 + "default.handlebars->29->708"
11194 ]
11195 },
11196 {
@@ -11193,9 +11211,9 @@
11211 "zh-cht": "裝置名稱",
11212 "xloc": [
11213 "default-mobile.handlebars->9->290",
11196 - "default.handlebars->29->2016",
11214 + "default.handlebars->29->2023",
11215 "default.handlebars->29->287",
11198 - "default.handlebars->29->806",
11216 + "default.handlebars->29->809",
11217 "player.handlebars->3->9"
11218 ]
11219 },
@@ -11217,7 +11235,13 @@
11235 "zh-cht": "裝置通知",
11236 "xloc": [
11237 "default.handlebars->29->472",
11220 - "default.handlebars->29->707"
11238 + "default.handlebars->29->710"
11239 + ]
11240 + },
11241 + {
11242 + "en": "Device Sharing Link",
11243 + "xloc": [
11244 + "default.handlebars->29->662"
11245 ]
11246 },
11247 {
@@ -11257,8 +11281,8 @@
11281 "zh-chs": "设备连接。",
11282 "zh-cht": "裝置連接。",
11283 "xloc": [
11260 - "default.handlebars->29->1238",
11261 - "default.handlebars->29->1504"
11284 + "default.handlebars->29->1241",
11285 + "default.handlebars->29->1507"
11286 ]
11287 },
11288 {
@@ -11278,8 +11302,8 @@
11302 "zh-chs": "设备断开连接。",
11303 "zh-cht": "裝置斷開連接。",
11304 "xloc": [
11281 - "default.handlebars->29->1239",
11282 - "default.handlebars->29->1505"
11305 + "default.handlebars->29->1242",
11306 + "default.handlebars->29->1508"
11307 ]
11308 },
11309 {
@@ -11299,7 +11323,7 @@
11323 "zh-chs": "创建的设备组:{0}",
11324 "zh-cht": "設備組已創建:{0}",
11325 "xloc": [
11302 - "default.handlebars->29->1641"
11326 + "default.handlebars->29->1644"
11327 ]
11328 },
11329 {
@@ -11319,7 +11343,7 @@
11343 "zh-chs": "设备组已删除:{0}",
11344 "zh-cht": "設備組已刪除:{0}",
11345 "xloc": [
11322 - "default.handlebars->29->1642"
11346 + "default.handlebars->29->1645"
11347 ]
11348 },
11349 {
@@ -11339,7 +11363,7 @@
11363 "zh-chs": "设备组成员身份已更改:{0}",
11364 "zh-cht": "設備組成員身份已更改:{0}",
11365 "xloc": [
11342 - "default.handlebars->29->1643"
11366 + "default.handlebars->29->1646"
11367 ]
11368 },
11369 {
@@ -11359,7 +11383,7 @@
11383 "zh-chs": "其他设备组管理员可以查看和更改设备组注释。",
11384 "zh-cht": "其他裝置群管理員可以查看和更改裝置群註釋。",
11385 "xloc": [
11362 - "default.handlebars->29->702"
11386 + "default.handlebars->29->705"
11387 ]
11388 },
11389 {
@@ -11379,7 +11403,7 @@
11403 "zh-chs": "设备组通知已更改",
11404 "zh-cht": "設備組通知已更改",
11405 "xloc": [
11382 - "default.handlebars->29->1638"
11406 + "default.handlebars->29->1641"
11407 ]
11408 },
11409 {
@@ -11399,7 +11423,7 @@
11423 "zh-chs": "未删除的设备组:{0}",
11424 "zh-cht": "未刪除的設備組:{0}",
11425 "xloc": [
11402 - "default.handlebars->29->1621"
11426 + "default.handlebars->29->1624"
11427 ]
11428 },
11429 {
@@ -11792,7 +11816,7 @@
11816 "zh-chs": "设备请求激活Intel(R)AMT ACM,FQDN:{0}",
11817 "zh-cht": "設備請求激活Intel(R)AMT ACM,FQDN:{0}",
11818 "xloc": [
11795 - "default.handlebars->29->1623"
11819 + "default.handlebars->29->1626"
11820 ]
11821 },
11822 {
@@ -11829,8 +11853,8 @@
11853 "zh-chs": "设备",
11854 "zh-cht": "裝置",
11855 "xloc": [
11832 - "default.handlebars->29->1798",
11833 - "default.handlebars->29->1838"
11856 + "default.handlebars->29->1803",
11857 + "default.handlebars->29->1843"
11858 ]
11859 },
11860 {
@@ -11870,7 +11894,7 @@
11894 "zh-chs": "禁用的电子邮件两因素身份验证",
11895 "zh-cht": "禁用的電子郵件兩因素身份驗證",
11896 "xloc": [
11873 - "default.handlebars->29->1654"
11897 + "default.handlebars->29->1657"
11898 ]
11899 },
11900 {
@@ -11892,8 +11916,8 @@
11916 "xloc": [
11917 "default-mobile.handlebars->9->304",
11918 "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
11895 - "default.handlebars->29->1331",
11896 - "default.handlebars->29->869",
11919 + "default.handlebars->29->1334",
11920 + "default.handlebars->29->872",
11921 "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->disconnectbutton1span",
11922 "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->disconnectbutton2span",
11923 "desktop.handlebars->p11->deskarea0->deskarea1->3->disconnectbutton1span",
@@ -11970,7 +11994,7 @@
11994 "zh-chs": "在远程设备上显示一个消息框。",
11995 "zh-cht": "在遠程裝置上顯示一個訊息框。",
11996 "xloc": [
11973 - "default.handlebars->29->706"
11997 + "default.handlebars->29->709"
11998 ]
11999 },
12000 {
@@ -12030,7 +12054,7 @@
12054 "zh-chs": "显示设备组名称",
12055 "zh-cht": "顯示裝置群名稱",
12056 "xloc": [
12033 - "default.handlebars->29->1237"
12057 + "default.handlebars->29->1240"
12058 ]
12059 },
12060 {
@@ -12050,7 +12074,7 @@
12074 "zh-chs": "显示名称",
12075 "zh-cht": "顯示名稱",
12076 "xloc": [
12053 - "default.handlebars->29->838"
12077 + "default.handlebars->29->841"
12078 ]
12079 },
12080 {
@@ -12070,7 +12094,7 @@
12094 "zh-chs": "显示公共连结",
12095 "zh-cht": "顯示公共鏈結",
12096 "xloc": [
12073 - "default.handlebars->29->1524"
12097 + "default.handlebars->29->1527"
12098 ]
12099 },
12100 {
@@ -12090,7 +12114,7 @@
12114 "zh-chs": "显示消息框,标题= “{0}”,消息= “{1}”",
12115 "zh-cht": "顯示消息框,標題= “{0}”,消息= “{1}”",
12116 "xloc": [
12093 - "default.handlebars->29->1583"
12117 + "default.handlebars->29->1586"
12118 ]
12119 },
12120 {
@@ -12110,7 +12134,7 @@
12134 "zh-chs": "显示吐司消息,标题= “{0}”,消息= “{1}”",
12135 "zh-cht": "顯示吐司消息,標題= “{0}”,消息= “{1}”",
12136 "xloc": [
12113 - "default.handlebars->29->1591"
12137 + "default.handlebars->29->1594"
12138 ]
12139 },
12140 {
@@ -12130,8 +12154,8 @@
12154 "zh-chs": "什么都不做",
12155 "zh-cht": "什麼都不做",
12156 "xloc": [
12133 - "default.handlebars->29->1374",
12134 - "default.handlebars->29->1378"
12157 + "default.handlebars->29->1377",
12158 + "default.handlebars->29->1381"
12159 ]
12160 },
12161 {
@@ -12151,10 +12175,10 @@
12175 "zh-chs": "域",
12176 "zh-cht": "域",
12177 "xloc": [
12154 - "default.handlebars->29->1762",
12155 - "default.handlebars->29->1810",
12156 - "default.handlebars->29->1819",
12157 - "default.handlebars->29->1887",
12178 + "default.handlebars->29->1767",
12179 + "default.handlebars->29->1815",
12180 + "default.handlebars->29->1824",
12181 + "default.handlebars->29->1892",
12182 "mstsc.handlebars->main->1->3->1->2->1->0",
12183 "mstsc.handlebars->main->1->3->1->2->3"
12184 ]
@@ -12193,7 +12217,7 @@
12217 "zh-chs": "不要连接到服务器",
12218 "zh-cht": "不要連接到伺服器",
12219 "xloc": [
12196 - "default.handlebars->29->1379"
12220 + "default.handlebars->29->1382"
12221 ]
12222 },
12223 {
@@ -12313,7 +12337,7 @@
12337 "zh-cht": "下載檔案",
12338 "xloc": [
12339 "default-mobile.handlebars->9->334",
12316 - "default.handlebars->29->902"
12340 + "default.handlebars->29->905"
12341 ]
12342 },
12343 {
@@ -12353,7 +12377,7 @@
12377 "zh-chs": "下载MeshCmd",
12378 "zh-cht": "下載MeshCmd",
12379 "xloc": [
12356 - "default.handlebars->29->798"
12380 + "default.handlebars->29->801"
12381 ]
12382 },
12383 {
@@ -12413,7 +12437,7 @@
12437 "zh-chs": "下载报告",
12438 "zh-cht": "下載報告",
12439 "xloc": [
12416 - "default.handlebars->29->1680",
12440 + "default.handlebars->29->1685",
12441 "default.handlebars->container->column_l->p3->3->1->0->3"
12442 ]
12443 },
@@ -12434,7 +12458,7 @@
12458 "zh-chs": "下载带有指令档案的“ meshcmd”,以通过此服务器将网络讯息发送到该设备。紧记编辑meshaction.txt并添加您的帐户密码或进行任何必要的更改。",
12459 "zh-cht": "下載帶有指令檔案的“ meshcmd”,以通過此服務器將網絡讯息發送到該裝置。緊記編輯meshaction.txt並新增你的帳戶密碼或進行任何必要的更改。",
12460 "xloc": [
12437 - "default.handlebars->29->791"
12461 + "default.handlebars->29->794"
12462 ]
12463 },
12464 {
@@ -12514,7 +12538,7 @@
12538 "zh-chs": "下载电源事件",
12539 "zh-cht": "下載電源事件",
12540 "xloc": [
12517 - "default.handlebars->29->750"
12541 + "default.handlebars->29->753"
12542 ]
12543 },
12544 {
@@ -12614,7 +12638,7 @@
12638 "zh-chs": "使用以下一种档案格式下载事件列表。",
12639 "zh-cht": "使用以下一種檔案格式下載事件列表。",
12640 "xloc": [
12617 - "default.handlebars->29->1681"
12641 + "default.handlebars->29->1686"
12642 ]
12643 },
12644 {
@@ -12634,7 +12658,7 @@
12658 "zh-chs": "使用以下一种档案格式下载用户列表。",
12659 "zh-cht": "使用以下一種檔案格式下載用戶列表。",
12660 "xloc": [
12637 - "default.handlebars->29->1746"
12661 + "default.handlebars->29->1751"
12662 ]
12663 },
12664 {
@@ -12715,7 +12739,7 @@
12739 "zh-chs": "下载:“{0}”",
12740 "zh-cht": "下載:“{0}”",
12741 "xloc": [
12718 - "default.handlebars->29->1614"
12742 + "default.handlebars->29->1617"
12743 ]
12744 },
12745 {
@@ -12755,7 +12779,7 @@
12779 "zh-chs": "代理重复",
12780 "zh-cht": "代理重複",
12781 "xloc": [
12758 - "default.handlebars->29->2048"
12782 + "default.handlebars->29->2055"
12783 ]
12784 },
12785 {
@@ -12795,7 +12819,7 @@
12819 "zh-chs": "复制用户组",
12820 "zh-cht": "複製用戶群",
12821 "xloc": [
12798 - "default.handlebars->29->1814"
12822 + "default.handlebars->29->1819"
12823 ]
12824 },
12825 {
@@ -12832,8 +12856,8 @@
12856 "zh-chs": "持续时间",
12857 "zh-cht": "持續時間",
12858 "xloc": [
12835 - "default.handlebars->29->2002",
12836 - "default.handlebars->29->2022",
12859 + "default.handlebars->29->2009",
12860 + "default.handlebars->29->2029",
12861 "player.handlebars->3->2"
12862 ]
12863 },
@@ -12871,7 +12895,7 @@
12895 "zh-chs": "荷兰文(比利时)",
12896 "zh-cht": "荷蘭文(比利時)",
12897 "xloc": [
12874 - "default.handlebars->29->1077"
12898 + "default.handlebars->29->1080"
12899 ]
12900 },
12901 {
@@ -12891,7 +12915,7 @@
12915 "zh-chs": "荷兰文(标准)",
12916 "zh-cht": "荷蘭文(標準)",
12917 "xloc": [
12894 - "default.handlebars->29->1076"
12918 + "default.handlebars->29->1079"
12919 ]
12920 },
12921 {
@@ -13162,7 +13186,7 @@
13186 "zh-cht": "編輯裝置",
13187 "xloc": [
13188 "default-mobile.handlebars->9->295",
13165 - "default.handlebars->29->811"
13189 + "default.handlebars->29->814"
13190 ]
13191 },
13192 {
@@ -13185,10 +13209,10 @@
13209 "default-mobile.handlebars->9->423",
13210 "default-mobile.handlebars->9->425",
13211 "default-mobile.handlebars->9->445",
13188 - "default.handlebars->29->1391",
13189 - "default.handlebars->29->1423",
13190 - "default.handlebars->29->1447",
13191 - "default.handlebars->29->1459"
13212 + "default.handlebars->29->1394",
13213 + "default.handlebars->29->1426",
13214 + "default.handlebars->29->1450",
13215 + "default.handlebars->29->1462"
13216 ]
13217 },
13218 {
@@ -13208,7 +13232,7 @@
13232 "zh-chs": "编辑设备组功能",
13233 "zh-cht": "編輯裝置群功能",
13234 "xloc": [
13211 - "default.handlebars->29->1409"
13235 + "default.handlebars->29->1412"
13236 ]
13237 },
13238 {
@@ -13228,8 +13252,8 @@
13252 "zh-chs": "编辑设备组权限",
13253 "zh-cht": "編輯裝置群權限",
13254 "xloc": [
13231 - "default.handlebars->29->1444",
13232 - "default.handlebars->29->1456"
13255 + "default.handlebars->29->1447",
13256 + "default.handlebars->29->1459"
13257 ]
13258 },
13259 {
@@ -13249,7 +13273,7 @@
13273 "zh-chs": "编辑设备组用户同意",
13274 "zh-cht": "編輯裝置群用戶同意",
13275 "xloc": [
13252 - "default.handlebars->29->1392"
13276 + "default.handlebars->29->1395"
13277 ]
13278 },
13279 {
@@ -13270,7 +13294,7 @@
13294 "zh-cht": "編輯裝置筆記",
13295 "xloc": [
13296 "default-mobile.handlebars->9->437",
13273 - "default.handlebars->29->1436"
13297 + "default.handlebars->29->1439"
13298 ]
13299 },
13300 {
@@ -13290,8 +13314,8 @@
13314 "zh-chs": "编辑设备权限",
13315 "zh-cht": "編輯裝置權限",
13316 "xloc": [
13293 - "default.handlebars->29->1449",
13294 - "default.handlebars->29->1451"
13317 + "default.handlebars->29->1452",
13318 + "default.handlebars->29->1454"
13319 ]
13320 },
13321 {
@@ -13331,7 +13355,7 @@
13355 "zh-chs": "编辑设备用户同意",
13356 "zh-cht": "編輯裝置用戶同意",
13357 "xloc": [
13334 - "default.handlebars->29->1394"
13358 + "default.handlebars->29->1397"
13359 ]
13360 },
13361 {
@@ -13351,7 +13375,7 @@
13375 "zh-chs": "编辑群组",
13376 "zh-cht": "編輯群組",
13377 "xloc": [
13354 - "default.handlebars->29->680"
13378 + "default.handlebars->29->683"
13379 ]
13380 },
13381 {
@@ -13378,7 +13402,7 @@
13402 "default.handlebars->29->563",
13403 "default.handlebars->29->566",
13404 "default.handlebars->29->569",
13381 - "default.handlebars->29->757"
13405 + "default.handlebars->29->760"
13406 ]
13407 },
13408 {
@@ -13399,7 +13423,7 @@
13423 "zh-cht": "編輯筆記",
13424 "xloc": [
13425 "default-mobile.handlebars->9->452",
13402 - "default.handlebars->29->1466"
13426 + "default.handlebars->29->1469"
13427 ]
13428 },
13429 {
@@ -13419,7 +13443,7 @@
13443 "zh-chs": "编辑用户同意",
13444 "zh-cht": "編輯用戶同意",
13445 "xloc": [
13422 - "default.handlebars->29->1393"
13446 + "default.handlebars->29->1396"
13447 ]
13448 },
13449 {
@@ -13439,7 +13463,7 @@
13463 "zh-chs": "编辑用户设备组权限",
13464 "zh-cht": "編輯用戶裝置群權限",
13465 "xloc": [
13442 - "default.handlebars->29->1457"
13466 + "default.handlebars->29->1460"
13467 ]
13468 },
13469 {
@@ -13459,7 +13483,7 @@
13483 "zh-chs": "编辑用户设备权限",
13484 "zh-cht": "編輯用戶裝置權限",
13485 "xloc": [
13462 - "default.handlebars->29->1452"
13486 + "default.handlebars->29->1455"
13487 ]
13488 },
13489 {
@@ -13479,7 +13503,7 @@
13503 "zh-chs": "编辑用户组",
13504 "zh-cht": "編輯用戶群",
13505 "xloc": [
13482 - "default.handlebars->29->1865"
13506 + "default.handlebars->29->1870"
13507 ]
13508 },
13509 {
@@ -13499,14 +13523,14 @@
13523 "zh-chs": "编辑用户组设备权限",
13524 "zh-cht": "編輯用戶群裝置權限",
13525 "xloc": [
13502 - "default.handlebars->29->1454"
13526 + "default.handlebars->29->1457"
13527 ]
13528 },
13529 {
13530 "en": "Edit User Group User Consent",
13531 "nl": "Bewerk groepsgebruikerstoestemming",
13532 "xloc": [
13509 - "default.handlebars->29->1395"
13533 + "default.handlebars->29->1398"
13534 ]
13535 },
13536 {
@@ -13568,11 +13592,11 @@
13592 "zh-cht": "電郵",
13593 "xloc": [
13594 "default-mobile.handlebars->9->78",
13571 - "default.handlebars->29->1764",
13572 - "default.handlebars->29->1891",
13573 - "default.handlebars->29->1893",
13574 - "default.handlebars->29->1933",
13575 - "default.handlebars->29->1949",
13595 + "default.handlebars->29->1769",
13596 + "default.handlebars->29->1896",
13597 + "default.handlebars->29->1898",
13598 + "default.handlebars->29->1938",
13599 + "default.handlebars->29->1954",
13600 "default.handlebars->29->319",
13601 "login-mobile.handlebars->5->42",
13602 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3",
@@ -13605,7 +13629,7 @@
13629 "zh-cht": "電郵地址變更",
13630 "xloc": [
13631 "default-mobile.handlebars->9->79",
13608 - "default.handlebars->29->1246"
13632 + "default.handlebars->29->1249"
13633 ]
13634 },
13635 {
@@ -13626,7 +13650,7 @@
13650 "zh-cht": "電郵認證",
13651 "xloc": [
13652 "default-mobile.handlebars->9->68",
13629 - "default.handlebars->29->1014"
13653 + "default.handlebars->29->1017"
13654 ]
13655 },
13656 {
@@ -13686,7 +13710,7 @@
13710 "zh-cht": "電郵驗證",
13711 "xloc": [
13712 "default-mobile.handlebars->9->77",
13689 - "default.handlebars->29->1244"
13713 + "default.handlebars->29->1247"
13714 ]
13715 },
13716 {
@@ -13726,7 +13750,7 @@
13750 "zh-chs": "电邮未验证",
13751 "zh-cht": "電郵未驗證",
13752 "xloc": [
13729 - "default.handlebars->29->1710"
13753 + "default.handlebars->29->1715"
13754 ]
13755 },
13756 {
@@ -13746,8 +13770,8 @@
13770 "zh-chs": "电邮已验证",
13771 "zh-cht": "電郵已驗證",
13772 "xloc": [
13749 - "default.handlebars->29->1711",
13750 - "default.handlebars->29->1885"
13773 + "default.handlebars->29->1716",
13774 + "default.handlebars->29->1890"
13775 ]
13776 },
13777 {
@@ -13767,7 +13791,7 @@
13791 "zh-chs": "电邮已验证。",
13792 "zh-cht": "電郵已驗證。",
13793 "xloc": [
13770 - "default.handlebars->29->1770"
13794 + "default.handlebars->29->1775"
13795 ]
13796 },
13797 {
@@ -13787,7 +13811,7 @@
13811 "zh-chs": "电邮未验证",
13812 "zh-cht": "電郵未驗證",
13813 "xloc": [
13790 - "default.handlebars->29->1886"
13814 + "default.handlebars->29->1891"
13815 ]
13816 },
13817 {
@@ -13851,7 +13875,7 @@
13875 "zh-chs": "已通过电邮验证,并且需要重置密码。",
13876 "zh-cht": "已通過電郵驗證,並且需要重置密碼。",
13877 "xloc": [
13854 - "default.handlebars->29->1771"
13878 + "default.handlebars->29->1776"
13879 ]
13880 },
13881 {
@@ -13871,7 +13895,7 @@
13895 "zh-chs": "电邮/短信流量",
13896 "zh-cht": "電郵/短信流量",
13897 "xloc": [
13874 - "default.handlebars->29->2090"
13898 + "default.handlebars->29->2097"
13899 ]
13900 },
13901 {
@@ -13917,7 +13941,7 @@
13941 "zh-chs": "启用邀请代码",
13942 "zh-cht": "啟用邀請代碼",
13943 "xloc": [
13920 - "default.handlebars->29->1489"
13944 + "default.handlebars->29->1492"
13945 ]
13946 },
13947 {
@@ -13958,7 +13982,7 @@
13982 "zh-cht": "啟用電郵二因子鑑別。",
13983 "xloc": [
13984 "default-mobile.handlebars->9->70",
13961 - "default.handlebars->29->1016"
13985 + "default.handlebars->29->1019"
13986 ]
13987 },
13988 {
@@ -13998,7 +14022,7 @@
14022 "zh-chs": "已启用",
14023 "zh-cht": "已啟用",
14024 "xloc": [
14001 - "default.handlebars->29->2024"
14025 + "default.handlebars->29->2031"
14026 ]
14027 },
14028 {
@@ -14018,7 +14042,7 @@
14042 "zh-chs": "启用电子邮件两因素身份验证",
14043 "zh-cht": "啟用電子郵件兩因素身份驗證",
14044 "xloc": [
14021 - "default.handlebars->29->1653"
14045 + "default.handlebars->29->1656"
14046 ]
14047 },
14048 {
@@ -14058,7 +14082,7 @@
14082 "zh-chs": "时间结束",
14083 "zh-cht": "時間結束",
14084 "xloc": [
14061 - "default.handlebars->29->2021"
14085 + "default.handlebars->29->2028"
14086 ]
14087 },
14088 {
@@ -14078,7 +14102,7 @@
14102 "zh-chs": "从{1}到{2},{3}秒结束了桌面会话“{0}”",
14103 "zh-cht": "從{1}到{2},{3}秒結束了桌面會話“{0}”",
14104 "xloc": [
14081 - "default.handlebars->29->1576"
14105 + "default.handlebars->29->1579"
14106 ]
14107 },
14108 {
@@ -14098,7 +14122,7 @@
14122 "zh-chs": "从{1}到{2},{3}秒结束了文件管理会话“{0}”",
14123 "zh-cht": "從{1}到{2},{3}秒結束了文件管理會話“{0}”",
14124 "xloc": [
14101 - "default.handlebars->29->1577"
14125 + "default.handlebars->29->1580"
14126 ]
14127 },
14128 {
@@ -14118,7 +14142,7 @@
14142 "zh-chs": "从{1}到{2},{3}秒结束了中继会话“{0}”",
14143 "zh-cht": "從{1}到{2},{3}秒結束了中繼會話“{0}”",
14144 "xloc": [
14121 - "default.handlebars->29->1574"
14145 + "default.handlebars->29->1577"
14146 ]
14147 },
14148 {
@@ -14138,7 +14162,7 @@
14162 "zh-chs": "从{1}到{2},{3}秒结束了终端会话“{0}”",
14163 "zh-cht": "從{1}到{2},{3}秒結束了終端會話“{0}”",
14164 "xloc": [
14141 - "default.handlebars->29->1575"
14165 + "default.handlebars->29->1578"
14166 ]
14167 },
14168 {
@@ -14158,7 +14182,7 @@
14182 "zh-chs": "英文",
14183 "zh-cht": "英文",
14184 "xloc": [
14161 - "default.handlebars->29->1078"
14185 + "default.handlebars->29->1081"
14186 ]
14187 },
14188 {
@@ -14178,7 +14202,7 @@
14202 "zh-chs": "英文(澳洲)",
14203 "zh-cht": "英文(澳洲)",
14204 "xloc": [
14181 - "default.handlebars->29->1079"
14205 + "default.handlebars->29->1082"
14206 ]
14207 },
14208 {
@@ -14198,7 +14222,7 @@
14222 "zh-chs": "英文(伯利茲)",
14223 "zh-cht": "英文(伯利茲)",
14224 "xloc": [
14201 - "default.handlebars->29->1080"
14225 + "default.handlebars->29->1083"
14226 ]
14227 },
14228 {
@@ -14218,7 +14242,7 @@
14242 "zh-chs": "英文(加拿大)",
14243 "zh-cht": "英文(加拿大)",
14244 "xloc": [
14221 - "default.handlebars->29->1081"
14245 + "default.handlebars->29->1084"
14246 ]
14247 },
14248 {
@@ -14238,7 +14262,7 @@
14262 "zh-chs": "英文(爱尔兰)",
14263 "zh-cht": "英文(愛爾蘭)",
14264 "xloc": [
14241 - "default.handlebars->29->1082"
14265 + "default.handlebars->29->1085"
14266 ]
14267 },
14268 {
@@ -14258,7 +14282,7 @@
14282 "zh-chs": "英文(牙买加)",
14283 "zh-cht": "英文(牙買加)",
14284 "xloc": [
14261 - "default.handlebars->29->1083"
14285 + "default.handlebars->29->1086"
14286 ]
14287 },
14288 {
@@ -14278,7 +14302,7 @@
14302 "zh-chs": "英文(纽西兰)",
14303 "zh-cht": "英文(紐西蘭)",
14304 "xloc": [
14281 - "default.handlebars->29->1084"
14305 + "default.handlebars->29->1087"
14306 ]
14307 },
14308 {
@@ -14298,7 +14322,7 @@
14322 "zh-chs": "英文(菲律宾)",
14323 "zh-cht": "英文(菲律賓)",
14324 "xloc": [
14301 - "default.handlebars->29->1085"
14325 + "default.handlebars->29->1088"
14326 ]
14327 },
14328 {
@@ -14318,7 +14342,7 @@
14342 "zh-chs": "英语(南非)",
14343 "zh-cht": "英語(南非)",
14344 "xloc": [
14321 - "default.handlebars->29->1086"
14345 + "default.handlebars->29->1089"
14346 ]
14347 },
14348 {
@@ -14338,7 +14362,7 @@
14362 "zh-chs": "英文(特立尼达和多巴哥)",
14363 "zh-cht": "英文(特立尼達和多巴哥)",
14364 "xloc": [
14341 - "default.handlebars->29->1087"
14365 + "default.handlebars->29->1090"
14366 ]
14367 },
14368 {
@@ -14358,7 +14382,7 @@
14382 "zh-chs": "英文(英国)",
14383 "zh-cht": "英文(英國)",
14384 "xloc": [
14361 - "default.handlebars->29->1088"
14385 + "default.handlebars->29->1091"
14386 ]
14387 },
14388 {
@@ -14378,7 +14402,7 @@
14402 "zh-chs": "美国英文",
14403 "zh-cht": "美國英語",
14404 "xloc": [
14381 - "default.handlebars->29->1089"
14405 + "default.handlebars->29->1092"
14406 ]
14407 },
14408 {
@@ -14398,7 +14422,7 @@
14422 "zh-chs": "英文(津巴布韦)",
14423 "zh-cht": "英文(津巴布韋)",
14424 "xloc": [
14401 - "default.handlebars->29->1090"
14425 + "default.handlebars->29->1093"
14426 ]
14427 },
14428 {
@@ -14418,8 +14442,8 @@
14442 "zh-chs": "输入",
14443 "zh-cht": "輸入",
14444 "xloc": [
14421 - "default.handlebars->29->1272",
14422 - "default.handlebars->29->1273"
14445 + "default.handlebars->29->1275",
14446 + "default.handlebars->29->1276"
14447 ]
14448 },
14449 {
@@ -14439,7 +14463,7 @@
14463 "zh-chs": "输入管理领域名称的逗号分隔列表。",
14464 "zh-cht": "輸入管理領域名稱的逗號分隔列表。",
14465 "xloc": [
14442 - "default.handlebars->29->1775"
14466 + "default.handlebars->29->1780"
14467 ]
14468 },
14469 {
@@ -14479,7 +14503,7 @@
14503 "zh-chs": "输入文本,然后单击“确定”以使用美式英语键盘远程输入文本。在继续操作之前,请确保将远程鼠标放置在正确的位置。",
14504 "zh-cht": "輸入文本,然後單擊“確定”以使用美式英語鍵盤遠程輸入文本。在繼續操作之前,請確保將遠程光標放置在正確的位置。",
14505 "xloc": [
14482 - "default.handlebars->29->832",
14506 + "default.handlebars->29->835",
14507 "desktop.handlebars->3->22"
14508 ]
14509 },
@@ -14542,7 +14566,7 @@
14566 "zh-chs": "输入支持SMS的电话号码。验证后,该号码可用于登录验证和其他通知。",
14567 "zh-cht": "輸入支持SMS的電話號碼。驗證後,該號碼可用於登入驗證和其他通知。",
14568 "xloc": [
14545 - "default.handlebars->29->1011"
14569 + "default.handlebars->29->1014"
14570 ]
14571 },
14572 {
@@ -14602,7 +14626,7 @@
14626 "zh-chs": "世界文",
14627 "zh-cht": "世界語",
14628 "xloc": [
14605 - "default.handlebars->29->1091"
14629 + "default.handlebars->29->1094"
14630 ]
14631 },
14632 {
@@ -14622,7 +14646,7 @@
14646 "zh-chs": "爱沙尼亚文",
14647 "zh-cht": "愛沙尼亞語",
14648 "xloc": [
14625 - "default.handlebars->29->1092"
14649 + "default.handlebars->29->1095"
14650 ]
14651 },
14652 {
@@ -14642,7 +14666,7 @@
14666 "zh-chs": "事件详情",
14667 "zh-cht": "事件詳情",
14668 "xloc": [
14645 - "default.handlebars->29->915"
14669 + "default.handlebars->29->918"
14670 ]
14671 },
14672 {
@@ -14662,7 +14686,7 @@
14686 "zh-chs": "事件列表输出",
14687 "zh-cht": "事件列表輸出",
14688 "xloc": [
14665 - "default.handlebars->29->1686"
14689 + "default.handlebars->29->1691"
14690 ]
14691 },
14692 {
@@ -14755,7 +14779,7 @@
14779 "zh-cht": "到期時間",
14780 "xloc": [
14781 "default.handlebars->29->188",
14758 - "default.handlebars->29->725"
14782 + "default.handlebars->29->728"
14783 ]
14784 },
14785 {
@@ -14815,7 +14839,7 @@
14839 "zh-chs": "扩充式ASCII",
14840 "zh-cht": "擴充式ASCII",
14841 "xloc": [
14818 - "default.handlebars->29->860"
14842 + "default.handlebars->29->863"
14843 ]
14844 },
14845 {
@@ -14855,7 +14879,7 @@
14879 "zh-chs": "外部",
14880 "zh-cht": "外部",
14881 "xloc": [
14858 - "default.handlebars->29->2075"
14882 + "default.handlebars->29->2082"
14883 ]
14884 },
14885 {
@@ -14895,7 +14919,7 @@
14919 "zh-chs": "FYRO马其顿语",
14920 "zh-cht": "FYRO馬其頓語",
14921 "xloc": [
14898 - "default.handlebars->29->1142"
14922 + "default.handlebars->29->1145"
14923 ]
14924 },
14925 {
@@ -14915,7 +14939,7 @@
14939 "zh-chs": "法罗语",
14940 "zh-cht": "法羅語",
14941 "xloc": [
14918 - "default.handlebars->29->1093"
14942 + "default.handlebars->29->1096"
14943 ]
14944 },
14945 {
@@ -14955,7 +14979,7 @@
14979 "zh-chs": "本地用户拒绝后无法启动远程桌面",
14980 "zh-cht": "本地用戶拒絕後無法啟動遠程桌面",
14981 "xloc": [
14958 - "default.handlebars->29->1599"
14982 + "default.handlebars->29->1602"
14983 ]
14984 },
14985 {
@@ -14975,7 +14999,7 @@
14999 "zh-chs": "本地用户拒绝后无法启动远程文件",
15000 "zh-cht": "本地用戶拒絕後無法啟動遠程文件",
15001 "xloc": [
14978 - "default.handlebars->29->1606"
15002 + "default.handlebars->29->1609"
15003 ]
15004 },
15005 {
@@ -14995,7 +15019,7 @@
15019 "zh-chs": "无法启动远程终端接合{0}({1})",
15020 "zh-cht": "無法啟動遠程終端接合{0}({1})",
15021 "xloc": [
14998 - "default.handlebars->29->814",
15022 + "default.handlebars->29->817",
15023 "desktop.handlebars->3->9"
15024 ]
15025 },
@@ -15016,7 +15040,7 @@
15040 "zh-chs": "波斯文(波斯文)",
15041 "zh-cht": "波斯語(波斯語)",
15042 "xloc": [
15019 - "default.handlebars->29->1094"
15043 + "default.handlebars->29->1097"
15044 ]
15045 },
15046 {
@@ -15058,7 +15082,7 @@
15082 "zh-chs": "功能",
15083 "zh-cht": "功能",
15084 "xloc": [
15061 - "default.handlebars->29->1317"
15085 + "default.handlebars->29->1320"
15086 ]
15087 },
15088 {
@@ -15078,7 +15102,7 @@
15102 "zh-chs": "斐济",
15103 "zh-cht": "斐濟",
15104 "xloc": [
15081 - "default.handlebars->29->1095"
15105 + "default.handlebars->29->1098"
15106 ]
15107 },
15108 {
@@ -15120,7 +15144,7 @@
15144 "xloc": [
15145 "default-mobile.handlebars->9->318",
15146 "default.handlebars->29->505",
15123 - "default.handlebars->29->886"
15147 + "default.handlebars->29->889"
15148 ]
15149 },
15150 {
@@ -15140,8 +15164,8 @@
15164 "zh-chs": "档案操作",
15165 "zh-cht": "檔案操作",
15166 "xloc": [
15143 - "default.handlebars->29->871",
15144 - "default.handlebars->29->873"
15167 + "default.handlebars->29->874",
15168 + "default.handlebars->29->876"
15169 ]
15170 },
15171 {
@@ -15181,7 +15205,7 @@
15205 "zh-chs": "文件系统驱动",
15206 "zh-cht": "FileSystemDriver",
15207 "xloc": [
15184 - "default.handlebars->29->841"
15208 + "default.handlebars->29->844"
15209 ]
15210 },
15211 {
@@ -15203,8 +15227,8 @@
15227 "xloc": [
15228 "default-mobile.handlebars->9->171",
15229 "default-mobile.handlebars->9->268",
15206 - "default.handlebars->29->1403",
15207 - "default.handlebars->29->2009",
15230 + "default.handlebars->29->1406",
15231 + "default.handlebars->29->2016",
15232 "default.handlebars->29->258",
15233 "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevFiles",
15234 "default.handlebars->contextMenu->cxfiles"
@@ -15247,9 +15271,9 @@
15271 "zh-chs": "档案通知",
15272 "zh-cht": "檔案通知",
15273 "xloc": [
15250 - "default.handlebars->29->1325",
15251 - "default.handlebars->29->1831",
15252 - "default.handlebars->29->1918",
15274 + "default.handlebars->29->1328",
15275 + "default.handlebars->29->1836",
15276 + "default.handlebars->29->1923",
15277 "default.handlebars->29->591"
15278 ]
15279 },
@@ -15270,9 +15294,9 @@
15294 "zh-chs": "档案提示",
15295 "zh-cht": "檔案提示",
15296 "xloc": [
15273 - "default.handlebars->29->1324",
15274 - "default.handlebars->29->1830",
15275 - "default.handlebars->29->1917",
15297 + "default.handlebars->29->1327",
15298 + "default.handlebars->29->1835",
15299 + "default.handlebars->29->1922",
15300 "default.handlebars->29->590"
15301 ]
15302 },
@@ -15316,7 +15340,7 @@
15340 "zh-chs": "录制会话已完成,{0}秒",
15341 "zh-cht": "錄製會話已完成,{0}秒",
15342 "xloc": [
15319 - "default.handlebars->29->1572"
15343 + "default.handlebars->29->1575"
15344 ]
15345 },
15346 {
@@ -15336,7 +15360,7 @@
15360 "zh-chs": "芬兰",
15361 "zh-cht": "芬蘭",
15362 "xloc": [
15339 - "default.handlebars->29->1096"
15363 + "default.handlebars->29->1099"
15364 ]
15365 },
15366 {
@@ -15490,8 +15514,8 @@
15514 "zh-chs": "下次登录时强制重置密码。",
15515 "zh-cht": "下次登入時強制重置密碼。",
15516 "xloc": [
15493 - "default.handlebars->29->1769",
15494 - "default.handlebars->29->1958"
15517 + "default.handlebars->29->1774",
15518 + "default.handlebars->29->1963"
15519 ]
15520 },
15521 {
@@ -15574,7 +15598,7 @@
15598 "zh-chs": "格式化",
15599 "zh-cht": "格式化",
15600 "xloc": [
15577 - "default.handlebars->29->1677"
15601 + "default.handlebars->29->1682"
15602 ]
15603 },
15604 {
@@ -15615,8 +15639,8 @@
15639 "zh-chs": "自由",
15640 "zh-cht": "自由",
15641 "xloc": [
15618 - "default.handlebars->29->2033",
15619 - "default.handlebars->29->2035"
15642 + "default.handlebars->29->2040",
15643 + "default.handlebars->29->2042"
15644 ]
15645 },
15646 {
@@ -15657,7 +15681,7 @@
15681 "zh-chs": "法文(比利时)",
15682 "zh-cht": "法語(比利時)",
15683 "xloc": [
15660 - "default.handlebars->29->1098"
15684 + "default.handlebars->29->1101"
15685 ]
15686 },
15687 {
@@ -15677,7 +15701,7 @@
15701 "zh-chs": "法文(加拿大)",
15702 "zh-cht": "法語(加拿大)",
15703 "xloc": [
15680 - "default.handlebars->29->1099"
15704 + "default.handlebars->29->1102"
15705 ]
15706 },
15707 {
@@ -15697,7 +15721,7 @@
15721 "zh-chs": "法文(法国)",
15722 "zh-cht": "法語(法國)",
15723 "xloc": [
15700 - "default.handlebars->29->1100"
15724 + "default.handlebars->29->1103"
15725 ]
15726 },
15727 {
@@ -15717,7 +15741,7 @@
15741 "zh-chs": "法文(卢森堡)",
15742 "zh-cht": "法語(盧森堡)",
15743 "xloc": [
15720 - "default.handlebars->29->1101"
15744 + "default.handlebars->29->1104"
15745 ]
15746 },
15747 {
@@ -15737,7 +15761,7 @@
15761 "zh-chs": "法文(摩纳哥)",
15762 "zh-cht": "法語(摩納哥)",
15763 "xloc": [
15740 - "default.handlebars->29->1102"
15764 + "default.handlebars->29->1105"
15765 ]
15766 },
15767 {
@@ -15757,7 +15781,7 @@
15781 "zh-chs": "法文(标准)",
15782 "zh-cht": "法語(標準)",
15783 "xloc": [
15760 - "default.handlebars->29->1097"
15784 + "default.handlebars->29->1100"
15785 ]
15786 },
15787 {
@@ -15777,7 +15801,7 @@
15801 "zh-chs": "法文(瑞士)",
15802 "zh-cht": "法語(瑞士)",
15803 "xloc": [
15780 - "default.handlebars->29->1103"
15804 + "default.handlebars->29->1106"
15805 ]
15806 },
15807 {
@@ -15797,7 +15821,7 @@
15821 "zh-chs": "弗里斯兰文",
15822 "zh-cht": "弗里斯蘭語",
15823 "xloc": [
15800 - "default.handlebars->29->1104"
15824 + "default.handlebars->29->1107"
15825 ]
15826 },
15827 {
@@ -15817,7 +15841,7 @@
15841 "zh-chs": "弗留利",
15842 "zh-cht": "弗留利",
15843 "xloc": [
15820 - "default.handlebars->29->1105"
15844 + "default.handlebars->29->1108"
15845 ]
15846 },
15847 {
@@ -15841,9 +15865,9 @@
15865 "default-mobile.handlebars->9->415",
15866 "default-mobile.handlebars->9->424",
15867 "default-mobile.handlebars->9->444",
15844 - "default.handlebars->29->1279",
15845 - "default.handlebars->29->1422",
15846 - "default.handlebars->29->1781"
15868 + "default.handlebars->29->1282",
15869 + "default.handlebars->29->1425",
15870 + "default.handlebars->29->1786"
15871 ]
15872 },
15873 {
@@ -15863,7 +15887,7 @@
15887 "zh-chs": "完整管理员(保留所有权利)",
15888 "zh-cht": "完整管理員(保留所有權利)",
15889 "xloc": [
15866 - "default.handlebars->29->1458"
15890 + "default.handlebars->29->1461"
15891 ]
15892 },
15893 {
@@ -15900,7 +15924,7 @@
15924 "zh-chs": "完整设备权限",
15925 "zh-cht": "完整裝置權限",
15926 "xloc": [
15903 - "default.handlebars->29->661"
15927 + "default.handlebars->29->664"
15928 ]
15929 },
15930 {
@@ -15920,7 +15944,7 @@
15944 "zh-chs": "全部权限",
15945 "zh-cht": "全部權限",
15946 "xloc": [
15923 - "default.handlebars->29->679"
15947 + "default.handlebars->29->682"
15948 ]
15949 },
15950 {
@@ -15962,15 +15986,15 @@
15986 "zh-chs": "完整管理员",
15987 "zh-cht": "完整管理員",
15988 "xloc": [
15965 - "default.handlebars->29->1879"
15989 + "default.handlebars->29->1884"
15990 ]
15991 },
15992 {
15993 "en": "Fully Automatic",
15994 "nl": "Vol automatisch",
15995 "xloc": [
15972 - "default.handlebars->29->1342",
15973 - "default.handlebars->29->1365"
15996 + "default.handlebars->29->1345",
15997 + "default.handlebars->29->1368"
15998 ]
15999 },
16000 {
@@ -15991,7 +16015,7 @@
16015 "zh-cht": "GPU",
16016 "xloc": [
16017 "default-mobile.handlebars->9->391",
15994 - "default.handlebars->29->977"
16018 + "default.handlebars->29->980"
16019 ]
16020 },
16021 {
@@ -16011,7 +16035,7 @@
16035 "zh-chs": "盖尔文(爱尔兰)",
16036 "zh-cht": "蓋爾語(愛爾蘭)",
16037 "xloc": [
16014 - "default.handlebars->29->1107"
16038 + "default.handlebars->29->1110"
16039 ]
16040 },
16041 {
@@ -16031,7 +16055,7 @@
16055 "zh-chs": "盖尔文(苏格兰文)",
16056 "zh-cht": "蓋爾語(蘇格蘭語)",
16057 "xloc": [
16034 - "default.handlebars->29->1106"
16058 + "default.handlebars->29->1109"
16059 ]
16060 },
16061 {
@@ -16051,7 +16075,7 @@
16075 "zh-chs": "加拉契文",
16076 "zh-cht": "加拉契語",
16077 "xloc": [
16054 - "default.handlebars->29->1108"
16078 + "default.handlebars->29->1111"
16079 ]
16080 },
16081 {
@@ -16177,7 +16201,7 @@
16201 "zh-chs": "格鲁吉亚文",
16202 "zh-cht": "格魯吉亞文",
16203 "xloc": [
16180 - "default.handlebars->29->1109"
16204 + "default.handlebars->29->1112"
16205 ]
16206 },
16207 {
@@ -16197,7 +16221,7 @@
16221 "zh-chs": "德文(奥地利)",
16222 "zh-cht": "德語(奧地利)",
16223 "xloc": [
16200 - "default.handlebars->29->1111"
16224 + "default.handlebars->29->1114"
16225 ]
16226 },
16227 {
@@ -16217,7 +16241,7 @@
16241 "zh-chs": "德文(德国)",
16242 "zh-cht": "德文(德國)",
16243 "xloc": [
16220 - "default.handlebars->29->1112"
16244 + "default.handlebars->29->1115"
16245 ]
16246 },
16247 {
@@ -16237,7 +16261,7 @@
16261 "zh-chs": "德文(列支敦士登)",
16262 "zh-cht": "德文(列支敦士登)",
16263 "xloc": [
16240 - "default.handlebars->29->1113"
16264 + "default.handlebars->29->1116"
16265 ]
16266 },
16267 {
@@ -16257,7 +16281,7 @@
16281 "zh-chs": "德文(卢森堡)",
16282 "zh-cht": "德語(盧森堡)",
16283 "xloc": [
16260 - "default.handlebars->29->1114"
16284 + "default.handlebars->29->1117"
16285 ]
16286 },
16287 {
@@ -16277,7 +16301,7 @@
16301 "zh-chs": "德文(标准)",
16302 "zh-cht": "德語(標準)",
16303 "xloc": [
16280 - "default.handlebars->29->1110"
16304 + "default.handlebars->29->1113"
16305 ]
16306 },
16307 {
@@ -16297,7 +16321,7 @@
16321 "zh-chs": "德文(瑞士)",
16322 "zh-cht": "德文(瑞士)",
16323 "xloc": [
16300 - "default.handlebars->29->1115"
16324 + "default.handlebars->29->1118"
16325 ]
16326 },
16327 {
@@ -16358,7 +16382,7 @@
16382 "zh-chs": "正在获取剪贴板内容,{0}个字节",
16383 "zh-cht": "正在獲取剪貼板內容,{0}個字節",
16384 "xloc": [
16361 - "default.handlebars->29->1586"
16385 + "default.handlebars->29->1589"
16386 ]
16387 },
16388 {
@@ -16420,7 +16444,7 @@
16444 "zh-chs": "好",
16445 "zh-cht": "好",
16446 "xloc": [
16423 - "default.handlebars->29->1275"
16447 + "default.handlebars->29->1278"
16448 ]
16449 },
16450 {
@@ -16465,8 +16489,8 @@
16489 "zh-chs": "Google云端硬盘备份",
16490 "zh-cht": "Google雲端硬盤備份",
16491 "xloc": [
16468 - "default.handlebars->29->1286",
16492 "default.handlebars->29->1289",
16493 + "default.handlebars->29->1292",
16494 "default.handlebars->29->204"
16495 ]
16496 },
@@ -16487,7 +16511,7 @@
16511 "zh-chs": "Google云端硬盘控制台",
16512 "zh-cht": "Google雲端硬盤控制台",
16513 "xloc": [
16490 - "default.handlebars->29->1283"
16514 + "default.handlebars->29->1286"
16515 ]
16516 },
16517 {
@@ -16527,7 +16551,7 @@
16551 "zh-chs": "Google云端硬盘备份当前处于活动状态。",
16552 "zh-cht": "Google雲端硬盤備份當前處於活動狀態。",
16553 "xloc": [
16530 - "default.handlebars->29->1287"
16554 + "default.handlebars->29->1290"
16555 ]
16556 },
16557 {
@@ -16547,7 +16571,7 @@
16571 "zh-chs": "希腊文",
16572 "zh-cht": "希臘文",
16573 "xloc": [
16550 - "default.handlebars->29->1116"
16574 + "default.handlebars->29->1119"
16575 ]
16576 },
16577 {
@@ -16589,8 +16613,8 @@
16613 "zh-chs": "集体指令",
16614 "zh-cht": "集體指令",
16615 "xloc": [
16592 - "default.handlebars->29->1725",
16593 - "default.handlebars->29->1804",
16616 + "default.handlebars->29->1730",
16617 + "default.handlebars->29->1809",
16618 "default.handlebars->29->448",
16619 "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar",
16620 "default.handlebars->container->column_l->p4->3->1->0->3->3",
@@ -16614,7 +16638,7 @@
16638 "zh-chs": "通过...分组",
16639 "zh-cht": "通過...分群",
16640 "xloc": [
16617 - "default.handlebars->29->1673"
16641 + "default.handlebars->29->1678"
16642 ]
16643 },
16644 {
@@ -16634,7 +16658,7 @@
16658 "zh-chs": "组标识符",
16659 "zh-cht": "群標識符",
16660 "xloc": [
16637 - "default.handlebars->29->1821"
16661 + "default.handlebars->29->1826"
16662 ]
16663 },
16664 {
@@ -16654,7 +16678,7 @@
16678 "zh-chs": "群组成员",
16679 "zh-cht": "群組成員",
16680 "xloc": [
16657 - "default.handlebars->29->1842"
16681 + "default.handlebars->29->1847"
16682 ]
16683 },
16684 {
@@ -16674,7 +16698,7 @@
16698 "zh-chs": "用户{0}的群组权限。",
16699 "zh-cht": "用戶{0}的群組權限。",
16700 "xloc": [
16677 - "default.handlebars->29->1421"
16701 + "default.handlebars->29->1424"
16702 ]
16703 },
16704 {
@@ -16694,7 +16718,7 @@
16718 "zh-chs": "{0}的群组权限。",
16719 "zh-cht": "{0}的群組權限。",
16720 "xloc": [
16697 - "default.handlebars->29->1420"
16721 + "default.handlebars->29->1423"
16722 ]
16723 },
16724 {
@@ -16762,7 +16786,7 @@
16786 "zh-cht": "來賓姓名",
16787 "xloc": [
16788 "default.handlebars->29->187",
16765 - "default.handlebars->29->709"
16789 + "default.handlebars->29->712"
16790 ]
16791 },
16792 {
@@ -16782,7 +16806,7 @@
16806 "zh-chs": "古久拉提",
16807 "zh-cht": "古久拉提",
16808 "xloc": [
16785 - "default.handlebars->29->1117"
16809 + "default.handlebars->29->1120"
16810 ]
16811 },
16812 {
@@ -16825,7 +16849,7 @@
16849 "zh-chs": "海地文",
16850 "zh-cht": "海地文",
16851 "xloc": [
16828 - "default.handlebars->29->1118"
16852 + "default.handlebars->29->1121"
16853 ]
16854 },
16855 {
@@ -16865,7 +16889,7 @@
16889 "zh-chs": "强行断开代理",
16890 "zh-cht": "強行斷開代理",
16891 "xloc": [
16868 - "default.handlebars->29->1006"
16892 + "default.handlebars->29->1009"
16893 ]
16894 },
16895 {
@@ -16885,7 +16909,7 @@
16909 "zh-chs": "堆总数",
16910 "zh-cht": "堆總數",
16911 "xloc": [
16888 - "default.handlebars->29->2077"
16912 + "default.handlebars->29->2084"
16913 ]
16914 },
16915 {
@@ -16905,7 +16929,7 @@
16929 "zh-chs": "堆使用",
16930 "zh-cht": "堆使用",
16931 "xloc": [
16908 - "default.handlebars->29->2076"
16932 + "default.handlebars->29->2083"
16933 ]
16934 },
16935 {
@@ -16925,7 +16949,7 @@
16949 "zh-chs": "希伯来文",
16950 "zh-cht": "希伯來文",
16951 "xloc": [
16928 - "default.handlebars->29->1119"
16952 + "default.handlebars->29->1122"
16953 ]
16954 },
16955 {
@@ -16960,7 +16984,7 @@
16984 "en": "Help Requested, user: {0}, details: {1}",
16985 "nl": "Hulp verzoek van, user: {0}, details: {1}",
16986 "xloc": [
16963 - "default.handlebars->29->1663"
16987 + "default.handlebars->29->1666"
16988 ]
16989 },
16990 {
@@ -16995,7 +17019,7 @@
17019 "zh-chs": "帮助翻译MeshCentral",
17020 "zh-cht": "幫助翻譯MeshCentral",
17021 "xloc": [
16998 - "default.handlebars->29->1234"
17022 + "default.handlebars->29->1237"
17023 ]
17024 },
17025 {
@@ -17099,7 +17123,7 @@
17123 "zh-chs": "印地文",
17124 "zh-cht": "印地文",
17125 "xloc": [
17102 - "default.handlebars->29->1120"
17126 + "default.handlebars->29->1123"
17127 ]
17128 },
17129 {
@@ -17137,7 +17161,7 @@
17161 "zh-cht": "保存1個項目進行複製",
17162 "xloc": [
17163 "default-mobile.handlebars->9->327",
17140 - "default.handlebars->29->896"
17164 + "default.handlebars->29->899"
17165 ]
17166 },
17167 {
@@ -17158,7 +17182,7 @@
17182 "zh-cht": "保存1個項目進行移動",
17183 "xloc": [
17184 "default-mobile.handlebars->9->331",
17161 - "default.handlebars->29->900"
17185 + "default.handlebars->29->903"
17186 ]
17187 },
17188 {
@@ -17179,7 +17203,7 @@
17203 "zh-cht": "保留{0}個項目進行複製",
17204 "xloc": [
17205 "default-mobile.handlebars->9->325",
17182 - "default.handlebars->29->894"
17206 + "default.handlebars->29->897"
17207 ]
17208 },
17209 {
@@ -17200,7 +17224,7 @@
17224 "zh-cht": "保存{0}個項目以進行移動",
17225 "xloc": [
17226 "default-mobile.handlebars->9->329",
17203 - "default.handlebars->29->898"
17227 + "default.handlebars->29->901"
17228 ]
17229 },
17230 {
@@ -17221,7 +17245,7 @@
17245 "zh-cht": "保存{0}項目{1}給{2}",
17246 "xloc": [
17247 "default-mobile.handlebars->9->129",
17224 - "default.handlebars->29->1559"
17248 + "default.handlebars->29->1562"
17249 ]
17250 },
17251 {
@@ -17247,7 +17271,7 @@
17271 "default-mobile.handlebars->9->291",
17272 "default.handlebars->29->288",
17273 "default.handlebars->29->545",
17250 - "default.handlebars->29->807"
17274 + "default.handlebars->29->810"
17275 ]
17276 },
17277 {
@@ -17267,7 +17291,7 @@
17291 "zh-chs": "主机名同步",
17292 "zh-cht": "主機名同步",
17293 "xloc": [
17270 - "default.handlebars->29->1314"
17294 + "default.handlebars->29->1317"
17295 ]
17296 },
17297 {
@@ -17287,7 +17311,7 @@
17311 "zh-chs": "匈牙利文",
17312 "zh-cht": "匈牙利文",
17313 "xloc": [
17290 - "default.handlebars->29->1121"
17314 + "default.handlebars->29->1124"
17315 ]
17316 },
17317 {
@@ -17352,9 +17376,9 @@
17376 "xloc": [
17377 "default-mobile.handlebars->9->360",
17378 "default-mobile.handlebars->9->364",
17355 - "default.handlebars->29->936",
17356 - "default.handlebars->29->946",
17357 - "default.handlebars->29->950"
17379 + "default.handlebars->29->939",
17380 + "default.handlebars->29->949",
17381 + "default.handlebars->29->953"
17382 ]
17383 },
17384 {
@@ -17376,9 +17400,9 @@
17400 "xloc": [
17401 "default-mobile.handlebars->9->358",
17402 "default-mobile.handlebars->9->362",
17379 - "default.handlebars->29->934",
17380 - "default.handlebars->29->944",
17381 - "default.handlebars->29->948"
17403 + "default.handlebars->29->937",
17404 + "default.handlebars->29->947",
17405 + "default.handlebars->29->951"
17406 ]
17407 },
17408 {
@@ -17400,10 +17424,10 @@
17424 "xloc": [
17425 "default-mobile.handlebars->9->357",
17426 "default-mobile.handlebars->9->359",
17403 - "default.handlebars->29->933",
17404 - "default.handlebars->29->935",
17405 - "default.handlebars->29->943",
17406 - "default.handlebars->29->945"
17427 + "default.handlebars->29->936",
17428 + "default.handlebars->29->938",
17429 + "default.handlebars->29->946",
17430 + "default.handlebars->29->948"
17431 ]
17432 },
17433 {
@@ -17488,8 +17512,8 @@
17512 "xloc": [
17513 "default-mobile.handlebars->9->361",
17514 "default-mobile.handlebars->9->363",
17491 - "default.handlebars->29->947",
17492 - "default.handlebars->29->949"
17515 + "default.handlebars->29->950",
17516 + "default.handlebars->29->952"
17517 ]
17518 },
17519 {
@@ -17569,7 +17593,7 @@
17593 "zh-chs": "冰岛文",
17594 "zh-cht": "冰島文",
17595 "xloc": [
17572 - "default.handlebars->29->1122"
17596 + "default.handlebars->29->1125"
17597 ]
17598 },
17599 {
@@ -17590,7 +17614,7 @@
17614 "zh-cht": "圖符選擇",
17615 "xloc": [
17616 "default-mobile.handlebars->9->289",
17593 - "default.handlebars->29->805"
17617 + "default.handlebars->29->808"
17618 ]
17619 },
17620 {
@@ -17611,14 +17635,14 @@
17635 "zh-cht": "識別符",
17636 "xloc": [
17637 "default-mobile.handlebars->9->389",
17614 - "default.handlebars->29->975"
17638 + "default.handlebars->29->978"
17639 ]
17640 },
17641 {
17642 "en": "If in CCM, reactivate Intel&reg; AMT",
17643 "nl": "Indien in CCM, heractiveer Intel&reg; AMT",
17644 "xloc": [
17621 - "default.handlebars->29->1375"
17645 + "default.handlebars->29->1378"
17646 ]
17647 },
17648 {
@@ -17766,7 +17790,7 @@
17790 "zh-chs": "印度尼西亚文",
17791 "zh-cht": "印度尼西亞文",
17792 "xloc": [
17769 - "default.handlebars->29->1123"
17793 + "default.handlebars->29->1126"
17794 ]
17795 },
17796 {
@@ -17939,8 +17963,8 @@
17963 "zh-chs": "安装类型",
17964 "zh-cht": "安裝方式",
17965 "xloc": [
17942 - "default.handlebars->29->1491",
17943 - "default.handlebars->29->1498",
17966 + "default.handlebars->29->1494",
17967 + "default.handlebars->29->1501",
17968 "default.handlebars->29->334",
17969 "default.handlebars->29->348",
17970 "default.handlebars->29->362"
@@ -17963,7 +17987,7 @@
17987 "zh-chs": "英特尔(F10 = ESC + [OM)",
17988 "zh-cht": "Intel(F10 = ESC + [OM)",
17989 "xloc": [
17966 - "default.handlebars->29->862",
17990 + "default.handlebars->29->865",
17991 "default.handlebars->container->column_l->p12->termTable->1->1->6->1->1->terminalSettingsButtons"
17992 ]
17993 },
@@ -17984,7 +18008,7 @@
18008 "zh-chs": "英特尔AMT",
18009 "zh-cht": "英特爾AMT",
18010 "xloc": [
17987 - "default.handlebars->29->2073"
18011 + "default.handlebars->29->2080"
18012 ]
18013 },
18014 {
@@ -18004,7 +18028,7 @@
18028 "zh-chs": "英特尔ASCII",
18029 "zh-cht": "Intel ASCII",
18030 "xloc": [
18007 - "default.handlebars->29->861"
18031 + "default.handlebars->29->864"
18032 ]
18033 },
18034 {
@@ -18027,11 +18051,11 @@
18051 "default-mobile.handlebars->9->205",
18052 "default-mobile.handlebars->9->247",
18053 "default-mobile.handlebars->9->252",
18030 - "default.handlebars->29->1332",
18031 - "default.handlebars->29->1343",
18032 - "default.handlebars->29->1510",
18033 - "default.handlebars->29->1518",
18034 - "default.handlebars->29->2095",
18054 + "default.handlebars->29->1335",
18055 + "default.handlebars->29->1346",
18056 + "default.handlebars->29->1513",
18057 + "default.handlebars->29->1521",
18058 + "default.handlebars->29->2102",
18059 "default.handlebars->29->515",
18060 "default.handlebars->29->573",
18061 "default.handlebars->29->601"
@@ -18187,7 +18211,7 @@
18211 "zh-chs": "英特尔&reg;AMT政策",
18212 "zh-cht": "Intel&reg; AMT政策",
18213 "xloc": [
18190 - "default.handlebars->29->1366"
18214 + "default.handlebars->29->1369"
18215 ]
18216 },
18217 {
@@ -18207,7 +18231,7 @@
18231 "zh-chs": "英特尔&reg;AMT重定向",
18232 "zh-cht": "Intel&reg; AMT重定向",
18233 "xloc": [
18210 - "default.handlebars->29->2011",
18234 + "default.handlebars->29->2018",
18235 "player.handlebars->3->14"
18236 ]
18237 },
@@ -18248,7 +18272,7 @@
18272 "zh-chs": "英特尔&reg;AMT WSMAN",
18273 "zh-cht": "Intle&reg; AMT WSMAN",
18274 "xloc": [
18251 - "default.handlebars->29->2010",
18275 + "default.handlebars->29->2017",
18276 "player.handlebars->3->13"
18277 ]
18278 },
@@ -18308,8 +18332,8 @@
18332 "zh-chs": "英特尔&reg;AMT桌面和串行事件。",
18333 "zh-cht": "Intel&reg; AMT桌面和串行事件。",
18334 "xloc": [
18311 - "default.handlebars->29->1240",
18312 - "default.handlebars->29->1506"
18335 + "default.handlebars->29->1243",
18336 + "default.handlebars->29->1509"
18337 ]
18338 },
18339 {
@@ -18495,8 +18519,8 @@
18519 "zh-cht": "僅限Intel&reg; AMT,無代理",
18520 "xloc": [
18521 "default-mobile.handlebars->9->406",
18498 - "default.handlebars->29->1269",
18499 - "default.handlebars->29->1304"
18522 + "default.handlebars->29->1272",
18523 + "default.handlebars->29->1307"
18524 ]
18525 },
18526 {
@@ -18561,7 +18585,7 @@
18585 "zh-cht": "Intel &reg; Active Management Technology(Intel&reg; AMT)",
18586 "xloc": [
18587 "default-mobile.handlebars->9->381",
18564 - "default.handlebars->29->967"
18588 + "default.handlebars->29->970"
18589 ]
18590 },
18591 {
@@ -18766,7 +18790,7 @@
18790 "zh-chs": "互动",
18791 "zh-cht": "互動",
18792 "xloc": [
18769 - "default.handlebars->29->842"
18793 + "default.handlebars->29->845"
18794 ]
18795 },
18796 {
@@ -18786,8 +18810,8 @@
18810 "zh-chs": "仅限互动",
18811 "zh-cht": "僅限互動",
18812 "xloc": [
18789 - "default.handlebars->29->1494",
18790 - "default.handlebars->29->1501",
18813 + "default.handlebars->29->1497",
18814 + "default.handlebars->29->1504",
18815 "default.handlebars->29->337",
18816 "default.handlebars->29->351",
18817 "default.handlebars->29->365"
@@ -18830,7 +18854,7 @@
18854 "zh-chs": "因纽特文",
18855 "zh-cht": "因紐特文",
18856 "xloc": [
18833 - "default.handlebars->29->1124"
18857 + "default.handlebars->29->1127"
18858 ]
18859 },
18860 {
@@ -18860,7 +18884,7 @@
18884 "zh-chs": "无效的设备组类型",
18885 "zh-cht": "無效的裝置群類型",
18886 "xloc": [
18863 - "default.handlebars->29->2047"
18887 + "default.handlebars->29->2054"
18888 ]
18889 },
18890 {
@@ -18880,7 +18904,7 @@
18904 "zh-chs": "无效的JSON",
18905 "zh-cht": "無效的JSON",
18906 "xloc": [
18883 - "default.handlebars->29->2041"
18907 + "default.handlebars->29->2048"
18908 ]
18909 },
18910 {
@@ -18900,8 +18924,8 @@
18924 "zh-chs": "无效的JSON档案格式。",
18925 "zh-cht": "無效的JSON檔案格式。",
18926 "xloc": [
18903 - "default.handlebars->29->1743",
18904 - "default.handlebars->29->1745"
18927 + "default.handlebars->29->1748",
18928 + "default.handlebars->29->1750"
18929 ]
18930 },
18931 {
@@ -18921,7 +18945,7 @@
18945 "zh-chs": "无效的JSON档案:{0}。",
18946 "zh-cht": "無效的JSON檔案:{0}。",
18947 "xloc": [
18924 - "default.handlebars->29->1741"
18948 + "default.handlebars->29->1746"
18949 ]
18950 },
18951 {
@@ -18941,7 +18965,7 @@
18965 "zh-chs": "无效的PKCS签名",
18966 "zh-cht": "無效的PKCS簽名",
18967 "xloc": [
18944 - "default.handlebars->29->2039"
18968 + "default.handlebars->29->2046"
18969 ]
18970 },
18971 {
@@ -18961,7 +18985,7 @@
18985 "zh-chs": "無效的RSA密碼",
18986 "zh-cht": "無效的RSA密碼",
18987 "xloc": [
18964 - "default.handlebars->29->2040"
18988 + "default.handlebars->29->2047"
18989 ]
18990 },
18991 {
@@ -19088,7 +19112,7 @@
19112 "zh-chs": "使电邮无效",
19113 "zh-cht": "使電郵無效",
19114 "xloc": [
19091 - "default.handlebars->29->1719"
19115 + "default.handlebars->29->1724"
19116 ]
19117 },
19118 {
@@ -19165,7 +19189,7 @@
19189 "zh-chs": "任何人都可以使用邀请代码通过以下公共连接将设备加入该设备组:",
19190 "zh-cht": "任何人都可以使用邀請代碼通過以下公共鏈結將裝置加入該裝置群:",
19191 "xloc": [
19168 - "default.handlebars->29->1496"
19192 + "default.handlebars->29->1499"
19193 ]
19194 },
19195 {
@@ -19205,7 +19229,7 @@
19229 "zh-chs": "邀请",
19230 "zh-cht": "邀請",
19231 "xloc": [
19208 - "default.handlebars->29->1353",
19232 + "default.handlebars->29->1356",
19233 "default.handlebars->29->285",
19234 "default.handlebars->29->353"
19235 ]
@@ -19227,11 +19251,11 @@
19251 "zh-chs": "邀请码",
19252 "zh-cht": "邀請碼",
19253 "xloc": [
19230 - "default.handlebars->29->1336",
19231 - "default.handlebars->29->1490",
19232 - "default.handlebars->29->1495",
19233 - "default.handlebars->29->1497",
19234 - "default.handlebars->29->1502"
19254 + "default.handlebars->29->1339",
19255 + "default.handlebars->29->1493",
19256 + "default.handlebars->29->1498",
19257 + "default.handlebars->29->1500",
19258 + "default.handlebars->29->1505"
19259 ]
19260 },
19261 {
@@ -19271,7 +19295,7 @@
19295 "zh-chs": "邀请某人在该设备组上安装网格代理。",
19296 "zh-cht": "邀請某人在該裝置群上安裝mesh agent。",
19297 "xloc": [
19274 - "default.handlebars->29->1352",
19298 + "default.handlebars->29->1355",
19299 "default.handlebars->29->284"
19300 ]
19301 },
@@ -19312,7 +19336,7 @@
19336 "zh-chs": "爱尔兰文",
19337 "zh-cht": "愛爾蘭文",
19338 "xloc": [
19315 - "default.handlebars->29->1125"
19339 + "default.handlebars->29->1128"
19340 ]
19341 },
19342 {
@@ -19332,7 +19356,7 @@
19356 "zh-chs": "意大利文(标准)",
19357 "zh-cht": "意大利文(標準)",
19358 "xloc": [
19335 - "default.handlebars->29->1126"
19359 + "default.handlebars->29->1129"
19360 ]
19361 },
19362 {
@@ -19352,7 +19376,7 @@
19376 "zh-chs": "意大利文(瑞士)",
19377 "zh-cht": "義大利文(瑞士)",
19378 "xloc": [
19355 - "default.handlebars->29->1127"
19379 + "default.handlebars->29->1130"
19380 ]
19381 },
19382 {
@@ -19372,7 +19396,7 @@
19396 "zh-chs": "JSON",
19397 "zh-cht": "JSON",
19398 "xloc": [
19375 - "default.handlebars->29->1679"
19399 + "default.handlebars->29->1684"
19400 ]
19401 },
19402 {
@@ -19392,8 +19416,8 @@
19416 "zh-chs": "JSON格式",
19417 "zh-cht": "JSON格式",
19418 "xloc": [
19395 - "default.handlebars->29->1684",
19396 - "default.handlebars->29->1749",
19419 + "default.handlebars->29->1689",
19420 + "default.handlebars->29->1754",
19421 "default.handlebars->29->476"
19422 ]
19423 },
@@ -19414,7 +19438,7 @@
19438 "zh-chs": "日文",
19439 "zh-cht": "日文",
19440 "xloc": [
19417 - "default.handlebars->29->1128"
19441 + "default.handlebars->29->1131"
19442 ]
19443 },
19444 {
@@ -19434,7 +19458,7 @@
19458 "zh-chs": "已加入桌面Multiplex会话",
19459 "zh-cht": "已加入桌面Multiplex會話",
19460 "xloc": [
19437 - "default.handlebars->29->1569"
19461 + "default.handlebars->29->1572"
19462 ]
19463 },
19464 {
@@ -19454,7 +19478,7 @@
19478 "zh-chs": "卡纳达文",
19479 "zh-cht": "卡納達文",
19480 "xloc": [
19457 - "default.handlebars->29->1129"
19481 + "default.handlebars->29->1132"
19482 ]
19483 },
19484 {
@@ -19474,7 +19498,7 @@
19498 "zh-chs": "克什米尔文",
19499 "zh-cht": "克什米爾文",
19500 "xloc": [
19477 - "default.handlebars->29->1130"
19501 + "default.handlebars->29->1133"
19502 ]
19503 },
19504 {
@@ -19494,14 +19518,14 @@
19518 "zh-chs": "哈萨克文",
19519 "zh-cht": "哈薩克文",
19520 "xloc": [
19497 - "default.handlebars->29->1131"
19521 + "default.handlebars->29->1134"
19522 ]
19523 },
19524 {
19525 "en": "Keep existing password",
19526 "nl": "Behoud huidige wachtwoord",
19527 "xloc": [
19504 - "default.handlebars->29->1367"
19528 + "default.handlebars->29->1370"
19529 ]
19530 },
19531 {
@@ -19521,7 +19545,7 @@
19545 "zh-chs": "内核驱动器",
19546 "zh-cht": "內核驅動器",
19547 "xloc": [
19524 - "default.handlebars->29->843"
19548 + "default.handlebars->29->846"
19549 ]
19550 },
19551 {
@@ -19541,8 +19565,8 @@
19565 "zh-chs": "键名",
19566 "zh-cht": "鍵名",
19567 "xloc": [
19544 - "default.handlebars->29->1022",
19545 - "default.handlebars->29->1025"
19568 + "default.handlebars->29->1025",
19569 + "default.handlebars->29->1028"
19570 ]
19571 },
19572 {
@@ -19602,7 +19626,7 @@
19626 "zh-chs": "高棉文",
19627 "zh-cht": "高棉文",
19628 "xloc": [
19605 - "default.handlebars->29->1132"
19629 + "default.handlebars->29->1135"
19630 ]
19631 },
19632 {
@@ -19622,7 +19646,7 @@
19646 "zh-chs": "杀死进程{0}",
19647 "zh-cht": "殺死進程{0}",
19648 "xloc": [
19625 - "default.handlebars->29->1584"
19649 + "default.handlebars->29->1587"
19650 ]
19651 },
19652 {
@@ -19642,7 +19666,7 @@
19666 "zh-chs": "吉尔吉斯",
19667 "zh-cht": "吉爾吉斯",
19668 "xloc": [
19645 - "default.handlebars->29->1133"
19669 + "default.handlebars->29->1136"
19670 ]
19671 },
19672 {
@@ -19662,7 +19686,7 @@
19686 "zh-chs": "克林贡",
19687 "zh-cht": "克林貢",
19688 "xloc": [
19665 - "default.handlebars->29->1134"
19689 + "default.handlebars->29->1137"
19690 ]
19691 },
19692 {
@@ -19683,7 +19707,7 @@
19707 "zh-cht": "已知的",
19708 "xloc": [
19709 "default-mobile.handlebars->9->380",
19686 - "default.handlebars->29->966"
19710 + "default.handlebars->29->969"
19711 ]
19712 },
19713 {
@@ -19703,7 +19727,7 @@
19727 "zh-chs": "韩文",
19728 "zh-cht": "韓文",
19729 "xloc": [
19706 - "default.handlebars->29->1135"
19730 + "default.handlebars->29->1138"
19731 ]
19732 },
19733 {
@@ -19723,7 +19747,7 @@
19747 "zh-chs": "韩文(朝鲜)",
19748 "zh-cht": "韓文(朝鮮)",
19749 "xloc": [
19726 - "default.handlebars->29->1136"
19750 + "default.handlebars->29->1139"
19751 ]
19752 },
19753 {
@@ -19743,7 +19767,7 @@
19767 "zh-chs": "韩文(韩国)",
19768 "zh-cht": "韓文(韓國)",
19769 "xloc": [
19746 - "default.handlebars->29->1137"
19770 + "default.handlebars->29->1140"
19771 ]

This file is too large to show in full.

views/default.handlebars
+70 -5
@@ -1795,6 +1795,7 @@
1795 powerTimelineReq = null;
1796 powerTimelineNode = null;
1797 powerTimelineUpdate = null;
1798 + deviceShares = null;
1799 deleteAllNotifications(); // Close and clear notifications if present
1800 hideContextMenu(); // Hide the context menu if present
1801 QV('verifyEmailId2', false);
@@ -2116,6 +2117,13 @@
2117 if (currentNode._id == message.nodeid) { mainUpdate(256); }
2118 break;
2119 }
2120 + case 'deviceShares': {
2121 + if (message.nodeid != deviceSharesReq) break;
2122 + deviceSharesNode = message.nodeid;
2123 + deviceShares = message.deviceShares;
2124 + if (currentNode._id == message.nodeid) { gotoDevice(currentNode._id, xxcurrentView, true); }
2125 + break;
2126 + }
2127 case 'getsysinfo': {
2128 if (message.nodeid != powerTimelineReq) break;
2129 if (message.noinfo === true) {
@@ -2495,7 +2503,7 @@
2503 }
2504 case 'event': {
2505 if (!message.event.nolog) {
2498 - if (currentNode && (message.event.nodeid == currentNode._id)) {
2506 + if (currentNode && (message.event.nodeid == currentNode._id) && (currentDeviceEvents != null)) {
2507 // If this event has a nodeid and we are looking at this node, update the log in real time.
2508 currentDeviceEvents.unshift(message.event);
2509 var eventLimit = parseInt(p16limitdropdown.value);
@@ -2520,6 +2528,13 @@
2528 if (message.event.noact) break; // Take no action on this event
2529
2530 switch (message.event.action) {
2531 + case 'deviceShareUpdate': {
2532 + if (message.event.nodeid != deviceSharesReq) break;
2533 + deviceSharesNode = message.event.nodeid;
2534 + deviceShares = message.event.deviceShares;
2535 + if (currentNode._id == deviceSharesNode) { gotoDevice(currentNode._id, xxcurrentView, true); }
2536 + break;
2537 + }
2538 case 'agentlog': {
2539 if (message.event.msgid == 98) {
2540 // This is a agent help request, popup a notification.
@@ -5525,6 +5540,11 @@
5540 var powerTimelineReq = null;
5541 var powerTimelineUpdate = null;
5542 var powerTimeline = null;
5543 +
5544 + var deviceSharesNode = null;
5545 + var deviceSharesReq = null;
5546 + var deviceShares = null;
5547 +
5548 function getCurrentNode() { return currentNode; };
5549 function gotoDevice(nodeid, panel, refresh, event) {
5550 // Remind the user to verify the email address
@@ -5881,6 +5901,12 @@
5901 QH('p17info', '');
5902 }
5903
5904 + // Request device sharing
5905 + if ((deviceSharesNode != currentNode._id) && (deviceSharesReq != currentNode._id)) {
5906 + deviceSharesReq = currentNode._id;
5907 + meshserver.send({ action: 'deviceShares', nodeid: currentNode._id });
5908 + }
5909 +
5910 // Reset the desktop tools
5911 QV('DeskTools', false);
5912 showDeskToolsProcesses();
@@ -5957,8 +5983,23 @@
5983 }
5984 if (count == 1) { x += '<tr><td><div style=padding:6px>&nbsp;<i>' + "No users with special device permissions" + '</i><div></div></div></td><td></td></tr>'; }
5985 x += '</tbody></table>';
5986 +
5987 + // Show device shares
5988 + if ((deviceShares != null) && (deviceSharesNode == currentNode._id) && (deviceShares.length > 0)) {
5989 + x += '<br /><table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:left;width:430px>' + "Active Device Sharing" + '</th><th scope=col style=text-align:left></th></tr>';
5990 + count = 1;
5991 + for (var i = 0; i < deviceShares.length; i++) {
5992 + var dshare = deviceShares[i];
5993 + var trash = '<a href="' + dshare.url + '" rel="noreferrer noopener" target=_blank title="' + "Device Sharing Link" + '" style=cursor:pointer><img src=images/link2.png border=0 height=10 width=10></a> <a href=# onclick=\'return p30removeDeviceSharing(event,"' + encodeURIComponentEx(currentNode._id) + '","' + encodeURIComponentEx(dshare.publicid) + '","' + encodeURIComponentEx(dshare.guestName) + '")\' title="' + "Remove device sharing" + '" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>';
5994 + var details = printFlexDateTime(new Date(dshare.startTime)) + ' to ' + printFlexDateTime(new Date(dshare.expireTime));
5995 + if (dshare.consent) { if ((dshare.consent & 8) != 0) { details += ', Prompt for consent'; } }
5996 + x += '<tr ' + (((++count % 2) == 0) ? 'style=background-color:#DDD' : '') + '><td style=width:30%><div class=m' + 2 + '></div><div>&nbsp;' + dshare.guestName + '<div></div></div></td><td style=width:70%><div style=float:right>' + trash + '</div><div>' + details + '</div></td></tr>';
5997 + }
5998 + x += '</tbody></table>';
5999 + }
6000 QH('p10html4', x);
6001
6002 +
6003 // Change the URL
6004 var urlviewmode = '';
6005 if (((features & 0x10000000) == 0) && (xxcurrentView >= 10) && (xxcurrentView <= 19) && (currentNode != null)) {
@@ -8415,7 +8456,12 @@
8456 msg = EscapeHtml(event.msg).split('(R)').join('&reg;');
8457 } else {
8458 msg = eventsMessageId[event.msgid];
8418 - if (event.msgArgs != null) { for (var i in event.msgArgs) { msg = msg.split('{' + i + '}').join(event.msgArgs[i]); } }
8459 + for (var i in event.msgArgs) {
8460 + var xx = event.msgArgs[i];
8461 + if ((typeof xx == 'string') && (xx.indexOf('DATETIME:') == 0)) { xx = printFlexDateTime(new Date(parseInt(xx.substring(9)))); }
8462 + msg = msg.split('{' + i + '}').join(xx);
8463 + }
8464 + //if (event.msgArgs != null) { for (var i in event.msgArgs) { msg = msg.split('{' + i + '}').join(event.msgArgs[i]); } }
8465 msg = EscapeHtml(msg).split('(R)').join('&reg;');
8466 }
8467 if (event.username) {
@@ -10828,7 +10874,9 @@
10874 97: "Removed phone number of user {0}",
10875 98: "Help Requested, user: {0}, details: {1}",
10876 99: "Running commands as user",
10831 - 100: "Running commands as user if possible"
10877 + 100: "Running commands as user if possible",
10878 + 101: "Added device share {0} from {1} to {2}",
10879 + 102: "Removed device share {0}"
10880 };
10881
10882 // Highlights the device being hovered
@@ -10861,7 +10909,13 @@
10909 msg = EscapeHtml(event.msg).split('(R)').join('&reg;');
10910 } else {
10911 msg = eventsMessageId[event.msgid];
10864 - if (event.msgArgs != null) { for (var i in event.msgArgs) { msg = msg.split('{' + i + '}').join(event.msgArgs[i]); } }
10912 + if (event.msgArgs != null) {
10913 + for (var i in event.msgArgs) {
10914 + var xx = event.msgArgs[i];
10915 + if ((typeof xx == 'string') && (xx.indexOf('DATETIME:') == 0)) { xx = printFlexDateTime(new Date(parseInt(xx.substring(9)))); }
10916 + msg = msg.split('{' + i + '}').join(xx);
10917 + }
10918 + }
10919 msg = EscapeHtml(msg).split('(R)').join('&reg;');
10920 }
10921 if (event.nodeid) {
@@ -12357,6 +12411,11 @@
12411 QH('p30html2', x);
12412 }
12413
12414 + function p30removeDeviceSharing(event, nodeid, publicid, guestname) {
12415 + if (xxdialogMode) return;
12416 + setDialogMode(2, "Remove Device Share", 3, function(b, tag) { meshserver.send({ action: 'removeDeviceShare', nodeid: tag[0], publicid: tag[1] }); }, format("Confirm removal of device share \"{0}\"?", decodeURIComponent(guestname)), [ decodeURIComponent(nodeid), decodeURIComponent(publicid) ]);
12417 + }
12418 +
12419 function p30removeNodeFromUser(event, nodeid) {
12420 if (xxdialogMode) return;
12421 var node = getNodeFromId(decodeURIComponent(nodeid));
@@ -12441,7 +12500,12 @@
12500 msg = EscapeHtml(event.msg).split('(R)').join('&reg;');
12501 } else {
12502 msg = eventsMessageId[event.msgid];
12444 - if (event.msgArgs != null) { for (var i in event.msgArgs) { msg = msg.split('{' + i + '}').join(event.msgArgs[i]); } }
12503 + for (var i in event.msgArgs) {
12504 + var xx = event.msgArgs[i];
12505 + if ((typeof xx == 'string') && (xx.indexOf('DATETIME:') == 0)) { xx = printFlexDateTime(new Date(parseInt(xx.substring(9)))); }
12506 + msg = msg.split('{' + i + '}').join(xx);
12507 + }
12508 + //if (event.msgArgs != null) { for (var i in event.msgArgs) { msg = msg.split('{' + i + '}').join(event.msgArgs[i]); } }
12509 msg = EscapeHtml(msg).split('(R)').join('&reg;');
12510 }
12511 if (event.nodeid) {
@@ -13700,6 +13764,7 @@
13764 function printDate(d) { return d.toLocaleDateString(args.locale); }
13765 function printTime(d) { return d.toLocaleTimeString(args.locale); }
13766 function printDateTime(d) { return d.toLocaleString(args.locale); }
13767 + function printFlexDateTime(d) { if (printDate(new Date()) == printDate(d)) { return printTime(d); } else { return printDateTime(d); } }
13768 function addDetailItem(title, value, state) { return '<table style=width:100%><td>' + nobreak(title) + '<td style=text-align:right>' + value + '</table>'; }
13769 function format(format) { var args = Array.prototype.slice.call(arguments, 1); return format.replace(/{(\d+)}/g, function (match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); };
13770 function addTextLink(subtext, text, link) { var i = text.toLowerCase().indexOf(subtext.toLowerCase()); if (i == -1) { return text; } return text.substring(0, i) + '<a href="' + link + '">' + subtext + '</a>' + text.substring(i + subtext.length); }
webserver.js
+22 -9
@@ -2922,17 +2922,30 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
2922
2923 // Check the inbound desktop sharing cookie
2924 var c = obj.parent.decodeCookie(req.query.c, obj.parent.invitationLinkEncryptionKey, 60); // 60 minute timeout
2925 - if ((c == null) || (c.a !== 5) || (typeof c.uid != 'string') || (typeof c.nid != 'string') || (typeof c.gn != 'string') || (typeof c.cf != 'number') || (typeof c.expire != 'number') || (c.expire <= Date.now())) { res.sendStatus(404); return; }
2925 + if ((c == null) || (c.a !== 5) || (typeof c.uid != 'string') || (typeof c.nid != 'string') || (typeof c.gn != 'string') || (typeof c.cf != 'number') || (typeof c.start != 'number') || (typeof c.expire != 'number') || (typeof c.pid != 'string') || (c.expire <= Date.now())) { res.sendStatus(404); return; }
2926
2927 - // Looks good, let's create the outbound session cookies.
2928 - // Consent flags are 1 = Notify, 8 = Prompt, 64 = Privacy Bar.
2929 - const authCookie = obj.parent.encodeCookie({ userid: c.uid, domainid: domain.id, nid: c.nid, ip: req.clientIp, gn: c.gn, cf: 65 | c.cf, r: 8, expire: c.expire }, obj.parent.loginCookieEncryptionKey);
2927 + // Check the start time
2928 + if ((c.start > Date.now()) || (c.start > c.expire)) { res.sendStatus(404); return; }
2929
2931 - // Lets respond by sending out the desktop viewer.
2932 - var httpsPort = ((obj.args.aliasport == null) ? obj.args.port : obj.args.aliasport); // Use HTTPS alias port is specified
2933 - parent.debug('web', 'handleDesktopRequest: Sending guest desktop page for \"' + c.uid + '\", guest \"' + c.gn + '\".');
2934 - res.set({ 'Cache-Control': 'no-store' });
2935 - render(req, res, getRenderPage('desktop', req, domain), getRenderArgs({ authCookie: authCookie, authRelayCookie: '', domainurl: encodeURIComponent(domain.url).replace(/'/g, '%27'), nodeid: c.nid, serverDnsName: obj.getWebServerName(domain), serverRedirPort: args.redirport, serverPublicPort: httpsPort, expire: c.expire }, req, domain));
2930 + // Check the public id
2931 + obj.db.GetAllTypeNodeFiltered([c.nid], domain.id, 'deviceshare', null, function (err, docs) {
2932 + if ((err != null) || (docs.length == 0)) { res.sendStatus(404); return; }
2933 +
2934 + // Search for the device share public identifier
2935 + var found = false;
2936 + for (var i = 0; i < docs.length; i++) { if (docs[i].publicid == c.pid) { found = true; } }
2937 + if (found == false) { res.sendStatus(404); return; }
2938 +
2939 + // Looks good, let's create the outbound session cookies.
2940 + // Consent flags are 1 = Notify, 8 = Prompt, 64 = Privacy Bar.
2941 + const authCookie = obj.parent.encodeCookie({ userid: c.uid, domainid: domain.id, nid: c.nid, ip: req.clientIp, gn: c.gn, cf: 65 | c.cf, r: 8, expire: c.expire, pid: c.pid }, obj.parent.loginCookieEncryptionKey);
2942 +
2943 + // Lets respond by sending out the desktop viewer.
2944 + var httpsPort = ((obj.args.aliasport == null) ? obj.args.port : obj.args.aliasport); // Use HTTPS alias port is specified
2945 + parent.debug('web', 'handleDesktopRequest: Sending guest desktop page for \"' + c.uid + '\", guest \"' + c.gn + '\".');
2946 + res.set({ 'Cache-Control': 'no-store' });
2947 + render(req, res, getRenderPage('desktop', req, domain), getRenderArgs({ authCookie: authCookie, authRelayCookie: '', domainurl: encodeURIComponent(domain.url).replace(/'/g, '%27'), nodeid: c.nid, serverDnsName: obj.getWebServerName(domain), serverRedirPort: args.redirport, serverPublicPort: httpsPort, expire: c.expire }, req, domain));
2948 + });
2949 }
2950
2951 // Handle domain redirection