diff --git a/MeshCentralServer.njsproj b/MeshCentralServer.njsproj
index 0f0a2e52..f458c404 100644
--- a/MeshCentralServer.njsproj
+++ b/MeshCentralServer.njsproj
@@ -198,6 +198,7 @@
+
diff --git a/apprelays.js b/apprelays.js
index 8c75eb9f..3a8d561b 100644
--- a/apprelays.js
+++ b/apprelays.js
@@ -152,7 +152,7 @@ module.exports.CreateMstscRelay = function (parent, db, ws, req, args, domain) {
obj.wsClient._socket.pause();
try {
obj.relaySocket.write(data, function () {
- try { obj.wsClient._socket.resume(); } catch (ex) { console.log(ex); }
+ if (obj.wsClient && obj.wsClient._socket) { try { obj.wsClient._socket.resume(); } catch (ex) { console.log(ex); } }
});
} catch (ex) { console.log(ex); obj.close(); }
}
@@ -201,6 +201,10 @@ module.exports.CreateMstscRelay = function (parent, db, ws, req, args, domain) {
try { ws.send(bitmap.data); } catch (ex) { } // Send the bitmap data as binary
delete bitmap.data;
send(['rdp-bitmap', bitmap]); // Send the bitmap metadata seperately, without bitmap data.
+ }).on('clipboard', function (content) {
+ // Clipboard data changed
+ console.log('RDP clipboard recv', content);
+ send(['rdp-clipboard', content]);
}).on('close', function () {
send(['rdp-close']);
}).on('error', function (err) {
@@ -317,6 +321,7 @@ module.exports.CreateMstscRelay = function (parent, db, ws, req, args, domain) {
}
case 'mouse': { if (rdpClient && (obj.viewonly != true)) { rdpClient.sendPointerEvent(msg[1], msg[2], msg[3], msg[4]); } break; }
case 'wheel': { if (rdpClient && (obj.viewonly != true)) { rdpClient.sendWheelEvent(msg[1], msg[2], msg[3], msg[4]); } break; }
+ case 'clipboard': { rdpClient.setClipboardData(msg[1]); break; }
case 'scancode': {
if (obj.limitedinput == true) { // Limit keyboard input
var ok = false, k = msg[1];
diff --git a/package.json b/package.json
index 057ff195..5566055f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "meshcentral",
- "version": "1.0.21",
+ "version": "1.0.22",
"keywords": [
"Remote Device Management",
"Remote Device Monitoring",
diff --git a/public/scripts/agent-rdp-0.0.1.js b/public/scripts/agent-rdp-0.0.1.js
index 698ee7e0..436d9aa8 100644
--- a/public/scripts/agent-rdp-0.0.1.js
+++ b/public/scripts/agent-rdp-0.0.1.js
@@ -83,6 +83,10 @@ var CreateRDPDesktop = function (canvasid) {
obj.Stop();
break;
}
+ case 'rdp-clipboard': {
+ console.log('clipboard', msg[1]);
+ break;
+ }
case 'ping': { obj.socket.send('["pong"]'); break; }
case 'pong': { break; }
}
@@ -99,7 +103,15 @@ var CreateRDPDesktop = function (canvasid) {
obj.Canvas.fillRect(0, 0, obj.ScreenWidth, obj.ScreenHeight);
if (obj.socket) { obj.socket.close(); }
}
-
+
+ obj.m.setClipboard = function (content) {
+ console.log('s1');
+ if (obj.socket) {
+ console.log('s2', content);
+ obj.socket.send(JSON.stringify(['clipboard', content]));
+ }
+ }
+
function changeState(newstate) {
if (obj.State == newstate) return;
obj.State = newstate;
@@ -153,14 +165,14 @@ var CreateRDPDesktop = function (canvasid) {
}
obj.m.handleKeyUp = function (e) {
if (!obj.socket || (obj.State != 3)) return;
- console.log('handleKeyUp', Mstsc.scancode(e));
+ //console.log('handleKeyUp', Mstsc.scancode(e));
obj.socket.send(JSON.stringify(['scancode', Mstsc.scancode(e), false]));
e.preventDefault();
return false;
}
obj.m.handleKeyDown = function (e) {
if (!obj.socket || (obj.State != 3)) return;
- console.log('handleKeyDown', Mstsc.scancode(e));
+ //console.log('handleKeyDown', Mstsc.scancode(e));
obj.socket.send(JSON.stringify(['scancode', Mstsc.scancode(e), true]));
e.preventDefault();
return false;
diff --git a/rdp/protocol/pdu/cliprdr.js b/rdp/protocol/pdu/cliprdr.js
new file mode 100644
index 00000000..15e3b86f
--- /dev/null
+++ b/rdp/protocol/pdu/cliprdr.js
@@ -0,0 +1,327 @@
+const type = require('../../core').type;
+const EventEmitter = require('events').EventEmitter;
+const caps = require('./caps');
+const log = require('../../core').log;
+const data = require('./data');
+
+
+
+/**
+ * Cliprdr channel for all clipboard
+ * capabilities exchange
+ */
+class Cliprdr extends EventEmitter {
+
+ constructor(transport) {
+ super();
+ this.transport = transport;
+ // must be init via connect event
+ this.userId = 0;
+ this.serverCapabilities = [];
+ this.clientCapabilities = [];
+ }
+
+}
+
+
+/**
+ * Client side of Cliprdr channel automata
+ * @param transport
+ */
+class Client extends Cliprdr {
+
+ constructor(transport, fastPathTransport) {
+
+ super(transport, fastPathTransport);
+
+ this.transport.once('connect', (gccCore, userId, channelId) => {
+ this.connect(gccCore, userId, channelId);
+ }).on('close', () => {
+ this.emit('close');
+ }).on('error', (err) => {
+ this.emit('error', err);
+ });
+
+ this.content = '';
+
+ }
+
+ /**
+ * connect function
+ * @param gccCore {type.Component(clientCoreData)}
+ */
+ connect(gccCore, userId, channelId) {
+ this.gccCore = gccCore;
+ this.userId = userId;
+ this.channelId = channelId;
+ this.transport.once('cliprdr', (s) => {
+ this.recv(s);
+ });
+ }
+
+
+ send(message) {
+ this.transport.send('cliprdr', new type.Component([
+ // Channel PDU Header
+ new type.UInt32Le(message.size()),
+ // CHANNEL_FLAG_FIRST | CHANNEL_FLAG_LAST | CHANNEL_FLAG_SHOW_PROTOCOL
+ new type.UInt32Le(0x13),
+ message
+ ]));
+ };
+
+ recv(s) {
+ s.offset = 18;
+ const pdu = data.clipPDU().read(s), type = data.ClipPDUMsgType;
+
+ switch (pdu.obj.header.obj.msgType.value) {
+ case type.CB_MONITOR_READY:
+ this.recvMonitorReadyPDU(s);
+ break;
+ case type.CB_FORMAT_LIST:
+ this.recvFormatListPDU(s);
+ break;
+ case type.CB_FORMAT_LIST_RESPONSE:
+ this.recvFormatListResponsePDU(s);
+ break;
+ case type.CB_FORMAT_DATA_REQUEST:
+ this.recvFormatDataRequestPDU(s);
+ break;
+ case type.CB_FORMAT_DATA_RESPONSE:
+ this.recvFormatDataResponsePDU(s);
+ break;
+ case type.CB_TEMP_DIRECTORY:
+ break;
+ case type.CB_CLIP_CAPS:
+ this.recvClipboardCapsPDU(s);
+ break;
+ case type.CB_FILECONTENTS_REQUEST:
+ }
+
+ this.transport.once('cliprdr', (s) => {
+ this.recv(s);
+ });
+ }
+
+ /**
+ * Receive capabilities from server
+ * @param s {type.Stream}
+ */
+ recvClipboardCapsPDU(s) {
+ // Start at 18
+ s.offset = 18;
+ // const pdu = data.clipPDU().read(s);
+ // console.log('recvClipboardCapsPDU', s);
+ }
+
+
+ /**
+ * Receive monitor ready from server
+ * @param s {type.Stream}
+ */
+ recvMonitorReadyPDU(s) {
+ s.offset = 18;
+ // const pdu = data.clipPDU().read(s);
+ // console.log('recvMonitorReadyPDU', s);
+
+ this.sendClipboardCapsPDU();
+ // this.sendClientTemporaryDirectoryPDU();
+ this.sendFormatListPDU();
+ }
+
+
+ /**
+ * Send clipboard capabilities PDU
+ */
+ sendClipboardCapsPDU() {
+ this.send(new type.Component({
+ msgType: new type.UInt16Le(data.ClipPDUMsgType.CB_CLIP_CAPS),
+ msgFlags: new type.UInt16Le(0x00),
+ dataLen: new type.UInt32Le(0x10),
+ cCapabilitiesSets: new type.UInt16Le(0x01),
+ pad1: new type.UInt16Le(0x00),
+ capabilitySetType: new type.UInt16Le(0x01),
+ lengthCapability: new type.UInt16Le(0x0c),
+ version: new type.UInt32Le(0x02),
+ capabilityFlags: new type.UInt32Le(0x02)
+ }));
+ }
+
+
+ /**
+ * Send client temporary directory PDU
+ */
+ sendClientTemporaryDirectoryPDU(path = '') {
+ // TODO
+ this.send(new type.Component({
+ msgType: new type.UInt16Le(data.ClipPDUMsgType.CB_TEMP_DIRECTORY),
+ msgFlags: new type.UInt16Le(0x00),
+ dataLen: new type.UInt32Le(0x0208),
+ wszTempDir: new type.BinaryString(Buffer.from('D:\\Vectors' + Array(251).join('\x00'), 'ucs2'), { readLength : new type.CallableValue(520)})
+ }));
+ }
+
+
+ /**
+ * Send format list PDU
+ */
+ sendFormatListPDU() {
+ this.send(new type.Component({
+ msgType: new type.UInt16Le(data.ClipPDUMsgType.CB_FORMAT_LIST),
+ msgFlags: new type.UInt16Le(0x00),
+
+ dataLen: new type.UInt32Le(0x24),
+
+ formatId6: new type.UInt32Le(0xc004),
+ formatName6: new type.BinaryString(Buffer.from('Native\x00' , 'ucs2'), { readLength : new type.CallableValue(14)}),
+
+ formatId8: new type.UInt32Le(0x0d),
+ formatName8: new type.UInt16Le(0x00),
+
+ formatId9: new type.UInt32Le(0x10),
+ formatName9: new type.UInt16Le(0x00),
+
+ formatId0: new type.UInt32Le(0x01),
+ formatName0: new type.UInt16Le(0x00),
+
+ // dataLen: new type.UInt32Le(0xe0),
+
+ // formatId1: new type.UInt32Le(0xc08a),
+ // formatName1: new type.BinaryString(Buffer.from('Rich Text Format\x00' , 'ucs2'), { readLength : new type.CallableValue(34)}),
+
+ // formatId2: new type.UInt32Le(0xc145),
+ // formatName2: new type.BinaryString(Buffer.from('Rich Text Format Without Objects\x00' , 'ucs2'), { readLength : new type.CallableValue(66)}),
+
+ // formatId3: new type.UInt32Le(0xc143),
+ // formatName3: new type.BinaryString(Buffer.from('RTF As Text\x00' , 'ucs2'), { readLength : new type.CallableValue(24)}),
+
+ // formatId4: new type.UInt32Le(0x01),
+ // formatName4: new type.BinaryString(0x00),
+
+ formatId5: new type.UInt32Le(0x07),
+ formatName5: new type.UInt16Le(0x00),
+
+ // formatId6: new type.UInt32Le(0xc004),
+ // formatName6: new type.BinaryString(Buffer.from('Native\x00' , 'ucs2'), { readLength : new type.CallableValue(14)}),
+
+ // formatId7: new type.UInt32Le(0xc00e),
+ // formatName7: new type.BinaryString(Buffer.from('Object Descriptor\x00' , 'ucs2'), { readLength : new type.CallableValue(36)}),
+
+ // formatId8: new type.UInt32Le(0x03),
+ // formatName8: new type.UInt16Le(0x00),
+
+ // formatId9: new type.UInt32Le(0x10),
+ // formatName9: new type.UInt16Le(0x00),
+
+ // formatId0: new type.UInt32Le(0x07),
+ // formatName0: new type.UInt16Le(0x00),
+ }));
+
+ }
+
+ /**
+ * Recvie format list PDU from server
+ * @param {type.Stream} s
+ */
+ recvFormatListPDU(s) {
+ s.offset = 18;
+ // const pdu = data.clipPDU().read(s);
+ // console.log('recvFormatListPDU', s);
+ this.sendFormatListResponsePDU();
+ }
+
+
+ /**
+ * Send format list reesponse
+ */
+ sendFormatListResponsePDU() {
+ this.send(new type.Component({
+ msgType: new type.UInt16Le(data.ClipPDUMsgType.CB_FORMAT_LIST_RESPONSE),
+ msgFlags: new type.UInt16Le(0x01),
+ dataLen: new type.UInt32Le(0x00),
+ }));
+
+ this.sendFormatDataRequestPDU();
+ }
+
+
+ /**
+ * Receive format list response from server
+ * @param s {type.Stream}
+ */
+ recvFormatListResponsePDU(s) {
+ s.offset = 18;
+ // const pdu = data.clipPDU().read(s);
+ // console.log('recvFormatListResponsePDU', s);
+ // this.sendFormatDataRequestPDU();
+ }
+
+
+ /**
+ * Send format data request PDU
+ */
+ sendFormatDataRequestPDU(formartId = 0x0d) {
+ this.send(new type.Component({
+ msgType: new type.UInt16Le(data.ClipPDUMsgType.CB_FORMAT_DATA_REQUEST),
+ msgFlags: new type.UInt16Le(0x00),
+ dataLen: new type.UInt32Le(0x04),
+ requestedFormatId: new type.UInt32Le(formartId),
+ }));
+ }
+
+
+ /**
+ * Receive format data request PDU from server
+ * @param s {type.Stream}
+ */
+ recvFormatDataRequestPDU(s) {
+ s.offset = 18;
+ // const pdu = data.clipPDU().read(s);
+ // console.log('recvFormatDataRequestPDU', s);
+ this.sendFormatDataResponsePDU();
+ }
+
+
+ /**
+ * Send format data reesponse PDU
+ */
+ sendFormatDataResponsePDU() {
+
+ const bufs = Buffer.from(this.content + '\x00' , 'ucs2');
+
+ this.send(new type.Component({
+ msgType: new type.UInt16Le(data.ClipPDUMsgType.CB_FORMAT_DATA_RESPONSE),
+ msgFlags: new type.UInt16Le(0x01),
+ dataLen: new type.UInt32Le(bufs.length),
+ requestedFormatData: new type.BinaryString(bufs, { readLength : new type.CallableValue(bufs.length)})
+ }));
+
+ }
+
+
+ /**
+ * Receive format data response PDU from server
+ * @param s {type.Stream}
+ */
+ recvFormatDataResponsePDU(s) {
+ s.offset = 18;
+ // const pdu = data.clipPDU().read(s);
+ const str = s.buffer.toString('ucs2', 26, s.buffer.length-2);
+ // console.log('recvFormatDataResponsePDU', str);
+ this.content = str;
+ this.emit('clipboard', str)
+ }
+
+
+// =====================================================================================
+ setClipboardData(content) {
+ this.content = content;
+ this.sendFormatListPDU();
+ }
+
+}
+
+
+module.exports = {
+ Client
+}
diff --git a/rdp/protocol/pdu/data.js b/rdp/protocol/pdu/data.js
index 58b2fb42..7c79012d 100644
--- a/rdp/protocol/pdu/data.js
+++ b/rdp/protocol/pdu/data.js
@@ -1040,6 +1040,36 @@ function pdu(userId, pduMessage, opt) {
return new type.Component(self, opt);
}
+
+const ClipPDUMsgType = {
+ CB_MONITOR_READY: 0x0001,
+ CB_FORMAT_LIST: 0x0002,
+ CB_FORMAT_LIST_RESPONSE: 0x0003,
+ CB_FORMAT_DATA_REQUEST: 0x0004,
+ CB_FORMAT_DATA_RESPONSE: 0x0005,
+ CB_TEMP_DIRECTORY: 0x0006,
+ CB_CLIP_CAPS: 0x0007,
+ CB_FILECONTENTS_REQUEST: 0x0008
+}
+
+/**
+ * @returns {type.Component}
+ */
+function clipPDU() {
+ const self = {
+ header: new type.Factory(function (s) {
+ self.header = new type.Component({
+ msgType: new type.UInt16Le().read(s),
+ msgFlags: new type.UInt16Le().read(s),
+ dataLen: new type.UInt32Le().read(s)
+ })
+ })
+
+ }
+ return new type.Component(self);
+}
+
+
/**
* @see http://msdn.microsoft.com/en-us/library/dd306368.aspx
* @param opt {object} type option
@@ -1147,5 +1177,7 @@ module.exports = {
updateDataPDU : updateDataPDU,
dataPDU : dataPDU,
fastPathBitmapUpdateDataPDU : fastPathBitmapUpdateDataPDU,
- fastPathUpdatePDU : fastPathUpdatePDU
+ fastPathUpdatePDU: fastPathUpdatePDU,
+ clipPDU: clipPDU,
+ ClipPDUMsgType: ClipPDUMsgType
};
\ No newline at end of file
diff --git a/rdp/protocol/pdu/index.js b/rdp/protocol/pdu/index.js
index dd714709..6afbeccd 100644
--- a/rdp/protocol/pdu/index.js
+++ b/rdp/protocol/pdu/index.js
@@ -21,10 +21,12 @@ var lic = require('./lic');
var sec = require('./sec');
var global = require('./global');
var data = require('./data');
+var cliprdr = require('./cliprdr');
module.exports = {
- lic : lic,
- sec : sec,
- global : global,
- data : data
+ lic: lic,
+ sec: sec,
+ global: global,
+ data: data,
+ cliprdr: cliprdr
};
diff --git a/rdp/protocol/rdp.js b/rdp/protocol/rdp.js
index f9fac6f8..97cb25a6 100644
--- a/rdp/protocol/rdp.js
+++ b/rdp/protocol/rdp.js
@@ -87,6 +87,7 @@ function RdpClient(config) {
this.x224 = new x224.Client(this.tpkt, config);
this.mcs = new t125.mcs.Client(this.x224);
this.sec = new pdu.sec.Client(this.mcs, this.tpkt);
+ this.cliprdr = new pdu.cliprdr.Client(this.mcs);
this.global = new pdu.global.Client(this.sec, this.sec);
// config log level
@@ -145,6 +146,9 @@ function RdpClient(config) {
this.mcs.clientCoreData.obj.kbdLayout.value = t125.gcc.KeyboardLayout.US;
}
+ this.cliprdr.on('clipboard', (content) => {
+ this.emit('clipboard', content)
+ });
//bind all events
var self = this;
@@ -328,6 +332,14 @@ RdpClient.prototype.sendWheelEvent = function (x, y, step, isNegative, isHorizon
this.global.sendInputEvents([event]);
}
+/**
+ * Clipboard event
+ * @param data {String} content for clipboard
+ */
+RdpClient.prototype.setClipboardData = function (content) {
+ this.cliprdr.setClipboardData(content);
+}
+
function createClient(config) {
return new RdpClient(config);
};
diff --git a/rdp/protocol/t125/mcs.js b/rdp/protocol/t125/mcs.js
index 1077a2a8..338aae01 100644
--- a/rdp/protocol/t125/mcs.js
+++ b/rdp/protocol/t125/mcs.js
@@ -25,6 +25,7 @@ var error = require('../../core').error;
var gcc = require('./gcc');
var per = require('./per');
var asn1 = require('../../asn1');
+var cliprdr = require('../pdu/cliprdr');
var Message = {
MCS_TYPE_CONNECT_INITIAL : 0x65,
@@ -43,10 +44,33 @@ var DomainMCSPDU = {
};
var Channel = {
- MCS_GLOBAL_CHANNEL : 1003,
- MCS_USERCHANNEL_BASE : 1001
+ MCS_GLOBAL_CHANNEL: 1003,
+ MCS_USERCHANNEL_BASE: 1001,
+ MCS_CLIPRDR_CHANNEL: 1005
};
+/**
+ * Channel Definde
+ */
+const RdpdrChannelDef = new type.Component({
+ name: new type.BinaryString(Buffer.from('rdpdr' + '\x00\x00\x00', 'binary'), { readLength: new type.CallableValue(8) }),
+ options: new type.UInt32Le(0x80800000)
+});
+
+const RdpsndChannelDef = new type.Component({
+ name: new type.BinaryString(Buffer.from('rdpsnd' + '\x00\x00', 'binary'), { readLength: new type.CallableValue(8) }),
+ options: new type.UInt32Le(0xc0000000)
+});
+
+const CliprdrChannelDef = new type.Component({
+ name: new type.BinaryString(Buffer.from('cliprdr' + '\x00', 'binary'), { readLength: new type.CallableValue(8) }),
+ // CHANNEL_OPTION_INITIALIZED |
+ // CHANNEL_OPTION_ENCRYPT_RDP |
+ // CHANNEL_OPTION_COMPRESS_RDP |
+ // CHANNEL_OPTION_SHOW_PROTOCOL
+ options: new type.UInt32Le(0xc0a00000)
+});
+
/**
* @see http://www.itu.int/rec/T-REC-T.125-199802-I/en page 25
* @returns {asn1.univ.Sequence}
@@ -126,7 +150,10 @@ function MCS(transport, recvOpCode, sendOpCode) {
this.transport = transport;
this.recvOpCode = recvOpCode;
this.sendOpCode = sendOpCode;
- this.channels = [{id : Channel.MCS_GLOBAL_CHANNEL, name : 'global'}];
+ this.channels = [
+ { id: Channel.MCS_GLOBAL_CHANNEL, name: 'global' },
+ { id: Channel.MCS_CLIPRDR_CHANNEL, name: 'cliprdr' }
+ ];
this.channels.find = function(callback) {
for(var i in this) {
if(callback(this[i])) return this[i];
@@ -207,8 +234,9 @@ function Client(transport) {
this.channelsConnected = 0;
// init gcc information
- this.clientCoreData = gcc.clientCoreData();
- this.clientNetworkData = gcc.clientNetworkData(new type.Component([]));
+ this.clientCoreData = gcc.clientCoreData();
+ // cliprdr channel
+ this.clientNetworkData = gcc.clientNetworkData(new type.Component([RdpdrChannelDef, CliprdrChannelDef, RdpsndChannelDef]));
this.clientSecurityData = gcc.clientSecurityData();
// must be readed from protocol
@@ -317,7 +345,8 @@ Client.prototype.recvChannelJoinConfirm = function(s) {
var channelId = per.readInteger16(s);
- if ((confirm !== 0) && (channelId === Channel.MCS_GLOBAL_CHANNEL || channelId === this.userId)) {
+ //if ((confirm !== 0) && (channelId === Channel.MCS_GLOBAL_CHANNEL || channelId === this.userId)) {
+ if ((confirm !== 0) && (channelId === Channel.MCS_CLIPRDR_CHANNEL || channelId === Channel.MCS_GLOBAL_CHANNEL || channelId === this.userId)) {
throw new error.UnexpectedFatalError('NODE_RDP_PROTOCOL_T125_MCS_SERVER_MUST_CONFIRM_STATIC_CHANNEL');
}
diff --git a/rdp/security/md4.js b/rdp/security/md4.js
index 38c0ba9b..ae9ab1e4 100644
--- a/rdp/security/md4.js
+++ b/rdp/security/md4.js
@@ -121,7 +121,7 @@
} else if (message.length === undefined) {
return method(message);
}
- return crypto.createHash('md4').update(new Buffer(message)).digest('hex');
+ return crypto.createHash('md4').update(Buffer.from(message)).digest('hex');
};
return nodeMethod;
};
diff --git a/translate/translate.json b/translate/translate.json
index b8eb2634..03714f2a 100644
--- a/translate/translate.json
+++ b/translate/translate.json
@@ -928,7 +928,7 @@
"zh-chs": ",",
"zh-cht": ",",
"xloc": [
- "default-mobile.handlebars->11->701",
+ "default-mobile.handlebars->11->700",
"default.handlebars->39->2078",
"default.handlebars->39->2342",
"default.handlebars->39->887"
@@ -1047,7 +1047,7 @@
"zh-chs": ",MQTT在线",
"zh-cht": ",MQTT在線",
"xloc": [
- "default-mobile.handlebars->11->605",
+ "default-mobile.handlebars->11->604",
"default.handlebars->39->1474"
]
},
@@ -1181,6 +1181,19 @@
"default.handlebars->39->330"
]
},
+ {
+ "en": ", SFTP",
+ "xloc": [
+ "default-mobile.handlebars->11->468",
+ "default.handlebars->39->1324"
+ ]
+ },
+ {
+ "en": ", SSH",
+ "xloc": [
+ "default.handlebars->39->1292"
+ ]
+ },
{
"cs": ", Soft-KVM",
"da": ", Soft-KVM",
@@ -1298,9 +1311,9 @@
"xloc": [
"default-mobile.handlebars->11->411",
"default-mobile.handlebars->11->446",
- "default-mobile.handlebars->11->470",
+ "default-mobile.handlebars->11->469",
"default.handlebars->39->1215",
- "default.handlebars->39->1292",
+ "default.handlebars->39->1293",
"default.handlebars->39->1325",
"sharing.handlebars->11->19",
"sharing.handlebars->11->27",
@@ -1602,7 +1615,7 @@
"zh-cht": "...",
"xloc": [
"default-mobile.handlebars->11->139",
- "default-mobile.handlebars->11->476",
+ "default-mobile.handlebars->11->475",
"default.handlebars->39->1335",
"default.handlebars->39->2139",
"default.handlebars->39->2757",
@@ -1793,7 +1806,7 @@
"zh-cht": "1個位元組",
"xloc": [
"default-mobile.handlebars->11->149",
- "default-mobile.handlebars->11->745",
+ "default-mobile.handlebars->11->744",
"default.handlebars->39->2163",
"download.handlebars->3->1",
"download2.handlebars->5->1",
@@ -3301,7 +3314,7 @@
"ru": "3",
"tr": "3",
"xloc": [
- "default-mobile.handlebars->11->503"
+ "default-mobile.handlebars->11->502"
]
},
{
@@ -3429,7 +3442,7 @@
"tr": "32-bit",
"zh-chs": "32 位",
"xloc": [
- "default-mobile.handlebars->11->513",
+ "default-mobile.handlebars->11->512",
"default.handlebars->39->1388"
]
},
@@ -3973,7 +3986,7 @@
"tr": "64-bit",
"zh-chs": "64 位",
"xloc": [
- "default-mobile.handlebars->11->515",
+ "default-mobile.handlebars->11->514",
"default.handlebars->39->1390"
]
},
@@ -4836,8 +4849,8 @@
"tr": "AV",
"zh-chs": "影音",
"xloc": [
- "default-mobile.handlebars->11->517",
- "default-mobile.handlebars->11->519",
+ "default-mobile.handlebars->11->516",
+ "default-mobile.handlebars->11->518",
"default.handlebars->39->824",
"default.handlebars->39->826"
]
@@ -4864,7 +4877,7 @@
"zh-chs": "拒绝访问",
"zh-cht": "拒絕存取",
"xloc": [
- "default-mobile.handlebars->11->606",
+ "default-mobile.handlebars->11->605",
"default.handlebars->39->1475"
]
},
@@ -5078,7 +5091,7 @@
"tr": "Hesap Ayarları",
"zh-chs": "帐号设定",
"xloc": [
- "default-mobile.handlebars->11->712",
+ "default-mobile.handlebars->11->711",
"default.handlebars->39->2844"
]
},
@@ -5278,7 +5291,7 @@
"zh-chs": "达到帐户限制。",
"zh-cht": "達到帳戶限制。",
"xloc": [
- "default-mobile.handlebars->11->724",
+ "default-mobile.handlebars->11->723",
"default.handlebars->39->2856",
"login-mobile.handlebars->5->6",
"login.handlebars->5->6",
@@ -5510,7 +5523,7 @@
"zh-chs": "指令",
"zh-cht": "指令",
"xloc": [
- "default-mobile.handlebars->11->612",
+ "default-mobile.handlebars->11->611",
"default.handlebars->39->1481",
"default.handlebars->container->column_l->p42->p42tbl->1->0->8"
]
@@ -5697,7 +5710,7 @@
"xloc": [
"default-mobile.handlebars->11->292",
"default-mobile.handlebars->11->294",
- "default-mobile.handlebars->11->568",
+ "default-mobile.handlebars->11->567",
"default.handlebars->39->1436",
"default.handlebars->39->798",
"default.handlebars->39->800"
@@ -6328,7 +6341,7 @@
"zh-chs": "添加用户",
"zh-cht": "新增用戶",
"xloc": [
- "default-mobile.handlebars->11->637",
+ "default-mobile.handlebars->11->636",
"default.handlebars->39->948"
]
},
@@ -6432,7 +6445,7 @@
"zh-chs": "将用户添加到设备组",
"zh-cht": "將用戶新增到裝置群",
"xloc": [
- "default-mobile.handlebars->11->677"
+ "default-mobile.handlebars->11->676"
]
},
{
@@ -7135,7 +7148,7 @@
"zh-chs": "管理员控制模式(ACM)",
"zh-cht": "管理員控制模式(ACM)",
"xloc": [
- "default-mobile.handlebars->11->570",
+ "default-mobile.handlebars->11->569",
"default.handlebars->39->1438"
]
},
@@ -7161,7 +7174,7 @@
"zh-chs": "管理员凭证",
"zh-cht": "管理員憑證",
"xloc": [
- "default-mobile.handlebars->11->576",
+ "default-mobile.handlebars->11->575",
"default.handlebars->39->1444"
]
},
@@ -7426,7 +7439,7 @@
"zh-chs": "代理控制台",
"zh-cht": "代理控制台",
"xloc": [
- "default-mobile.handlebars->11->683",
+ "default-mobile.handlebars->11->682",
"default.handlebars->39->2057"
]
},
@@ -7973,7 +7986,7 @@
"zh-chs": "代理离线",
"zh-cht": "代理離線",
"xloc": [
- "default-mobile.handlebars->11->604",
+ "default-mobile.handlebars->11->603",
"default.handlebars->39->1473"
]
},
@@ -7999,7 +8012,7 @@
"zh-chs": "代理在线",
"zh-cht": "代理在線",
"xloc": [
- "default-mobile.handlebars->11->603",
+ "default-mobile.handlebars->11->602",
"default.handlebars->39->1472"
]
},
@@ -8250,8 +8263,8 @@
"zh-cht": "所有",
"xloc": [
"default-mobile.handlebars->11->148",
- "default-mobile.handlebars->11->477",
- "default-mobile.handlebars->11->479",
+ "default-mobile.handlebars->11->476",
+ "default-mobile.handlebars->11->478",
"default.handlebars->39->2769",
"default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar->DevFilterSelect->1"
]
@@ -8624,7 +8637,7 @@
"zh-chs": "备用(F10 = ESC + 0)",
"zh-cht": "備用(F10 = ESC + 0)",
"xloc": [
- "default.handlebars->39->1318",
+ "default.handlebars->39->1319",
"sharing.handlebars->11->37"
]
},
@@ -8924,7 +8937,7 @@
"tr": "Android Kurulumu",
"zh-chs": "安卓安装",
"xloc": [
- "default-mobile.handlebars->11->657"
+ "default-mobile.handlebars->11->656"
]
},
{
@@ -9000,7 +9013,7 @@
"zh-chs": "杀毒软件",
"zh-cht": "防毒軟體",
"xloc": [
- "default-mobile.handlebars->11->533",
+ "default-mobile.handlebars->11->532",
"default.handlebars->39->840"
]
},
@@ -9742,9 +9755,9 @@
"zh-chs": "架构",
"zh-cht": "結構",
"xloc": [
- "default-mobile.handlebars->11->512",
- "default-mobile.handlebars->11->514",
- "default-mobile.handlebars->11->516",
+ "default-mobile.handlebars->11->511",
+ "default-mobile.handlebars->11->513",
+ "default-mobile.handlebars->11->515",
"default.handlebars->39->1387",
"default.handlebars->39->1389",
"default.handlebars->39->1391"
@@ -9797,7 +9810,7 @@
"zh-chs": "你确定要删除组{0}吗?删除设备组还将删除该组中有关设备的所有信息。",
"zh-cht": "你確定要刪除群{0}嗎?刪除裝置群還將刪除該群中有關裝置的所有訊息。",
"xloc": [
- "default-mobile.handlebars->11->644",
+ "default-mobile.handlebars->11->643",
"default.handlebars->39->1969"
]
},
@@ -10241,9 +10254,9 @@
"default-mobile.handlebars->11->447",
"default-mobile.handlebars->11->451",
"default-mobile.handlebars->11->463",
- "default.handlebars->39->1293",
- "default.handlebars->39->1297",
- "default.handlebars->39->1309",
+ "default.handlebars->39->1294",
+ "default.handlebars->39->1298",
+ "default.handlebars->39->1310",
"ssh.handlebars->3->21",
"ssh.handlebars->3->22",
"ssh.handlebars->3->5",
@@ -10323,8 +10336,8 @@
"zh-chs": "授权错误",
"xloc": [
"default-mobile.handlebars->11->464",
- "default-mobile.handlebars->11->471",
- "default.handlebars->39->1311",
+ "default-mobile.handlebars->11->470",
+ "default.handlebars->39->1312",
"default.handlebars->39->1327"
]
},
@@ -10700,9 +10713,9 @@
"tr": "KÖTÜ",
"zh-chs": "坏的",
"xloc": [
- "default-mobile.handlebars->11->520",
- "default-mobile.handlebars->11->524",
- "default-mobile.handlebars->11->528",
+ "default-mobile.handlebars->11->519",
+ "default-mobile.handlebars->11->523",
+ "default-mobile.handlebars->11->527",
"default.handlebars->39->827",
"default.handlebars->39->831",
"default.handlebars->39->835"
@@ -10730,7 +10743,7 @@
"zh-chs": "的BIOS",
"zh-cht": "的BIOS",
"xloc": [
- "default-mobile.handlebars->11->582",
+ "default-mobile.handlebars->11->581",
"default.handlebars->39->1450"
]
},
@@ -11278,7 +11291,7 @@
"tr": "önyükleyici",
"zh-chs": "引导加载程序",
"xloc": [
- "default-mobile.handlebars->11->546",
+ "default-mobile.handlebars->11->545",
"default.handlebars->39->1404"
]
},
@@ -11794,7 +11807,7 @@
"zh-chs": "CPU",
"zh-cht": "CPU",
"xloc": [
- "default-mobile.handlebars->11->588",
+ "default-mobile.handlebars->11->587",
"default.handlebars->39->1456",
"default.handlebars->39->2938",
"default.handlebars->container->column_l->p40->3->1->p40type->5"
@@ -11923,7 +11936,7 @@
"zh-cht": "CR+LF",
"xloc": [
"default.handlebars->39->1290",
- "default.handlebars->39->1320",
+ "default.handlebars->39->1321",
"default.handlebars->container->column_l->p12->termTable->1->1->4->1->1->terminalSettingsButtons",
"sharing.handlebars->11->25",
"sharing.handlebars->11->39",
@@ -12159,9 +12172,9 @@
"zh-chs": "容量",
"zh-cht": "容量",
"xloc": [
- "default-mobile.handlebars->11->593",
- "default-mobile.handlebars->11->598",
- "default-mobile.handlebars->11->600",
+ "default-mobile.handlebars->11->592",
+ "default-mobile.handlebars->11->597",
+ "default-mobile.handlebars->11->599",
"default.handlebars->39->1461",
"default.handlebars->39->1466",
"default.handlebars->39->1468"
@@ -12189,7 +12202,7 @@
"zh-chs": "容量/速度",
"zh-cht": "容量/速度",
"xloc": [
- "default-mobile.handlebars->11->591",
+ "default-mobile.handlebars->11->590",
"default.handlebars->39->1459"
]
},
@@ -12913,8 +12926,8 @@
"zh-chs": "聊天并通知",
"zh-cht": "聊天並通知",
"xloc": [
- "default-mobile.handlebars->11->673",
- "default-mobile.handlebars->11->693",
+ "default-mobile.handlebars->11->672",
+ "default-mobile.handlebars->11->692",
"default.handlebars->39->2031",
"default.handlebars->39->2068"
]
@@ -12940,7 +12953,7 @@
"tr": "Sohbet İsteği, Kabul etmek için buraya tıklayın.",
"zh-chs": "聊天请求,点击这里接受。",
"xloc": [
- "default-mobile.handlebars->11->725",
+ "default-mobile.handlebars->11->724",
"default.handlebars->39->2857"
]
},
@@ -13391,10 +13404,10 @@
"zh-cht": "清除",
"xloc": [
"default-mobile.handlebars->11->163",
- "default-mobile.handlebars->11->496",
- "default-mobile.handlebars->11->498",
- "default-mobile.handlebars->11->500",
- "default-mobile.handlebars->11->502",
+ "default-mobile.handlebars->11->495",
+ "default-mobile.handlebars->11->497",
+ "default-mobile.handlebars->11->499",
+ "default-mobile.handlebars->11->501",
"default-mobile.handlebars->11->78",
"default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->5",
"default.handlebars->39->1361",
@@ -13557,7 +13570,7 @@
"zh-chs": "全部清除",
"zh-cht": "全部清除",
"xloc": [
- "default-mobile.handlebars->11->708",
+ "default-mobile.handlebars->11->707",
"default.handlebars->39->2840"
]
},
@@ -13609,7 +13622,7 @@
"zh-chs": "清除核心",
"zh-cht": "清除核心",
"xloc": [
- "default-mobile.handlebars->11->614",
+ "default-mobile.handlebars->11->613",
"default.handlebars->39->1483"
]
},
@@ -13660,7 +13673,7 @@
"zh-chs": "清除此通知",
"zh-cht": "清除此通知",
"xloc": [
- "default-mobile.handlebars->11->707",
+ "default-mobile.handlebars->11->706",
"default.handlebars->39->2839"
]
},
@@ -14013,7 +14026,7 @@
"zh-chs": "客户端控制模式(CCM)",
"zh-cht": "客戶端控制模式(CCM)",
"xloc": [
- "default-mobile.handlebars->11->569",
+ "default-mobile.handlebars->11->568",
"default.handlebars->39->1437"
]
},
@@ -14356,7 +14369,7 @@
"zh-chs": "指令",
"zh-cht": "指令",
"xloc": [
- "default-mobile.handlebars->11->695",
+ "default-mobile.handlebars->11->694",
"default.handlebars->39->1004",
"default.handlebars->39->1026",
"default.handlebars->39->2070"
@@ -14435,7 +14448,7 @@
"tr": "Derleme zamanı",
"zh-chs": "编译时间",
"xloc": [
- "default-mobile.handlebars->11->542",
+ "default-mobile.handlebars->11->541",
"default.handlebars->39->1400"
]
},
@@ -14530,7 +14543,7 @@
"zh-cht": "確認",
"xloc": [
"default-mobile.handlebars->11->394",
- "default-mobile.handlebars->11->645",
+ "default-mobile.handlebars->11->644",
"default.handlebars->39->1136",
"default.handlebars->39->1145",
"default.handlebars->39->1970",
@@ -14584,7 +14597,7 @@
"zh-chs": "确认将1个副本复制到此位置?",
"zh-cht": "確認將1個副本複製到此位置?",
"xloc": [
- "default-mobile.handlebars->11->491",
+ "default-mobile.handlebars->11->490",
"default.handlebars->39->1356",
"sharing.handlebars->11->70"
]
@@ -14637,7 +14650,7 @@
"zh-chs": "确认{0}个条目的副本到此位置?",
"zh-cht": "確認{0}個條目的副本到此位置?",
"xloc": [
- "default-mobile.handlebars->11->490"
+ "default-mobile.handlebars->11->489"
]
},
{
@@ -14809,7 +14822,7 @@
"zh-chs": "确认将1个条目移动到此位置?",
"zh-cht": "確認將1個條目移動到此位置?",
"xloc": [
- "default-mobile.handlebars->11->493",
+ "default-mobile.handlebars->11->492",
"default.handlebars->39->1358",
"sharing.handlebars->11->72"
]
@@ -14862,7 +14875,7 @@
"zh-chs": "确认将{0}个条目移到该位置?",
"zh-cht": "確認將{0}個條目移到該位置?",
"xloc": [
- "default-mobile.handlebars->11->492"
+ "default-mobile.handlebars->11->491"
]
},
{
@@ -15301,7 +15314,7 @@
"zh-chs": "确认删除用户{0}?",
"zh-cht": "確認刪除用戶{0}?",
"xloc": [
- "default-mobile.handlebars->11->704"
+ "default-mobile.handlebars->11->703"
]
},
{
@@ -15377,11 +15390,9 @@
"zh-cht": "連接",
"xloc": [
"agent-translations.json",
- "default-mobile.handlebars->11->468",
"default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
"default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3",
"default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->connectbutton2span",
- "default.handlebars->39->1323",
"default.handlebars->39->1874",
"default.handlebars->39->855",
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1span",
@@ -15705,7 +15716,7 @@
"zh-chs": "现在已连接",
"zh-cht": "現在已連接",
"xloc": [
- "default-mobile.handlebars->11->537",
+ "default-mobile.handlebars->11->536",
"default.handlebars->39->1395"
]
},
@@ -15820,7 +15831,7 @@
"xloc": [
"default-mobile.handlebars->11->2",
"default-mobile.handlebars->11->48",
- "default-mobile.handlebars->11->509",
+ "default-mobile.handlebars->11->508",
"default.handlebars->39->1381",
"default.handlebars->39->361",
"default.handlebars->39->364",
@@ -15899,8 +15910,8 @@
"tr": "Bağlantı hatası",
"zh-chs": "连接错误",
"xloc": [
- "default-mobile.handlebars->11->472",
- "default.handlebars->39->1310",
+ "default-mobile.handlebars->11->471",
+ "default.handlebars->39->1311",
"default.handlebars->39->1328",
"login2.handlebars->7->32"
]
@@ -17615,7 +17626,7 @@
"tr": "Mevcut şifre doğru değil.",
"zh-chs": "当前密码不正确。",
"xloc": [
- "default-mobile.handlebars->11->735",
+ "default-mobile.handlebars->11->734",
"default.handlebars->39->2867"
]
},
@@ -18071,7 +18082,7 @@
"zh-cht": "刪除",
"xloc": [
"default-mobile.handlebars->11->153",
- "default-mobile.handlebars->11->483",
+ "default-mobile.handlebars->11->482",
"default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1",
"default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1",
"default-mobile.handlebars->dialog->idx_dlgButtonBar->5",
@@ -18213,8 +18224,8 @@
"zh-chs": "删除群组",
"zh-cht": "刪除群組",
"xloc": [
- "default-mobile.handlebars->11->643",
- "default-mobile.handlebars->11->646",
+ "default-mobile.handlebars->11->642",
+ "default-mobile.handlebars->11->645",
"default.handlebars->39->1930",
"default.handlebars->39->1971"
]
@@ -18518,7 +18529,7 @@
"zh-cht": "刪除所選項目?",
"xloc": [
"default-mobile.handlebars->11->155",
- "default-mobile.handlebars->11->485",
+ "default-mobile.handlebars->11->484",
"default.handlebars->39->1349",
"default.handlebars->39->2169",
"sharing.handlebars->11->63"
@@ -18572,7 +18583,7 @@
"zh-cht": "刪除{0}個所選項目?",
"xloc": [
"default-mobile.handlebars->11->154",
- "default-mobile.handlebars->11->484",
+ "default-mobile.handlebars->11->483",
"default.handlebars->39->1348",
"default.handlebars->39->2168",
"sharing.handlebars->11->62"
@@ -18818,9 +18829,9 @@
"default-mobile.handlebars->11->278",
"default-mobile.handlebars->11->279",
"default-mobile.handlebars->11->402",
- "default-mobile.handlebars->11->550",
- "default-mobile.handlebars->11->629",
- "default-mobile.handlebars->11->652",
+ "default-mobile.handlebars->11->549",
+ "default-mobile.handlebars->11->628",
+ "default-mobile.handlebars->11->651",
"default.handlebars->39->1188",
"default.handlebars->39->1408",
"default.handlebars->39->1418",
@@ -19433,7 +19444,7 @@
"zh-chs": "设备",
"zh-cht": "裝置",
"xloc": [
- "default-mobile.handlebars->11->545",
+ "default-mobile.handlebars->11->544",
"default.handlebars->39->1403",
"default.handlebars->39->1511",
"default.handlebars->39->2011",
@@ -19592,7 +19603,7 @@
"zh-cht": "裝置群",
"xloc": [
"agent-translations.json",
- "default-mobile.handlebars->11->713",
+ "default-mobile.handlebars->11->712",
"default.handlebars->39->2006",
"default.handlebars->39->2009",
"default.handlebars->39->2010",
@@ -19628,7 +19639,7 @@
"zh-chs": "设备组用户",
"zh-cht": "裝置群用戶",
"xloc": [
- "default-mobile.handlebars->11->702",
+ "default-mobile.handlebars->11->701",
"default.handlebars->39->2079"
]
},
@@ -19815,7 +19826,7 @@
"tr": "Cihaz Eşleştirme Bağlantısı",
"zh-chs": "设备配对链接",
"xloc": [
- "default-mobile.handlebars->11->656"
+ "default-mobile.handlebars->11->655"
]
},
{
@@ -20940,7 +20951,7 @@
"zh-chs": "已禁用",
"zh-cht": "已禁用",
"xloc": [
- "default-mobile.handlebars->11->530",
+ "default-mobile.handlebars->11->529",
"default.handlebars->39->121",
"default.handlebars->39->837"
]
@@ -20993,14 +21004,14 @@
"zh-cht": "斷線",
"xloc": [
"agent-translations.json",
- "default-mobile.handlebars->11->469",
"default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
+ "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3",
"default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->disconnectbutton2span",
- "default.handlebars->39->1324",
"default.handlebars->39->1875",
"default.handlebars->39->856",
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->disconnectbutton1span",
"default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->disconnectbutton2span",
+ "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3",
"default.handlebars->deskDisconnectContextMenu->3",
"sharing.handlebars->11->43",
"sharing.handlebars->p11->deskarea0->deskarea1->3->disconnectbutton1span",
@@ -21814,7 +21825,7 @@
"zh-chs": "下载档案",
"zh-cht": "下載檔案",
"xloc": [
- "default-mobile.handlebars->11->504",
+ "default-mobile.handlebars->11->503",
"default.handlebars->39->1368",
"sharing.handlebars->11->82"
]
@@ -23025,11 +23036,11 @@
"zh-chs": "编辑设备组",
"zh-cht": "編輯裝置群",
"xloc": [
- "default-mobile.handlebars->11->647",
- "default-mobile.handlebars->11->650",
- "default-mobile.handlebars->11->653",
- "default-mobile.handlebars->11->659",
- "default-mobile.handlebars->11->679",
+ "default-mobile.handlebars->11->646",
+ "default-mobile.handlebars->11->649",
+ "default-mobile.handlebars->11->652",
+ "default-mobile.handlebars->11->658",
+ "default-mobile.handlebars->11->678",
"default.handlebars->39->1972",
"default.handlebars->39->1975",
"default.handlebars->39->1978",
@@ -23136,7 +23147,7 @@
"zh-chs": "编辑设备笔记",
"zh-cht": "編輯裝置筆記",
"xloc": [
- "default-mobile.handlebars->11->671",
+ "default-mobile.handlebars->11->670",
"default.handlebars->39->2029"
]
},
@@ -23295,7 +23306,7 @@
"zh-chs": "编辑笔记",
"zh-cht": "編輯筆記",
"xloc": [
- "default-mobile.handlebars->11->686",
+ "default-mobile.handlebars->11->685",
"default.handlebars->39->2060"
]
},
@@ -23825,7 +23836,7 @@
"pt-br": "O domínio de e-mail \\\"{0}\\\" não é permitido. Somente ({1}) são permitidos",
"pl": "Domena email \\\"{0}\\\" jest niedozwolona. Tylko ({1}) jest dopuszczona",
"xloc": [
- "default-mobile.handlebars->11->744",
+ "default-mobile.handlebars->11->743",
"default.handlebars->39->2876"
]
},
@@ -23998,7 +24009,7 @@
"zh-chs": "电邮已发送。",
"zh-cht": "電郵已發送。",
"xloc": [
- "default-mobile.handlebars->11->728",
+ "default-mobile.handlebars->11->727",
"default.handlebars->39->2860",
"login-mobile.handlebars->5->2",
"login.handlebars->5->2",
@@ -25331,7 +25342,7 @@
"tr": "Hata, davet kodu \\\"{0}\\\" zaten kullanılıyor.",
"zh-chs": "错误,邀请码 \\\"{0}\\\" 已被使用。",
"xloc": [
- "default-mobile.handlebars->11->736",
+ "default-mobile.handlebars->11->735",
"default.handlebars->39->2868"
]
},
@@ -25356,7 +25367,7 @@
"tr": "Hata, şifre değiştirilmedi.",
"zh-chs": "错误,密码未更改。",
"xloc": [
- "default-mobile.handlebars->11->733",
+ "default-mobile.handlebars->11->732",
"default.handlebars->39->2865"
]
},
@@ -25381,7 +25392,7 @@
"tr": "Hata, yaygın olarak kullanılan parolaya geçilemiyor.",
"zh-chs": "错误,无法更改为常用密码。",
"xloc": [
- "default-mobile.handlebars->11->732",
+ "default-mobile.handlebars->11->731",
"default.handlebars->39->2864"
]
},
@@ -25406,7 +25417,7 @@
"tr": "Hata, daha önce kullanılan parolaya geçilemiyor.",
"zh-chs": "错误,无法更改为以前使用的密码。",
"xloc": [
- "default-mobile.handlebars->11->731",
+ "default-mobile.handlebars->11->730",
"default.handlebars->39->2863"
]
},
@@ -25880,7 +25891,7 @@
"zh-chs": "扩充式ASCII",
"zh-cht": "擴充式ASCII",
"xloc": [
- "default.handlebars->39->1315",
+ "default.handlebars->39->1316",
"sharing.handlebars->11->34"
]
},
@@ -26065,7 +26076,7 @@
"tr": "E-posta adresi değiştirilemedi, başka bir hesap zaten kullanıyor: {0}.",
"zh-chs": "无法更改电子邮件地址,另一个帐户已在使用:{0}。",
"xloc": [
- "default-mobile.handlebars->11->727",
+ "default-mobile.handlebars->11->726",
"default.handlebars->39->2859"
]
},
@@ -26364,7 +26375,7 @@
"zh-chs": "档案编辑器",
"zh-cht": "檔案編輯器",
"xloc": [
- "default-mobile.handlebars->11->488",
+ "default-mobile.handlebars->11->487",
"default.handlebars->39->1352",
"default.handlebars->39->741",
"sharing.handlebars->11->66"
@@ -26796,8 +26807,8 @@
"tr": "güvenlik duvarı",
"zh-chs": "防火墙",
"xloc": [
- "default-mobile.handlebars->11->525",
- "default-mobile.handlebars->11->527",
+ "default-mobile.handlebars->11->524",
+ "default-mobile.handlebars->11->526",
"default.handlebars->39->832",
"default.handlebars->39->834"
]
@@ -27693,9 +27704,9 @@
"zh-cht": "完整管理員",
"xloc": [
"default-mobile.handlebars->11->136",
- "default-mobile.handlebars->11->641",
- "default-mobile.handlebars->11->658",
- "default-mobile.handlebars->11->678",
+ "default-mobile.handlebars->11->640",
+ "default-mobile.handlebars->11->657",
+ "default-mobile.handlebars->11->677",
"default.handlebars->39->1803",
"default.handlebars->39->2014",
"default.handlebars->39->2462"
@@ -27924,7 +27935,7 @@
"zh-chs": "GPU",
"zh-cht": "GPU",
"xloc": [
- "default-mobile.handlebars->11->589",
+ "default-mobile.handlebars->11->588",
"default.handlebars->39->1457"
]
},
@@ -29307,7 +29318,7 @@
"zh-chs": "强行断开代理",
"zh-cht": "強行斷開代理",
"xloc": [
- "default-mobile.handlebars->11->619",
+ "default-mobile.handlebars->11->618",
"default.handlebars->39->1488"
]
},
@@ -29740,7 +29751,7 @@
"zh-chs": "保存1个条目进行复制",
"zh-cht": "保存1個項目進行複製",
"xloc": [
- "default-mobile.handlebars->11->497",
+ "default-mobile.handlebars->11->496",
"default.handlebars->39->1362",
"sharing.handlebars->11->76"
]
@@ -29767,7 +29778,7 @@
"zh-chs": "保存1个项目进行移动",
"zh-cht": "保存1個項目進行移動",
"xloc": [
- "default-mobile.handlebars->11->501",
+ "default-mobile.handlebars->11->500",
"default.handlebars->39->1366",
"sharing.handlebars->11->80"
]
@@ -29794,7 +29805,7 @@
"zh-chs": "保存{0}个条目进行复制",
"zh-cht": "保留{0}個項目進行複製",
"xloc": [
- "default-mobile.handlebars->11->495",
+ "default-mobile.handlebars->11->494",
"default.handlebars->39->1360",
"sharing.handlebars->11->74"
]
@@ -29821,7 +29832,7 @@
"zh-chs": "保存{0}个条目以进行移动",
"zh-cht": "保存{0}個項目以進行移動",
"xloc": [
- "default-mobile.handlebars->11->499",
+ "default-mobile.handlebars->11->498",
"default.handlebars->39->1364",
"sharing.handlebars->11->78"
]
@@ -29903,8 +29914,8 @@
"default-mobile.handlebars->11->274",
"default-mobile.handlebars->11->276",
"default-mobile.handlebars->11->401",
- "default-mobile.handlebars->11->548",
- "default-mobile.handlebars->11->634",
+ "default-mobile.handlebars->11->547",
+ "default-mobile.handlebars->11->633",
"default.handlebars->39->1187",
"default.handlebars->39->1406",
"default.handlebars->39->1792",
@@ -30130,7 +30141,7 @@
"tr": "IP-KVM cihazı",
"pt-br": "Dispositivo IP-KVM ",
"xloc": [
- "default-mobile.handlebars->11->626",
+ "default-mobile.handlebars->11->625",
"default.handlebars->39->1842"
]
},
@@ -30139,7 +30150,7 @@
"nl": "IP-KVM-apparaat doorgestuurd via agent",
"pl": "Urządzenie IP-KVM przekierowane przzez agenta",
"xloc": [
- "default-mobile.handlebars->11->627",
+ "default-mobile.handlebars->11->626",
"default.handlebars->39->1843"
]
},
@@ -30280,8 +30291,8 @@
"zh-chs": "IPv4层",
"zh-cht": "IPv4層",
"xloc": [
- "default-mobile.handlebars->11->555",
- "default-mobile.handlebars->11->557",
+ "default-mobile.handlebars->11->554",
+ "default-mobile.handlebars->11->556",
"default.handlebars->39->1413",
"default.handlebars->39->1415",
"default.handlebars->39->1423",
@@ -30388,8 +30399,8 @@
"zh-chs": "IPv6层",
"zh-cht": "IPv6層",
"xloc": [
- "default-mobile.handlebars->11->559",
- "default-mobile.handlebars->11->561",
+ "default-mobile.handlebars->11->558",
+ "default-mobile.handlebars->11->560",
"default.handlebars->39->1427",
"default.handlebars->39->1429"
]
@@ -30542,8 +30553,8 @@
"zh-chs": "识别码",
"zh-cht": "識別符",
"xloc": [
- "default-mobile.handlebars->11->547",
- "default-mobile.handlebars->11->587",
+ "default-mobile.handlebars->11->546",
+ "default-mobile.handlebars->11->586",
"default.handlebars->39->1405",
"default.handlebars->39->1455"
]
@@ -31268,7 +31279,7 @@
"tr": "Bu cihaza yükle",
"zh-chs": "在此设备上安装",
"xloc": [
- "default-mobile.handlebars->11->638"
+ "default-mobile.handlebars->11->637"
]
},
{
@@ -31292,7 +31303,7 @@
"tr": "MeshCentral Agent'ı Android cihazınıza yükleyin. Kurulduktan sonra, cihazınızı bu sunucuya bağlamak için eşleştirme bağlantısını tıklayın.",
"zh-chs": "在您的 Android 设备上安装 MeshCentral Agent。安装后,单击配对链接将您的设备连接到此服务器。",
"xloc": [
- "default-mobile.handlebars->11->654"
+ "default-mobile.handlebars->11->653"
]
},
{
@@ -31389,7 +31400,7 @@
"zh-chs": "英特尔(F10 = ESC + [OM)",
"zh-cht": "Intel(F10 = ESC + [OM)",
"xloc": [
- "default.handlebars->39->1317",
+ "default.handlebars->39->1318",
"default.handlebars->container->column_l->p12->termTable->1->1->4->1->1->terminalSettingsButtons",
"sharing.handlebars->11->36",
"sharing.handlebars->p12->9->1->terminalSettingsButtons"
@@ -31546,7 +31557,7 @@
"zh-chs": "英特尔ASCII",
"zh-cht": "Intel ASCII",
"xloc": [
- "default.handlebars->39->1316",
+ "default.handlebars->39->1317",
"sharing.handlebars->11->35"
]
},
@@ -32317,7 +32328,7 @@
"zh-chs": "仅限英特尔®AMT,无代理",
"zh-cht": "僅限Intel® AMT,無代理",
"xloc": [
- "default-mobile.handlebars->11->622",
+ "default-mobile.handlebars->11->621",
"default.handlebars->39->1786",
"default.handlebars->39->1838"
]
@@ -32416,7 +32427,7 @@
"zh-chs": "英特尔®主动管理技术(英特尔®AMT)",
"zh-cht": "Intel ® Active Management Technology(Intel® AMT)",
"xloc": [
- "default-mobile.handlebars->11->579",
+ "default-mobile.handlebars->11->578",
"default.handlebars->39->1447"
]
},
@@ -33167,7 +33178,7 @@
"tr": "Geçersiz SMS mesajı",
"zh-chs": "无效的短信",
"xloc": [
- "default-mobile.handlebars->11->739",
+ "default-mobile.handlebars->11->738",
"default.handlebars->39->2871"
]
},
@@ -33239,7 +33250,7 @@
"tr": "Geçersiz alan",
"zh-chs": "无效域",
"xloc": [
- "default-mobile.handlebars->11->719",
+ "default-mobile.handlebars->11->718",
"default.handlebars->39->2851"
]
},
@@ -33285,7 +33296,7 @@
"tr": "Geçersiz e-posta",
"zh-chs": "不合规电邮",
"xloc": [
- "default-mobile.handlebars->11->718",
+ "default-mobile.handlebars->11->717",
"default.handlebars->39->2850"
]
},
@@ -33399,7 +33410,7 @@
"tr": "Geçersiz şifre",
"zh-chs": "无效的密码",
"xloc": [
- "default-mobile.handlebars->11->717",
+ "default-mobile.handlebars->11->716",
"default-mobile.handlebars->11->85",
"default.handlebars->39->2849",
"default.handlebars->39->308"
@@ -33426,7 +33437,7 @@
"tr": "Geçersiz site izinleri",
"zh-chs": "网站权限无效",
"xloc": [
- "default-mobile.handlebars->11->720",
+ "default-mobile.handlebars->11->719",
"default.handlebars->39->2852"
]
},
@@ -33502,7 +33513,7 @@
"tr": "Geçersiz kullanıcı adı",
"zh-chs": "无效的用户名",
"xloc": [
- "default-mobile.handlebars->11->716",
+ "default-mobile.handlebars->11->715",
"default.handlebars->39->2848"
]
},
@@ -33723,7 +33734,7 @@
"zh-chs": "邀请码",
"zh-cht": "邀請碼",
"xloc": [
- "default-mobile.handlebars->11->714",
+ "default-mobile.handlebars->11->713",
"default.handlebars->39->1882",
"default.handlebars->39->2086",
"default.handlebars->39->2097",
@@ -34191,7 +34202,7 @@
"zh-chs": "密钥文件",
"xloc": [
"default-mobile.handlebars->11->457",
- "default.handlebars->39->1303",
+ "default.handlebars->39->1304",
"ssh.handlebars->3->15"
]
},
@@ -34243,7 +34254,7 @@
"zh-chs": "密钥密码",
"xloc": [
"default-mobile.handlebars->11->459",
- "default.handlebars->39->1305",
+ "default.handlebars->39->1306",
"ssh.handlebars->3->17"
]
},
@@ -34269,7 +34280,7 @@
"zh-chs": "密钥文件必须是 OpenSSH 格式。",
"xloc": [
"default-mobile.handlebars->11->458",
- "default.handlebars->39->1304",
+ "default.handlebars->39->1305",
"ssh.handlebars->3->16"
]
},
@@ -34484,7 +34495,7 @@
"zh-chs": "已知的",
"zh-cht": "已知的",
"xloc": [
- "default-mobile.handlebars->11->578",
+ "default-mobile.handlebars->11->577",
"default.handlebars->39->1446"
]
},
@@ -34586,7 +34597,7 @@
"zh-cht": "如果",
"xloc": [
"default.handlebars->39->1291",
- "default.handlebars->39->1321",
+ "default.handlebars->39->1322",
"sharing.handlebars->11->26",
"sharing.handlebars->11->40"
]
@@ -35084,9 +35095,9 @@
"zh-chs": "上次代理地址",
"zh-cht": "上次代理地址",
"xloc": [
+ "default-mobile.handlebars->11->538",
"default-mobile.handlebars->11->539",
"default-mobile.handlebars->11->540",
- "default-mobile.handlebars->11->541",
"default.handlebars->39->1397",
"default.handlebars->39->1398",
"default.handlebars->39->1399",
@@ -35117,8 +35128,8 @@
"zh-chs": "上次代理连接",
"zh-cht": "上次代理連接",
"xloc": [
- "default-mobile.handlebars->11->536",
- "default-mobile.handlebars->11->538",
+ "default-mobile.handlebars->11->535",
+ "default-mobile.handlebars->11->537",
"default.handlebars->39->139",
"default.handlebars->39->1394",
"default.handlebars->39->1396"
@@ -35893,7 +35904,7 @@
"zh-chs": "有限输入",
"zh-cht": "有限輸入",
"xloc": [
- "default-mobile.handlebars->11->691",
+ "default-mobile.handlebars->11->690",
"default.handlebars->39->1015",
"default.handlebars->39->2066",
"default.handlebars->39->993"
@@ -35921,7 +35932,7 @@
"zh-chs": "仅有限输入",
"zh-cht": "僅有限輸入",
"xloc": [
- "default-mobile.handlebars->11->664",
+ "default-mobile.handlebars->11->663",
"default.handlebars->39->2020"
]
},
@@ -36816,7 +36827,7 @@
"tr": "Yerel cihazlar, aracı yok",
"zh-chs": "本地设备,无代理",
"xloc": [
- "default-mobile.handlebars->11->624",
+ "default-mobile.handlebars->11->623",
"default.handlebars->39->1780",
"default.handlebars->39->1840"
]
@@ -37623,8 +37634,8 @@
"zh-chs": "MAC层",
"zh-cht": "MAC層",
"xloc": [
- "default-mobile.handlebars->11->551",
- "default-mobile.handlebars->11->553",
+ "default-mobile.handlebars->11->550",
+ "default-mobile.handlebars->11->552",
"default.handlebars->39->1409",
"default.handlebars->39->1411",
"default.handlebars->39->1419",
@@ -37679,7 +37690,7 @@
"zh-chs": "MAC:{0}",
"zh-cht": "MAC:{0}",
"xloc": [
- "default-mobile.handlebars->11->554",
+ "default-mobile.handlebars->11->553",
"default.handlebars->39->1412",
"default.handlebars->39->1422"
]
@@ -37706,7 +37717,7 @@
"zh-chs": "MAC:{0},网关:{1}",
"zh-cht": "MAC:{0},網關:{1}",
"xloc": [
- "default-mobile.handlebars->11->552",
+ "default-mobile.handlebars->11->551",
"default.handlebars->39->1410",
"default.handlebars->39->1420"
]
@@ -37834,8 +37845,8 @@
"xloc": [
"default-mobile.handlebars->11->260",
"default-mobile.handlebars->11->317",
- "default-mobile.handlebars->11->607",
- "default-mobile.handlebars->11->609",
+ "default-mobile.handlebars->11->606",
+ "default-mobile.handlebars->11->608",
"default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect2",
"default.handlebars->39->1476",
"default.handlebars->39->1478",
@@ -38348,8 +38359,8 @@
"zh-chs": "管理设备组计算机",
"zh-cht": "管理裝置群電腦",
"xloc": [
- "default-mobile.handlebars->11->661",
- "default-mobile.handlebars->11->681",
+ "default-mobile.handlebars->11->660",
+ "default-mobile.handlebars->11->680",
"default.handlebars->39->2017",
"default.handlebars->39->2055"
]
@@ -38376,8 +38387,8 @@
"zh-chs": "管理设备组用户",
"zh-cht": "管理裝置群用戶",
"xloc": [
- "default-mobile.handlebars->11->660",
- "default-mobile.handlebars->11->680",
+ "default-mobile.handlebars->11->659",
+ "default-mobile.handlebars->11->679",
"default.handlebars->39->2016",
"default.handlebars->39->2054"
]
@@ -38710,7 +38721,7 @@
"zh-chs": "使用软件代理进行管理",
"zh-cht": "使用軟體代理進行管理",
"xloc": [
- "default-mobile.handlebars->11->623",
+ "default-mobile.handlebars->11->622",
"default.handlebars->39->1839"
]
},
@@ -39039,7 +39050,7 @@
"zh-chs": "记忆体",
"zh-cht": "記憶體",
"xloc": [
- "default-mobile.handlebars->11->596",
+ "default-mobile.handlebars->11->595",
"default.handlebars->39->1464",
"default.handlebars->39->2910",
"default.handlebars->container->column_l->p40->3->1->p40type->3"
@@ -39069,8 +39080,8 @@
"xloc": [
"default-mobile.handlebars->11->289",
"default-mobile.handlebars->11->342",
- "default-mobile.handlebars->11->535",
- "default-mobile.handlebars->11->543",
+ "default-mobile.handlebars->11->534",
+ "default-mobile.handlebars->11->542",
"default.handlebars->39->1393",
"default.handlebars->39->1401",
"default.handlebars->39->549",
@@ -39105,7 +39116,7 @@
"zh-chs": "网格代理控制台",
"zh-cht": "網格代理控制台",
"xloc": [
- "default-mobile.handlebars->11->668",
+ "default-mobile.handlebars->11->667",
"default.handlebars->39->2026"
]
},
@@ -39350,7 +39361,7 @@
"tr": "Android için MeshCentral Aracısı",
"zh-chs": "适用于 Android 的 MeshCentral 代理",
"xloc": [
- "default-mobile.handlebars->11->655"
+ "default-mobile.handlebars->11->654"
]
},
{
@@ -40418,7 +40429,7 @@
"tr": "Mobil cihaz",
"zh-chs": "移动设备",
"xloc": [
- "default-mobile.handlebars->11->549",
+ "default-mobile.handlebars->11->548",
"default.handlebars->39->1407"
]
},
@@ -40468,8 +40479,8 @@
"zh-chs": "模型",
"zh-cht": "模型",
"xloc": [
- "default-mobile.handlebars->11->544",
- "default-mobile.handlebars->11->597",
+ "default-mobile.handlebars->11->543",
+ "default-mobile.handlebars->11->596",
"default.handlebars->39->1402",
"default.handlebars->39->1465",
"default.handlebars->39->1789"
@@ -40569,7 +40580,7 @@
"zh-chs": "母板",
"zh-cht": "母板",
"xloc": [
- "default-mobile.handlebars->11->590",
+ "default-mobile.handlebars->11->589",
"default.handlebars->39->1458"
]
},
@@ -41288,10 +41299,10 @@
"xloc": [
"default-mobile.handlebars->11->128",
"default-mobile.handlebars->11->272",
- "default-mobile.handlebars->11->510",
- "default-mobile.handlebars->11->584",
- "default-mobile.handlebars->11->628",
- "default-mobile.handlebars->11->651",
+ "default-mobile.handlebars->11->509",
+ "default-mobile.handlebars->11->583",
+ "default-mobile.handlebars->11->627",
+ "default-mobile.handlebars->11->650",
"default.handlebars->39->1250",
"default.handlebars->39->1266",
"default.handlebars->39->1385",
@@ -41510,7 +41521,7 @@
"zh-chs": "网络",
"zh-cht": "網路",
"xloc": [
- "default-mobile.handlebars->11->563",
+ "default-mobile.handlebars->11->562",
"default.handlebars->39->1417",
"default.handlebars->39->1431"
]
@@ -41588,7 +41599,7 @@
"tr": "Yeni hesap",
"zh-chs": "新账户",
"xloc": [
- "default-mobile.handlebars->11->709",
+ "default-mobile.handlebars->11->708",
"default.handlebars->39->2841"
]
},
@@ -41690,7 +41701,7 @@
"zh-cht": "新建檔案夾",
"xloc": [
"default-mobile.handlebars->11->151",
- "default-mobile.handlebars->11->481",
+ "default-mobile.handlebars->11->480",
"default.handlebars->39->1345",
"default.handlebars->39->2165",
"default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
@@ -42169,7 +42180,7 @@
"zh-chs": "不能存取档案",
"zh-cht": "不能存取檔案",
"xloc": [
- "default-mobile.handlebars->11->666",
+ "default-mobile.handlebars->11->665",
"default.handlebars->39->2024",
"default.handlebars->39->2658"
]
@@ -42196,7 +42207,7 @@
"zh-chs": "没有档案",
"zh-cht": "沒有檔案",
"xloc": [
- "default-mobile.handlebars->11->689",
+ "default-mobile.handlebars->11->688",
"default.handlebars->39->1013",
"default.handlebars->39->2064",
"default.handlebars->39->2589",
@@ -42251,8 +42262,8 @@
"zh-chs": "没有英特尔®AMT",
"zh-cht": "沒有Intel® AMT",
"xloc": [
- "default-mobile.handlebars->11->667",
- "default-mobile.handlebars->11->690",
+ "default-mobile.handlebars->11->666",
+ "default-mobile.handlebars->11->689",
"default.handlebars->39->2025",
"default.handlebars->39->2065"
]
@@ -42556,8 +42567,8 @@
"zh-cht": "沒有權利",
"xloc": [
"default-mobile.handlebars->11->137",
- "default-mobile.handlebars->11->642",
- "default-mobile.handlebars->11->697",
+ "default-mobile.handlebars->11->641",
+ "default-mobile.handlebars->11->696",
"default.handlebars->39->1006",
"default.handlebars->39->1028",
"default.handlebars->39->1804",
@@ -42634,7 +42645,7 @@
"zh-chs": "没有终端",
"zh-cht": "沒有終端",
"xloc": [
- "default-mobile.handlebars->11->688",
+ "default-mobile.handlebars->11->687",
"default.handlebars->39->1012",
"default.handlebars->39->2063",
"default.handlebars->39->2588",
@@ -42663,7 +42674,7 @@
"zh-chs": "不能访问终端",
"zh-cht": "不能訪問終端",
"xloc": [
- "default-mobile.handlebars->11->665",
+ "default-mobile.handlebars->11->664",
"default.handlebars->39->2023",
"default.handlebars->39->2657"
]
@@ -42787,7 +42798,7 @@
"nl": "Geen apparaten doorgestuurd via agent",
"pl": "Brak przekierowanych urządzeń przez agenta",
"xloc": [
- "default-mobile.handlebars->11->625",
+ "default-mobile.handlebars->11->624",
"default.handlebars->39->1781",
"default.handlebars->39->1841"
]
@@ -43194,7 +43205,7 @@
"zh-chs": "没有此设备的讯息。",
"zh-cht": "沒有此裝置的訊息。",
"xloc": [
- "default-mobile.handlebars->11->602",
+ "default-mobile.handlebars->11->601",
"default.handlebars->39->1470"
]
},
@@ -43420,7 +43431,7 @@
"tr": "Bu kullanıcı için telefon numarası yok",
"zh-chs": "此用户没有电话号码",
"xloc": [
- "default-mobile.handlebars->11->740",
+ "default-mobile.handlebars->11->739",
"default.handlebars->39->2872"
]
},
@@ -43479,7 +43490,7 @@
"nl": "Geen relay apparaten beschikbaar.",
"pl": "Brak urządzeń do przekierowań.",
"xloc": [
- "default-mobile.handlebars->11->648",
+ "default-mobile.handlebars->11->647",
"default.handlebars->39->1973"
]
},
@@ -43596,7 +43607,7 @@
"tr": "Kullanıcı yönetimi hakları yok",
"zh-chs": "无用户管理权限",
"xloc": [
- "default-mobile.handlebars->11->738",
+ "default-mobile.handlebars->11->737",
"default.handlebars->39->2870"
]
},
@@ -43755,8 +43766,8 @@
"default-mobile.handlebars->11->277",
"default-mobile.handlebars->11->319",
"default-mobile.handlebars->11->429",
- "default-mobile.handlebars->11->478",
- "default-mobile.handlebars->11->630",
+ "default-mobile.handlebars->11->477",
+ "default-mobile.handlebars->11->629",
"default.handlebars->39->1238",
"default.handlebars->39->1835",
"default.handlebars->39->1846",
@@ -43962,7 +43973,7 @@
"zh-cht": "未啟動(輸入)",
"xloc": [
"default-mobile.handlebars->11->291",
- "default-mobile.handlebars->11->567",
+ "default-mobile.handlebars->11->566",
"default.handlebars->39->797"
]
},
@@ -43989,7 +44000,7 @@
"zh-cht": "未啟動(預)",
"xloc": [
"default-mobile.handlebars->11->290",
- "default-mobile.handlebars->11->566",
+ "default-mobile.handlebars->11->565",
"default.handlebars->39->796"
]
},
@@ -44041,7 +44052,7 @@
"zh-chs": "未知",
"zh-cht": "未知",
"xloc": [
- "default-mobile.handlebars->11->577",
+ "default-mobile.handlebars->11->576",
"default.handlebars->39->1445"
]
},
@@ -44169,7 +44180,7 @@
"xloc": [
"default-mobile.handlebars->11->332",
"default-mobile.handlebars->11->381",
- "default-mobile.handlebars->11->636",
+ "default-mobile.handlebars->11->635",
"default.handlebars->39->1000",
"default.handlebars->39->1022",
"default.handlebars->39->1032",
@@ -44496,10 +44507,10 @@
"zh-cht": "OK",
"xloc": [
"default-mobile.handlebars->11->114",
- "default-mobile.handlebars->11->518",
- "default-mobile.handlebars->11->522",
- "default-mobile.handlebars->11->526",
- "default-mobile.handlebars->11->532",
+ "default-mobile.handlebars->11->517",
+ "default-mobile.handlebars->11->521",
+ "default-mobile.handlebars->11->525",
+ "default-mobile.handlebars->11->531",
"default-mobile.handlebars->container->page_content->column_l->p10->p10dialog->5",
"default-mobile.handlebars->dialog->idx_dlgButtonBar",
"default.handlebars->39->1826",
@@ -44626,7 +44637,7 @@
"zh-chs": "发生在{0}",
"zh-cht": "發生在{0}",
"xloc": [
- "default-mobile.handlebars->11->706",
+ "default-mobile.handlebars->11->705",
"default.handlebars->39->2838"
]
},
@@ -44910,7 +44921,7 @@
"zh-chs": "只能编辑小于200k的档案。",
"zh-cht": "只能編輯小於200k的檔案。",
"xloc": [
- "default-mobile.handlebars->11->489",
+ "default-mobile.handlebars->11->488",
"default.handlebars->39->1353",
"default.handlebars->39->742",
"sharing.handlebars->11->67"
@@ -45267,7 +45278,7 @@
"zh-chs": "操作系统",
"zh-cht": "操作系統",
"xloc": [
- "default-mobile.handlebars->11->534",
+ "default-mobile.handlebars->11->533",
"default.handlebars->39->1166",
"default.handlebars->39->1392",
"default.handlebars->39->2789",
@@ -45459,7 +45470,7 @@
"zh-chs": "过时的",
"zh-cht": "過時的",
"xloc": [
- "default-mobile.handlebars->11->531",
+ "default-mobile.handlebars->11->530",
"default.handlebars->39->838"
]
},
@@ -45668,7 +45679,7 @@
"tr": "İTMEK",
"zh-chs": "推",
"xloc": [
- "default-mobile.handlebars->11->608",
+ "default-mobile.handlebars->11->607",
"default.handlebars->39->1477"
]
},
@@ -45768,7 +45779,7 @@
"zh-chs": "零件号",
"zh-cht": "零件號",
"xloc": [
- "default-mobile.handlebars->11->595",
+ "default-mobile.handlebars->11->594",
"default.handlebars->39->1463"
]
},
@@ -45864,7 +45875,7 @@
"zh-cht": "部分權限",
"xloc": [
"default-mobile.handlebars->11->135",
- "default-mobile.handlebars->11->640",
+ "default-mobile.handlebars->11->639",
"default.handlebars->39->1802"
]
},
@@ -45945,8 +45956,8 @@
"default-mobile.handlebars->11->462",
"default.handlebars->39->1124",
"default.handlebars->39->1205",
- "default.handlebars->39->1301",
- "default.handlebars->39->1308",
+ "default.handlebars->39->1302",
+ "default.handlebars->39->1309",
"default.handlebars->39->1794",
"default.handlebars->39->1947",
"default.handlebars->39->2446",
@@ -46102,7 +46113,7 @@
"tr": "Şifre değişti.",
"zh-chs": "密码已更改。",
"xloc": [
- "default-mobile.handlebars->11->734",
+ "default-mobile.handlebars->11->733",
"default.handlebars->39->2866"
]
},
@@ -46320,10 +46331,10 @@
"zh-cht": "糊",
"xloc": [
"default-mobile.handlebars->11->159",
- "default-mobile.handlebars->11->494",
+ "default-mobile.handlebars->11->493",
"default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->3",
"default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->3",
- "default.handlebars->39->1322",
+ "default.handlebars->39->1323",
"default.handlebars->39->1359",
"default.handlebars->39->2174",
"default.handlebars->container->column_l->p12->termTable->1->1->4->1->3",
@@ -46501,7 +46512,7 @@
"zh-chs": "执行代理指令",
"zh-cht": "執行代理指令",
"xloc": [
- "default-mobile.handlebars->11->611",
+ "default-mobile.handlebars->11->610",
"default.handlebars->39->1480"
]
},
@@ -46905,7 +46916,7 @@
"tr": "İzin reddedildi",
"zh-chs": "没有权限",
"xloc": [
- "default-mobile.handlebars->11->715",
+ "default-mobile.handlebars->11->714",
"default.handlebars->39->2847"
]
},
@@ -46931,7 +46942,7 @@
"zh-chs": "权限",
"zh-cht": "權限",
"xloc": [
- "default-mobile.handlebars->11->700",
+ "default-mobile.handlebars->11->699",
"default.handlebars->39->2077",
"default.handlebars->39->2371"
]
@@ -48591,7 +48602,7 @@
"zh-chs": "配置状态",
"zh-cht": "配置狀態",
"xloc": [
- "default-mobile.handlebars->11->571",
+ "default-mobile.handlebars->11->570",
"default.handlebars->39->1439"
]
},
@@ -49660,7 +49671,7 @@
"zh-cht": "遞迴刪除",
"xloc": [
"default-mobile.handlebars->11->152",
- "default-mobile.handlebars->11->482",
+ "default-mobile.handlebars->11->481",
"default.handlebars->39->1346",
"default.handlebars->39->2166",
"sharing.handlebars->11->60"
@@ -49850,8 +49861,8 @@
"tr": "Röle Cihazı",
"zh-chs": "中继装置",
"xloc": [
- "default-mobile.handlebars->11->633",
- "default-mobile.handlebars->11->649",
+ "default-mobile.handlebars->11->632",
+ "default-mobile.handlebars->11->648",
"default.handlebars->39->1787",
"default.handlebars->39->1849",
"default.handlebars->39->1974"
@@ -49999,7 +50010,7 @@
"xloc": [
"default-mobile.handlebars->11->456",
"default.handlebars->39->1206",
- "default.handlebars->39->1302",
+ "default.handlebars->39->1303",
"mstsc.handlebars->main->1->3->1->rowremember->3->0",
"ssh.handlebars->3->14"
]
@@ -50009,7 +50020,7 @@
"nl": "Onthoud wachtwoord",
"xloc": [
"default-mobile.handlebars->11->461",
- "default.handlebars->39->1307",
+ "default.handlebars->39->1308",
"ssh.handlebars->3->19"
]
},
@@ -50089,7 +50100,7 @@
"nl": "Onthoud gebruikeruser & sleutel",
"xloc": [
"default-mobile.handlebars->11->460",
- "default.handlebars->39->1306",
+ "default.handlebars->39->1307",
"ssh.handlebars->3->18"
]
},
@@ -50237,7 +50248,7 @@
"zh-chs": "远程命令",
"zh-cht": "遠程命令",
"xloc": [
- "default-mobile.handlebars->11->675",
+ "default-mobile.handlebars->11->674",
"default.handlebars->39->2033"
]
},
@@ -50265,8 +50276,8 @@
"xloc": [
"default-mobile.handlebars->11->337",
"default-mobile.handlebars->11->338",
- "default-mobile.handlebars->11->662",
- "default-mobile.handlebars->11->682",
+ "default-mobile.handlebars->11->661",
+ "default-mobile.handlebars->11->681",
"default.handlebars->39->2018",
"default.handlebars->39->2056",
"default.handlebars->39->904",
@@ -50772,7 +50783,7 @@
"zh-chs": "远程网格用户",
"zh-cht": "遠程網格用戶",
"xloc": [
- "default-mobile.handlebars->11->703"
+ "default-mobile.handlebars->11->702"
]
},
{
@@ -50955,8 +50966,8 @@
"zh-chs": "仅远程查看",
"zh-cht": "僅遠程查看",
"xloc": [
- "default-mobile.handlebars->11->663",
- "default-mobile.handlebars->11->687",
+ "default-mobile.handlebars->11->662",
+ "default-mobile.handlebars->11->686",
"default.handlebars->39->2019",
"default.handlebars->39->2061",
"default.handlebars->39->2656"
@@ -52143,7 +52154,7 @@
"zh-cht": "改名",
"xloc": [
"default-mobile.handlebars->11->156",
- "default-mobile.handlebars->11->486",
+ "default-mobile.handlebars->11->485",
"default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1",
"default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1",
"default.handlebars->39->1350",
@@ -52608,7 +52619,7 @@
"zh-chs": "重置/关闭电源",
"zh-cht": "重置/關閉電源",
"xloc": [
- "default-mobile.handlebars->11->676",
+ "default-mobile.handlebars->11->675",
"default.handlebars->39->2034"
]
},
@@ -52765,7 +52776,7 @@
"zh-chs": "重置/关闭",
"zh-cht": "重置/關閉",
"xloc": [
- "default-mobile.handlebars->11->696",
+ "default-mobile.handlebars->11->695",
"default.handlebars->39->1005",
"default.handlebars->39->1027",
"default.handlebars->39->2071"
@@ -53047,7 +53058,7 @@
"zh-cht": "根",
"xloc": [
"default-mobile.handlebars->11->138",
- "default-mobile.handlebars->11->475",
+ "default-mobile.handlebars->11->474",
"default.handlebars->39->1334",
"default.handlebars->39->2138",
"sharing.handlebars->11->49"
@@ -53641,6 +53652,13 @@
"default.handlebars->container->column_l->p11->7->p11scrolllock"
]
},
+ {
+ "en": "SFTP Connect",
+ "xloc": [
+ "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3",
+ "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3"
+ ]
+ },
{
"cs": "SMS",
"da": "SMS",
@@ -53718,7 +53736,7 @@
"tr": "SMS hatası",
"zh-chs": "短信错误",
"xloc": [
- "default-mobile.handlebars->11->742",
+ "default-mobile.handlebars->11->741",
"default.handlebars->39->2874"
]
},
@@ -53743,7 +53761,7 @@
"tr": "SMS hatası: {0}",
"zh-chs": "短信错误:{0}",
"xloc": [
- "default-mobile.handlebars->11->743",
+ "default-mobile.handlebars->11->742",
"default.handlebars->39->2875"
]
},
@@ -53788,7 +53806,7 @@
"tr": "SMS ağ geçidi etkinleştirilmedi",
"zh-chs": "短信网关未启用",
"xloc": [
- "default-mobile.handlebars->11->737",
+ "default-mobile.handlebars->11->736",
"default.handlebars->39->2869"
]
},
@@ -53870,7 +53888,7 @@
"tr": "SMS başarıyla gönderildi.",
"zh-chs": "短信发送成功。",
"xloc": [
- "default-mobile.handlebars->11->741",
+ "default-mobile.handlebars->11->740",
"default.handlebars->39->2873"
]
},
@@ -53919,6 +53937,13 @@
"default.handlebars->39->921"
]
},
+ {
+ "en": "SSH Connect",
+ "xloc": [
+ "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->connectbutton2sspan",
+ "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->connectbutton2sspan"
+ ]
+ },
{
"cs": "Připojení SSH",
"da": "SSH forbindelse",
@@ -53966,7 +53991,7 @@
"zh-chs": "SSH 端口 {0}",
"xloc": [
"default-mobile.handlebars->11->443",
- "default-mobile.handlebars->11->480",
+ "default-mobile.handlebars->11->479",
"default.handlebars->39->1289",
"default.handlebars->39->1344"
]
@@ -54727,7 +54752,7 @@
"zh-chs": "已使用TLS保安",
"zh-cht": "已使用TLS保安",
"xloc": [
- "default-mobile.handlebars->11->574",
+ "default-mobile.handlebars->11->573",
"default.handlebars->39->1442"
]
},
@@ -54754,7 +54779,7 @@
"zh-cht": "安全",
"xloc": [
"default-mobile.handlebars->11->388",
- "default-mobile.handlebars->11->573",
+ "default-mobile.handlebars->11->572",
"default.handlebars->39->1125",
"default.handlebars->39->1441",
"default.handlebars->39->2136",
@@ -54809,7 +54834,7 @@
"tr": "Güvenlik uyarısı",
"zh-chs": "安全警告",
"xloc": [
- "default-mobile.handlebars->11->711",
+ "default-mobile.handlebars->11->710",
"default.handlebars->39->2843"
]
},
@@ -55201,7 +55226,7 @@
"zh-chs": "仅自我事件",
"zh-cht": "僅自我事件",
"xloc": [
- "default-mobile.handlebars->11->692",
+ "default-mobile.handlebars->11->691",
"default.handlebars->39->2067"
]
},
@@ -55799,7 +55824,7 @@
"zh-chs": "序列号",
"zh-cht": "序列號",
"xloc": [
- "default-mobile.handlebars->11->585",
+ "default-mobile.handlebars->11->584",
"default.handlebars->39->1453"
]
},
@@ -55945,8 +55970,8 @@
"zh-chs": "服务器档案",
"zh-cht": "伺服器檔案",
"xloc": [
- "default-mobile.handlebars->11->669",
- "default-mobile.handlebars->11->684",
+ "default-mobile.handlebars->11->668",
+ "default-mobile.handlebars->11->683",
"default.handlebars->39->1020",
"default.handlebars->39->2027",
"default.handlebars->39->2058",
@@ -56000,7 +56025,7 @@
"tr": "Sunucu Sınırı",
"zh-chs": "服务器限制",
"xloc": [
- "default-mobile.handlebars->11->710",
+ "default-mobile.handlebars->11->709",
"default.handlebars->39->2842"
]
},
@@ -56704,8 +56729,8 @@
"zh-chs": "会话已过期",
"xloc": [
"default-mobile.handlebars->11->465",
- "default-mobile.handlebars->11->473",
- "default.handlebars->39->1312",
+ "default-mobile.handlebars->11->472",
+ "default.handlebars->39->1313",
"default.handlebars->39->1329"
]
},
@@ -56783,8 +56808,8 @@
"zh-chs": "会话超时",
"xloc": [
"default-mobile.handlebars->11->466",
- "default-mobile.handlebars->11->474",
- "default.handlebars->39->1313",
+ "default-mobile.handlebars->11->473",
+ "default.handlebars->39->1314",
"default.handlebars->39->1330"
]
},
@@ -57728,7 +57753,7 @@
"zh-chs": "只显示自己的事件",
"zh-cht": "只顯示自己的事件",
"xloc": [
- "default-mobile.handlebars->11->672",
+ "default-mobile.handlebars->11->671",
"default.handlebars->39->2030"
]
},
@@ -58772,7 +58797,7 @@
"zh-chs": "软断开代理",
"zh-cht": "軟斷開代理",
"xloc": [
- "default-mobile.handlebars->11->618",
+ "default-mobile.handlebars->11->617",
"default.handlebars->39->1487"
]
},
@@ -60444,7 +60469,7 @@
"zh-chs": "储存",
"zh-cht": "儲存",
"xloc": [
- "default-mobile.handlebars->11->601",
+ "default-mobile.handlebars->11->600",
"default.handlebars->39->1469"
]
},
@@ -60503,7 +60528,7 @@
"nl": "Opgeslagen sleutel",
"xloc": [
"default-mobile.handlebars->11->448",
- "default.handlebars->39->1294",
+ "default.handlebars->39->1295",
"ssh.handlebars->3->6"
]
},
@@ -61301,7 +61326,7 @@
"zh-chs": "未设置TLS",
"zh-cht": "未設置TLS",
"xloc": [
- "default-mobile.handlebars->11->575",
+ "default-mobile.handlebars->11->574",
"default.handlebars->39->1443"
]
},
@@ -62075,7 +62100,7 @@
"zh-chs": "目前没有任何通知",
"zh-cht": "目前沒有任何通知",
"xloc": [
- "default-mobile.handlebars->11->705",
+ "default-mobile.handlebars->11->704",
"default.handlebars->39->2837"
]
},
@@ -62100,7 +62125,7 @@
"tr": "Son girişten bu yana bu hesapta {0} başarısız giriş denemesi oldu.",
"zh-chs": "自上次登录以来,此帐户已有 {0} 次登录尝试失败。",
"xloc": [
- "default-mobile.handlebars->11->726",
+ "default-mobile.handlebars->11->725",
"default.handlebars->39->2858"
]
},
@@ -64265,7 +64290,7 @@
"zh-cht": "類型",
"xloc": [
"default-mobile.handlebars->11->129",
- "default-mobile.handlebars->11->631",
+ "default-mobile.handlebars->11->630",
"default.handlebars->39->1051",
"default.handlebars->39->1277",
"default.handlebars->39->1784",
@@ -64417,7 +64442,7 @@
"zh-chs": "UTF8终端",
"zh-cht": "UTF8終端",
"xloc": [
- "default.handlebars->39->1314",
+ "default.handlebars->39->1315",
"sharing.handlebars->11->33"
]
},
@@ -64616,7 +64641,7 @@
"tr": "Bu modda kullanıcı eklenemiyor",
"zh-chs": "无法在此模式下添加用户",
"xloc": [
- "default-mobile.handlebars->11->722",
+ "default-mobile.handlebars->11->721",
"default.handlebars->39->2854"
]
},
@@ -65043,7 +65068,7 @@
"zh-cht": "卸載",
"xloc": [
"agent-translations.json",
- "default-mobile.handlebars->11->694",
+ "default-mobile.handlebars->11->693",
"default.handlebars->39->1003",
"default.handlebars->39->1025",
"default.handlebars->39->2069"
@@ -65071,7 +65096,7 @@
"zh-chs": "卸载代理",
"zh-cht": "卸載代理",
"xloc": [
- "default-mobile.handlebars->11->674",
+ "default-mobile.handlebars->11->673",
"default.handlebars->39->1100",
"default.handlebars->39->638"
]
@@ -65152,10 +65177,10 @@
"default-mobile.handlebars->11->37",
"default-mobile.handlebars->11->44",
"default-mobile.handlebars->11->45",
- "default-mobile.handlebars->11->565",
- "default-mobile.handlebars->11->572",
+ "default-mobile.handlebars->11->564",
+ "default-mobile.handlebars->11->571",
"default-mobile.handlebars->11->6",
- "default-mobile.handlebars->11->632",
+ "default-mobile.handlebars->11->631",
"default.handlebars->39->13",
"default.handlebars->39->1433",
"default.handlebars->39->1440",
@@ -65204,7 +65229,7 @@
"zh-chs": "未知#{0}",
"zh-cht": "未知#{0}",
"xloc": [
- "default-mobile.handlebars->11->621",
+ "default-mobile.handlebars->11->620",
"default.handlebars->39->1837"
]
},
@@ -65637,8 +65662,8 @@
"zh-cht": "更新資料",
"xloc": [
"agent-translations.json",
- "default-mobile.handlebars->11->521",
- "default-mobile.handlebars->11->523",
+ "default-mobile.handlebars->11->520",
+ "default-mobile.handlebars->11->522",
"default.handlebars->39->828",
"default.handlebars->39->830"
]
@@ -65717,9 +65742,9 @@
"zh-cht": "上載檔案",
"xloc": [
"default-mobile.handlebars->11->157",
- "default-mobile.handlebars->11->487",
- "default-mobile.handlebars->11->505",
- "default-mobile.handlebars->11->508",
+ "default-mobile.handlebars->11->486",
+ "default-mobile.handlebars->11->504",
+ "default-mobile.handlebars->11->507",
"default.handlebars->39->1351",
"default.handlebars->39->1377",
"default.handlebars->39->1380",
@@ -65753,7 +65778,7 @@
"zh-chs": "上载网格代理核心",
"zh-cht": "上載mesh agent核心",
"xloc": [
- "default-mobile.handlebars->11->620",
+ "default-mobile.handlebars->11->619",
"default.handlebars->39->1489"
]
},
@@ -65779,7 +65804,7 @@
"zh-chs": "上载核心档案",
"zh-cht": "上載核心檔案",
"xloc": [
- "default-mobile.handlebars->11->617",
+ "default-mobile.handlebars->11->616",
"default.handlebars->39->1486"
]
},
@@ -65805,7 +65830,7 @@
"zh-chs": "上载默认服务器核心",
"zh-cht": "上載默認伺服器核心",
"xloc": [
- "default-mobile.handlebars->11->613",
+ "default-mobile.handlebars->11->612",
"default.handlebars->39->1482",
"default.handlebars->39->650",
"default.handlebars->39->694"
@@ -65907,7 +65932,7 @@
"zh-chs": "上传恢复核心",
"zh-cht": "上傳恢復核心",
"xloc": [
- "default-mobile.handlebars->11->615",
+ "default-mobile.handlebars->11->614",
"default.handlebars->39->1484"
]
},
@@ -65957,7 +65982,7 @@
"tr": "Küçük çekirdek yükleyin",
"zh-chs": "上传小核",
"xloc": [
- "default-mobile.handlebars->11->616",
+ "default-mobile.handlebars->11->615",
"default.handlebars->39->1485"
]
},
@@ -65983,7 +66008,7 @@
"zh-chs": "上传将覆盖1个档案。继续?",
"zh-cht": "上傳將覆蓋1個檔案。繼續?",
"xloc": [
- "default-mobile.handlebars->11->506",
+ "default-mobile.handlebars->11->505",
"default.handlebars->39->1378",
"default.handlebars->39->2180",
"sharing.handlebars->11->90"
@@ -66011,7 +66036,7 @@
"zh-chs": "上传将覆盖{0}个档案。继续?",
"zh-cht": "上傳將覆蓋{0}個檔案。繼續?",
"xloc": [
- "default-mobile.handlebars->11->507",
+ "default-mobile.handlebars->11->506",
"default.handlebars->39->1379",
"default.handlebars->39->2181",
"sharing.handlebars->11->91"
@@ -66499,7 +66524,7 @@
"zh-chs": "用户授权",
"zh-cht": "用戶授權",
"xloc": [
- "default-mobile.handlebars->11->639",
+ "default-mobile.handlebars->11->638",
"default.handlebars->39->1903",
"default.handlebars->39->950"
]
@@ -66636,7 +66661,7 @@
"zh-chs": "用户识别码",
"zh-cht": "用戶識別碼",
"xloc": [
- "default-mobile.handlebars->11->699"
+ "default-mobile.handlebars->11->698"
]
},
{
@@ -66773,7 +66798,7 @@
"zh-chs": "用户名",
"zh-cht": "用戶名",
"xloc": [
- "default-mobile.handlebars->11->698",
+ "default-mobile.handlebars->11->697",
"default.handlebars->39->2075"
]
},
@@ -67042,7 +67067,7 @@
"tr": "Kullanıcı zaten var",
"zh-chs": "用户已存在",
"xloc": [
- "default-mobile.handlebars->11->721",
+ "default-mobile.handlebars->11->720",
"default.handlebars->39->2853"
]
},
@@ -67266,7 +67291,7 @@
"tr": "{0} kullanıcısı bulunamadı.",
"zh-chs": "未找到用户 {0}。",
"xloc": [
- "default-mobile.handlebars->11->729",
+ "default-mobile.handlebars->11->728",
"default.handlebars->39->2861"
]
},
@@ -67319,10 +67344,10 @@
"xloc": [
"default-mobile.handlebars->11->386",
"default-mobile.handlebars->11->454",
- "default-mobile.handlebars->11->635",
+ "default-mobile.handlebars->11->634",
"default.handlebars->39->1123",
"default.handlebars->39->1204",
- "default.handlebars->39->1300",
+ "default.handlebars->39->1301",
"default.handlebars->39->1793",
"default.handlebars->39->1808",
"default.handlebars->39->1813",
@@ -67361,8 +67386,8 @@
"xloc": [
"default-mobile.handlebars->11->449",
"default-mobile.handlebars->11->452",
- "default.handlebars->39->1295",
- "default.handlebars->39->1298",
+ "default.handlebars->39->1296",
+ "default.handlebars->39->1299",
"ssh.handlebars->3->10",
"ssh.handlebars->3->7"
]
@@ -67417,8 +67442,8 @@
"xloc": [
"default-mobile.handlebars->11->450",
"default-mobile.handlebars->11->453",
- "default.handlebars->39->1296",
- "default.handlebars->39->1299",
+ "default.handlebars->39->1297",
+ "default.handlebars->39->1300",
"ssh.handlebars->3->11",
"ssh.handlebars->3->8"
]
@@ -67551,7 +67576,7 @@
"tr": "{0} kullanıcıları bulunamadı.",
"zh-chs": "未找到用户 {0}。",
"xloc": [
- "default-mobile.handlebars->11->730",
+ "default-mobile.handlebars->11->729",
"default.handlebars->39->2862"
]
},
@@ -67625,7 +67650,7 @@
"zh-chs": "VT100 +(F10 = ESC + [OY)",
"zh-cht": "VT100 +(F10 = ESC + [OY)",
"xloc": [
- "default.handlebars->39->1319",
+ "default.handlebars->39->1320",
"sharing.handlebars->11->38"
]
},
@@ -67700,7 +67725,7 @@
"tr": "Doğrulama istisnası",
"zh-chs": "验证异常",
"xloc": [
- "default-mobile.handlebars->11->723",
+ "default-mobile.handlebars->11->722",
"default.handlebars->39->2855"
]
},
@@ -67800,8 +67825,8 @@
"zh-chs": "供应商",
"zh-cht": "供應商",
"xloc": [
- "default-mobile.handlebars->11->580",
- "default-mobile.handlebars->11->583",
+ "default-mobile.handlebars->11->579",
+ "default-mobile.handlebars->11->582",
"default.handlebars->39->1448",
"default.handlebars->39->1451"
]
@@ -68008,10 +68033,10 @@
"zh-chs": "版本",
"zh-cht": "版",
"xloc": [
- "default-mobile.handlebars->11->511",
- "default-mobile.handlebars->11->564",
- "default-mobile.handlebars->11->581",
- "default-mobile.handlebars->11->586",
+ "default-mobile.handlebars->11->510",
+ "default-mobile.handlebars->11->563",
+ "default-mobile.handlebars->11->580",
+ "default-mobile.handlebars->11->585",
"default.handlebars->39->1386",
"default.handlebars->39->1432",
"default.handlebars->39->1449",
@@ -68671,8 +68696,8 @@
"zh-chs": "唤醒设备",
"zh-cht": "喚醒裝置",
"xloc": [
- "default-mobile.handlebars->11->670",
- "default-mobile.handlebars->11->685",
+ "default-mobile.handlebars->11->669",
+ "default-mobile.handlebars->11->684",
"default.handlebars->39->2028",
"default.handlebars->39->2059"
]
@@ -70153,7 +70178,7 @@
"tr": "Windows Güvenliği",
"zh-chs": "视窗安全",
"xloc": [
- "default-mobile.handlebars->11->529",
+ "default-mobile.handlebars->11->528",
"default.handlebars->39->836"
]
},
@@ -71639,7 +71664,7 @@
"zh-chs": "console.txt",
"zh-cht": "console.txt",
"xloc": [
- "default-mobile.handlebars->11->610",
+ "default-mobile.handlebars->11->609",
"default.handlebars->39->1479"
]
},
@@ -73547,8 +73572,8 @@
"zh-chs": "{0}",
"zh-cht": "{0}",
"xloc": [
- "default-mobile.handlebars->11->558",
- "default-mobile.handlebars->11->562"
+ "default-mobile.handlebars->11->557",
+ "default-mobile.handlebars->11->561"
]
},
{
@@ -73777,8 +73802,8 @@
"zh-chs": "{0} Mb",
"zh-cht": "{0} Mb",
"xloc": [
- "default-mobile.handlebars->11->594",
- "default-mobile.handlebars->11->599",
+ "default-mobile.handlebars->11->593",
+ "default-mobile.handlebars->11->598",
"default.handlebars->39->1462",
"default.handlebars->39->1467",
"default.handlebars->39->2150",
@@ -73807,7 +73832,7 @@
"zh-chs": "{0} Mb,{1} Mhz",
"zh-cht": "{0} Mb,{1} Mhz",
"xloc": [
- "default-mobile.handlebars->11->592",
+ "default-mobile.handlebars->11->591",
"default.handlebars->39->1460"
]
},
@@ -74907,8 +74932,8 @@
"tr": "{0}, Maske: {1}, Ağ Geçidi: {2}",
"zh-chs": "{0},掩码:{1},网关:{2}",
"xloc": [
- "default-mobile.handlebars->11->556",
- "default-mobile.handlebars->11->560"
+ "default-mobile.handlebars->11->555",
+ "default-mobile.handlebars->11->559"
]
},
{
diff --git a/views/default-mobile.handlebars b/views/default-mobile.handlebars
index 6efdf0eb..8e480ac4 100644
--- a/views/default-mobile.handlebars
+++ b/views/default-mobile.handlebars
@@ -919,7 +919,8 @@
-
+
+
Disconnected
@@ -951,7 +952,9 @@
-
+
+
+
Disconnected
@@ -4683,15 +4686,17 @@
// Show the right buttons
QV('disconnectbutton2span', (termState == true));
- QV('connectbutton2span', (termState == false) && (currentNode.agent != null) && (currentNode.agent.caps & 2));
+ QV('connectbutton2span', (termState == false) && (terminalNode.agent != null) && (terminalNode.agent.caps & 2) && (terminalNode.mtype != 3));
+ QV('connectbutton2sspan', (termState == false) && (terminalNode.agent != null) && (terminalNode.agent.caps & 2) && (terminalNode.agent.id != 3) && (terminalNode.agent.id != 4));
// Enable buttons
var online = ((terminalNode.conn & 1) != 0) || (terminalNode.mtype == 3); // If Agent (1) connected, enable Terminal
QE('connectbutton2', online);
+ QE('connectbutton2s', online);
// Enable action button if mesh type is not "local devices"
QV('termActionsBtn', terminalNode.mtype != 3);
- if (terminalNode.mtype != 3) {
+ if (((termState == true) && (terminal.contype != 3)) || (terminalNode.agent.id == 3) || (terminalNode.agent.id == 4)) {
QH('terminalCustomUpperRight', '');
} else {
QH('terminalCustomUpperRight', '' + format("SSH Port {0}", (terminalNode.sshport ? terminalNode.sshport : 22)) + '');
@@ -4975,8 +4980,8 @@
document.getElementsByClassName('xterm-viewport')[0].style.overflow = 'hidden';
// Setup a terminal tunnel to the agent
- terminal = CreateAgentRedirect(meshserver, CreateRemoteTunnel((currentNode.mtype == 3) ? sshTunnelUpdate : tunnelUpdate, termoptions), serverPublicNamePort, authCookie, authRelayCookie, domainUrl);
- if (currentNode.mtype == 3) { terminal.urlname = 'sshterminalrelay.ashx'; } // If this is a SSH session, change the URL to the SSH application relay.
+ terminal = CreateAgentRedirect(meshserver, CreateRemoteTunnel((contype == 3) ? sshTunnelUpdate : tunnelUpdate, termoptions), serverPublicNamePort, authCookie, authRelayCookie, domainUrl);
+ if (contype == 3) { terminal.urlname = 'sshterminalrelay.ashx'; } // If this is a SSH session, change the URL to the SSH application relay.
terminal.debugmode = debugmode;
terminal.m.debugmode = debugmode;
terminal.options = termoptions;
@@ -4984,7 +4989,7 @@
if (termoptions.requireLogin) { terminal.options.requireLogin = true; }
terminal.Start(terminalNode._id);
terminal.onStateChanged = onTerminalStateChange;
- terminal.contype = 1;
+ terminal.contype = contype;
terminal.attemptWebRTC = false; // Never do WebRTC on terminal, because of a race condition we can't do it.
terminal.onConsoleMessageChange = function () { p12setConsoleMsg(terminal.consoleMessage ? formatAgentConsoleMessage(terminal.consoleMessage, terminal.consoleMessageId, terminal.consoleMessageArgs) : null, terminal.consoleMessageTimeout); }
} else {
@@ -5028,15 +5033,24 @@
filesNode = currentNode;
var online = ((filesNode.conn & 1) != 0) || (filesNode.mtype == 3); // If Agent (1) connected, enable Terminal
QE('p13Connect', online);
+ QE('p13Connects', online);
+ QV('p13Connect', (files == null) && (filesNode.mtype == 2));
+ QV('p13Connects', (files == null) && (filesNode.agent != null) && (filesNode.agent.id != 3) && (filesNode.agent.id != 4));
+ QV('p13Disconnect', files != null);
if (((samenode == false) || (online == false)) && files) { files.Stop(); files = null; }
p13setActions();
}
function onFilesStateChange(xfiles, state) {
setSessionActivity();
- p13Connect.value = (state == 0) ? "Connect" : "Disconnect";
+ QV('p13Connect', (state == 0) && (filesNode.mtype == 2));
+ QV('p13Connects', (state == 0) && (filesNode.agent != null) && (filesNode.agent.id != 3) && (filesNode.agent.id != 4));
+ QV('p13Disconnect', state != 0);
var str = StatusStrs[state];
- if (files.webRtcActive == true) { str += ", WebRTC"; }
+ if (state == 3) {
+ if (files.contype == 2) { str += ", SFTP"; }
+ if (files.webRtcActive == true) { str += ", WebRTC"; }
+ }
Q('p13Status').textContent = str;
switch (state) {
case 0:
@@ -5080,12 +5094,13 @@
var autoConnectFilesTimer = null;
function autoConnectFiles(e) { if (autoConnectFilesTimer == null) { autoConnectFilesTimer = setInterval(connectFiles, 100); } else { clearInterval(autoConnectFilesTimer); autoConnectFilesTimer = null; } }
- function connectFiles(e) {
+ function connectFiles(e, contype) {
p13clearConsoleMsg();
if (!files) {
// Setup a mesh agent files
files = CreateAgentRedirect(meshserver, CreateRemoteFiles(p13gotFiles), serverPublicNamePort, authCookie, authRelayCookie, domainUrl);
- if (filesNode.mtype == 3) { files.urlname = 'sshfilesrelay.ashx'; } // If this is a SSH session, change the URL to the SSH application relay.
+ if (contype == 2) { files.urlname = 'sshfilesrelay.ashx'; } // If this is a SSH session, change the URL to the SSH application relay.
+ files.contype = contype;
files.attemptWebRTC = attemptWebRTC;
files.onStateChanged = onFilesStateChange;
files.onConsoleMessageChange = function () {
@@ -5304,7 +5319,8 @@
QE('p13CopyButton', advancedFeatures && (cc > 0) && (cc == sfc) && (currentNode.mtype != 3) && ((p13filetreelocation.length > 0) || (winAgent == false)));
QE('p13PasteButton', advancedFeatures && (currentNode.mtype != 3) && ((p13filetreelocation.length > 0) || (winAgent == false)) && ((p13clipboard != null) && (p13clipboard.length > 0)));
}
- if (filesNode.mtype != 3) {
+ var filesState = ((files != null) && (files.state != 0));
+ if (((filesState == true) && (files.contype != 2)) || (filesNode.agent.id == 3) || (filesNode.agent.id == 4)) {
QH('filesCustomUpperRight', '');
} else {
QH('filesCustomUpperRight', '' + format("SSH Port {0}", (filesNode.sshport ? filesNode.sshport : 22)) + '');
diff --git a/views/default.handlebars b/views/default.handlebars
index 734bab46..b62b6083 100644
--- a/views/default.handlebars
+++ b/views/default.handlebars
@@ -743,7 +743,7 @@
-
+
Disconnected
@@ -801,7 +801,9 @@
-
+
+
+
Disconnected
@@ -2722,7 +2724,6 @@
if (message.localport) { url += '&localport=' + message.localport; }
if (message.ip != null) { url += ('&remoteip=' + message.ip); }
url += ('&appid=' + message.protocol + '&autoexit=1'); // Protocol: 0 = Custom, 1 = HTTP, 2 = HTTPS, 3 = RDP, 4 = PuTTY, 5 = WinSCP, 6 = MCRDesktop, 7 = MCRFiles
- console.log(url);
downloadFile(url, '');
} else if (message.tag == 'novnc') {
var vncurl = window.location.origin + domainUrl + 'novnc/vnc.html?ws=wss%3A%2F%2F' + window.location.host + encodeURIComponentEx(domainUrl) + (message.localRelay?'local':'mesh') + 'relay.ashx%3Fauth%3D' + message.cookie + '&show_dot=1' + (urlargs.key?('&key=' + urlargs.key):'') + '&l={{{lang}}}';
@@ -7565,7 +7566,7 @@
if ((navigator.clipboard != null) && (navigator.clipboard.readText != null)) {
try {
navigator.clipboard.readText().then(function(text) {
- meshserver.send({ action: 'msg', type: 'setclip', nodeid: currentNode._id, data: text });
+ if (desktop.m.setClipboard) { desktop.m.setClipboard(text); } else { meshserver.send({ action: 'msg', type: 'setclip', nodeid: currentNode._id, data: text }); }
}).catch(function(err) { console.log(err); });
} catch (ex) { console.log(ex); }
}
@@ -8331,7 +8332,8 @@
var hwonline = ((currentNode.conn & 6) != 0); // If CIRA (2) or AMT (4) connected, enable hardware terminal
QE('connectbutton1h', hwonline);
QV('deskFocusBtn', (desktop != null) && (desktop.contype == 2) && (deskState != 0) && (desktopsettings.showfocus));
- QE('DeskClip', (deskState == 3) && (desktop.contype != 4));
+ QE('DeskClip', deskState == 3);
+ //QE('DeskClip', (deskState == 3) && (desktop.contype != 4));
QV('DeskClip', (inputAllowed) && (currentNode.agent) && ((features2 & 0x1800) != 0x1800) && (currentNode.agent.id != 11) && (currentNode.agent.id != 16) && ((desktop == null) || (desktop.contype != 2)) && ((desktopsettings.autoclipboard != true) || (navigator.clipboard == null) || (navigator.clipboard.readText == null))); // Clipboard not supported on macOS
QE('DeskESC', (deskState == 3) && (desktop.contype != 4));
QV('DeskESC', browserfullscreen && inputAllowed);
@@ -8736,7 +8738,7 @@
try {
navigator.clipboard.readText().then(function(text) {
if ((text != null) && (deskLastClipboardSent != text)) {
- meshserver.send({ action: 'msg', type: 'setclip', nodeid: currentNode._id, data: text });
+ if (desktop.m.setClipboard) { desktop.m.setClipboard(text); } else { meshserver.send({ action: 'msg', type: 'setclip', nodeid: currentNode._id, data: text }); }
deskLastClipboardSent = text;
}
}).catch(function(err) { });
@@ -9322,8 +9324,12 @@
function showDeskClipSet() {
if (desktop == null || desktop.State != 3) return;
- meshserver.send({ action: 'msg', type: 'setclip', nodeid: currentNode._id, data: Q('d2clipText').value });
- QV('linuxClipWarn', currentNode && currentNode.agent && (currentNode.agent.id > 4) && (currentNode.agent.id != 21) && (currentNode.agent.id != 22) && (currentNode.agent.id != 34));
+ if (desktop.m.setClipboard) {
+ desktop.m.setClipboard(Q('d2clipText').value);
+ } else {
+ meshserver.send({ action: 'msg', type: 'setclip', nodeid: currentNode._id, data: Q('d2clipText').value });
+ QV('linuxClipWarn', currentNode && currentNode.agent && (currentNode.agent.id > 4) && (currentNode.agent.id != 21) && (currentNode.agent.id != 22) && (currentNode.agent.id != 34));
+ }
}
// Send CTRL-ALT-DEL
@@ -9557,7 +9563,8 @@
// Show the right buttons
QV('disconnectbutton2span', (termState == true));
- QV('connectbutton2span', (termState == false) && (terminalNode.agent != null) && (terminalNode.agent.caps & 2));
+ QV('connectbutton2span', (termState == false) && (terminalNode.agent != null) && (terminalNode.agent.caps & 2) && (terminalNode.mtype != 3));
+ QV('connectbutton2sspan', (termState == false) && (terminalNode.agent != null) && (terminalNode.agent.caps & 2) && (terminalNode.agent.id != 3) && (terminalNode.agent.id != 4));
if (terminalNode.mtype == 1) {
QV('connectbutton2hspan', (termState == false) && (terminalNode.intelamt != null) && (terminalNode.intelamt.state == 2));
QV('terminalSizeDropDown', (termState == false) && (terminalNode.intelamt != null) && (terminalNode.intelamt.state == 2));
@@ -9568,7 +9575,7 @@
// Enable action button if mesh type is not "local devices"
QV('termActionsBtn', terminalNode.mtype != 3);
- if (terminalNode.mtype != 3) {
+ if (((termState == true) && (terminal.contype != 3)) || (terminalNode.agent.id == 3) || (terminalNode.agent.id == 4)) {
QH('terminalCustomUpperRight', '');
} else {
QH('terminalCustomUpperRight', '' + format("SSH Port {0}", (terminalNode.sshport?terminalNode.sshport:22)) + '');
@@ -9577,6 +9584,7 @@
// Enable buttons
var online = ((terminalNode.conn & 1) != 0) || (terminalNode.mtype == 3); // If Agent (1) connected, enable Terminal
QE('connectbutton2', online);
+ QE('connectbutton2s', online);
var hwonline = ((terminalNode.conn & 6) != 0); // If CIRA (2) or AMT (4) connected, enable hardware terminal
QE('connectbutton2h', hwonline);
@@ -9612,7 +9620,10 @@
var xstate = state;
if ((xstate == 3) && (xterminal.contype == 2)) { xstate++; }
var str = StatusStrs[xstate];
- if (terminal.webRtcActive == true) { str += ", WebRTC"; }
+ if (xstate == 3) {
+ if (terminal.contype == 3) { str += ", SSH"; }
+ if (terminal.webRtcActive == true) { str += ", WebRTC"; }
+ }
QH('termstatus', str);
switch (state) {
case 0:
@@ -9777,6 +9788,7 @@
}
}
+ // contype: 1 = Agent, 2 = AMT, 3 = SSH
function connectTerminal(e, contype, options) {
p12clearConsoleMsg();
if (!terminal) {
@@ -9853,8 +9865,8 @@
});
// Setup a terminal tunnel to the agent
- terminal = CreateAgentRedirect(meshserver, CreateRemoteTunnel((currentNode.mtype == 3)? sshTunnelUpdate : tunnelUpdate, termoptions), serverPublicNamePort, authCookie, authRelayCookie, domainUrl);
- if (currentNode.mtype == 3) { terminal.urlname = 'sshterminalrelay.ashx'; } // If this is a SSH session, change the URL to the SSH application relay.
+ terminal = CreateAgentRedirect(meshserver, CreateRemoteTunnel((contype == 3)? sshTunnelUpdate : tunnelUpdate, termoptions), serverPublicNamePort, authCookie, authRelayCookie, domainUrl);
+ if (contype == 3) { terminal.urlname = 'sshterminalrelay.ashx'; } // If this is a SSH session, change the URL to the SSH application relay.
terminal.debugmode = debugmode;
terminal.m.debugmode = debugmode;
terminal.options = termoptions;
@@ -9862,7 +9874,7 @@
if (termoptions.requireLogin) { terminal.options.requireLogin = true; }
terminal.Start(terminalNode._id);
terminal.onStateChanged = onTerminalStateChange;
- terminal.contype = 1;
+ terminal.contype = contype;
terminal.attemptWebRTC = false; // Never do WebRTC on terminal, because of a race condition we can't do it.
terminal.onConsoleMessageChange = function () { p12setConsoleMsg(terminal.consoleMessage ? formatAgentConsoleMessage(terminal.consoleMessage, terminal.consoleMessageId, terminal.consoleMessageArgs) : null, terminal.consoleMessageTimeout); }
} else {
@@ -9880,7 +9892,7 @@
terminal.onStateChanged = onTerminalStateChange;
terminal.onConsoleMessageChange = function () { p12setConsoleMsg(terminal.consoleMessage ? formatAgentConsoleMessage(terminal.consoleMessage, terminal.consoleMessageId, terminal.consoleMessageArgs) : null, terminal.consoleMessageTimeout); }
terminal.Start(terminalNode._id);
- terminal.contype = 1;
+ terminal.contype = contype;
terminal.m.terminalEmulation = 0;
terminal.m.fxEmulation = 0;
Q('id_ttypebutton').value = terminalEmulations[0];
@@ -9980,14 +9992,23 @@
filesNode = currentNode;
var online = ((filesNode.conn & 1) != 0) || (filesNode.mtype == 3); // If Agent (1) connected, enable Terminal
QE('p13Connect', online);
+ QE('p13Connects', online);
+ QV('p13Connect', (files == null) && (filesNode.mtype == 2));
+ QV('p13Connects', (files == null) && (filesNode.agent != null) && (filesNode.agent.id != 3) && (filesNode.agent.id != 4));
+ QV('p13Disconnect', files != null);
if (((samenode == false) || (online == false)) && files) { files.Stop(); files = null; }
p13setActions();
}
function onFilesStateChange(xfiles, state) {
- p13Connect.value = (state == 0) ? "Connect" : "Disconnect";
+ QV('p13Connect', (state == 0) && (files == null) && (filesNode.mtype == 2));
+ QV('p13Connects', (state == 0) && (files == null) && (filesNode.agent != null) && (filesNode.agent.id != 3) && (filesNode.agent.id != 4));
+ QV('p13Disconnect', state != 0);
var str = StatusStrs[state];
- if (files.webRtcActive == true) { str += ", WebRTC"; }
+ if (state == 3) {
+ if (files.contype == 2) { str += ", SFTP"; }
+ if (files.webRtcActive == true) { str += ", WebRTC"; }
+ }
Q('p13Status').textContent = str;
switch (state) {
case 0:
@@ -10033,12 +10054,14 @@
var autoConnectFilesTimer = null;
function autoConnectFiles(e) { if (autoConnectFilesTimer == null) { autoConnectFilesTimer = setInterval(connectFiles, 100); } else { clearInterval(autoConnectFilesTimer); autoConnectFilesTimer = null; } }
- function connectFiles(e) {
+ // 1 = Agent, 2 = SFTP
+ function connectFiles(e, contype) {
p13clearConsoleMsg();
if (!files) {
// Setup a mesh agent files
files = CreateAgentRedirect(meshserver, CreateRemoteFiles(p13gotFiles), serverPublicNamePort, authCookie, authRelayCookie, domainUrl);
- if (filesNode.mtype == 3) { files.urlname = 'sshfilesrelay.ashx'; } // If this is a SSH session, change the URL to the SSH application relay.
+ if (contype == 2) { files.urlname = 'sshfilesrelay.ashx'; } // If this is a SSH session, change the URL to the SSH application relay.
+ files.contype = contype;
files.attemptWebRTC = attemptWebRTC;
files.onStateChanged = onFilesStateChange;
files.onConsoleMessageChange = function () {
@@ -10340,7 +10363,8 @@
QE('p13ZipButton', advancedFeatures && (cc > 0) && ((p13filetreelocation.length > 0) || (winAgent == false)));
QE('p13PasteButton', advancedFeatures && ((p13filetreelocation.length > 0) || (winAgent == false)) && ((p13clipboard != null) && (p13clipboard.length > 0)));
}
- if (filesNode.mtype != 3) {
+ var filesState = ((files != null) && (files.state != 0));
+ if (((filesState == true) && (files.contype != 2)) || (filesNode.agent.id == 3) || (filesNode.agent.id == 4)) {
QH('filesCustomUpperRight', '');
} else {
QH('filesCustomUpperRight', '' + format("SSH Port {0}", (filesNode.sshport?filesNode.sshport:22)) + '');