Started work on web-based SSH support.
Ylian Saint-Hilaire committed
Apr 28, 2021 at 23:22 UTC
110195d8c6023c8d051c4b402836850e98013cef
9 files changed
+2151
-1701
MeshCentralServer.njsproj
+3
@@ -178,6 +178,7 @@
178
<Compile Include="public\novnc\vendor\promise.js" />
179
<Compile Include="public\scripts\agent-redir-rtc-0.1.0.js" />
180
<Compile Include="public\serviceworker.js" />
181
+ <Compile Include="ssh.js" />
182
<Compile Include="swarmserver.js" />
183
<Compile Include="multiserver.js" />
184
<Compile Include="pass.js" />
@@ -570,6 +571,8 @@
571
<Content Include="views\messenger.handlebars" />
572
<Content Include="views\mstsc.handlebars" />
573
<Content Include="views\player.handlebars" />
574
+ <Content Include="views\sharing.handlebars" />
575
+ <Content Include="views\ssh.handlebars" />
576
<Content Include="views\terminal.handlebars" />
577
<Content Include="views\terms-mobile.handlebars" />
578
<Content Include="views\terms.handlebars" />
meshcentral.js
+3
@@ -3092,6 +3092,7 @@ function mainStart() {
3092
var allsspi = true;
3093
var yubikey = false;
3094
var mstsc = false;
3095
+ var ssh = false;
3096
var sessionRecording = false;
3097
var domainCount = 0;
3098
var wildleek = false;
@@ -3106,6 +3107,7 @@ function mainStart() {
3107
if (config.domains[i].yubikey != null) { yubikey = true; }
3108
if (config.domains[i].auth == 'ldap') { ldap = true; }
3109
if (config.domains[i].mstsc === true) { mstsc = true; }
3110
+ if (config.domains[i].ssh === true) { ssh = true; }
3111
if ((typeof config.domains[i].authstrategies == 'object')) {
3112
if (passport == null) { passport = ['passport']; }
3113
if ((typeof config.domains[i].authstrategies.twitter == 'object') && (typeof config.domains[i].authstrategies.twitter.clientid == 'string') && (typeof config.domains[i].authstrategies.twitter.clientsecret == 'string') && (passport.indexOf('passport-twitter') == -1)) { passport.push('passport-twitter'); }
@@ -3124,6 +3126,7 @@ function mainStart() {
3126
if (require('os').platform() == 'win32') { modules.push('node-windows'); modules.push('loadavg-windows'); if (sspi == true) { modules.push('node-sspi'); } } // Add Windows modules
3127
if (ldap == true) { modules.push('ldapauth-fork'); }
3128
if (mstsc == true) { modules.push('node-rdpjs-2'); }
3129
+ if (ssh == true) { modules.push('ssh2'); }
3130
if (passport != null) { modules.push(...passport); }
3131
if (sessionRecording == true) { modules.push('image-size'); } // Need to get the remote desktop JPEG sizes to index the recodring file.
3132
if (config.letsencrypt != null) { if (nodeVersion < 8) { addServerWarning("Let's Encrypt support requires Node v8.x or higher.", !args.launch); } else { modules.push('acme-client'); } } // Add acme-client module
public/scripts/agent-desktop-0.0.2-min.js
+1
-1
@@ -1 +1 @@
1
-Uint8Array.prototype.slice||Object.defineProperty(Uint8Array.prototype,"slice",{value:function(e,t){return new Uint8Array(Array.prototype.slice.call(this,e,t))}});var CreateAgentRemoteDesktop=function(e,t){var l={};"string"==typeof(l.CanvasId=e)&&(l.CanvasId=Q(e)),l.Canvas=l.CanvasId.getContext("2d"),l.scrolldiv=t,l.State=0,l.PendingOperations=[],l.tilesReceived=0,l.TilesDrawn=0,l.KillDraw=0,l.ipad=!1,l.tabletKeyboardVisible=!1,l.LastX=0,l.LastY=0,l.touchenabled=0,l.submenuoffset=0,l.touchtimer=null,l.TouchArray={},l.connectmode=0,l.connectioncount=0,l.rotation=0,l.protocol=2,l.debugmode=0,l.firstUpKeys=[],l.stopInput=!1,l.localKeyMap=!0,l.remoteKeyMap=!1,l.pressedKeys=[],l.sessionid=0,l.username,l.oldie=!1,l.CompressionLevel=50,l.ScalingLevel=1024,l.FrameRateTimer=100,l.SwapMouse=!1,l.FirstDraw=!1,l.onRemoteInputLockChanged=null,l.RemoteInputLock=null,l.ScreenWidth=960,l.ScreenHeight=701,l.width=960,l.height=960,l.displays=null,l.selectedDisplay=null,l.onScreenSizeChange=null,l.onMessage=null,l.onConnectCountChanged=null,l.onDebugMessage=null,l.onTouchEnabledChanged=null,l.onDisplayinfo=null;var h=!(l.accumulator=null),g="default";l.mouseCursorActive=function(e){h!=e&&(h=e,l.CanvasId.style.cursor=1==e?g:"default")};var p=["default","progress","crosshair","pointer","help","text","no-drop","move","nesw-resize","ns-resize","nwse-resize","w-resize","alias","wait","none","not-allowed","col-resize","row-resize","copy","zoom-in","zoom-out"];l.Start=function(){l.State=0,l.accumulator=null},l.Stop=function(){l.setRotation(0),l.UnGrabKeyInput(),l.UnGrabMouseInput(),l.touchenabled=0,null!=l.onScreenSizeChange&&l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight,l.CanvasId),l.Canvas.clearRect(0,0,l.CanvasId.width,l.CanvasId.height)},l.xxStateChange=function(e){l.State!=e&&(l.State=e,l.CanvasId.style.cursor="default",0===e&&l.Stop())},l.send=function(e){2<l.debugmode&&console.log("KSend("+e.length+"): "+rstr2hex(e)),null!=l.parent&&l.parent.send(e)},l.ProcessPictureMsg=function(e,t,n){var o=new Image;o.xcount=l.tilesReceived++;for(var a=l.tilesReceived,r=e.slice(4),s=0,i=[];5e4<r.byteLength-s;)i.push(String.fromCharCode.apply(null,r.slice(s,s+5e4))),s+=5e4;0<s?i.push(String.fromCharCode.apply(null,r.slice(s))):i.push(String.fromCharCode.apply(null,r)),o.src="data:image/jpeg;base64,"+btoa(i.join("")),o.onload=function(){if(null!=l.Canvas&&l.KillDraw<a&&0!=l.State)for(l.PendingOperations.push([a,2,o,t,n]);l.DoPendingOperations(););else l.PendingOperations.push([a,0])},o.error=function(){console.log("DecodeTileError")}},l.DoPendingOperations=function(){if(0==l.PendingOperations.length)return!1;for(var e=0;e<l.PendingOperations.length;e++){var t=l.PendingOperations[e];if(t[0]==l.TilesDrawn+1)return 1==t[1]?l.ProcessCopyRectMsg(t[2]):2==t[1]&&(l.Canvas.drawImage(t[2],l.rotX(t[3],t[4]),l.rotY(t[3],t[4])),delete t[2]),l.PendingOperations.splice(e,1),delete t,l.TilesDrawn++,l.TilesDrawn==l.tilesReceived&&l.KillDraw<l.TilesDrawn&&(l.KillDraw=l.TilesDrawn=l.tilesReceived=0),!0}return l.oldie&&0<l.PendingOperations.length&&l.TilesDrawn++,!1},l.ProcessCopyRectMsg=function(e){var t=((255&e.charCodeAt(0))<<8)+(255&e.charCodeAt(1)),n=((255&e.charCodeAt(2))<<8)+(255&e.charCodeAt(3)),o=((255&e.charCodeAt(4))<<8)+(255&e.charCodeAt(5)),a=((255&e.charCodeAt(6))<<8)+(255&e.charCodeAt(7)),r=((255&e.charCodeAt(8))<<8)+(255&e.charCodeAt(9)),e=((255&e.charCodeAt(10))<<8)+(255&e.charCodeAt(11));l.Canvas.drawImage(Canvas.canvas,t,n,r,e,o,a,r,e)},l.SendUnPause=function(){1<l.debugmode&&console.log("SendUnPause"),l.send(String.fromCharCode(0,8,0,5,0))},l.SendPause=function(){1<l.debugmode&&console.log("SendPause"),l.send(String.fromCharCode(0,8,0,5,1))},l.SendCompressionLevel=function(e,t,n,o){t&&(l.CompressionLevel=t),n&&(l.ScalingLevel=n),o&&(l.FrameRateTimer=o),l.send(String.fromCharCode(0,5,0,10,e,l.CompressionLevel)+l.shortToStr(l.ScalingLevel)+l.shortToStr(l.FrameRateTimer))},l.SendRefresh=function(){l.send(String.fromCharCode(0,6,0,4))},l.ProcessScreenMsg=function(e,t){if(0<l.debugmode&&console.log("ScreenSize: "+e+" x "+t),l.ScreenWidth!=e||l.ScreenHeight!=t){for(l.Canvas.setTransform(1,0,0,1,0,0),l.rotation=0,l.FirstDraw=!0,l.ScreenWidth=l.width=e,l.ScreenHeight=l.height=t,l.KillDraw=l.tilesReceived;0<l.PendingOperations.length;)l.PendingOperations.shift();l.SendCompressionLevel(1),l.SendUnPause(),l.SendRemoteInputLock(2),null!=l.onScreenSizeChange&&l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight,l.CanvasId)}},l.ProcessBinaryCommand=function(e,t,n){var o,a;switch(3!=e&&4!=e&&7!=e||(o=(n[4]<<8)+n[5],a=(n[6]<<8)+n[7]),2<l.debugmode&&console.log("CMD",e,t,o,a),null!=l.recordedData&&(65e3<t?l.recordedData.push(S(2,1,l.shortToStr(27)+l.shortToStr(8)+l.intToStr(t)+l.shortToStr(e)+l.shortToStr(0)+l.shortToStr(0)+l.shortToStr(0)+String.fromCharCode.apply(null,n))):l.recordedData.push(S(2,1,String.fromCharCode.apply(null,n)))),e){case 3:l.FirstDraw&&l.onResize(),l.ProcessPictureMsg(n.slice(4),o,a);break;case 7:l.ProcessScreenMsg(o,a),l.SendKeyMsgKC(l.KeyAction.UP,16),l.SendKeyMsgKC(l.KeyAction.UP,17),l.SendKeyMsgKC(l.KeyAction.UP,18),l.SendKeyMsgKC(l.KeyAction.UP,91),l.SendKeyMsgKC(l.KeyAction.UP,92),l.SendKeyMsgKC(l.KeyAction.UP,16),l.send(String.fromCharCode(0,14,0,4));break;case 11:var r=0,s={},i=(n[4]<<8)+n[5];if(0<i)for(var r=(n[6+2*i]<<8)+n[7+2*i],c=0;c<i;c++){var u=(n[6+2*c]<<8)+n[7+2*c];s[u]=65535==u?"All Displays":"Display "+u}l.displays=s,l.selectedDisplay=r,null!=l.onDisplayinfo&&l.onDisplayinfo(l,s,r);break;case 12:break;case 14:l.touchenabled=1,l.TouchArray={},null!=l.onTouchEnabledChanged&&l.onTouchEnabledChanged(l.touchenabled);break;case 15:l.TouchArray={};break;case 17:var d=String.fromCharCode.apply(null,n.slice(4));console.log("Got KVM Message: "+d),null!=l.onMessage&&l.onMessage(d,l);break;case 65:"."!=(d=String.fromCharCode.apply(null,n.slice(4)))[0]?(console.log(d),l.parent&&l.parent.setConsoleMessage&&l.parent.setConsoleMessage(d)):console.log("KVM: "+d.substring(1));break;case 87:if(5!=t)break;l.RemoteInputLock!=(0!=n[4])&&(l.RemoteInputLock=0!=n[4],l.onRemoteInputLockChanged&&l.onRemoteInputLockChanged(l,l.RemoteInputLock));break;case 88:if(5!=t||l.stopInput)break;d=n[4];g=p[d=p.length<d?0:d],h&&(l.CanvasId.style.cursor=g);break;default:console.log("Unknown command",e,t)}},l.MouseButton={NONE:0,LEFT:2,RIGHT:8,MIDDLE:32},l.KeyAction={NONE:0,DOWN:1,UP:2,SCROLL:3,EXUP:4,EXDOWN:5,DBLCLICK:6},l.InputType={KEY:1,MOUSE:2,CTRLALTDEL:10,TOUCH:15,KEYUNICODE:85},l.Alternate=0;var o={Pause:19,CapsLock:20,Space:32,Quote:222,Minus:189,NumpadMultiply:106,NumpadAdd:107,PrintScreen:44,Comma:188,NumpadSubtract:109,NumpadDecimal:110,Period:190,Slash:191,NumpadDivide:111,Semicolon:186,Equal:187,OSLeft:91,BracketLeft:219,OSRight:91,Backslash:220,BracketRight:221,ContextMenu:93,Backquote:192,NumLock:144,ScrollLock:145,Backspace:8,Tab:9,Enter:13,NumpadEnter:13,Escape:27,Delete:46,Home:36,PageUp:33,PageDown:34,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,End:35,Insert:45,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,ShiftLeft:16,ShiftRight:16,ControlLeft:17,ControlRight:17,AltLeft:18,AltRight:18,MetaLeft:91,MetaRight:92,VolumeMute:181};function S(e,t,n){var o=Date.now();return"number"==typeof n?(l.recordedSize+=n,l.shortToStr(e)+l.shortToStr(t)+l.intToStr(n)+l.intToStr(o>>32)+l.intToStr(32&o)):(l.recordedSize+=n.length,l.shortToStr(e)+l.shortToStr(t)+l.intToStr(n.length)+l.intToStr(o>>32)+l.intToStr(32&o)+n)}return l.SendKeyMsg=function(e,t){var n;null!=e&&((t=t||window.event).code&&0==l.localKeyMap?null!=(n=(n=t).code.startsWith("Key")&&4==n.code.length?n.code.charCodeAt(3):n.code.startsWith("Digit")&&6==n.code.length?n.code.charCodeAt(5):n.code.startsWith("Numpad")&&7==n.code.length?n.code.charCodeAt(6)+48:o[n.code])&&l.SendKeyMsgKC(e,n):(59==(n=t.keyCode)?n=186:173==n?n=189:61==n&&(n=187),l.SendKeyMsgKC(e,n)))},l.SendRemoteInputLock=function(e){l.send(String.fromCharCode(0,l.InputType.KEYUNICODE,0,5,e))},l.SendMessage=function(e){3==l.State&&l.send(String.fromCharCode(0,17)+l.shortToStr(4+e.length)+e)},l.SendKeyMsgKC=function(e,t){if(3==l.State)if("object"==typeof e)for(var n in e)l.SendKeyMsgKC(e[n][0],e[n][1]);else 1==e?-1==l.pressedKeys.indexOf(t)&&l.pressedKeys.unshift(t):2==e&&-1!=(n=l.pressedKeys.indexOf(t))&&l.pressedKeys.splice(n,1),0<l.debugmode&&console.log("Sending Key "+t+", action "+e),l.send(String.fromCharCode(0,l.InputType.KEY,0,6,e-1,t))},l.SendStringUnicode=function(e){if(3==l.State)for(var t=0;t<e.length;t++)l.send(String.fromCharCode(0,l.InputType.KEYUNICODE,0,7,0)+ShortToStr(e.charCodeAt(t))),l.send(String.fromCharCode(0,l.InputType.KEYUNICODE,0,7,1)+ShortToStr(e.charCodeAt(t)))},l.SendKeyUnicode=function(e,t){3==l.State&&(0<l.debugmode&&console.log("Sending UnicodeKey "+t),l.send(String.fromCharCode(0,l.InputType.KEYUNICODE,0,7,e-1)+ShortToStr(t)))},l.sendcad=function(){l.SendCtrlAltDelMsg()},l.SendCtrlAltDelMsg=function(){3==l.State&&l.send(String.fromCharCode(0,l.InputType.CTRLALTDEL,0,4))},l.SendEscKey=function(){3==l.State&&l.send(String.fromCharCode(0,l.InputType.KEY,0,6,0,27,0,l.InputType.KEY,0,6,1,27))},l.SendStartMsg=function(){l.SendKeyMsgKC(l.KeyAction.EXDOWN,91),l.SendKeyMsgKC(l.KeyAction.EXUP,91)},l.SendCharmsMsg=function(){l.SendKeyMsgKC(l.KeyAction.EXDOWN,91),l.SendKeyMsgKC(l.KeyAction.DOWN,67),l.SendKeyMsgKC(l.KeyAction.UP,67),l.SendKeyMsgKC(l.KeyAction.EXUP,91)},l.SendTouchMsg1=function(e,t,n,o){3==l.State&&l.send(String.fromCharCode(0,l.InputType.TOUCH)+l.shortToStr(14)+String.fromCharCode(1,e)+l.intToStr(t)+l.shortToStr(n)+l.shortToStr(o))},l.SendTouchMsg2=function(e,t){var n,o,a="";for(o in l.TouchArray)o==e?n=t:1==l.TouchArray[o].f?(n=65542,l.TouchArray[o].f=3,0):2==l.TouchArray[o].f?(n=262144,0):n=131078,a+=String.fromCharCode(o)+l.intToStr(n)+l.shortToStr(l.TouchArray[o].x)+l.shortToStr(l.TouchArray[o].y),2==l.TouchArray[o].f&&delete l.TouchArray[o];3==l.State&&l.send(String.fromCharCode(0,l.InputType.TOUCH)+l.shortToStr(5+a.length)+String.fromCharCode(2)+a),0==Object.keys(l.TouchArray).length&&null!=l.touchtimer&&(clearInterval(l.touchtimer),l.touchtimer=null)},l.SendMouseMsg=function(e,t){var n,o,a,r,s,i;3==l.State&&null!=e&&null!=l.Canvas&&(t=t||window.event,s=l.Canvas.canvas.height/l.CanvasId.clientHeight,r=l.Canvas.canvas.width/l.CanvasId.clientWidth,i=l.GetPositionOfControl(l.Canvas.canvas),n=(t.pageX-i[0])*r,o=(t.pageY-i[1])*s,t.addx&&(n+=t.addx),t.addy&&(o+=t.addy),0<=n&&n<=l.Canvas.canvas.width&&0<=o&&o<=l.Canvas.canvas.height&&(r=a=0,e==l.KeyAction.UP||e==l.KeyAction.DOWN?t.which?a=1==t.which?l.MouseButton.LEFT:2==t.which?l.MouseButton.MIDDLE:l.MouseButton.RIGHT:t.button&&(a=0==t.button?l.MouseButton.LEFT:1==t.button?l.MouseButton.MIDDLE:l.MouseButton.RIGHT):e==l.KeyAction.SCROLL&&(t.detail?r=120*t.detail*-1:t.wheelDelta&&(r=3*t.wheelDelta)),!0===l.SwapMouse&&(a==l.MouseButton.LEFT?a=l.MouseButton.RIGHT:a==l.MouseButton.RIGHT&&(a=l.MouseButton.LEFT)),i="",i=e==l.KeyAction.DBLCLICK?String.fromCharCode(0,l.InputType.MOUSE,0,10,0,136,n/256&255,255&n,o/256&255,255&o):e==l.KeyAction.SCROLL?(t=r<(t=s=0)?(s=255-(Math.abs(r)>>8),255-(255&Math.abs(r))):(s=r>>8,255&r),String.fromCharCode(0,l.InputType.MOUSE,0,12,0,0,n/256&255,255&n,o/256&255,255&o,s,t)):String.fromCharCode(0,l.InputType.MOUSE,0,10,0,e==l.KeyAction.DOWN?a:2*a&255,n/256&255,255&n,o/256&255,255&o),l.Action==l.KeyAction.NONE?0==l.Alternate||l.ipad?(l.send(i),l.Alternate=1):l.Alternate=0:l.send(i)))},l.GetDisplayNumbers=function(){l.send(String.fromCharCode(0,11,0,4))},l.SetDisplay=function(e){l.send(String.fromCharCode(0,12,0,6,e>>8,255&e))},l.intToStr=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},l.shortToStr=function(e){return String.fromCharCode(e>>8&255,255&e)},l.onResize=function(){0!=l.ScreenWidth&&0!=l.ScreenHeight&&(l.Canvas.canvas.width==l.ScreenWidth&&l.Canvas.canvas.height==l.ScreenHeight||(l.FirstDraw&&(l.Canvas.canvas.width=l.ScreenWidth,l.Canvas.canvas.height=l.ScreenHeight,l.Canvas.fillRect(0,0,l.ScreenWidth,l.ScreenHeight),null!=l.onScreenSizeChange&&l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight,l.CanvasId)),l.FirstDraw=!1,1<l.debugmode&&console.log("onResize: "+l.ScreenWidth+" x "+l.ScreenHeight)))},l.xxMouseInputGrab=!1,l.xxKeyInputGrab=!1,l.xxMouseMove=function(e){return 3==l.State&&l.SendMouseMsg(l.KeyAction.NONE,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxMouseUp=function(e){return 3==l.State&&l.SendMouseMsg(l.KeyAction.UP,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxMouseDown=function(e){return 3==l.State&&l.SendMouseMsg(l.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxMouseDblClick=function(e){return 3==l.State&&l.SendMouseMsg(l.KeyAction.DBLCLICK,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxDOMMouseScroll=function(e){return 3!=l.State||(l.SendMouseMsg(l.KeyAction.SCROLL,e),!1)},l.xxMouseWheel=function(e){return 3!=l.State||(l.SendMouseMsg(l.KeyAction.SCROLL,e),!1)},l.xxKeyUp=function(e){return"Dead"!=e.key&&3==l.State&&("string"==typeof e.key&&1==e.key.length&&1!=e.ctrlKey&&1!=e.altKey&&(0==l.remoteKeyMap||0<l.debugmode)?l.SendKeyUnicode(l.KeyAction.UP,e.key.charCodeAt(0)):l.SendKeyMsg(l.KeyAction.UP,e)),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxKeyDown=function(e){if("Dead"!=e.key&&3==l.State&&("string"!=typeof e.key||1!=e.key.length||1==e.ctrlKey||1==e.altKey||!(0==l.remoteKeyMap||0<l.debugmode)))return l.SendKeyMsg(l.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxKeyPress=function(e){return"Dead"!=e.key&&3==l.State&&"string"==typeof e.key&&1==e.key.length&&1!=e.ctrlKey&&1!=e.altKey&&(0==l.remoteKeyMap||0<l.debugmode)&&l.SendKeyUnicode(l.KeyAction.DOWN,e.key.charCodeAt(0)),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.handleKeys=function(e){return 1!=l.stopInput&&3==desktop.State&&l.xxKeyPress(e)},l.handleKeyUp=function(e){return 1!=l.stopInput&&3==desktop.State&&(l.firstUpKeys.length<5&&(l.firstUpKeys.push(e.keyCode),5==l.firstUpKeys.length&&("16,17,91,91,16"!=(t=l.firstUpKeys.join(","))&&"16,17,18,91,92"!=t||(l.stopInput=!0))),l.xxKeyUp(e));var t},l.handleKeyDown=function(e){return 1!=l.stopInput&&3==desktop.State&&l.xxKeyDown(e)},l.handleReleaseKeys=function(){var e,t=JSON.parse(JSON.stringify(l.pressedKeys));for(e in t)l.SendKeyMsgKC(l.KeyAction.UP,t[e])},l.mousedblclick=function(e){return 1!=l.stopInput&&l.xxMouseDblClick(e)},l.mousedown=function(e){return 1!=l.stopInput&&l.xxMouseDown(e)},l.mouseup=function(e){return 1!=l.stopInput&&l.xxMouseUp(e)},l.mousemove=function(e){return 1!=l.stopInput&&l.xxMouseMove(e)},l.mousewheel=function(e){return 1!=l.stopInput&&l.xxMouseWheel(e)},l.xxMsTouchEvent=function(e){var t,n,o,a;if(4!=e.originalEvent.pointerType)return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),"MSPointerDown"==e.type||"MSPointerMove"==e.type||"MSPointerUp"==e.type?(t=0,n=e.originalEvent.pointerId%256,o=e.offsetX*(Canvas.canvas.width/l.CanvasId.clientWidth),a=e.offsetY*(Canvas.canvas.height/l.CanvasId.clientHeight),"MSPointerDown"==e.type?t=65542:"MSPointerMove"==e.type?t=131078:"MSPointerUp"==e.type&&(t=262144),l.TouchArray[n]||(l.TouchArray[n]={x:o,y:a}),l.SendTouchMsg2(n,t),"MSPointerUp"==e.type&&delete l.TouchArray[n]):alert(e.type),!0},l.xxTouchStart=function(e){if(3==l.State)if(e.preventDefault&&e.preventDefault(),0==l.touchenabled||1==l.touchenabled){var t;1<e.originalEvent.touches.length||(t=e.originalEvent.touches[0],e.which=1,l.LastX=e.pageX=t.pageX,l.LastY=e.pageY=t.pageY,l.SendMouseMsg(KeyAction.DOWN,e))}else{var n,o,a=l.GetPositionOfControl(Canvas.canvas);for(n in e.originalEvent.changedTouches)e.originalEvent.changedTouches[n].identifier&&(o=e.originalEvent.changedTouches[n].identifier%256,l.TouchArray[o]||(l.TouchArray[o]={x:(e.originalEvent.touches[n].pageX-a[0])*(Canvas.canvas.width/l.CanvasId.clientWidth),y:(e.originalEvent.touches[n].pageY-a[1])*(Canvas.canvas.height/l.CanvasId.clientHeight),f:1}));0<Object.keys(l.TouchArray).length&&null==touchtimer&&(l.touchtimer=setInterval(function(){l.SendTouchMsg2(256,0)},50))}},l.xxTouchMove=function(e){if(3==l.State)if(e.preventDefault&&e.preventDefault(),0==l.touchenabled||1==l.touchenabled){var t;1<e.originalEvent.touches.length||(t=e.originalEvent.touches[0],e.which=1,l.LastX=e.pageX=t.pageX,l.LastY=e.pageY=t.pageY,l.SendMouseMsg(l.KeyAction.NONE,e))}else{var n,o,a=l.GetPositionOfControl(Canvas.canvas);for(n in e.originalEvent.changedTouches)e.originalEvent.changedTouches[n].identifier&&(o=e.originalEvent.changedTouches[n].identifier%256,l.TouchArray[o]&&(l.TouchArray[o].x=(e.originalEvent.touches[n].pageX-a[0])*(l.Canvas.canvas.width/l.CanvasId.clientWidth),l.TouchArray[o].y=(e.originalEvent.touches[n].pageY-a[1])*(l.Canvas.canvas.height/l.CanvasId.clientHeight)))}},l.xxTouchEnd=function(e){if(3==l.State)if(e.preventDefault&&e.preventDefault(),0==l.touchenabled||1==l.touchenabled)1<e.originalEvent.touches.length||(e.which=1,e.pageX=LastX,e.pageY=LastY,l.SendMouseMsg(KeyAction.UP,e));else for(var t in e.originalEvent.changedTouches)e.originalEvent.changedTouches[t].identifier&&(t=e.originalEvent.changedTouches[t].identifier%256,l.TouchArray[t]&&(l.TouchArray[t].f=2))},l.GrabMouseInput=function(){var e;1!=l.xxMouseInputGrab&&((e=l.CanvasId).onmousemove=l.xxMouseMove,e.onmouseup=l.xxMouseUp,e.onmousedown=l.xxMouseDown,e.touchstart=l.xxTouchStart,e.touchmove=l.xxTouchMove,e.touchend=l.xxTouchEnd,e.MSPointerDown=l.xxMsTouchEvent,e.MSPointerMove=l.xxMsTouchEvent,e.MSPointerUp=l.xxMsTouchEvent,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=l.xxDOMMouseScroll:e.onmousewheel=l.xxMouseWheel,l.xxMouseInputGrab=!0)},l.UnGrabMouseInput=function(){var e;0!=l.xxMouseInputGrab&&((e=l.CanvasId).onmousemove=null,e.onmouseup=null,e.onmousedown=null,e.touchstart=null,e.touchmove=null,e.touchend=null,e.MSPointerDown=null,e.MSPointerMove=null,e.MSPointerUp=null,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=null:e.onmousewheel=null,l.xxMouseInputGrab=!1)},l.GrabKeyInput=function(){1!=l.xxKeyInputGrab&&(document.onkeyup=l.xxKeyUp,document.onkeydown=l.xxKeyDown,document.onkeypress=l.xxKeyPress,l.xxKeyInputGrab=!0)},l.UnGrabKeyInput=function(){0!=l.xxKeyInputGrab&&(document.onkeyup=null,document.onkeydown=null,document.onkeypress=null,l.xxKeyInputGrab=!1)},l.GetPositionOfControl=function(e){var t=Array(2);for(t[0]=t[1]=0;e;)t[0]+=e.offsetLeft,t[1]+=e.offsetTop,e=e.offsetParent;return t},l.crotX=function(e,t){return 0==l.rotation?e:1==l.rotation?t:2==l.rotation?l.Canvas.canvas.width-e:3==l.rotation?l.Canvas.canvas.height-t:void 0},l.crotY=function(e,t){return 0==l.rotation?t:1==l.rotation?l.Canvas.canvas.width-e:2==l.rotation?l.Canvas.canvas.height-t:3==l.rotation?e:void 0},l.rotX=function(e,t){return 0==l.rotation||1==l.rotation?e:2==l.rotation?e-l.Canvas.canvas.width:3==l.rotation?e-l.Canvas.canvas.height:void 0},l.rotY=function(e,t){return 0==l.rotation||3==l.rotation?t:1==l.rotation?t-l.Canvas.canvas.width:2==l.rotation?t-l.Canvas.canvas.height:void 0},l.tcanvas=null,l.setRotation=function(e){for(;e<0;)e+=4;var t=e%4;if(t==l.rotation)return!0;var n=l.Canvas.canvas.width,o=l.Canvas.canvas.height;1!=l.rotation&&3!=l.rotation||(n=l.Canvas.canvas.height,o=l.Canvas.canvas.width),null==l.tcanvas&&(l.tcanvas=document.createElement("canvas"));var a=l.tcanvas.getContext("2d");return a.setTransform(1,0,0,1,0,0),a.canvas.width=n,a.canvas.height=o,a.rotate(-90*l.rotation*Math.PI/180),0==l.rotation&&a.drawImage(l.Canvas.canvas,0,0),1==l.rotation&&a.drawImage(l.Canvas.canvas,-l.Canvas.canvas.width,0),2==l.rotation&&a.drawImage(l.Canvas.canvas,-l.Canvas.canvas.width,-l.Canvas.canvas.height),3==l.rotation&&a.drawImage(l.Canvas.canvas,0,-l.Canvas.canvas.height),0!=l.rotation&&2!=l.rotation||(l.Canvas.canvas.height=n,l.Canvas.canvas.width=o),1!=l.rotation&&3!=l.rotation||(l.Canvas.canvas.height=o,l.Canvas.canvas.width=n),l.Canvas.setTransform(1,0,0,1,0,0),l.Canvas.rotate(90*t*Math.PI/180),l.rotation=t,l.Canvas.drawImage(l.tcanvas,l.rotX(0,0),l.rotY(0,0)),l.ScreenWidth=l.Canvas.canvas.width,l.ScreenHeight=l.Canvas.canvas.height,null!=l.onScreenSizeChange&&(console.log("s4",l.ScreenWidth,l.ScreenHeight),l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight,l.CanvasId)),!0},l.StartRecording=function(){null==l.recordedData&&l.CanvasId.toBlob(function(e){var s=new FileReader;s.readAsArrayBuffer(e),s.onload=function(e){for(var t="",n=new Uint8Array(s.result),o=n.byteLength,a=0;a<o;a++)t+=String.fromCharCode(n[a]);l.recordedData=[],l.recordedStart=Date.now(),l.recordedSize=0,l.recordedData.push(S(1,0,JSON.stringify({magic:"MeshCentralRelaySession",ver:1,time:(new Date).toLocaleString(),protocol:2}))),l.recordedData.push(S(2,1,l.shortToStr(7)+l.shortToStr(8)+l.shortToStr(l.ScreenWidth)+l.shortToStr(l.ScreenHeight)));var r=8+t.length;65e3<r?l.recordedData.push(S(2,1,l.shortToStr(27)+l.shortToStr(8)+l.intToStr(r)+l.shortToStr(3)+l.shortToStr(0)+l.shortToStr(0)+l.shortToStr(0)+t)):l.recordedData.push(S(2,1,l.shortToStr(3)+l.shortToStr(r)+l.shortToStr(0)+l.shortToStr(0)+t))}})},l.StopRecording=function(){if(null!=l.recordedData){var e=l.recordedData;return e.push(S(3,0,"MeshCentralMCREC")),delete l.recordedData,delete l.recordedStart,delete l.recordedSize,e}},l.MuchTheSame=function(e,t){return Math.abs(e-t)<4},l.Debug=function(e){console.log(e)},l.getIEVersion=function(){var e,t=-1;return"Microsoft Internet Explorer"==navigator.appName&&(e=navigator.userAgent,null!=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})").exec(e)&&(t=parseFloat(RegExp.$1))),t},l.haltEvent=function(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l}
\ No newline at end of file
1
+Uint8Array.prototype.slice||Object.defineProperty(Uint8Array.prototype,"slice",{value:function(e,t){return new Uint8Array(Array.prototype.slice.call(this,e,t))}});var CreateAgentRemoteDesktop=function(e,t){var l={};"string"==typeof(l.CanvasId=e)&&(l.CanvasId=Q(e)),l.Canvas=l.CanvasId.getContext("2d"),l.scrolldiv=t,l.State=0,l.PendingOperations=[],l.tilesReceived=0,l.TilesDrawn=0,l.KillDraw=0,l.ipad=!1,l.tabletKeyboardVisible=!1,l.LastX=0,l.LastY=0,l.touchenabled=0,l.submenuoffset=0,l.touchtimer=null,l.TouchArray={},l.connectmode=0,l.connectioncount=0,l.rotation=0,l.protocol=2,l.debugmode=0,l.firstUpKeys=[],l.stopInput=!1,l.localKeyMap=!0,l.remoteKeyMap=!1,l.pressedKeys=[],l.sessionid=0,l.username,l.oldie=!1,l.CompressionLevel=50,l.ScalingLevel=1024,l.FrameRateTimer=100,l.SwapMouse=!1,l.FirstDraw=!1,l.onRemoteInputLockChanged=null,l.RemoteInputLock=null,l.ScreenWidth=960,l.ScreenHeight=701,l.width=960,l.height=960,l.displays=null,l.selectedDisplay=null,l.onScreenSizeChange=null,l.onMessage=null,l.onConnectCountChanged=null,l.onDebugMessage=null,l.onTouchEnabledChanged=null,l.onDisplayinfo=null;var h=!(l.accumulator=null),g="default";l.mouseCursorActive=function(e){h!=e&&(h=e,l.CanvasId.style.cursor=1==e?g:"default")};var p=["default","progress","crosshair","pointer","help","text","no-drop","move","nesw-resize","ns-resize","nwse-resize","w-resize","alias","wait","none","not-allowed","col-resize","row-resize","copy","zoom-in","zoom-out"];l.Start=function(){l.State=0,l.accumulator=null},l.Stop=function(){l.setRotation(0),l.UnGrabKeyInput(),l.UnGrabMouseInput(),l.touchenabled=0,null!=l.onScreenSizeChange&&l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight,l.CanvasId),l.Canvas.clearRect(0,0,l.CanvasId.width,l.CanvasId.height)},l.xxStateChange=function(e){l.State!=e&&(l.State=e,l.CanvasId.style.cursor="default",0===e&&l.Stop())},l.send=function(e){2<l.debugmode&&console.log("KSend("+e.length+"): "+rstr2hex(e)),null!=l.parent&&l.parent.send(e)},l.ProcessPictureMsg=function(e,t,n){var o=new Image;o.xcount=l.tilesReceived++;for(var a=l.tilesReceived,r=e.slice(4),s=0,i=[];5e4<r.byteLength-s;)i.push(String.fromCharCode.apply(null,r.slice(s,s+5e4))),s+=5e4;0<s?i.push(String.fromCharCode.apply(null,r.slice(s))):i.push(String.fromCharCode.apply(null,r)),o.src="data:image/jpeg;base64,"+btoa(i.join("")),o.onload=function(){if(null!=l.Canvas&&l.KillDraw<a&&0!=l.State)for(l.PendingOperations.push([a,2,o,t,n]);l.DoPendingOperations(););else l.PendingOperations.push([a,0])},o.error=function(){console.log("DecodeTileError")}},l.DoPendingOperations=function(){if(0==l.PendingOperations.length)return!1;for(var e=0;e<l.PendingOperations.length;e++){var t=l.PendingOperations[e];if(t[0]==l.TilesDrawn+1)return 1==t[1]?l.ProcessCopyRectMsg(t[2]):2==t[1]&&(l.Canvas.drawImage(t[2],l.rotX(t[3],t[4]),l.rotY(t[3],t[4])),delete t[2]),l.PendingOperations.splice(e,1),delete t,l.TilesDrawn++,l.TilesDrawn==l.tilesReceived&&l.KillDraw<l.TilesDrawn&&(l.KillDraw=l.TilesDrawn=l.tilesReceived=0),!0}return l.oldie&&0<l.PendingOperations.length&&l.TilesDrawn++,!1},l.ProcessCopyRectMsg=function(e){var t=((255&e.charCodeAt(0))<<8)+(255&e.charCodeAt(1)),n=((255&e.charCodeAt(2))<<8)+(255&e.charCodeAt(3)),o=((255&e.charCodeAt(4))<<8)+(255&e.charCodeAt(5)),a=((255&e.charCodeAt(6))<<8)+(255&e.charCodeAt(7)),r=((255&e.charCodeAt(8))<<8)+(255&e.charCodeAt(9)),e=((255&e.charCodeAt(10))<<8)+(255&e.charCodeAt(11));l.Canvas.drawImage(Canvas.canvas,t,n,r,e,o,a,r,e)},l.SendUnPause=function(){1<l.debugmode&&console.log("SendUnPause"),l.send(String.fromCharCode(0,8,0,5,0))},l.SendPause=function(){1<l.debugmode&&console.log("SendPause"),l.send(String.fromCharCode(0,8,0,5,1))},l.SendCompressionLevel=function(e,t,n,o){t&&(l.CompressionLevel=t),n&&(l.ScalingLevel=n),o&&(l.FrameRateTimer=o),l.send(String.fromCharCode(0,5,0,10,e,l.CompressionLevel)+l.shortToStr(l.ScalingLevel)+l.shortToStr(l.FrameRateTimer))},l.SendRefresh=function(){l.send(String.fromCharCode(0,6,0,4))},l.ProcessScreenMsg=function(e,t){if(0<l.debugmode&&console.log("ScreenSize: "+e+" x "+t),l.ScreenWidth!=e||l.ScreenHeight!=t){for(l.Canvas.setTransform(1,0,0,1,0,0),l.rotation=0,l.FirstDraw=!0,l.ScreenWidth=l.width=e,l.ScreenHeight=l.height=t,l.KillDraw=l.tilesReceived;0<l.PendingOperations.length;)l.PendingOperations.shift();l.SendCompressionLevel(1),l.SendUnPause(),l.SendRemoteInputLock(2),null!=l.onScreenSizeChange&&l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight,l.CanvasId)}},l.ProcessBinaryCommand=function(e,t,n){var o,a;switch(3!=e&&4!=e&&7!=e||(o=(n[4]<<8)+n[5],a=(n[6]<<8)+n[7]),2<l.debugmode&&console.log("CMD",e,t,o,a),null!=l.recordedData&&(65e3<t?l.recordedData.push(S(2,1,l.shortToStr(27)+l.shortToStr(8)+l.intToStr(t)+l.shortToStr(e)+l.shortToStr(0)+l.shortToStr(0)+l.shortToStr(0)+String.fromCharCode.apply(null,n))):l.recordedData.push(S(2,1,String.fromCharCode.apply(null,n)))),console.log("cmd",e),e){case 3:l.FirstDraw&&l.onResize(),l.ProcessPictureMsg(n.slice(4),o,a);break;case 7:l.ProcessScreenMsg(o,a),l.SendKeyMsgKC(l.KeyAction.UP,16),l.SendKeyMsgKC(l.KeyAction.UP,17),l.SendKeyMsgKC(l.KeyAction.UP,18),l.SendKeyMsgKC(l.KeyAction.UP,91),l.SendKeyMsgKC(l.KeyAction.UP,92),l.SendKeyMsgKC(l.KeyAction.UP,16),l.send(String.fromCharCode(0,14,0,4));break;case 11:var r=0,s={},i=(n[4]<<8)+n[5];if(0<i)for(var r=(n[6+2*i]<<8)+n[7+2*i],c=0;c<i;c++){var u=(n[6+2*c]<<8)+n[7+2*c];s[u]=65535==u?"All Displays":"Display "+u}l.displays=s,l.selectedDisplay=r,null!=l.onDisplayinfo&&l.onDisplayinfo(l,s,r);break;case 12:break;case 14:l.touchenabled=1,l.TouchArray={},null!=l.onTouchEnabledChanged&&l.onTouchEnabledChanged(l.touchenabled);break;case 15:l.TouchArray={};break;case 17:var d=String.fromCharCode.apply(null,n.slice(4));console.log("Got KVM Message: "+d),null!=l.onMessage&&l.onMessage(d,l);break;case 65:"."!=(d=String.fromCharCode.apply(null,n.slice(4)))[0]?(console.log(d),l.parent&&l.parent.setConsoleMessage&&l.parent.setConsoleMessage(d)):console.log("KVM: "+d.substring(1));break;case 87:if(5!=t)break;null!=l.RemoteInputLock&&l.RemoteInputLock===(0!=n[4])||(l.RemoteInputLock=0!=n[4],l.onRemoteInputLockChanged&&l.onRemoteInputLockChanged(l,l.RemoteInputLock));break;case 88:if(5!=t||l.stopInput)break;d=n[4];g=p[d=p.length<d?0:d],h&&(l.CanvasId.style.cursor=g);break;default:console.log("Unknown command",e,t)}},l.MouseButton={NONE:0,LEFT:2,RIGHT:8,MIDDLE:32},l.KeyAction={NONE:0,DOWN:1,UP:2,SCROLL:3,EXUP:4,EXDOWN:5,DBLCLICK:6},l.InputType={KEY:1,MOUSE:2,CTRLALTDEL:10,TOUCH:15,KEYUNICODE:85},l.Alternate=0;var o={Pause:19,CapsLock:20,Space:32,Quote:222,Minus:189,NumpadMultiply:106,NumpadAdd:107,PrintScreen:44,Comma:188,NumpadSubtract:109,NumpadDecimal:110,Period:190,Slash:191,NumpadDivide:111,Semicolon:186,Equal:187,OSLeft:91,BracketLeft:219,OSRight:91,Backslash:220,BracketRight:221,ContextMenu:93,Backquote:192,NumLock:144,ScrollLock:145,Backspace:8,Tab:9,Enter:13,NumpadEnter:13,Escape:27,Delete:46,Home:36,PageUp:33,PageDown:34,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,End:35,Insert:45,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,ShiftLeft:16,ShiftRight:16,ControlLeft:17,ControlRight:17,AltLeft:18,AltRight:18,MetaLeft:91,MetaRight:92,VolumeMute:181};function S(e,t,n){var o=Date.now();return"number"==typeof n?(l.recordedSize+=n,l.shortToStr(e)+l.shortToStr(t)+l.intToStr(n)+l.intToStr(o>>32)+l.intToStr(32&o)):(l.recordedSize+=n.length,l.shortToStr(e)+l.shortToStr(t)+l.intToStr(n.length)+l.intToStr(o>>32)+l.intToStr(32&o)+n)}return l.SendKeyMsg=function(e,t){var n;null!=e&&((t=t||window.event).code&&0==l.localKeyMap?null!=(n=(n=t).code.startsWith("Key")&&4==n.code.length?n.code.charCodeAt(3):n.code.startsWith("Digit")&&6==n.code.length?n.code.charCodeAt(5):n.code.startsWith("Numpad")&&7==n.code.length?n.code.charCodeAt(6)+48:o[n.code])&&l.SendKeyMsgKC(e,n):(59==(n=t.keyCode)?n=186:173==n?n=189:61==n&&(n=187),l.SendKeyMsgKC(e,n)))},l.SendRemoteInputLock=function(e){l.send(String.fromCharCode(0,87,0,5,e))},l.SendMessage=function(e){3==l.State&&l.send(String.fromCharCode(0,17)+l.shortToStr(4+e.length)+e)},l.SendKeyMsgKC=function(e,t){if(3==l.State)if("object"==typeof e)for(var n in e)l.SendKeyMsgKC(e[n][0],e[n][1]);else 1==e?-1==l.pressedKeys.indexOf(t)&&l.pressedKeys.unshift(t):2==e&&-1!=(n=l.pressedKeys.indexOf(t))&&l.pressedKeys.splice(n,1),0<l.debugmode&&console.log("Sending Key "+t+", action "+e),l.send(String.fromCharCode(0,l.InputType.KEY,0,6,e-1,t))},l.SendStringUnicode=function(e){if(3==l.State)for(var t=0;t<e.length;t++)l.send(String.fromCharCode(0,l.InputType.KEYUNICODE,0,7,0)+ShortToStr(e.charCodeAt(t))),l.send(String.fromCharCode(0,l.InputType.KEYUNICODE,0,7,1)+ShortToStr(e.charCodeAt(t)))},l.SendKeyUnicode=function(e,t){3==l.State&&(0<l.debugmode&&console.log("Sending UnicodeKey "+t),l.send(String.fromCharCode(0,l.InputType.KEYUNICODE,0,7,e-1)+ShortToStr(t)))},l.sendcad=function(){l.SendCtrlAltDelMsg()},l.SendCtrlAltDelMsg=function(){3==l.State&&l.send(String.fromCharCode(0,l.InputType.CTRLALTDEL,0,4))},l.SendEscKey=function(){3==l.State&&l.send(String.fromCharCode(0,l.InputType.KEY,0,6,0,27,0,l.InputType.KEY,0,6,1,27))},l.SendStartMsg=function(){l.SendKeyMsgKC(l.KeyAction.EXDOWN,91),l.SendKeyMsgKC(l.KeyAction.EXUP,91)},l.SendCharmsMsg=function(){l.SendKeyMsgKC(l.KeyAction.EXDOWN,91),l.SendKeyMsgKC(l.KeyAction.DOWN,67),l.SendKeyMsgKC(l.KeyAction.UP,67),l.SendKeyMsgKC(l.KeyAction.EXUP,91)},l.SendTouchMsg1=function(e,t,n,o){3==l.State&&l.send(String.fromCharCode(0,l.InputType.TOUCH)+l.shortToStr(14)+String.fromCharCode(1,e)+l.intToStr(t)+l.shortToStr(n)+l.shortToStr(o))},l.SendTouchMsg2=function(e,t){var n,o,a="";for(o in l.TouchArray)o==e?n=t:1==l.TouchArray[o].f?(n=65542,l.TouchArray[o].f=3,0):2==l.TouchArray[o].f?(n=262144,0):n=131078,a+=String.fromCharCode(o)+l.intToStr(n)+l.shortToStr(l.TouchArray[o].x)+l.shortToStr(l.TouchArray[o].y),2==l.TouchArray[o].f&&delete l.TouchArray[o];3==l.State&&l.send(String.fromCharCode(0,l.InputType.TOUCH)+l.shortToStr(5+a.length)+String.fromCharCode(2)+a),0==Object.keys(l.TouchArray).length&&null!=l.touchtimer&&(clearInterval(l.touchtimer),l.touchtimer=null)},l.SendMouseMsg=function(e,t){var n,o,a,r,s,i;3==l.State&&null!=e&&null!=l.Canvas&&(t=t||window.event,s=l.Canvas.canvas.height/l.CanvasId.clientHeight,r=l.Canvas.canvas.width/l.CanvasId.clientWidth,i=l.GetPositionOfControl(l.Canvas.canvas),n=(t.pageX-i[0])*r,o=(t.pageY-i[1])*s,t.addx&&(n+=t.addx),t.addy&&(o+=t.addy),0<=n&&n<=l.Canvas.canvas.width&&0<=o&&o<=l.Canvas.canvas.height&&(r=a=0,e==l.KeyAction.UP||e==l.KeyAction.DOWN?t.which?a=1==t.which?l.MouseButton.LEFT:2==t.which?l.MouseButton.MIDDLE:l.MouseButton.RIGHT:t.button&&(a=0==t.button?l.MouseButton.LEFT:1==t.button?l.MouseButton.MIDDLE:l.MouseButton.RIGHT):e==l.KeyAction.SCROLL&&(t.detail?r=120*t.detail*-1:t.wheelDelta&&(r=3*t.wheelDelta)),!0===l.SwapMouse&&(a==l.MouseButton.LEFT?a=l.MouseButton.RIGHT:a==l.MouseButton.RIGHT&&(a=l.MouseButton.LEFT)),i="",i=e==l.KeyAction.DBLCLICK?String.fromCharCode(0,l.InputType.MOUSE,0,10,0,136,n/256&255,255&n,o/256&255,255&o):e==l.KeyAction.SCROLL?(t=r<(t=s=0)?(s=255-(Math.abs(r)>>8),255-(255&Math.abs(r))):(s=r>>8,255&r),String.fromCharCode(0,l.InputType.MOUSE,0,12,0,0,n/256&255,255&n,o/256&255,255&o,s,t)):String.fromCharCode(0,l.InputType.MOUSE,0,10,0,e==l.KeyAction.DOWN?a:2*a&255,n/256&255,255&n,o/256&255,255&o),l.Action==l.KeyAction.NONE?0==l.Alternate||l.ipad?(l.send(i),l.Alternate=1):l.Alternate=0:l.send(i)))},l.GetDisplayNumbers=function(){l.send(String.fromCharCode(0,11,0,4))},l.SetDisplay=function(e){l.send(String.fromCharCode(0,12,0,6,e>>8,255&e))},l.intToStr=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},l.shortToStr=function(e){return String.fromCharCode(e>>8&255,255&e)},l.onResize=function(){0!=l.ScreenWidth&&0!=l.ScreenHeight&&(l.Canvas.canvas.width==l.ScreenWidth&&l.Canvas.canvas.height==l.ScreenHeight||(l.FirstDraw&&(l.Canvas.canvas.width=l.ScreenWidth,l.Canvas.canvas.height=l.ScreenHeight,l.Canvas.fillRect(0,0,l.ScreenWidth,l.ScreenHeight),null!=l.onScreenSizeChange&&l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight,l.CanvasId)),l.FirstDraw=!1,1<l.debugmode&&console.log("onResize: "+l.ScreenWidth+" x "+l.ScreenHeight)))},l.xxMouseInputGrab=!1,l.xxKeyInputGrab=!1,l.xxMouseMove=function(e){return 3==l.State&&l.SendMouseMsg(l.KeyAction.NONE,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxMouseUp=function(e){return 3==l.State&&l.SendMouseMsg(l.KeyAction.UP,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxMouseDown=function(e){return 3==l.State&&l.SendMouseMsg(l.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxMouseDblClick=function(e){return 3==l.State&&l.SendMouseMsg(l.KeyAction.DBLCLICK,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxDOMMouseScroll=function(e){return 3!=l.State||(l.SendMouseMsg(l.KeyAction.SCROLL,e),!1)},l.xxMouseWheel=function(e){return 3!=l.State||(l.SendMouseMsg(l.KeyAction.SCROLL,e),!1)},l.xxKeyUp=function(e){return"Dead"!=e.key&&3==l.State&&("string"==typeof e.key&&1==e.key.length&&1!=e.ctrlKey&&1!=e.altKey&&(0==l.remoteKeyMap||0<l.debugmode)?l.SendKeyUnicode(l.KeyAction.UP,e.key.charCodeAt(0)):l.SendKeyMsg(l.KeyAction.UP,e)),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxKeyDown=function(e){if("Dead"!=e.key&&3==l.State&&("string"!=typeof e.key||1!=e.key.length||1==e.ctrlKey||1==e.altKey||!(0==l.remoteKeyMap||0<l.debugmode)))return l.SendKeyMsg(l.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxKeyPress=function(e){return"Dead"!=e.key&&3==l.State&&"string"==typeof e.key&&1==e.key.length&&1!=e.ctrlKey&&1!=e.altKey&&(0==l.remoteKeyMap||0<l.debugmode)&&l.SendKeyUnicode(l.KeyAction.DOWN,e.key.charCodeAt(0)),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.handleKeys=function(e){return 1!=l.stopInput&&3==desktop.State&&l.xxKeyPress(e)},l.handleKeyUp=function(e){return 1!=l.stopInput&&3==desktop.State&&(l.firstUpKeys.length<5&&(l.firstUpKeys.push(e.keyCode),5==l.firstUpKeys.length&&("16,17,91,91,16"!=(t=l.firstUpKeys.join(","))&&"16,17,18,91,92"!=t||(l.stopInput=!0))),l.xxKeyUp(e));var t},l.handleKeyDown=function(e){return 1!=l.stopInput&&3==desktop.State&&l.xxKeyDown(e)},l.handleReleaseKeys=function(){var e,t=JSON.parse(JSON.stringify(l.pressedKeys));for(e in t)l.SendKeyMsgKC(l.KeyAction.UP,t[e])},l.mousedblclick=function(e){return 1!=l.stopInput&&l.xxMouseDblClick(e)},l.mousedown=function(e){return 1!=l.stopInput&&l.xxMouseDown(e)},l.mouseup=function(e){return 1!=l.stopInput&&l.xxMouseUp(e)},l.mousemove=function(e){return 1!=l.stopInput&&l.xxMouseMove(e)},l.mousewheel=function(e){return 1!=l.stopInput&&l.xxMouseWheel(e)},l.xxMsTouchEvent=function(e){var t,n,o,a;if(4!=e.originalEvent.pointerType)return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),"MSPointerDown"==e.type||"MSPointerMove"==e.type||"MSPointerUp"==e.type?(t=0,n=e.originalEvent.pointerId%256,o=e.offsetX*(Canvas.canvas.width/l.CanvasId.clientWidth),a=e.offsetY*(Canvas.canvas.height/l.CanvasId.clientHeight),"MSPointerDown"==e.type?t=65542:"MSPointerMove"==e.type?t=131078:"MSPointerUp"==e.type&&(t=262144),l.TouchArray[n]||(l.TouchArray[n]={x:o,y:a}),l.SendTouchMsg2(n,t),"MSPointerUp"==e.type&&delete l.TouchArray[n]):alert(e.type),!0},l.xxTouchStart=function(e){if(3==l.State)if(e.preventDefault&&e.preventDefault(),0==l.touchenabled||1==l.touchenabled){var t;1<e.originalEvent.touches.length||(t=e.originalEvent.touches[0],e.which=1,l.LastX=e.pageX=t.pageX,l.LastY=e.pageY=t.pageY,l.SendMouseMsg(KeyAction.DOWN,e))}else{var n,o,a=l.GetPositionOfControl(Canvas.canvas);for(n in e.originalEvent.changedTouches)e.originalEvent.changedTouches[n].identifier&&(o=e.originalEvent.changedTouches[n].identifier%256,l.TouchArray[o]||(l.TouchArray[o]={x:(e.originalEvent.touches[n].pageX-a[0])*(Canvas.canvas.width/l.CanvasId.clientWidth),y:(e.originalEvent.touches[n].pageY-a[1])*(Canvas.canvas.height/l.CanvasId.clientHeight),f:1}));0<Object.keys(l.TouchArray).length&&null==touchtimer&&(l.touchtimer=setInterval(function(){l.SendTouchMsg2(256,0)},50))}},l.xxTouchMove=function(e){if(3==l.State)if(e.preventDefault&&e.preventDefault(),0==l.touchenabled||1==l.touchenabled){var t;1<e.originalEvent.touches.length||(t=e.originalEvent.touches[0],e.which=1,l.LastX=e.pageX=t.pageX,l.LastY=e.pageY=t.pageY,l.SendMouseMsg(l.KeyAction.NONE,e))}else{var n,o,a=l.GetPositionOfControl(Canvas.canvas);for(n in e.originalEvent.changedTouches)e.originalEvent.changedTouches[n].identifier&&(o=e.originalEvent.changedTouches[n].identifier%256,l.TouchArray[o]&&(l.TouchArray[o].x=(e.originalEvent.touches[n].pageX-a[0])*(l.Canvas.canvas.width/l.CanvasId.clientWidth),l.TouchArray[o].y=(e.originalEvent.touches[n].pageY-a[1])*(l.Canvas.canvas.height/l.CanvasId.clientHeight)))}},l.xxTouchEnd=function(e){if(3==l.State)if(e.preventDefault&&e.preventDefault(),0==l.touchenabled||1==l.touchenabled)1<e.originalEvent.touches.length||(e.which=1,e.pageX=LastX,e.pageY=LastY,l.SendMouseMsg(KeyAction.UP,e));else for(var t in e.originalEvent.changedTouches)e.originalEvent.changedTouches[t].identifier&&(t=e.originalEvent.changedTouches[t].identifier%256,l.TouchArray[t]&&(l.TouchArray[t].f=2))},l.GrabMouseInput=function(){var e;1!=l.xxMouseInputGrab&&((e=l.CanvasId).onmousemove=l.xxMouseMove,e.onmouseup=l.xxMouseUp,e.onmousedown=l.xxMouseDown,e.touchstart=l.xxTouchStart,e.touchmove=l.xxTouchMove,e.touchend=l.xxTouchEnd,e.MSPointerDown=l.xxMsTouchEvent,e.MSPointerMove=l.xxMsTouchEvent,e.MSPointerUp=l.xxMsTouchEvent,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=l.xxDOMMouseScroll:e.onmousewheel=l.xxMouseWheel,l.xxMouseInputGrab=!0)},l.UnGrabMouseInput=function(){var e;0!=l.xxMouseInputGrab&&((e=l.CanvasId).onmousemove=null,e.onmouseup=null,e.onmousedown=null,e.touchstart=null,e.touchmove=null,e.touchend=null,e.MSPointerDown=null,e.MSPointerMove=null,e.MSPointerUp=null,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=null:e.onmousewheel=null,l.xxMouseInputGrab=!1)},l.GrabKeyInput=function(){1!=l.xxKeyInputGrab&&(document.onkeyup=l.xxKeyUp,document.onkeydown=l.xxKeyDown,document.onkeypress=l.xxKeyPress,l.xxKeyInputGrab=!0)},l.UnGrabKeyInput=function(){0!=l.xxKeyInputGrab&&(document.onkeyup=null,document.onkeydown=null,document.onkeypress=null,l.xxKeyInputGrab=!1)},l.GetPositionOfControl=function(e){var t=Array(2);for(t[0]=t[1]=0;e;)t[0]+=e.offsetLeft,t[1]+=e.offsetTop,e=e.offsetParent;return t},l.crotX=function(e,t){return 0==l.rotation?e:1==l.rotation?t:2==l.rotation?l.Canvas.canvas.width-e:3==l.rotation?l.Canvas.canvas.height-t:void 0},l.crotY=function(e,t){return 0==l.rotation?t:1==l.rotation?l.Canvas.canvas.width-e:2==l.rotation?l.Canvas.canvas.height-t:3==l.rotation?e:void 0},l.rotX=function(e,t){return 0==l.rotation||1==l.rotation?e:2==l.rotation?e-l.Canvas.canvas.width:3==l.rotation?e-l.Canvas.canvas.height:void 0},l.rotY=function(e,t){return 0==l.rotation||3==l.rotation?t:1==l.rotation?t-l.Canvas.canvas.width:2==l.rotation?t-l.Canvas.canvas.height:void 0},l.tcanvas=null,l.setRotation=function(e){for(;e<0;)e+=4;var t=e%4;if(t==l.rotation)return!0;var n=l.Canvas.canvas.width,o=l.Canvas.canvas.height;1!=l.rotation&&3!=l.rotation||(n=l.Canvas.canvas.height,o=l.Canvas.canvas.width),null==l.tcanvas&&(l.tcanvas=document.createElement("canvas"));var a=l.tcanvas.getContext("2d");return a.setTransform(1,0,0,1,0,0),a.canvas.width=n,a.canvas.height=o,a.rotate(-90*l.rotation*Math.PI/180),0==l.rotation&&a.drawImage(l.Canvas.canvas,0,0),1==l.rotation&&a.drawImage(l.Canvas.canvas,-l.Canvas.canvas.width,0),2==l.rotation&&a.drawImage(l.Canvas.canvas,-l.Canvas.canvas.width,-l.Canvas.canvas.height),3==l.rotation&&a.drawImage(l.Canvas.canvas,0,-l.Canvas.canvas.height),0!=l.rotation&&2!=l.rotation||(l.Canvas.canvas.height=n,l.Canvas.canvas.width=o),1!=l.rotation&&3!=l.rotation||(l.Canvas.canvas.height=o,l.Canvas.canvas.width=n),l.Canvas.setTransform(1,0,0,1,0,0),l.Canvas.rotate(90*t*Math.PI/180),l.rotation=t,l.Canvas.drawImage(l.tcanvas,l.rotX(0,0),l.rotY(0,0)),l.ScreenWidth=l.Canvas.canvas.width,l.ScreenHeight=l.Canvas.canvas.height,null!=l.onScreenSizeChange&&(console.log("s4",l.ScreenWidth,l.ScreenHeight),l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight,l.CanvasId)),!0},l.StartRecording=function(){null==l.recordedData&&l.CanvasId.toBlob(function(e){var s=new FileReader;s.readAsArrayBuffer(e),s.onload=function(e){for(var t="",n=new Uint8Array(s.result),o=n.byteLength,a=0;a<o;a++)t+=String.fromCharCode(n[a]);l.recordedData=[],l.recordedStart=Date.now(),l.recordedSize=0,l.recordedData.push(S(1,0,JSON.stringify({magic:"MeshCentralRelaySession",ver:1,time:(new Date).toLocaleString(),protocol:2}))),l.recordedData.push(S(2,1,l.shortToStr(7)+l.shortToStr(8)+l.shortToStr(l.ScreenWidth)+l.shortToStr(l.ScreenHeight)));var r=8+t.length;65e3<r?l.recordedData.push(S(2,1,l.shortToStr(27)+l.shortToStr(8)+l.intToStr(r)+l.shortToStr(3)+l.shortToStr(0)+l.shortToStr(0)+l.shortToStr(0)+t)):l.recordedData.push(S(2,1,l.shortToStr(3)+l.shortToStr(r)+l.shortToStr(0)+l.shortToStr(0)+t))}})},l.StopRecording=function(){if(null!=l.recordedData){var e=l.recordedData;return e.push(S(3,0,"MeshCentralMCREC")),delete l.recordedData,delete l.recordedStart,delete l.recordedSize,e}},l.MuchTheSame=function(e,t){return Math.abs(e-t)<4},l.Debug=function(e){console.log(e)},l.getIEVersion=function(){var e,t=-1;return"Microsoft Internet Explorer"==navigator.appName&&(e=navigator.userAgent,null!=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})").exec(e)&&(t=parseFloat(RegExp.$1))),t},l.haltEvent=function(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l}
\ No newline at end of file
ssh.js
new
+157
@@ -0,0 +1,157 @@
1
+/**
2
+* @description MeshCentral SSH relay
3
+* @author Ylian Saint-Hilaire
4
+* @copyright Intel Corporation 2018-2021
5
+* @license Apache-2.0
6
+* @version v0.0.1
7
+*/
8
+
9
+/*jslint node: true */
10
+/*jshint node: true */
11
+/*jshint strict:false */
12
+/*jshint -W097 */
13
+/*jshint esversion: 6 */
14
+"use strict";
15
+
16
+// Construct a SSH Relay object, called upon connection
17
+module.exports.CreateSshRelay = function (parent, db, ws, req, args, domain) {
18
+ const Net = require('net');
19
+ const WebSocket = require('ws');
20
+
21
+ var obj = {};
22
+ obj.domain = domain;
23
+ obj.ws = ws;
24
+ obj.wsClient = null;
25
+ obj.tcpServer = null;
26
+ obj.tcpServerPort = 0;
27
+ obj.relaySocket = null;
28
+ obj.relayActive = false;
29
+ obj.infos = null;
30
+ var sshClient = null;
31
+
32
+ parent.parent.debug('relay', 'SSH: Request for SSH relay (' + req.clientIp + ')');
33
+
34
+ // Disconnect
35
+ obj.close = function (arg) {
36
+ if ((arg == 1) || (arg == null)) { try { ws.close(); } catch (e) { console.log(e); } } // Soft close, close the websocket
37
+ if (arg == 2) { try { ws._socket._parent.end(); } catch (e) { console.log(e); } } // Hard close, close the TCP socket
38
+ if (obj.wsClient) { obj.wsClient.close(); obj.wsClient = null; }
39
+ if (obj.tcpServer) { obj.tcpServer.close(); obj.tcpServer = null; }
40
+ if (sshClient) { sshClient.close(); sshClient = null; }
41
+ delete obj.domain;
42
+ delete obj.ws;
43
+ };
44
+
45
+ // Start the looppback server
46
+ function startTcpServer() {
47
+ obj.tcpServer = new Net.Server();
48
+ obj.tcpServer.listen(0, '127.0.0.1', function () { obj.tcpServerPort = obj.tcpServer.address().port; startSSH(obj.tcpServerPort); });
49
+ obj.tcpServer.on('connection', function (socket) {
50
+ if (obj.relaySocket != null) {
51
+ socket.close();
52
+ } else {
53
+ obj.relaySocket = socket;
54
+ obj.relaySocket.pause();
55
+ obj.relaySocket.on('data', function (chunk) { // Make sure to handle flow control.
56
+ if (obj.relayActive == true) { obj.relaySocket.pause(); obj.wsClient.send(chunk, function () { obj.relaySocket.resume(); }); }
57
+ });
58
+ obj.relaySocket.on('end', function () { obj.close(); });
59
+ obj.relaySocket.on('error', function (err) { obj.close(); });
60
+
61
+ // Decode the authentication cookie
62
+ var cookie = parent.parent.decodeCookie(obj.infos.ip, parent.parent.loginCookieEncryptionKey);
63
+ if (cookie == null) return;
64
+
65
+ // Setup the correct URL with domain and use TLS only if needed.
66
+ var options = { rejectUnauthorized: false };
67
+ if (domain.dns != null) { options.servername = domain.dns; }
68
+ var protocol = 'wss';
69
+ if (args.tlsoffload) { protocol = 'ws'; }
70
+ var domainadd = '';
71
+ if ((domain.dns == null) && (domain.id != '')) { domainadd = domain.id + '/' }
72
+ var url = protocol + '://127.0.0.1:' + args.port + '/' + domainadd + ((cookie.lc == 1)?'local':'mesh') + 'relay.ashx?noping=1&auth=' + obj.infos.ip;
73
+ parent.parent.debug('relay', 'SSH: Connection websocket to ' + url);
74
+ obj.wsClient = new WebSocket(url, options);
75
+ obj.wsClient.on('open', function () { parent.parent.debug('relay', 'SSH: Relay websocket open'); });
76
+ obj.wsClient.on('message', function (data) { // Make sure to handle flow control.
77
+ if ((obj.relayActive == false) && (data == 'c')) {
78
+ obj.relayActive = true; obj.relaySocket.resume();
79
+ } else {
80
+ obj.wsClient._socket.pause();
81
+ obj.relaySocket.write(data, function () { obj.wsClient._socket.resume(); });
82
+ }
83
+ });
84
+ obj.wsClient.on('close', function () { parent.parent.debug('relay', 'SSH: Relay websocket closed'); obj.close(); });
85
+ obj.wsClient.on('error', function (err) { parent.parent.debug('relay', 'SSH: Relay websocket error: ' + err); obj.close(); });
86
+ obj.tcpServer.close();
87
+ obj.tcpServer = null;
88
+ }
89
+ });
90
+ }
91
+
92
+ // Start the SSH client
93
+ function startSSH(port) {
94
+ parent.parent.debug('relay', 'SSH: Starting SSH client on loopback port ' + port);
95
+ try {
96
+ sshClient = require('node-rdpjs-2').createClient({
97
+ logLevel: 'ERROR',
98
+ domain: obj.infos.domain,
99
+ userName: obj.infos.username,
100
+ password: obj.infos.password,
101
+ enablePerf: true,
102
+ autoLogin: true,
103
+ screen: obj.infos.screen,
104
+ locale: obj.infos.locale
105
+ }).on('connect', function () {
106
+ send(['rdp-connect']);
107
+ }).on('bitmap', function (bitmap) {
108
+ try { ws.send(bitmap.data); } catch (ex) { } // Send the bitmap data as binary
109
+ delete bitmap.data;
110
+ send(['rdp-bitmap', bitmap]); // Send the bitmap metadata seperately, without bitmap data.
111
+ }).on('close', function () {
112
+ send(['rdp-close']);
113
+ }).on('error', function (err) {
114
+ send(['rdp-error', err]);
115
+ }).connect('127.0.0.1', obj.tcpServerPort);
116
+ } catch (ex) {
117
+ console.log('startSshException', ex);
118
+ obj.close();
119
+ }
120
+ }
121
+
122
+ // When data is received from the web socket
123
+ // SSH default port is 22
124
+ ws.on('message', function (msg) {
125
+ try {
126
+ msg = JSON.parse(msg);
127
+ switch (msg[0]) {
128
+ case 'infos': { obj.infos = msg[1]; startTcpServer(); break; }
129
+ case 'mouse': { if (sshClient) { sshClient.sendPointerEvent(msg[1], msg[2], msg[3], msg[4]); } break; }
130
+ case 'wheel': { if (sshClient) { sshClient.sendWheelEvent(msg[1], msg[2], msg[3], msg[4]); } break; }
131
+ case 'scancode': { if (sshClient) { sshClient.sendKeyEventScancode(msg[1], msg[2]); } break; }
132
+ case 'unicode': { if (sshClient) { sshClient.sendKeyEventUnicode(msg[1], msg[2]); } break; }
133
+ case 'disconnect': { obj.close(); break; }
134
+ }
135
+ } catch (ex) {
136
+ console.log('SSHMessageException', msg, ex);
137
+ obj.close();
138
+ }
139
+ });
140
+
141
+ // If error, do nothing
142
+ ws.on('error', function (err) { parent.parent.debug('relay', 'SSH: Browser websocket error: ' + err); obj.close(); });
143
+
144
+ // If the web socket is closed
145
+ ws.on('close', function (req) { parent.parent.debug('relay', 'SSH: Browser websocket closed'); obj.close(); });
146
+
147
+ // Send an object with flow control
148
+ function send(obj) {
149
+ try { sshClient.bufferLayer.socket.pause(); } catch (ex) { }
150
+ try { ws.send(JSON.stringify(obj), function () { try { sshClient.bufferLayer.socket.resume(); } catch (ex) { } }); } catch (ex) { }
151
+ }
152
+
153
+ // We are all set, start receiving data
154
+ ws._socket.resume();
155
+
156
+ return obj;
157
+};
\ No newline at end of file
translate/translate.js
+2
@@ -40,6 +40,7 @@ var meshCentralSourceFiles = [
40
"../views/terminal.handlebars",
41
"../views/sharing.handlebars",
42
"../views/mstsc.handlebars",
43
+ "../views/ssh.handlebars",
44
"../emails/account-check.html",
45
"../emails/account-invite.html",
46
"../emails/account-login.html",
@@ -78,6 +79,7 @@ var minifyMeshCentralSourceFiles = [
79
"../views/terminal.handlebars",
80
"../views/sharing.handlebars",
81
"../views/mstsc.handlebars",
82
+ "../views/ssh.handlebars",
83
"../public/scripts/agent-desktop-0.0.2.js",
84
"../public/scripts/agent-redir-rtc-0.1.0.js",
85
"../public/scripts/agent-redir-ws-0.1.1.js",
translate/translate.json
+1731
-1691
@@ -17,8 +17,8 @@
17
"zh-chs": " + CIRA",
18
"zh-cht": " + CIRA",
19
"xloc": [
20
- "default.handlebars->31->1596",
21
- "default.handlebars->31->1598"
20
+ "default.handlebars->31->1598",
21
+ "default.handlebars->31->1600"
22
]
23
},
24
{
@@ -204,7 +204,7 @@
204
"zh-chs": " 可以使用密码提示,但不建议使用。",
205
"zh-cht": " 可以使用密碼提示,但不建議使用。",
206
"xloc": [
207
- "default.handlebars->31->1497"
207
+ "default.handlebars->31->1499"
208
]
209
},
210
{
@@ -224,8 +224,8 @@
224
"zh-chs": " 用户需要先登录到该服务器一次,然后才能将其添加到设备组。",
225
"zh-cht": " 用戶需要先登入到該伺服器一次,然後才能將其新增到裝置群。",
226
"xloc": [
227
- "default.handlebars->31->1673",
228
- "default.handlebars->31->2161"
227
+ "default.handlebars->31->1675",
228
+ "default.handlebars->31->2163"
229
]
230
},
231
{
@@ -430,7 +430,7 @@
430
"zh-chs": "* 8个字符,1个大写,1个小写,1个数字,1个非字母数字。",
431
"zh-cht": "* 8個字符,1個大寫,1個小寫,1個數字,1個非字母數字。",
432
"xloc": [
433
- "default.handlebars->31->1642",
433
+ "default.handlebars->31->1644",
434
"default.handlebars->31->374"
435
]
436
},
@@ -506,7 +506,7 @@
506
"zh-cht": ",",
507
"xloc": [
508
"default-mobile.handlebars->11->599",
509
- "default.handlebars->31->1744"
509
+ "default.handlebars->31->1746"
510
]
511
},
512
{
@@ -554,7 +554,7 @@
554
"zh-cht": ",MQTT在線",
555
"xloc": [
556
"default-mobile.handlebars->11->516",
557
- "default.handlebars->31->1207"
557
+ "default.handlebars->31->1209"
558
]
559
},
560
{
@@ -563,7 +563,7 @@
563
"nl": ", Geen toestemming",
564
"de": ", keine Zustimmung",
565
"xloc": [
566
- "default.handlebars->31->787"
566
+ "default.handlebars->31->789"
567
]
568
},
569
{
@@ -583,7 +583,7 @@
583
"zh-chs": ",提示同意",
584
"zh-cht": ",提示同意",
585
"xloc": [
586
- "default.handlebars->31->788"
586
+ "default.handlebars->31->790"
587
]
588
},
589
{
@@ -603,7 +603,7 @@
603
"zh-chs": ",软体KVM",
604
"zh-cht": ",軟體KVM",
605
"xloc": [
606
- "default.handlebars->31->989",
606
+ "default.handlebars->31->991",
607
"desktop.handlebars->3->12",
608
"sharing.handlebars->11->12"
609
]
@@ -613,7 +613,7 @@
613
"fr": ", barre d'outils",
614
"nl": ", Werkbalk",
615
"xloc": [
616
- "default.handlebars->31->789"
616
+ "default.handlebars->31->791"
617
]
618
},
619
{
@@ -622,7 +622,7 @@
622
"fr": ", Visualisation seulement",
623
"de": ", nur ansehen",
624
"xloc": [
625
- "default.handlebars->31->786"
625
+ "default.handlebars->31->788"
626
]
627
},
628
{
@@ -645,13 +645,14 @@
645
"default-mobile.handlebars->11->354",
646
"default-mobile.handlebars->11->386",
647
"default-mobile.handlebars->11->390",
648
- "default.handlebars->31->1058",
649
- "default.handlebars->31->1070",
650
- "default.handlebars->31->996",
648
+ "default.handlebars->31->1060",
649
+ "default.handlebars->31->1072",
650
+ "default.handlebars->31->998",
651
"desktop.handlebars->3->19",
652
"sharing.handlebars->11->19",
653
"sharing.handlebars->11->27",
654
"sharing.handlebars->11->44",
655
+ "ssh.handlebars->9->6",
656
"terminal.handlebars->3->9",
657
"xterm.handlebars->9->6"
658
]
@@ -774,7 +775,7 @@
775
"zh-chs": ",{0}观看",
776
"zh-cht": ",{0}觀看",
777
"xloc": [
777
- "default.handlebars->31->990",
778
+ "default.handlebars->31->992",
779
"desktop.handlebars->3->13",
780
"sharing.handlebars->11->13"
781
]
@@ -793,6 +794,7 @@
794
"ru": "-",
795
"xloc": [
796
"default.handlebars->container->column_l->p2->p2info->p2createMeshLink1",
797
+ "ssh.handlebars->p11->deskarea0->deskarea1->3",
798
"xterm.handlebars->p11->deskarea0->deskarea1->3"
799
]
800
},
@@ -841,9 +843,9 @@
843
"xloc": [
844
"default-mobile.handlebars->11->132",
845
"default-mobile.handlebars->11->392",
844
- "default.handlebars->31->1076",
845
- "default.handlebars->31->1796",
846
- "default.handlebars->31->2330",
846
+ "default.handlebars->31->1078",
847
+ "default.handlebars->31->1798",
848
+ "default.handlebars->31->2332",
849
"sharing.handlebars->11->50"
850
]
851
},
@@ -901,7 +903,7 @@
903
"zh-chs": "1个活跃时段",
904
"zh-cht": "1個活躍時段",
905
"xloc": [
904
- "default.handlebars->31->2234"
906
+ "default.handlebars->31->2236"
907
]
908
},
909
{
@@ -923,7 +925,7 @@
925
"xloc": [
926
"default-mobile.handlebars->11->142",
927
"default-mobile.handlebars->11->642",
926
- "default.handlebars->31->1820",
928
+ "default.handlebars->31->1822",
929
"download.handlebars->3->1",
930
"download2.handlebars->5->1",
931
"sharing.handlebars->11->96"
@@ -946,7 +948,7 @@
948
"zh-chs": "1条连接",
949
"zh-cht": "1位聯絡文",
950
"xloc": [
949
- "default.handlebars->31->992",
951
+ "default.handlebars->31->994",
952
"desktop.handlebars->3->15",
953
"sharing.handlebars->11->15"
954
]
@@ -990,7 +992,7 @@
992
"zh-chs": "1组",
993
"zh-cht": "1群",
994
"xloc": [
993
- "default.handlebars->31->2195"
995
+ "default.handlebars->31->2197"
996
]
997
},
998
{
@@ -1032,8 +1034,8 @@
1034
"zh-chs": "1分钟",
1035
"zh-cht": "1分鐘",
1036
"xloc": [
1035
- "default.handlebars->31->1463",
1036
- "default.handlebars->31->854"
1037
+ "default.handlebars->31->1465",
1038
+ "default.handlebars->31->856"
1039
]
1040
},
1041
{
@@ -1095,7 +1097,7 @@
1097
"zh-chs": "有1个用户没有显示,请使用搜索框查找用户...",
1098
"zh-cht": "有1個用戶沒有顯示,請使用搜尋框搜尋用戶...",
1099
"xloc": [
1098
- "default.handlebars->31->1985"
1100
+ "default.handlebars->31->1987"
1101
]
1102
},
1103
{
@@ -1123,7 +1125,7 @@
1125
"nl": "1 seconde",
1126
"xloc": [
1127
"default-mobile.handlebars->11->308",
1126
- "default.handlebars->31->882"
1128
+ "default.handlebars->31->884"
1129
]
1130
},
1131
{
@@ -1169,7 +1171,7 @@
1171
"default-mobile.handlebars->11->204",
1172
"default-mobile.handlebars->11->207",
1173
"default-mobile.handlebars->11->210",
1172
- "default.handlebars->31->1989",
1174
+ "default.handlebars->31->1991",
1175
"default.handlebars->31->307",
1176
"default.handlebars->31->310",
1177
"default.handlebars->31->313",
@@ -1301,8 +1303,8 @@
1303
"zh-chs": "10分钟",
1304
"zh-cht": "10分鐘",
1305
"xloc": [
1304
- "default.handlebars->31->1465",
1305
- "default.handlebars->31->856"
1306
+ "default.handlebars->31->1467",
1307
+ "default.handlebars->31->858"
1308
]
1309
},
1310
{
@@ -1310,7 +1312,7 @@
1312
"nl": "10 seconden",
1313
"xloc": [
1314
"default-mobile.handlebars->11->310",
1313
- "default.handlebars->31->884"
1315
+ "default.handlebars->31->886"
1316
]
1317
},
1318
{
@@ -1395,8 +1397,8 @@
1397
"zh-chs": "12小时",
1398
"zh-cht": "12小時",
1399
"xloc": [
1398
- "default.handlebars->31->1473",
1399
- "default.handlebars->31->864"
1400
+ "default.handlebars->31->1475",
1401
+ "default.handlebars->31->866"
1402
]
1403
},
1404
{
@@ -1439,8 +1441,8 @@
1441
"zh-chs": "15分钟",
1442
"zh-cht": "15分鐘",
1443
"xloc": [
1442
- "default.handlebars->31->1466",
1443
- "default.handlebars->31->857"
1444
+ "default.handlebars->31->1468",
1445
+ "default.handlebars->31->859"
1446
]
1447
},
1448
{
@@ -1460,8 +1462,8 @@
1462
"zh-chs": "16小时",
1463
"zh-cht": "16小時",
1464
"xloc": [
1463
- "default.handlebars->31->1474",
1464
- "default.handlebars->31->865"
1465
+ "default.handlebars->31->1476",
1466
+ "default.handlebars->31->867"
1467
]
1468
},
1469
{
@@ -1481,8 +1483,8 @@
1483
"zh-chs": "2天",
1484
"zh-cht": "2天",
1485
"xloc": [
1484
- "default.handlebars->31->1476",
1485
- "default.handlebars->31->867"
1486
+ "default.handlebars->31->1478",
1487
+ "default.handlebars->31->869"
1488
]
1489
},
1490
{
@@ -1502,8 +1504,8 @@
1504
"zh-chs": "2小时",
1505
"zh-cht": "2小時",
1506
"xloc": [
1505
- "default.handlebars->31->1470",
1506
- "default.handlebars->31->861"
1507
+ "default.handlebars->31->1472",
1508
+ "default.handlebars->31->863"
1509
]
1510
},
1511
{
@@ -1607,8 +1609,8 @@
1609
"zh-chs": "24小时",
1610
"zh-cht": "24小時",
1611
"xloc": [
1610
- "default.handlebars->31->1475",
1611
- "default.handlebars->31->866"
1612
+ "default.handlebars->31->1477",
1613
+ "default.handlebars->31->868"
1614
]
1615
},
1616
{
@@ -1671,7 +1673,7 @@
1673
"zh-chs": "2FA备份代码已清除",
1674
"zh-cht": "2FA備份代碼已清除",
1675
"xloc": [
1674
- "default.handlebars->31->1931"
1676
+ "default.handlebars->31->1933"
1677
]
1678
},
1679
{
@@ -1691,8 +1693,8 @@
1693
"zh-chs": "启用第二因素身份验证",
1694
"zh-cht": "啟用第二因素身份驗證",
1695
"xloc": [
1694
- "default.handlebars->31->2002",
1695
- "default.handlebars->31->2217"
1696
+ "default.handlebars->31->2004",
1697
+ "default.handlebars->31->2219"
1698
]
1699
},
1700
{
@@ -1811,8 +1813,8 @@
1813
"zh-chs": "30分钟",
1814
"zh-cht": "30分鐘",
1815
"xloc": [
1814
- "default.handlebars->31->1467",
1815
- "default.handlebars->31->858"
1816
+ "default.handlebars->31->1469",
1817
+ "default.handlebars->31->860"
1818
]
1819
},
1820
{
@@ -1876,8 +1878,8 @@
1878
"zh-chs": "4天",
1879
"zh-cht": "4天",
1880
"xloc": [
1879
- "default.handlebars->31->1477",
1880
- "default.handlebars->31->868"
1881
+ "default.handlebars->31->1479",
1882
+ "default.handlebars->31->870"
1883
]
1884
},
1885
{
@@ -1897,8 +1899,8 @@
1899
"zh-chs": "4个小时",
1900
"zh-cht": "4個小時",
1901
"xloc": [
1900
- "default.handlebars->31->1471",
1901
- "default.handlebars->31->862"
1902
+ "default.handlebars->31->1473",
1903
+ "default.handlebars->31->864"
1904
]
1905
},
1906
{
@@ -1981,8 +1983,8 @@
1983
"zh-chs": "45分钟",
1984
"zh-cht": "45分鐘",
1985
"xloc": [
1984
- "default.handlebars->31->1468",
1985
- "default.handlebars->31->859"
1986
+ "default.handlebars->31->1470",
1987
+ "default.handlebars->31->861"
1988
]
1989
},
1990
{
@@ -2022,8 +2024,8 @@
2024
"zh-chs": "5分钟",
2025
"zh-cht": "5分鐘",
2026
"xloc": [
2025
- "default.handlebars->31->1464",
2026
- "default.handlebars->31->855"
2027
+ "default.handlebars->31->1466",
2028
+ "default.handlebars->31->857"
2029
]
2030
},
2031
{
@@ -2031,7 +2033,7 @@
2033
"nl": "5 seconden",
2034
"xloc": [
2035
"default-mobile.handlebars->11->309",
2034
- "default.handlebars->31->883"
2036
+ "default.handlebars->31->885"
2037
]
2038
},
2039
{
@@ -2158,8 +2160,8 @@
2160
"zh-chs": "60分钟",
2161
"zh-cht": "60分鐘",
2162
"xloc": [
2161
- "default.handlebars->31->1469",
2162
- "default.handlebars->31->860"
2163
+ "default.handlebars->31->1471",
2164
+ "default.handlebars->31->862"
2165
]
2166
},
2167
{
@@ -2280,7 +2282,7 @@
2282
"zh-chs": "7天电源状态",
2283
"zh-cht": "7天電源狀態",
2284
"xloc": [
2283
- "default.handlebars->31->917"
2285
+ "default.handlebars->31->919"
2286
]
2287
},
2288
{
@@ -2344,10 +2346,10 @@
2346
"zh-chs": "8小時",
2347
"zh-cht": "8小時",
2348
"xloc": [
2347
- "default.handlebars->31->1472",
2349
+ "default.handlebars->31->1474",
2350
"default.handlebars->31->398",
2351
"default.handlebars->31->412",
2350
- "default.handlebars->31->863"
2352
+ "default.handlebars->31->865"
2353
]
2354
},
2355
{
@@ -2581,7 +2583,7 @@
2583
"zh-cht": "ACM",
2584
"xloc": [
2585
"default-mobile.handlebars->11->268",
2584
- "default.handlebars->31->1612",
2586
+ "default.handlebars->31->1614",
2587
"default.handlebars->31->657"
2588
]
2589
},
@@ -2774,7 +2776,7 @@
2776
"zh-cht": "拒絕存取",
2777
"xloc": [
2778
"default-mobile.handlebars->11->517",
2777
- "default.handlebars->31->1208"
2779
+ "default.handlebars->31->1210"
2780
]
2781
},
2782
{
@@ -2822,7 +2824,7 @@
2824
"zh-chs": "访问服务器档案",
2825
"zh-cht": "存取伺服器檔案",
2826
"xloc": [
2825
- "default.handlebars->31->2167"
2827
+ "default.handlebars->31->2169"
2828
]
2829
},
2830
{
@@ -2911,9 +2913,9 @@
2913
"default-mobile.handlebars->11->243",
2914
"default-mobile.handlebars->11->245",
2915
"default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3AccountActions->p2AccountSecurity->1->0",
2914
- "default.handlebars->31->1506",
2916
"default.handlebars->31->1508",
2916
- "default.handlebars->31->2446",
2917
+ "default.handlebars->31->1510",
2918
+ "default.handlebars->31->2448",
2919
"default.handlebars->31->626",
2920
"default.handlebars->31->628"
2921
]
@@ -2925,7 +2927,7 @@
2927
"de": "Konto Einstellungen",
2928
"xloc": [
2929
"default-mobile.handlebars->11->610",
2928
- "default.handlebars->31->2338"
2930
+ "default.handlebars->31->2340"
2931
]
2932
},
2933
{
@@ -2986,7 +2988,7 @@
2988
"zh-chs": "帐户已更改:{0}",
2989
"zh-cht": "帳戶已更改:{0}",
2990
"xloc": [
2989
- "default.handlebars->31->1904"
2991
+ "default.handlebars->31->1906"
2992
]
2993
},
2994
{
@@ -3006,7 +3008,7 @@
3008
"zh-chs": "创建帐户,电子邮件为{0}",
3009
"zh-cht": "創建帳戶,電子郵件為{0}",
3010
"xloc": [
3009
- "default.handlebars->31->1903"
3011
+ "default.handlebars->31->1905"
3012
]
3013
},
3014
{
@@ -3026,7 +3028,7 @@
3028
"zh-chs": "创建帐户,用户名是{0}",
3029
"zh-cht": "帳戶已創建,用戶名是{0}",
3030
"xloc": [
3029
- "default.handlebars->31->1902"
3031
+ "default.handlebars->31->1904"
3032
]
3033
},
3034
{
@@ -3046,8 +3048,8 @@
3048
"zh-chs": "帐户已被锁定",
3049
"zh-cht": "帳戶已被鎖定",
3050
"xloc": [
3049
- "default.handlebars->31->2004",
3050
- "default.handlebars->31->2164"
3051
+ "default.handlebars->31->2006",
3052
+ "default.handlebars->31->2166"
3053
]
3054
},
3055
{
@@ -3068,7 +3070,7 @@
3070
"zh-cht": "達到帳戶限制。",
3071
"xloc": [
3072
"default-mobile.handlebars->11->622",
3071
- "default.handlebars->31->2350",
3073
+ "default.handlebars->31->2352",
3074
"login-mobile.handlebars->5->6",
3075
"login.handlebars->5->6",
3076
"login2.handlebars->7->8"
@@ -3113,7 +3115,7 @@
3115
"zh-chs": "帐号登录",
3116
"zh-cht": "帳號登錄",
3117
"xloc": [
3116
- "default.handlebars->31->1839"
3118
+ "default.handlebars->31->1841"
3119
]
3120
},
3121
{
@@ -3122,7 +3124,7 @@
3124
"fr": "Connexion de {0}, {1}, {2}",
3125
"de": "Konto Login von {0}, {1}, {2}",
3126
"xloc": [
3125
- "default.handlebars->31->1945"
3127
+ "default.handlebars->31->1947"
3128
]
3129
},
3130
{
@@ -3142,7 +3144,7 @@
3144
"zh-chs": "帐户登出",
3145
"zh-cht": "帳戶登出",
3146
"xloc": [
3145
- "default.handlebars->31->1840"
3147
+ "default.handlebars->31->1842"
3148
]
3149
},
3150
{
@@ -3184,7 +3186,7 @@
3186
"zh-chs": "帐户密码已更改:{0}",
3187
"zh-cht": "帳戶密碼已更改:{0}",
3188
"xloc": [
3187
- "default.handlebars->31->1912"
3189
+ "default.handlebars->31->1914"
3190
]
3191
},
3192
{
@@ -3204,7 +3206,7 @@
3206
"zh-chs": "帐户已删除",
3207
"zh-cht": "帳戶已刪除",
3208
"xloc": [
3207
- "default.handlebars->31->1901"
3209
+ "default.handlebars->31->1903"
3210
]
3211
},
3212
{
@@ -3245,7 +3247,7 @@
3247
"zh-cht": "指令",
3248
"xloc": [
3249
"default-mobile.handlebars->11->523",
3248
- "default.handlebars->31->1214",
3250
+ "default.handlebars->31->1216",
3251
"default.handlebars->container->column_l->p42->p42tbl->1->0->8"
3252
]
3253
},
@@ -3266,8 +3268,8 @@
3268
"zh-chs": "动作档案",
3269
"zh-cht": "動作檔案",
3270
"xloc": [
3269
- "default.handlebars->31->963",
3270
- "default.handlebars->31->965"
3271
+ "default.handlebars->31->965",
3272
+ "default.handlebars->31->967"
3273
]
3274
},
3275
{
@@ -3374,7 +3376,7 @@
3376
"zh-chs": "如果ACM失败,则激活到CCM",
3377
"zh-cht": "如果ACM失敗,則激活到CCM",
3378
"xloc": [
3377
- "default.handlebars->31->1633"
3379
+ "default.handlebars->31->1635"
3380
]
3381
},
3382
{
@@ -3397,7 +3399,7 @@
3399
"default-mobile.handlebars->11->263",
3400
"default-mobile.handlebars->11->265",
3401
"default-mobile.handlebars->11->479",
3400
- "default.handlebars->31->1169",
3402
+ "default.handlebars->31->1171",
3403
"default.handlebars->31->650",
3404
"default.handlebars->31->652"
3405
]
@@ -3439,13 +3441,13 @@
3441
"zh-chs": "主动设备共享",
3442
"zh-cht": "主動設備共享",
3443
"xloc": [
3442
- "default.handlebars->31->775"
3444
+ "default.handlebars->31->777"
3445
]
3446
},
3447
{
3448
"en": "Active Login Tokens",
3449
"xloc": [
3448
- "default.handlebars->31->1527"
3450
+ "default.handlebars->31->1529"
3451
]
3452
},
3453
{
@@ -3472,7 +3474,7 @@
3474
"de": "hinzufügen",
3475
"xloc": [
3476
"default-mobile.handlebars->11->381",
3475
- "default.handlebars->31->1027"
3477
+ "default.handlebars->31->1029"
3478
]
3479
},
3480
{
@@ -3492,7 +3494,7 @@
3494
"zh-chs": "添加代理",
3495
"zh-cht": "新增代理",
3496
"xloc": [
3495
- "default.handlebars->31->1608",
3497
+ "default.handlebars->31->1610",
3498
"default.handlebars->31->340"
3499
]
3500
},
@@ -3530,8 +3532,8 @@
3532
"zh-chs": "添加设备",
3533
"zh-cht": "新增裝置",
3534
"xloc": [
3533
- "default.handlebars->31->2141",
3534
- "default.handlebars->31->2271",
3535
+ "default.handlebars->31->2143",
3536
+ "default.handlebars->31->2273",
3537
"default.handlebars->31->344"
3538
]
3539
},
@@ -3552,7 +3554,7 @@
3554
"zh-chs": "添加设备日志",
3555
"zh-cht": "新增裝置日誌",
3556
"xloc": [
3555
- "default.handlebars->31->831"
3557
+ "default.handlebars->31->833"
3558
]
3559
},
3560
{
@@ -3572,9 +3574,9 @@
3574
"zh-chs": "添加设备组",
3575
"zh-cht": "新增裝置群",
3576
"xloc": [
3575
- "default.handlebars->31->1708",
3576
- "default.handlebars->31->2135",
3577
- "default.handlebars->31->2259",
3577
+ "default.handlebars->31->1710",
3578
+ "default.handlebars->31->2137",
3579
+ "default.handlebars->31->2261",
3580
"default.handlebars->31->274"
3581
]
3582
},
@@ -3595,7 +3597,7 @@
3597
"zh-chs": "添加设备组权限",
3598
"zh-cht": "新增裝置群權限",
3599
"xloc": [
3598
- "default.handlebars->31->1705"
3600
+ "default.handlebars->31->1707"
3601
]
3602
},
3603
{
@@ -3615,8 +3617,8 @@
3617
"zh-chs": "添加设备权限",
3618
"zh-cht": "新增裝置權限",
3619
"xloc": [
3618
- "default.handlebars->31->1710",
3619
- "default.handlebars->31->1712"
3620
+ "default.handlebars->31->1712",
3621
+ "default.handlebars->31->1714"
3622
]
3623
},
3624
{
@@ -3713,7 +3715,7 @@
3715
"zh-chs": "添加成员身份",
3716
"zh-cht": "新增成員身份",
3717
"xloc": [
3716
- "default.handlebars->31->2291"
3718
+ "default.handlebars->31->2293"
3719
]
3720
},
3721
{
@@ -3753,8 +3755,8 @@
3755
"zh-chs": "添加安全密钥",
3756
"zh-cht": "新增安全密鑰",
3757
"xloc": [
3756
- "default.handlebars->31->1253",
3757
- "default.handlebars->31->1254",
3758
+ "default.handlebars->31->1255",
3759
+ "default.handlebars->31->1256",
3760
"default.handlebars->31->167",
3761
"default.handlebars->31->169",
3762
"default.handlebars->31->172",
@@ -3779,7 +3781,7 @@
3781
"zh-cht": "新增用戶",
3782
"xloc": [
3783
"default-mobile.handlebars->11->539",
3782
- "default.handlebars->31->767"
3784
+ "default.handlebars->31->769"
3785
]
3786
},
3787
{
@@ -3799,7 +3801,7 @@
3801
"zh-chs": "添加用户设备权限",
3802
"zh-cht": "新增用戶裝置權限",
3803
"xloc": [
3802
- "default.handlebars->31->1715"
3804
+ "default.handlebars->31->1717"
3805
]
3806
},
3807
{
@@ -3819,10 +3821,10 @@
3821
"zh-chs": "添加用户组",
3822
"zh-cht": "新增用戶群",
3823
"xloc": [
3822
- "default.handlebars->31->1604",
3823
- "default.handlebars->31->1707",
3824
- "default.handlebars->31->2265",
3825
- "default.handlebars->31->768"
3824
+ "default.handlebars->31->1606",
3825
+ "default.handlebars->31->1709",
3826
+ "default.handlebars->31->2267",
3827
+ "default.handlebars->31->770"
3828
]
3829
},
3830
{
@@ -3842,7 +3844,7 @@
3844
"zh-chs": "添加用户组设备权限",
3845
"zh-cht": "新增用戶群裝置權限",
3846
"xloc": [
3845
- "default.handlebars->31->1717"
3847
+ "default.handlebars->31->1719"
3848
]
3849
},
3850
{
@@ -3899,8 +3901,8 @@
3901
"zh-chs": "添加用户",
3902
"zh-cht": "新增用戶",
3903
"xloc": [
3902
- "default.handlebars->31->1603",
3903
- "default.handlebars->31->2130"
3904
+ "default.handlebars->31->1605",
3905
+ "default.handlebars->31->2132"
3906
]
3907
},
3908
{
@@ -3920,7 +3922,7 @@
3922
"zh-chs": "将用户添加到设备组",
3923
"zh-cht": "將用戶新增到裝置群",
3924
"xloc": [
3923
- "default.handlebars->31->1704"
3925
+ "default.handlebars->31->1706"
3926
]
3927
},
3928
{
@@ -3940,7 +3942,7 @@
3942
"zh-chs": "将用户添加到用户组",
3943
"zh-cht": "將用戶新增到用戶群",
3944
"xloc": [
3943
- "default.handlebars->31->2163"
3945
+ "default.handlebars->31->2165"
3946
]
3947
},
3948
{
@@ -4063,7 +4065,7 @@
4065
"zh-chs": "通过安装Mesh Agent将新计算机添加到该设备组。",
4066
"zh-cht": "通過安裝Mesh Agent將新電腦新增到該裝置群。",
4067
"xloc": [
4066
- "default.handlebars->31->1607",
4068
+ "default.handlebars->31->1609",
4069
"default.handlebars->31->339"
4070
]
4071
},
@@ -4136,7 +4138,7 @@
4138
"zh-chs": "添加了身份验证应用程序",
4139
"zh-cht": "添加了身份驗證應用程序",
4140
"xloc": [
4139
- "default.handlebars->31->1928"
4141
+ "default.handlebars->31->1930"
4142
]
4143
},
4144
{
@@ -4156,7 +4158,7 @@
4158
"zh-chs": "已将设备共享{0}从{1}添加到{2}",
4159
"zh-cht": "已將設備共享{0}從{1}添加到{2}",
4160
"xloc": [
4159
- "default.handlebars->31->1939"
4161
+ "default.handlebars->31->1941"
4162
]
4163
},
4164
{
@@ -4176,21 +4178,21 @@
4178
"zh-chs": "已将设备{0}添加到设备组{1}",
4179
"zh-cht": "已將設備{0}添加到設備組{1}",
4180
"xloc": [
4179
- "default.handlebars->31->1895",
4180
- "default.handlebars->31->1922"
4181
+ "default.handlebars->31->1897",
4182
+ "default.handlebars->31->1924"
4183
]
4184
},
4185
{
4186
"en": "Added login token",
4187
"xloc": [
4186
- "default.handlebars->31->1953"
4188
+ "default.handlebars->31->1955"
4189
]
4190
},
4191
{
4192
"en": "Added push notification authentication device",
4193
"nl": "Verificatie apparaat voor pushmeldingen toegevoegd",
4194
"xloc": [
4193
- "default.handlebars->31->1951"
4195
+ "default.handlebars->31->1953"
4196
]
4197
},
4198
{
@@ -4210,7 +4212,7 @@
4212
"zh-chs": "添加了安全密钥",
4213
"zh-cht": "添加了安全密鑰",
4214
"xloc": [
4213
- "default.handlebars->31->1933"
4215
+ "default.handlebars->31->1935"
4216
]
4217
},
4218
{
@@ -4230,7 +4232,7 @@
4232
"zh-chs": "已将用户组{0}添加到设备组{1}",
4233
"zh-cht": "已將用戶組{0}添加到設備組{1}",
4234
"xloc": [
4233
- "default.handlebars->31->1906"
4235
+ "default.handlebars->31->1908"
4236
]
4237
},
4238
{
@@ -4250,8 +4252,8 @@
4252
"zh-chs": "已将用户{0}添加到用户组{1}",
4253
"zh-cht": "已將用戶{0}添加到用戶組{1}",
4254
"xloc": [
4253
- "default.handlebars->31->1909",
4254
- "default.handlebars->31->1918"
4255
+ "default.handlebars->31->1911",
4256
+ "default.handlebars->31->1920"
4257
]
4258
},
4259
{
@@ -4312,7 +4314,7 @@
4314
"zh-cht": "管理員控制模式(ACM)",
4315
"xloc": [
4316
"default-mobile.handlebars->11->481",
4315
- "default.handlebars->31->1171"
4317
+ "default.handlebars->31->1173"
4318
]
4319
},
4320
{
@@ -4333,7 +4335,7 @@
4335
"zh-cht": "管理員憑證",
4336
"xloc": [
4337
"default-mobile.handlebars->11->487",
4336
- "default.handlebars->31->1177"
4338
+ "default.handlebars->31->1179"
4339
]
4340
},
4341
{
@@ -4354,6 +4356,7 @@
4356
"zh-cht": "管理員PowerShell",
4357
"xloc": [
4358
"default.handlebars->termShellContextMenu->3",
4359
+ "ssh.handlebars->termShellContextMenu->cxtermps",
4360
"xterm.handlebars->termShellContextMenu->cxtermps"
4361
]
4362
},
@@ -4374,7 +4377,7 @@
4377
"zh-chs": "管理领域",
4378
"zh-cht": "管理領域",
4379
"xloc": [
4377
- "default.handlebars->31->2199"
4380
+ "default.handlebars->31->2201"
4381
]
4382
},
4383
{
@@ -4395,6 +4398,7 @@
4398
"zh-cht": "管理控制台",
4399
"xloc": [
4400
"default.handlebars->termShellContextMenu->1->0",
4401
+ "ssh.handlebars->termShellContextMenu->cxtermnorm->0",
4402
"xterm.handlebars->termShellContextMenu->cxtermnorm->0"
4403
]
4404
},
@@ -4415,7 +4419,7 @@
4419
"zh-chs": "管理领域",
4420
"zh-cht": "管理領域",
4421
"xloc": [
4418
- "default.handlebars->31->2067"
4422
+ "default.handlebars->31->2069"
4423
]
4424
},
4425
{
@@ -4435,7 +4439,7 @@
4439
"zh-chs": "管理员",
4440
"zh-cht": "管理員",
4441
"xloc": [
4438
- "default.handlebars->31->1996"
4442
+ "default.handlebars->31->1998"
4443
]
4444
},
4445
{
@@ -4455,7 +4459,7 @@
4459
"zh-chs": "南非文",
4460
"zh-cht": "南非文",
4461
"xloc": [
4458
- "default.handlebars->31->1256"
4462
+ "default.handlebars->31->1258"
4463
]
4464
},
4465
{
@@ -4480,8 +4484,8 @@
4484
"default-mobile.handlebars->11->260",
4485
"default-mobile.handlebars->11->282",
4486
"default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect1",
4483
- "default.handlebars->31->1771",
4484
- "default.handlebars->31->1784",
4487
+ "default.handlebars->31->1773",
4488
+ "default.handlebars->31->1786",
4489
"default.handlebars->31->290",
4490
"default.handlebars->31->496",
4491
"default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect1"
@@ -4504,8 +4508,8 @@
4508
"zh-chs": "代理+英特尔AMT",
4509
"zh-cht": "代理+Intel® AMT",
4510
"xloc": [
4507
- "default.handlebars->31->1773",
4508
- "default.handlebars->31->1786"
4511
+ "default.handlebars->31->1775",
4512
+ "default.handlebars->31->1788"
4513
]
4514
},
4515
{
@@ -4547,7 +4551,7 @@
4551
"zh-cht": "代理控制台",
4552
"xloc": [
4553
"default-mobile.handlebars->11->581",
4550
- "default.handlebars->31->1725"
4554
+ "default.handlebars->31->1727"
4555
]
4556
},
4557
{
@@ -4567,7 +4571,7 @@
4571
"zh-chs": "代理错误计数器",
4572
"zh-cht": "代理錯誤計數器",
4573
"xloc": [
4570
- "default.handlebars->31->2375"
4574
+ "default.handlebars->31->2377"
4575
]
4576
},
4577
{
@@ -4679,7 +4683,7 @@
4683
"zh-chs": "代理时段",
4684
"zh-cht": "代理時段",
4685
"xloc": [
4682
- "default.handlebars->31->2391"
4686
+ "default.handlebars->31->2393"
4687
]
4688
},
4689
{
@@ -4720,7 +4724,7 @@
4724
"zh-chs": "代理类型",
4725
"zh-cht": "代理類型",
4726
"xloc": [
4723
- "default.handlebars->31->1782",
4727
+ "default.handlebars->31->1784",
4728
"default.handlebars->container->column_l->p21->p21main->1->1->meshOsChartDiv->1"
4729
]
4730
},
@@ -4741,7 +4745,7 @@
4745
"zh-chs": "代理关闭了与服务器压缩的{0}%代理会话。已发送:{1},已压缩:{2}",
4746
"zh-cht": "代理關閉了與{0}%代理到服務器壓縮的會話。已發送:{1},已壓縮:{2}",
4747
"xloc": [
4744
- "default.handlebars->31->1892"
4748
+ "default.handlebars->31->1894"
4749
]
4750
},
4751
{
@@ -4762,8 +4766,8 @@
4766
"zh-cht": "代理已連接",
4767
"xloc": [
4768
"default.handlebars->31->181",
4765
- "default.handlebars->31->758",
4766
- "default.handlebars->31->759"
4769
+ "default.handlebars->31->760",
4770
+ "default.handlebars->31->761"
4771
]
4772
},
4773
{
@@ -4804,7 +4808,7 @@
4808
"zh-cht": "代理離線",
4809
"xloc": [
4810
"default-mobile.handlebars->11->515",
4807
- "default.handlebars->31->1206"
4811
+ "default.handlebars->31->1208"
4812
]
4813
},
4814
{
@@ -4825,7 +4829,7 @@
4829
"zh-cht": "代理在線",
4830
"xloc": [
4831
"default-mobile.handlebars->11->514",
4828
- "default.handlebars->31->1205"
4832
+ "default.handlebars->31->1207"
4833
]
4834
},
4835
{
@@ -4846,7 +4850,7 @@
4850
"zh-cht": "代理在特權降低的遠程設備上運行。",
4851
"xloc": [
4852
"default.handlebars->31->179",
4849
- "default.handlebars->31->756"
4853
+ "default.handlebars->31->758"
4854
]
4855
},
4856
{
@@ -4866,7 +4870,7 @@
4870
"zh-chs": "代理",
4871
"zh-cht": "代理",
4872
"xloc": [
4869
- "default.handlebars->31->2407"
4873
+ "default.handlebars->31->2409"
4874
]
4875
},
4876
{
@@ -4886,7 +4890,7 @@
4890
"zh-chs": "阿尔巴尼亚文",
4891
"zh-cht": "阿爾巴尼亞文",
4892
"xloc": [
4889
- "default.handlebars->31->1257"
4893
+ "default.handlebars->31->1259"
4894
]
4895
},
4896
{
@@ -4929,7 +4933,7 @@
4933
"zh-chs": "全部可用",
4934
"zh-cht": "全部可用",
4935
"xloc": [
4932
- "default.handlebars->31->1959"
4936
+ "default.handlebars->31->1961"
4937
]
4938
},
4939
{
@@ -4949,7 +4953,7 @@
4953
"zh-chs": "所有显示",
4954
"zh-cht": "所有顯示",
4955
"xloc": [
4952
- "default.handlebars->31->1052"
4956
+ "default.handlebars->31->1054"
4957
]
4958
},
4959
{
@@ -4969,7 +4973,7 @@
4973
"zh-chs": "所有事件",
4974
"zh-cht": "所有事件",
4975
"xloc": [
4972
- "default.handlebars->31->1957"
4976
+ "default.handlebars->31->1959"
4977
]
4978
},
4979
{
@@ -4989,8 +4993,8 @@
4993
"zh-chs": "全部聚焦",
4994
"zh-cht": "全部聚焦",
4995
"xloc": [
4992
- "default.handlebars->31->1000",
4993
- "default.handlebars->31->997",
4996
+ "default.handlebars->31->1001",
4997
+ "default.handlebars->31->1002",
4998
"default.handlebars->31->999"
4999
]
5000
},
@@ -5011,8 +5015,8 @@
5015
"zh-chs": "允许用户管理此设备组和该组中的设备。",
5016
"zh-cht": "允許用戶管理此裝置群和該群中的裝置。",
5017
"xloc": [
5014
- "default.handlebars->31->1671",
5015
- "default.handlebars->31->2160"
5018
+ "default.handlebars->31->1673",
5019
+ "default.handlebars->31->2162"
5020
]
5021
},
5022
{
@@ -5032,7 +5036,7 @@
5036
"zh-chs": "允许用户管理此设备。",
5037
"zh-cht": "允許用戶管理此裝置。",
5038
"xloc": [
5035
- "default.handlebars->31->1672"
5039
+ "default.handlebars->31->1674"
5040
]
5041
},
5042
{
@@ -5072,8 +5076,8 @@
5076
"xloc": [
5077
"default-mobile.handlebars->11->374",
5078
"default-mobile.handlebars->11->378",
5075
- "default.handlebars->31->1020",
5076
- "default.handlebars->31->1024"
5079
+ "default.handlebars->31->1022",
5080
+ "default.handlebars->31->1026"
5081
]
5082
},
5083
{
@@ -5137,7 +5141,7 @@
5141
"zh-chs": "备用(F10 = ESC + 0)",
5142
"zh-cht": "備用(F10 = ESC + 0)",
5143
"xloc": [
5140
- "default.handlebars->31->1063",
5144
+ "default.handlebars->31->1065",
5145
"sharing.handlebars->11->37",
5146
"terminal.handlebars->3->19"
5147
]
@@ -5180,9 +5184,9 @@
5184
"zh-chs": "一直通知",
5185
"zh-cht": "一直通知",
5186
"xloc": [
5183
- "default.handlebars->31->1583",
5184
- "default.handlebars->31->2121",
5185
- "default.handlebars->31->2208",
5187
+ "default.handlebars->31->1585",
5188
+ "default.handlebars->31->2123",
5189
+ "default.handlebars->31->2210",
5190
"default.handlebars->31->701"
5191
]
5192
},
@@ -5203,9 +5207,9 @@
5207
"zh-chs": "一直提示",
5208
"zh-cht": "一直提示",
5209
"xloc": [
5206
- "default.handlebars->31->1584",
5207
- "default.handlebars->31->2122",
5208
- "default.handlebars->31->2209",
5210
+ "default.handlebars->31->1586",
5211
+ "default.handlebars->31->2124",
5212
+ "default.handlebars->31->2211",
5213
"default.handlebars->31->702"
5214
]
5215
},
@@ -5353,8 +5357,8 @@
5357
"fr": "Antivirus désactivé",
5358
"de": "Anti-virus ist nicht aktiv",
5359
"xloc": [
5356
- "default.handlebars->31->1775",
5357
- "default.handlebars->31->1789"
5360
+ "default.handlebars->31->1777",
5361
+ "default.handlebars->31->1791"
5362
]
5363
},
5364
{
@@ -5496,7 +5500,7 @@
5500
"zh-chs": "阿拉伯文(阿尔及利亚)",
5501
"zh-cht": "阿拉伯文(阿爾及利亞)",
5502
"xloc": [
5499
- "default.handlebars->31->1259"
5503
+ "default.handlebars->31->1261"
5504
]
5505
},
5506
{
@@ -5516,7 +5520,7 @@
5520
"zh-chs": "阿拉伯文(巴林)",
5521
"zh-cht": "阿拉伯文(巴林)",
5522
"xloc": [
5519
- "default.handlebars->31->1260"
5523
+ "default.handlebars->31->1262"
5524
]
5525
},
5526
{
@@ -5536,7 +5540,7 @@
5540
"zh-chs": "阿拉伯文(埃及)",
5541
"zh-cht": "阿拉伯文(埃及)",
5542
"xloc": [
5539
- "default.handlebars->31->1261"
5543
+ "default.handlebars->31->1263"
5544
]
5545
},
5546
{
@@ -5556,7 +5560,7 @@
5560
"zh-chs": "阿拉伯文(伊拉克)",
5561
"zh-cht": "阿拉伯文(伊拉克)",
5562
"xloc": [
5559
- "default.handlebars->31->1262"
5563
+ "default.handlebars->31->1264"
5564
]
5565
},
5566
{
@@ -5576,7 +5580,7 @@
5580
"zh-chs": "阿拉伯文(约旦)",
5581
"zh-cht": "阿拉伯文(約旦)",
5582
"xloc": [
5579
- "default.handlebars->31->1263"
5583
+ "default.handlebars->31->1265"
5584
]
5585
},
5586
{
@@ -5596,7 +5600,7 @@
5600
"zh-chs": "阿拉伯文(科威特)",
5601
"zh-cht": "阿拉伯文(科威特)",
5602
"xloc": [
5599
- "default.handlebars->31->1264"
5603
+ "default.handlebars->31->1266"
5604
]
5605
},
5606
{
@@ -5616,7 +5620,7 @@
5620
"zh-chs": "阿拉伯文(黎巴嫩)",
5621
"zh-cht": "阿拉伯文(黎巴嫩)",
5622
"xloc": [
5619
- "default.handlebars->31->1265"
5623
+ "default.handlebars->31->1267"
5624
]
5625
},
5626
{
@@ -5636,7 +5640,7 @@
5640
"zh-chs": "阿拉伯文(利比亚)",
5641
"zh-cht": "阿拉伯文(利比亞)",
5642
"xloc": [
5639
- "default.handlebars->31->1266"
5643
+ "default.handlebars->31->1268"
5644
]
5645
},
5646
{
@@ -5656,7 +5660,7 @@
5660
"zh-chs": "阿拉伯文(摩洛哥)",
5661
"zh-cht": "阿拉伯文(摩洛哥)",
5662
"xloc": [
5659
- "default.handlebars->31->1267"
5663
+ "default.handlebars->31->1269"
5664
]
5665
},
5666
{
@@ -5676,7 +5680,7 @@
5680
"zh-chs": "阿拉伯文(阿曼)",
5681
"zh-cht": "阿拉伯文(阿曼)",
5682
"xloc": [
5679
- "default.handlebars->31->1268"
5683
+ "default.handlebars->31->1270"
5684
]
5685
},
5686
{
@@ -5696,7 +5700,7 @@
5700
"zh-chs": "阿拉伯文(卡塔尔)",
5701
"zh-cht": "阿拉伯文(卡塔爾)",
5702
"xloc": [
5699
- "default.handlebars->31->1269"
5703
+ "default.handlebars->31->1271"
5704
]
5705
},
5706
{
@@ -5716,7 +5720,7 @@
5720
"zh-chs": "阿拉伯文(沙特阿拉伯)",
5721
"zh-cht": "阿拉伯文(沙特阿拉伯)",
5722
"xloc": [
5719
- "default.handlebars->31->1270"
5723
+ "default.handlebars->31->1272"
5724
]
5725
},
5726
{
@@ -5736,7 +5740,7 @@
5740
"zh-chs": "阿拉伯文(标准)",
5741
"zh-cht": "阿拉伯文(標準)",
5742
"xloc": [
5739
- "default.handlebars->31->1258"
5743
+ "default.handlebars->31->1260"
5744
]
5745
},
5746
{
@@ -5756,7 +5760,7 @@
5760
"zh-chs": "阿拉伯文(叙利亚)",
5761
"zh-cht": "阿拉伯文(敘利亞)",
5762
"xloc": [
5759
- "default.handlebars->31->1271"
5763
+ "default.handlebars->31->1273"
5764
]
5765
},
5766
{
@@ -5776,7 +5780,7 @@
5780
"zh-chs": "阿拉伯文(突尼斯)",
5781
"zh-cht": "阿拉伯文(突尼斯)",
5782
"xloc": [
5779
- "default.handlebars->31->1272"
5783
+ "default.handlebars->31->1274"
5784
]
5785
},
5786
{
@@ -5796,7 +5800,7 @@
5800
"zh-chs": "阿拉伯文(阿联酋)",
5801
"zh-cht": "阿拉伯文(阿聯酋)",
5802
"xloc": [
5799
- "default.handlebars->31->1273"
5803
+ "default.handlebars->31->1275"
5804
]
5805
},
5806
{
@@ -5816,7 +5820,7 @@
5820
"zh-chs": "阿拉伯文(也门)",
5821
"zh-cht": "阿拉伯文(也門)",
5822
"xloc": [
5819
- "default.handlebars->31->1274"
5823
+ "default.handlebars->31->1276"
5824
]
5825
},
5826
{
@@ -5836,7 +5840,7 @@
5840
"zh-chs": "阿拉贡文",
5841
"zh-cht": "阿拉貢文",
5842
"xloc": [
5839
- "default.handlebars->31->1275"
5843
+ "default.handlebars->31->1277"
5844
]
5845
},
5846
{
@@ -5857,7 +5861,7 @@
5861
"zh-cht": "結構",
5862
"xloc": [
5863
"default-mobile.handlebars->11->427",
5860
- "default.handlebars->31->1124"
5864
+ "default.handlebars->31->1126"
5865
]
5866
},
5867
{
@@ -5898,7 +5902,7 @@
5902
"zh-cht": "你確定要刪除群{0}嗎?刪除裝置群還將刪除該群中有關裝置的所有訊息。",
5903
"xloc": [
5904
"default-mobile.handlebars->11->546",
5901
- "default.handlebars->31->1647"
5905
+ "default.handlebars->31->1649"
5906
]
5907
},
5908
{
@@ -5918,7 +5922,7 @@
5922
"zh-chs": "您确定要删除节点{0}吗?",
5923
"zh-cht": "你確定要刪除節點{0}嗎?",
5924
"xloc": [
5921
- "default.handlebars->31->939"
5925
+ "default.handlebars->31->941"
5926
]
5927
},
5928
{
@@ -5938,7 +5942,7 @@
5942
"zh-chs": "您确定要卸载所选代理吗?",
5943
"zh-cht": "你確定要卸載所選代理嗎?",
5944
"xloc": [
5941
- "default.handlebars->31->928"
5945
+ "default.handlebars->31->930"
5946
]
5947
},
5948
{
@@ -5958,7 +5962,7 @@
5962
"zh-chs": "您确定要卸载所选的{0}代理吗?",
5963
"zh-cht": "你確定要卸載所選的{0}代理嗎?",
5964
"xloc": [
5961
- "default.handlebars->31->927"
5965
+ "default.handlebars->31->929"
5966
]
5967
},
5968
{
@@ -5978,7 +5982,7 @@
5982
"zh-chs": "您确定要{0}插件吗:{1}",
5983
"zh-cht": "你確定要{0}外掛嗎:{1}",
5984
"xloc": [
5981
- "default.handlebars->31->2455"
5985
+ "default.handlebars->31->2457"
5986
]
5987
},
5988
{
@@ -5998,7 +6002,7 @@
6002
"zh-chs": "亚美尼亚文",
6003
"zh-cht": "亞美尼亞文",
6004
"xloc": [
6001
- "default.handlebars->31->1276"
6005
+ "default.handlebars->31->1278"
6006
]
6007
},
6008
{
@@ -6058,7 +6062,7 @@
6062
"zh-chs": "阿萨姆文",
6063
"zh-cht": "阿薩姆文",
6064
"xloc": [
6061
- "default.handlebars->31->1277"
6065
+ "default.handlebars->31->1279"
6066
]
6067
},
6068
{
@@ -6078,7 +6082,7 @@
6082
"zh-chs": "阿斯图里亚斯文",
6083
"zh-cht": "阿斯圖里亞斯文",
6084
"xloc": [
6081
- "default.handlebars->31->1278"
6085
+ "default.handlebars->31->1280"
6086
]
6087
},
6088
{
@@ -6098,7 +6102,7 @@
6102
"zh-chs": "尝试激活英特尔(R)AMT ACM模式",
6103
"zh-cht": "嘗試激活英特爾(R)AMT ACM模式",
6104
"xloc": [
6101
- "default.handlebars->31->1861"
6105
+ "default.handlebars->31->1863"
6106
]
6107
},
6108
{
@@ -6118,16 +6122,16 @@
6122
"zh-chs": "认证软件",
6123
"zh-cht": "認證軟體",
6124
"xloc": [
6121
- "default.handlebars->31->2212"
6125
+ "default.handlebars->31->2214"
6126
]
6127
},
6128
{
6129
"en": "Authentication Device",
6130
"nl": "Verificatieapparaat",
6131
"xloc": [
6128
- "default.handlebars->31->1239",
6132
"default.handlebars->31->1241",
6130
- "default.handlebars->31->1245"
6133
+ "default.handlebars->31->1243",
6134
+ "default.handlebars->31->1247"
6135
]
6136
},
6137
{
@@ -6151,8 +6155,8 @@
6155
"default-mobile.handlebars->11->64",
6156
"default-mobile.handlebars->11->95",
6157
"default-mobile.handlebars->11->97",
6154
- "default.handlebars->31->1235",
6158
"default.handlebars->31->1237",
6159
+ "default.handlebars->31->1239",
6160
"default.handlebars->31->143",
6161
"default.handlebars->31->148"
6162
]
@@ -6234,7 +6238,7 @@
6238
"zh-chs": "自动删除",
6239
"zh-cht": "自動刪除",
6240
"xloc": [
6237
- "default.handlebars->31->1570"
6241
+ "default.handlebars->31->1572"
6242
]
6243
},
6244
{
@@ -6279,7 +6283,7 @@
6283
"zh-chs": "自动下载代理程序核心转储文件:“{0}”",
6284
"zh-cht": "自動下載代理程序核心轉儲文件:“{0}”",
6285
"xloc": [
6282
- "default.handlebars->31->1942"
6286
+ "default.handlebars->31->1944"
6287
]
6288
},
6289
{
@@ -6319,7 +6323,7 @@
6323
"zh-chs": "可用內存",
6324
"zh-cht": "可用內存",
6325
"xloc": [
6322
- "default.handlebars->31->2400"
6326
+ "default.handlebars->31->2402"
6327
]
6328
},
6329
{
@@ -6339,7 +6343,7 @@
6343
"zh-chs": "阿塞拜疆文",
6344
"zh-cht": "阿塞拜疆文",
6345
"xloc": [
6342
- "default.handlebars->31->1279"
6346
+ "default.handlebars->31->1281"
6347
]
6348
},
6349
{
@@ -6374,7 +6378,7 @@
6378
"zh-cht": "的BIOS",
6379
"xloc": [
6380
"default-mobile.handlebars->11->493",
6377
- "default.handlebars->31->1183"
6381
+ "default.handlebars->31->1185"
6382
]
6383
},
6384
{
@@ -6460,7 +6464,7 @@
6464
"de": "Rücktaste",
6465
"xloc": [
6466
"default-mobile.handlebars->11->357",
6463
- "default.handlebars->31->1003"
6467
+ "default.handlebars->31->1005"
6468
]
6469
},
6470
{
@@ -6500,8 +6504,8 @@
6504
"zh-chs": "背景与互动",
6505
"zh-cht": "背景與互動",
6506
"xloc": [
6503
- "default.handlebars->31->1754",
6504
- "default.handlebars->31->1761",
6507
+ "default.handlebars->31->1756",
6508
+ "default.handlebars->31->1763",
6509
"default.handlebars->31->404",
6510
"default.handlebars->31->418"
6511
]
@@ -6523,8 +6527,8 @@
6527
"zh-chs": "仅背景",
6528
"zh-cht": "僅背景",
6529
"xloc": [
6526
- "default.handlebars->31->1755",
6527
- "default.handlebars->31->1762",
6530
+ "default.handlebars->31->1757",
6531
+ "default.handlebars->31->1764",
6532
"default.handlebars->31->405",
6533
"default.handlebars->31->419",
6534
"default.handlebars->31->434"
@@ -6569,7 +6573,7 @@
6573
"zh-chs": "备用码",
6574
"zh-cht": "備用碼",
6575
"xloc": [
6572
- "default.handlebars->31->2214"
6576
+ "default.handlebars->31->2216"
6577
]
6578
},
6579
{
@@ -6589,7 +6593,7 @@
6593
"zh-chs": "错误的签名",
6594
"zh-cht": "錯誤的簽名",
6595
"xloc": [
6592
- "default.handlebars->31->2382"
6596
+ "default.handlebars->31->2384"
6597
]
6598
},
6599
{
@@ -6609,7 +6613,7 @@
6613
"zh-chs": "错误的网络证书",
6614
"zh-cht": "錯誤的網絡憑證",
6615
"xloc": [
6612
- "default.handlebars->31->2381"
6616
+ "default.handlebars->31->2383"
6617
]
6618
},
6619
{
@@ -6629,7 +6633,7 @@
6633
"zh-chs": "巴斯克",
6634
"zh-cht": "巴斯克",
6635
"xloc": [
6632
- "default.handlebars->31->1280"
6636
+ "default.handlebars->31->1282"
6637
]
6638
},
6639
{
@@ -6689,7 +6693,7 @@
6693
"zh-chs": "将{0}个文件批量上传到文件夹{1}",
6694
"zh-cht": "將{0}個文件批量上傳到文件夾{1}",
6695
"xloc": [
6692
- "default.handlebars->31->1941"
6696
+ "default.handlebars->31->1943"
6697
]
6698
},
6699
{
@@ -6709,7 +6713,7 @@
6713
"zh-chs": "白俄罗斯文",
6714
"zh-cht": "白俄羅斯文",
6715
"xloc": [
6712
- "default.handlebars->31->1282"
6716
+ "default.handlebars->31->1284"
6717
]
6718
},
6719
{
@@ -6729,7 +6733,7 @@
6733
"zh-chs": "孟加拉",
6734
"zh-cht": "孟加拉",
6735
"xloc": [
6732
- "default.handlebars->31->1283"
6736
+ "default.handlebars->31->1285"
6737
]
6738
},
6739
{
@@ -6761,7 +6765,7 @@
6765
"fr": "Chargeur de démarrage",
6766
"xloc": [
6767
"default-mobile.handlebars->11->457",
6764
- "default.handlebars->31->1137"
6768
+ "default.handlebars->31->1139"
6769
]
6770
},
6771
{
@@ -6781,7 +6785,7 @@
6785
"zh-chs": "波斯尼亚文",
6786
"zh-cht": "波斯尼亞文",
6787
"xloc": [
6784
- "default.handlebars->31->1284"
6788
+ "default.handlebars->31->1286"
6789
]
6790
},
6791
{
@@ -6801,7 +6805,7 @@
6805
"zh-chs": "布列塔尼",
6806
"zh-cht": "布列塔尼",
6807
"xloc": [
6804
- "default.handlebars->31->1285"
6808
+ "default.handlebars->31->1287"
6809
]
6810
},
6811
{
@@ -6821,7 +6825,7 @@
6825
"zh-chs": "广播",
6826
"zh-cht": "廣播",
6827
"xloc": [
6824
- "default.handlebars->31->2128",
6828
+ "default.handlebars->31->2130",
6829
"default.handlebars->container->column_l->p4->3->1->0->3->1"
6830
]
6831
},
@@ -6842,7 +6846,7 @@
6846
"zh-chs": "广播消息",
6847
"zh-cht": "廣播消息",
6848
"xloc": [
6845
- "default.handlebars->31->2049"
6849
+ "default.handlebars->31->2051"
6850
]
6851
},
6852
{
@@ -6862,7 +6866,7 @@
6866
"zh-chs": "向所有连接的用户广播消息。",
6867
"zh-cht": "向所有連接的用戶廣播消息。",
6868
"xloc": [
6865
- "default.handlebars->31->2044"
6869
+ "default.handlebars->31->2046"
6870
]
6871
},
6872
{
@@ -6892,7 +6896,7 @@
6896
"zh-chs": "保加利亚文",
6897
"zh-cht": "保加利亞文",
6898
"xloc": [
6895
- "default.handlebars->31->1281"
6899
+ "default.handlebars->31->1283"
6900
]
6901
},
6902
{
@@ -6912,7 +6916,7 @@
6916
"zh-chs": "缅甸文",
6917
"zh-cht": "緬甸文",
6918
"xloc": [
6915
- "default.handlebars->31->1286"
6919
+ "default.handlebars->31->1288"
6920
]
6921
},
6922
{
@@ -6953,7 +6957,7 @@
6957
"zh-chs": "CCM模式",
6958
"zh-cht": "CCM模式",
6959
"xloc": [
6956
- "default.handlebars->31->1630"
6960
+ "default.handlebars->31->1632"
6961
]
6962
},
6963
{
@@ -6995,7 +6999,7 @@
6999
"zh-chs": "CIRA服务器",
7000
"zh-cht": "CIRA伺服器",
7001
"xloc": [
6998
- "default.handlebars->31->2439"
7002
+ "default.handlebars->31->2441"
7003
]
7004
},
7005
{
@@ -7015,7 +7019,7 @@
7019
"zh-chs": "CIRA服务器命令",
7020
"zh-cht": "CIRA伺服器指令",
7021
"xloc": [
7018
- "default.handlebars->31->2440"
7022
+ "default.handlebars->31->2442"
7023
]
7024
},
7025
{
@@ -7035,7 +7039,7 @@
7039
"zh-chs": "CIRA设置",
7040
"zh-cht": "CIRA設置",
7041
"xloc": [
7038
- "default.handlebars->31->1638"
7042
+ "default.handlebars->31->1640"
7043
]
7044
},
7045
{
@@ -7056,7 +7060,7 @@
7060
"zh-cht": "CPU",
7061
"xloc": [
7062
"default-mobile.handlebars->11->499",
7059
- "default.handlebars->31->1189"
7063
+ "default.handlebars->31->1191"
7064
]
7065
},
7066
{
@@ -7076,7 +7080,7 @@
7080
"zh-chs": "CPU负载",
7081
"zh-cht": "CPU負載",
7082
"xloc": [
7079
- "default.handlebars->31->2396"
7083
+ "default.handlebars->31->2398"
7084
]
7085
},
7086
{
@@ -7096,7 +7100,7 @@
7100
"zh-chs": "最近15分钟的CPU负载",
7101
"zh-cht": "最近15分鐘的CPU負載",
7102
"xloc": [
7099
- "default.handlebars->31->2399"
7103
+ "default.handlebars->31->2401"
7104
]
7105
},
7106
{
@@ -7116,7 +7120,7 @@
7120
"zh-chs": "最近5分钟的CPU负载",
7121
"zh-cht": "最近5分鐘的CPU負載",
7122
"xloc": [
7119
- "default.handlebars->31->2398"
7123
+ "default.handlebars->31->2400"
7124
]
7125
},
7126
{
@@ -7136,7 +7140,7 @@
7140
"zh-chs": "最近一分钟的CPU负载",
7141
"zh-cht": "最近一分鐘的CPU負載",
7142
"xloc": [
7139
- "default.handlebars->31->2397"
7143
+ "default.handlebars->31->2399"
7144
]
7145
},
7146
{
@@ -7156,8 +7160,8 @@
7160
"zh-chs": "CR+LF",
7161
"zh-cht": "CR+LF",
7162
"xloc": [
7159
- "default.handlebars->31->1056",
7160
- "default.handlebars->31->1065",
7163
+ "default.handlebars->31->1058",
7164
+ "default.handlebars->31->1067",
7165
"default.handlebars->container->column_l->p12->termTable->1->1->6->1->1->terminalSettingsButtons",
7166
"sharing.handlebars->11->25",
7167
"sharing.handlebars->11->39",
@@ -7184,7 +7188,7 @@
7188
"zh-chs": "CSV",
7189
"zh-cht": "CSV",
7190
"xloc": [
7187
- "default.handlebars->31->1967"
7191
+ "default.handlebars->31->1969"
7192
]
7193
},
7194
{
@@ -7204,8 +7208,8 @@
7208
"zh-chs": "CSV格式",
7209
"zh-cht": "CSV格式",
7210
"xloc": [
7207
- "default.handlebars->31->1971",
7208
- "default.handlebars->31->2036",
7211
+ "default.handlebars->31->1973",
7212
+ "default.handlebars->31->2038",
7213
"default.handlebars->31->564"
7214
]
7215
},
@@ -7243,7 +7247,7 @@
7247
"zh-chs": "呼叫错误",
7248
"zh-cht": "呼叫錯誤",
7249
"xloc": [
7246
- "default.handlebars->31->2456"
7250
+ "default.handlebars->31->2458"
7251
]
7252
},
7253
{
@@ -7266,8 +7270,8 @@
7270
"agent-translations.json",
7271
"default-mobile.handlebars->11->106",
7272
"default-mobile.handlebars->dialog->idx_dlgButtonBar",
7269
- "default.handlebars->31->1547",
7270
- "default.handlebars->31->2445",
7273
+ "default.handlebars->31->1549",
7274
+ "default.handlebars->31->2447",
7275
"default.handlebars->container->dialog->idx_dlgButtonBar",
7276
"desktop.handlebars->p11->dialog->idx_dlgButtonBar",
7277
"login-mobile.handlebars->dialog->idx_dlgButtonBar",
@@ -7275,6 +7279,7 @@
7279
"login2.handlebars->dialog->idx_dlgButtonBar",
7280
"player.handlebars->p11->dialog->idx_dlgButtonBar",
7281
"sharing.handlebars->dialog->idx_dlgButtonBar",
7282
+ "ssh.handlebars->p11->dialog->idx_dlgButtonBar",
7283
"terminal.handlebars->p12->dialog->idx_dlgButtonBar",
7284
"xterm.handlebars->p11->dialog->idx_dlgButtonBar"
7285
]
@@ -7299,9 +7304,9 @@
7304
"default-mobile.handlebars->11->504",
7305
"default-mobile.handlebars->11->509",
7306
"default-mobile.handlebars->11->511",
7302
- "default.handlebars->31->1194",
7303
- "default.handlebars->31->1199",
7304
- "default.handlebars->31->1201"
7307
+ "default.handlebars->31->1196",
7308
+ "default.handlebars->31->1201",
7309
+ "default.handlebars->31->1203"
7310
]
7311
},
7312
{
@@ -7322,7 +7327,7 @@
7327
"zh-cht": "容量/速度",
7328
"xloc": [
7329
"default-mobile.handlebars->11->502",
7325
- "default.handlebars->31->1192"
7330
+ "default.handlebars->31->1194"
7331
]
7332
},
7333
{
@@ -7342,7 +7347,7 @@
7347
"zh-chs": "加泰罗尼亚文",
7348
"zh-cht": "加泰羅尼亞文",
7349
"xloc": [
7345
- "default.handlebars->31->1287"
7350
+ "default.handlebars->31->1289"
7351
]
7352
},
7353
{
@@ -7390,7 +7395,7 @@
7395
"zh-chs": "查莫罗",
7396
"zh-cht": "查莫羅",
7397
"xloc": [
7393
- "default.handlebars->31->1288"
7398
+ "default.handlebars->31->1290"
7399
]
7400
},
7401
{
@@ -7432,7 +7437,7 @@
7437
"zh-chs": "更改{0}的电邮",
7438
"zh-cht": "更改{0}的電郵",
7439
"xloc": [
7435
- "default.handlebars->31->2246"
7440
+ "default.handlebars->31->2248"
7441
]
7442
},
7443
{
@@ -7453,8 +7458,8 @@
7458
"zh-cht": "更改群",
7459
"xloc": [
7460
"default.handlebars->31->732",
7456
- "default.handlebars->31->936",
7457
- "default.handlebars->31->937"
7461
+ "default.handlebars->31->938",
7462
+ "default.handlebars->31->939"
7463
]
7464
},
7465
{
@@ -7475,8 +7480,8 @@
7480
"zh-cht": "更改密碼",
7481
"xloc": [
7482
"default-mobile.handlebars->11->114",
7478
- "default.handlebars->31->1503",
7479
- "default.handlebars->31->2231"
7483
+ "default.handlebars->31->1505",
7484
+ "default.handlebars->31->2233"
7485
]
7486
},
7487
{
@@ -7496,7 +7501,7 @@
7501
"zh-chs": "更改{0}的密码",
7502
"zh-cht": "更改{0}的密碼",
7503
"xloc": [
7499
- "default.handlebars->31->2255"
7504
+ "default.handlebars->31->2257"
7505
]
7506
},
7507
{
@@ -7516,7 +7521,7 @@
7521
"zh-chs": "更改{0}的真实名称",
7522
"zh-cht": "更改{0}的真實名稱",
7523
"xloc": [
7519
- "default.handlebars->31->2241"
7524
+ "default.handlebars->31->2243"
7525
]
7526
},
7527
{
@@ -7607,7 +7612,7 @@
7612
"zh-chs": "更改该用户的密码",
7613
"zh-cht": "更改該用戶的密碼",
7614
"xloc": [
7610
- "default.handlebars->31->2230"
7615
+ "default.handlebars->31->2232"
7616
]
7617
},
7618
{
@@ -7647,7 +7652,7 @@
7652
"zh-chs": "在此处更改您的帐户电邮地址。",
7653
"zh-cht": "在此處更改你的帳戶電郵地址。",
7654
"xloc": [
7650
- "default.handlebars->31->1490"
7655
+ "default.handlebars->31->1492"
7656
]
7657
},
7658
{
@@ -7667,7 +7672,7 @@
7672
"zh-chs": "在下面的框中两次输入旧密码和新密码,以更改帐户密码。",
7673
"zh-cht": "在下面的框中兩次輸入舊密碼和新密碼,以更改帳戶密碼。",
7674
"xloc": [
7670
- "default.handlebars->31->1496"
7675
+ "default.handlebars->31->1498"
7676
]
7677
},
7678
{
@@ -7687,7 +7692,7 @@
7692
"zh-chs": "更改帐户凭据",
7693
"zh-cht": "帳戶憑證已更改",
7694
"xloc": [
7690
- "default.handlebars->31->1913"
7695
+ "default.handlebars->31->1915"
7696
]
7697
},
7698
{
@@ -7707,7 +7712,7 @@
7712
"zh-chs": "{1}组中的设备{0}已更改:{2}",
7713
"zh-cht": "{1}組中的設備{0}已更改:{2}",
7714
"xloc": [
7710
- "default.handlebars->31->1897"
7715
+ "default.handlebars->31->1899"
7716
]
7717
},
7718
{
@@ -7727,7 +7732,7 @@
7732
"zh-chs": "语言从{1}更改为{2}",
7733
"zh-cht": "語言從{1}更改為{2}",
7734
"xloc": [
7730
- "default.handlebars->31->1841"
7735
+ "default.handlebars->31->1843"
7736
]
7737
},
7738
{
@@ -7747,8 +7752,8 @@
7752
"zh-chs": "已更改{0}的用户设备权限",
7753
"zh-cht": "已更改{0}的用戶設備權限",
7754
"xloc": [
7750
- "default.handlebars->31->1899",
7751
- "default.handlebars->31->1920"
7755
+ "default.handlebars->31->1901",
7756
+ "default.handlebars->31->1922"
7757
]
7758
},
7759
{
@@ -7768,7 +7773,7 @@
7773
"zh-chs": "更改语言将需要刷新页面。",
7774
"zh-cht": "更改語言將需要刷新頁面。",
7775
"xloc": [
7771
- "default.handlebars->31->1455"
7776
+ "default.handlebars->31->1457"
7777
]
7778
},
7779
{
@@ -7788,12 +7793,12 @@
7793
"zh-chs": "聊天",
7794
"zh-cht": "聊天",
7795
"xloc": [
7791
- "default.handlebars->31->1988",
7792
- "default.handlebars->31->2226",
7793
- "default.handlebars->31->2227",
7796
+ "default.handlebars->31->1990",
7797
+ "default.handlebars->31->2228",
7798
+ "default.handlebars->31->2229",
7799
"default.handlebars->31->727",
7795
- "default.handlebars->31->804",
7796
- "default.handlebars->31->826"
7800
+ "default.handlebars->31->806",
7801
+ "default.handlebars->31->828"
7802
]
7803
},
7804
{
@@ -7815,8 +7820,8 @@
7820
"xloc": [
7821
"default-mobile.handlebars->11->571",
7822
"default-mobile.handlebars->11->591",
7818
- "default.handlebars->31->1700",
7819
- "default.handlebars->31->1736"
7823
+ "default.handlebars->31->1702",
7824
+ "default.handlebars->31->1738"
7825
]
7826
},
7827
{
@@ -7826,7 +7831,7 @@
7831
"de": "Chat Anfrage, Drücke hier zum annehmen.",
7832
"xloc": [
7833
"default-mobile.handlebars->11->623",
7829
- "default.handlebars->31->2351"
7834
+ "default.handlebars->31->2353"
7835
]
7836
},
7837
{
@@ -7866,7 +7871,7 @@
7871
"zh-chs": "车臣",
7872
"zh-cht": "車臣",
7873
"xloc": [
7869
- "default.handlebars->31->1289"
7874
+ "default.handlebars->31->1291"
7875
]
7876
},
7877
{
@@ -7966,8 +7971,8 @@
7971
"zh-chs": "检查...",
7972
"zh-cht": "檢查...",
7973
"xloc": [
7969
- "default.handlebars->31->1255",
7970
- "default.handlebars->31->2450"
7974
+ "default.handlebars->31->1257",
7975
+ "default.handlebars->31->2452"
7976
]
7977
},
7978
{
@@ -7987,7 +7992,7 @@
7992
"zh-chs": "中文",
7993
"zh-cht": "中文",
7994
"xloc": [
7990
- "default.handlebars->31->1290"
7995
+ "default.handlebars->31->1292"
7996
]
7997
},
7998
{
@@ -8007,7 +8012,7 @@
8012
"zh-chs": "中文(香港)",
8013
"zh-cht": "中文(香港)",
8014
"xloc": [
8010
- "default.handlebars->31->1291"
8015
+ "default.handlebars->31->1293"
8016
]
8017
},
8018
{
@@ -8027,7 +8032,7 @@
8032
"zh-chs": "中文(中国)",
8033
"zh-cht": "中文(中國)",
8034
"xloc": [
8030
- "default.handlebars->31->1292"
8035
+ "default.handlebars->31->1294"
8036
]
8037
},
8038
{
@@ -8047,7 +8052,7 @@
8052
"zh-chs": "简体中文",
8053
"zh-cht": "簡體中文",
8054
"xloc": [
8050
- "default.handlebars->31->1452"
8055
+ "default.handlebars->31->1454"
8056
]
8057
},
8058
{
@@ -8067,7 +8072,7 @@
8072
"zh-chs": "中文(新加坡)",
8073
"zh-cht": "中文(新加坡)",
8074
"xloc": [
8070
- "default.handlebars->31->1293"
8075
+ "default.handlebars->31->1295"
8076
]
8077
},
8078
{
@@ -8087,7 +8092,7 @@
8092
"zh-chs": "中文(台湾)",
8093
"zh-cht": "中文(台灣)",
8094
"xloc": [
8090
- "default.handlebars->31->1294"
8095
+ "default.handlebars->31->1296"
8096
]
8097
},
8098
{
@@ -8107,7 +8112,7 @@
8112
"zh-chs": "繁体中文",
8113
"zh-cht": "繁體中文",
8114
"xloc": [
8110
- "default.handlebars->31->1453"
8115
+ "default.handlebars->31->1455"
8116
]
8117
},
8118
{
@@ -8148,7 +8153,7 @@
8153
"zh-chs": "楚瓦什",
8154
"zh-cht": "楚瓦什",
8155
"xloc": [
8151
- "default.handlebars->31->1295"
8156
+ "default.handlebars->31->1297"
8157
]
8158
},
8159
{
@@ -8192,11 +8197,11 @@
8197
"default-mobile.handlebars->11->417",
8198
"default-mobile.handlebars->11->71",
8199
"default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->5",
8195
- "default.handlebars->31->1101",
8200
"default.handlebars->31->1103",
8201
"default.handlebars->31->1105",
8202
"default.handlebars->31->1107",
8199
- "default.handlebars->31->1835",
8203
+ "default.handlebars->31->1109",
8204
+ "default.handlebars->31->1837",
8205
"default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->7",
8206
"default.handlebars->container->column_l->p41->3->1",
8207
"messenger.handlebars->xbottom->1->1->0->5",
@@ -8263,7 +8268,7 @@
8268
"zh-cht": "全部清除",
8269
"xloc": [
8270
"default-mobile.handlebars->11->606",
8266
- "default.handlebars->31->2334"
8271
+ "default.handlebars->31->2336"
8272
]
8273
},
8274
{
@@ -8305,7 +8310,7 @@
8310
"zh-cht": "清除核心",
8311
"xloc": [
8312
"default-mobile.handlebars->11->525",
8308
- "default.handlebars->31->1216"
8313
+ "default.handlebars->31->1218"
8314
]
8315
},
8316
{
@@ -8346,7 +8351,7 @@
8351
"zh-cht": "清除此通知",
8352
"xloc": [
8353
"default-mobile.handlebars->11->605",
8349
- "default.handlebars->31->2333"
8354
+ "default.handlebars->31->2335"
8355
]
8356
},
8357
{
@@ -8406,8 +8411,8 @@
8411
"zh-chs": "单击此处编辑设备组名称",
8412
"zh-cht": "單擊此處編輯裝置群名稱",
8413
"xloc": [
8409
- "default.handlebars->31->1558",
8410
- "default.handlebars->31->1780"
8414
+ "default.handlebars->31->1560",
8415
+ "default.handlebars->31->1782"
8416
]
8417
},
8418
{
@@ -8447,7 +8452,7 @@
8452
"zh-chs": "单击此处编辑用户组名称",
8453
"zh-cht": "單擊此處編輯用戶群名稱",
8454
"xloc": [
8450
- "default.handlebars->31->2105"
8455
+ "default.handlebars->31->2107"
8456
]
8457
},
8458
{
@@ -8519,7 +8524,7 @@
8524
"zh-cht": "單擊確定將驗證電郵發送到:",
8525
"xloc": [
8526
"default-mobile.handlebars->11->99",
8522
- "default.handlebars->31->1487"
8527
+ "default.handlebars->31->1489"
8528
]
8529
},
8530
{
@@ -8581,7 +8586,7 @@
8586
"zh-cht": "客戶端控制模式(CCM)",
8587
"xloc": [
8588
"default-mobile.handlebars->11->480",
8584
- "default.handlebars->31->1170"
8589
+ "default.handlebars->31->1172"
8590
]
8591
},
8592
{
@@ -8601,7 +8606,7 @@
8606
"zh-chs": "客户编号",
8607
"zh-cht": "客戶編號",
8608
"xloc": [
8604
- "default.handlebars->31->1540"
8609
+ "default.handlebars->31->1542"
8610
]
8611
},
8612
{
@@ -8621,7 +8626,7 @@
8626
"zh-chs": "客户端启动的远程访问",
8627
"zh-cht": "客戶端啟動的遠程訪問",
8628
"xloc": [
8624
- "default.handlebars->31->1637"
8629
+ "default.handlebars->31->1639"
8630
]
8631
},
8632
{
@@ -8641,7 +8646,7 @@
8646
"zh-chs": "客户机密",
8647
"zh-cht": "客戶機密",
8648
"xloc": [
8644
- "default.handlebars->31->1541"
8649
+ "default.handlebars->31->1543"
8650
]
8651
},
8652
{
@@ -8684,11 +8689,11 @@
8689
"zh-cht": "關",
8690
"xloc": [
8691
"default-mobile.handlebars->11->69",
8687
- "default.handlebars->31->1045",
8688
- "default.handlebars->31->1078",
8692
+ "default.handlebars->31->1047",
8693
+ "default.handlebars->31->1080",
8694
"default.handlebars->31->155",
8695
"default.handlebars->31->163",
8691
- "default.handlebars->31->2444",
8696
+ "default.handlebars->31->2446",
8697
"sharing.handlebars->11->52"
8698
]
8699
},
@@ -8709,7 +8714,7 @@
8714
"zh-chs": "封闭式桌面多路复用会话,{0}秒",
8715
"zh-cht": "封閉式桌面多路復用會話,{0}秒",
8716
"xloc": [
8712
- "default.handlebars->31->1846"
8717
+ "default.handlebars->31->1848"
8718
]
8719
},
8720
{
@@ -8832,9 +8837,9 @@
8837
"zh-cht": "指令",
8838
"xloc": [
8839
"default-mobile.handlebars->11->593",
8835
- "default.handlebars->31->1738",
8836
- "default.handlebars->31->806",
8837
- "default.handlebars->31->828"
8840
+ "default.handlebars->31->1740",
8841
+ "default.handlebars->31->808",
8842
+ "default.handlebars->31->830"
8843
]
8844
},
8845
{
@@ -8854,8 +8859,8 @@
8859
"zh-chs": "通用设备组",
8860
"zh-cht": "通用裝置群",
8861
"xloc": [
8857
- "default.handlebars->31->2136",
8858
- "default.handlebars->31->2260"
8862
+ "default.handlebars->31->2138",
8863
+ "default.handlebars->31->2262"
8864
]
8865
},
8866
{
@@ -8875,8 +8880,8 @@
8880
"zh-chs": "通用设备",
8881
"zh-cht": "通用裝置",
8882
"xloc": [
8878
- "default.handlebars->31->2142",
8879
- "default.handlebars->31->2272"
8883
+ "default.handlebars->31->2144",
8884
+ "default.handlebars->31->2274"
8885
]
8886
},
8887
{
@@ -8886,7 +8891,7 @@
8891
"de": "Kompilierungszeit",
8892
"xloc": [
8893
"default-mobile.handlebars->11->453",
8889
- "default.handlebars->31->1133"
8894
+ "default.handlebars->31->1135"
8895
]
8896
},
8897
{
@@ -8906,7 +8911,7 @@
8911
"zh-chs": "压缩档案...",
8912
"zh-cht": "壓縮檔案...",
8913
"xloc": [
8909
- "default.handlebars->31->1073",
8914
+ "default.handlebars->31->1075",
8915
"sharing.handlebars->11->47"
8916
]
8917
},
@@ -8929,14 +8934,14 @@
8934
"xloc": [
8935
"default-mobile.handlebars->11->341",
8936
"default-mobile.handlebars->11->547",
8932
- "default.handlebars->31->1648",
8933
- "default.handlebars->31->2016",
8934
- "default.handlebars->31->2095",
8935
- "default.handlebars->31->2156",
8936
- "default.handlebars->31->2258",
8937
+ "default.handlebars->31->1650",
8938
+ "default.handlebars->31->2018",
8939
+ "default.handlebars->31->2097",
8940
+ "default.handlebars->31->2158",
8941
+ "default.handlebars->31->2260",
8942
"default.handlebars->31->528",
8938
- "default.handlebars->31->931",
8939
- "default.handlebars->31->940"
8943
+ "default.handlebars->31->933",
8944
+ "default.handlebars->31->942"
8945
]
8946
},
8947
{
@@ -8957,7 +8962,7 @@
8962
"zh-cht": "確認將1個副本複製到此位置?",
8963
"xloc": [
8964
"default-mobile.handlebars->11->406",
8960
- "default.handlebars->31->1096",
8965
+ "default.handlebars->31->1098",
8966
"sharing.handlebars->11->70"
8967
]
8968
},
@@ -8978,7 +8983,7 @@
8983
"zh-chs": "确认{0}个条目的复制到此位置?",
8984
"zh-cht": "確認{0}個條目的複製到此位置?",
8985
"xloc": [
8981
- "default.handlebars->31->1095",
8986
+ "default.handlebars->31->1097",
8987
"sharing.handlebars->11->69"
8988
]
8989
},
@@ -9019,7 +9024,7 @@
9024
"zh-chs": "确认删除选定的帐户?",
9025
"zh-cht": "確認刪除所選帳戶?",
9026
"xloc": [
9022
- "default.handlebars->31->2015"
9027
+ "default.handlebars->31->2017"
9028
]
9029
},
9030
{
@@ -9059,7 +9064,7 @@
9064
"zh-chs": "确认删除选定的用户组?",
9065
"zh-cht": "確認刪除所選用戶群?",
9066
"xloc": [
9062
- "default.handlebars->31->2094"
9067
+ "default.handlebars->31->2096"
9068
]
9069
},
9070
{
@@ -9079,7 +9084,7 @@
9084
"zh-chs": "确认删除用户{0}?",
9085
"zh-cht": "確認刪除用戶{0}?",
9086
"xloc": [
9082
- "default.handlebars->31->2257"
9087
+ "default.handlebars->31->2259"
9088
]
9089
},
9090
{
@@ -9099,7 +9104,7 @@
9104
"zh-chs": "确认删除用户“ {0} ”的成员身份?",
9105
"zh-cht": "確認刪除用戶“ {0} ”的成員身份?",
9106
"xloc": [
9102
- "default.handlebars->31->2159"
9107
+ "default.handlebars->31->2161"
9108
]
9109
},
9110
{
@@ -9119,7 +9124,7 @@
9124
"zh-chs": "确认删除用户组“ {0} ”的成员身份?",
9125
"zh-cht": "確認刪除用戶群“ {0} ”的成員身份?",
9126
"xloc": [
9122
- "default.handlebars->31->2289"
9127
+ "default.handlebars->31->2291"
9128
]
9129
},
9130
{
@@ -9140,7 +9145,7 @@
9145
"zh-cht": "確認將1個條目移動到此位置?",
9146
"xloc": [
9147
"default-mobile.handlebars->11->408",
9143
- "default.handlebars->31->1098",
9148
+ "default.handlebars->31->1100",
9149
"sharing.handlebars->11->72"
9150
]
9151
},
@@ -9161,7 +9166,7 @@
9166
"zh-chs": "确认将{0}个条目移到此位置?",
9167
"zh-cht": "確認將{0}個條目移到該位置?",
9168
"xloc": [
9164
- "default.handlebars->31->1097",
9169
+ "default.handlebars->31->1099",
9170
"sharing.handlebars->11->71"
9171
]
9172
},
@@ -9202,7 +9207,7 @@
9207
"zh-chs": "确认覆盖?",
9208
"zh-cht": "確認覆蓋?",
9209
"xloc": [
9205
- "default.handlebars->31->1829"
9210
+ "default.handlebars->31->1831"
9211
]
9212
},
9213
{
@@ -9222,8 +9227,8 @@
9227
"zh-chs": "确认删除设备“ {0} ”的访问权限?",
9228
"zh-cht": "確認刪除裝置“ {0} ”的訪問權限?",
9229
"xloc": [
9225
- "default.handlebars->31->2149",
9226
- "default.handlebars->31->2280"
9230
+ "default.handlebars->31->2151",
9231
+ "default.handlebars->31->2282"
9232
]
9233
},
9234
{
@@ -9243,8 +9248,8 @@
9248
"zh-chs": "确认删除设备组“ {0} ”的访问权限?",
9249
"zh-cht": "確認刪除裝置群“ {0} ”的訪問權限?",
9250
"xloc": [
9246
- "default.handlebars->31->2151",
9247
- "default.handlebars->31->2293"
9251
+ "default.handlebars->31->2153",
9252
+ "default.handlebars->31->2295"
9253
]
9254
},
9255
{
@@ -9264,7 +9269,7 @@
9269
"zh-chs": "确认删除用户“ {0} ”的访问权限?",
9270
"zh-cht": "確認刪除用戶“ {0} ”的訪問權限?",
9271
"xloc": [
9267
- "default.handlebars->31->2282"
9272
+ "default.handlebars->31->2284"
9273
]
9274
},
9275
{
@@ -9284,7 +9289,7 @@
9289
"zh-chs": "确认删除用户组“ {0} ”的访问权限?",
9290
"zh-cht": "確認刪除用戶群“ {0} ”的訪問權限?",
9291
"xloc": [
9287
- "default.handlebars->31->2285"
9292
+ "default.handlebars->31->2287"
9293
]
9294
},
9295
{
@@ -9304,8 +9309,8 @@
9309
"zh-chs": "确认删除访问权限?",
9310
"zh-cht": "確認刪除訪問權限?",
9311
"xloc": [
9307
- "default.handlebars->31->2283",
9308
- "default.handlebars->31->2286"
9312
+ "default.handlebars->31->2285",
9313
+ "default.handlebars->31->2288"
9314
]
9315
},
9316
{
@@ -9326,7 +9331,7 @@
9331
"zh-cht": "確認刪除身份驗證軟體兩步登入?",
9332
"xloc": [
9333
"default-mobile.handlebars->11->98",
9329
- "default.handlebars->31->1238"
9334
+ "default.handlebars->31->1240"
9335
]
9336
},
9337
{
@@ -9363,7 +9368,7 @@
9368
"zh-chs": "确认删除设备共享“{0}”?",
9369
"zh-cht": "確認刪除設備共享“{0}”?",
9370
"xloc": [
9366
- "default.handlebars->31->2278"
9371
+ "default.handlebars->31->2280"
9372
]
9373
},
9374
{
@@ -9404,7 +9409,7 @@
9409
"en": "Confirm removal of push authentication device?",
9410
"nl": "Verwijderen van push-authenticatieapparaat bevestigen?",
9411
"xloc": [
9407
- "default.handlebars->31->1240"
9412
+ "default.handlebars->31->1242"
9413
]
9414
},
9415
{
@@ -9424,7 +9429,7 @@
9429
"zh-chs": "确认删除用户“ {0} ”的权限?",
9430
"zh-cht": "確認刪除用戶“ {0} ”的權限?",
9431
"xloc": [
9427
- "default.handlebars->31->1747"
9432
+ "default.handlebars->31->1749"
9433
]
9434
},
9435
{
@@ -9444,13 +9449,13 @@
9449
"zh-chs": "确认删除用户组“ {0} ”的权限?",
9450
"zh-cht": "確認刪除用戶群“ {0} ”的權限?",
9451
"xloc": [
9447
- "default.handlebars->31->1749"
9452
+ "default.handlebars->31->1751"
9453
]
9454
},
9455
{
9456
"en": "Confirm removal of this login token?",
9457
"xloc": [
9453
- "default.handlebars->31->1533"
9458
+ "default.handlebars->31->1535"
9459
]
9460
},
9461
{
@@ -9508,7 +9513,7 @@
9513
"zh-cht": "將{1}入口{2}中的{0}限製到此位置?",
9514
"xloc": [
9515
"default-mobile.handlebars->11->151",
9511
- "default.handlebars->31->1830"
9516
+ "default.handlebars->31->1832"
9517
]
9518
},
9519
{
@@ -9533,8 +9538,8 @@
9538
"default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
9539
"default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3",
9540
"default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->connectbutton2span",
9536
- "default.handlebars->31->1068",
9537
- "default.handlebars->31->1587",
9541
+ "default.handlebars->31->1070",
9542
+ "default.handlebars->31->1589",
9543
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1span",
9544
"default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->connectbutton2span",
9545
"default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3",
@@ -9544,6 +9549,7 @@
9549
"sharing.handlebars->p11->deskarea0->deskarea1->3->connectbutton1span",
9550
"sharing.handlebars->p12->5->3->connectbutton2span",
9551
"sharing.handlebars->p13->p13toolbar->1->3",
9552
+ "ssh.handlebars->p11->deskarea0->deskarea1->3",
9553
"terminal.handlebars->p12->5->3->connectbutton2span",
9554
"xterm.handlebars->p11->deskarea0->deskarea1->3"
9555
]
@@ -9586,7 +9592,7 @@
9592
"zh-chs": "连接到服务器",
9593
"zh-cht": "連接到伺服器",
9594
"xloc": [
9589
- "default.handlebars->31->1641"
9595
+ "default.handlebars->31->1643"
9596
]
9597
},
9598
{
@@ -9689,6 +9695,7 @@
9695
"default.handlebars->31->11",
9696
"desktop.handlebars->3->4",
9697
"sharing.handlebars->11->4",
9698
+ "ssh.handlebars->9->4",
9699
"terminal.handlebars->3->4",
9700
"xterm.handlebars->9->4"
9701
]
@@ -9710,7 +9717,7 @@
9717
"zh-chs": "已连接的英特尔®AMT",
9718
"zh-cht": "已連接的Intel® AMT",
9719
"xloc": [
9713
- "default.handlebars->31->2387"
9720
+ "default.handlebars->31->2389"
9721
]
9722
},
9723
{
@@ -9730,7 +9737,7 @@
9737
"zh-chs": "已连接的用户",
9738
"zh-cht": "已连接的用户",
9739
"xloc": [
9733
- "default.handlebars->31->2392"
9740
+ "default.handlebars->31->2394"
9741
]
9742
},
9743
{
@@ -9751,7 +9758,7 @@
9758
"zh-cht": "現在已連接",
9759
"xloc": [
9760
"default-mobile.handlebars->11->448",
9754
- "default.handlebars->31->1128"
9761
+ "default.handlebars->31->1130"
9762
]
9763
},
9764
{
@@ -9794,7 +9801,7 @@
9801
"default-mobile.handlebars->11->2",
9802
"default-mobile.handlebars->11->424",
9803
"default-mobile.handlebars->11->48",
9797
- "default.handlebars->31->1119",
9804
+ "default.handlebars->31->1121",
9805
"default.handlebars->31->280",
9806
"default.handlebars->31->283",
9807
"default.handlebars->31->330",
@@ -9802,6 +9809,7 @@
9809
"desktop.handlebars->3->2",
9810
"sharing.handlebars->11->2",
9811
"sharing.handlebars->11->93",
9812
+ "ssh.handlebars->9->2",
9813
"terminal.handlebars->3->2",
9814
"xterm.handlebars->9->2"
9815
]
@@ -9823,7 +9831,7 @@
9831
"zh-chs": "连接数量",
9832
"zh-cht": "連接數量",
9833
"xloc": [
9826
- "default.handlebars->31->2406"
9834
+ "default.handlebars->31->2408"
9835
]
9836
},
9837
{
@@ -9849,7 +9857,7 @@
9857
"zh-chs": "连接转发器",
9858
"zh-cht": "連接轉發器",
9859
"xloc": [
9852
- "default.handlebars->31->2438"
9860
+ "default.handlebars->31->2440"
9861
]
9862
},
9863
{
@@ -9910,7 +9918,7 @@
9918
"zh-cht": "連接性",
9919
"xloc": [
9920
"default-mobile.handlebars->11->287",
9913
- "default.handlebars->31->1787",
9921
+ "default.handlebars->31->1789",
9922
"default.handlebars->31->271",
9923
"default.handlebars->31->715",
9924
"default.handlebars->container->column_l->p21->p21main->1->1->meshConnChartDiv->1"
@@ -9934,8 +9942,8 @@
9942
"zh-cht": "控制台",
9943
"xloc": [
9944
"default-mobile.handlebars->11->303",
9937
- "default.handlebars->31->799",
9938
- "default.handlebars->31->821",
9945
+ "default.handlebars->31->801",
9946
+ "default.handlebars->31->823",
9947
"default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevConsole",
9948
"default.handlebars->container->topbar->1->1->ServerSubMenuSpan->ServerSubMenu->1->0->ServerConsole",
9949
"default.handlebars->contextMenu->cxconsole"
@@ -9978,8 +9986,8 @@
9986
"zh-chs": "控制",
9987
"zh-cht": "控制",
9988
"xloc": [
9981
- "default.handlebars->31->798",
9982
- "default.handlebars->31->820",
9989
+ "default.handlebars->31->800",
9990
+ "default.handlebars->31->822",
9991
"messenger.handlebars->remoteImage->3->2"
9992
]
9993
},
@@ -10000,7 +10008,7 @@
10008
"zh-chs": "Cookie编码器",
10009
"zh-cht": "Cookie編碼器",
10010
"xloc": [
10003
- "default.handlebars->31->2422"
10011
+ "default.handlebars->31->2424"
10012
]
10013
},
10014
{
@@ -10158,8 +10166,8 @@
10166
"zh-chs": "复制连结到剪贴板",
10167
"zh-cht": "複製連結到剪貼板",
10168
"xloc": [
10161
- "default.handlebars->31->1798",
10162
- "default.handlebars->31->1817",
10169
+ "default.handlebars->31->1800",
10170
+ "default.handlebars->31->1819",
10171
"default.handlebars->31->223",
10172
"default.handlebars->31->245",
10173
"default.handlebars->31->247",
@@ -10266,7 +10274,7 @@
10274
"zh-chs": "复制:“{0}”到“{1}”",
10275
"zh-cht": "複製:“{0}”到“{1}”",
10276
"xloc": [
10269
- "default.handlebars->31->1889"
10277
+ "default.handlebars->31->1891"
10278
]
10279
},
10280
{
@@ -10412,7 +10420,7 @@
10420
"zh-chs": "核心服务器",
10421
"zh-cht": "核心伺服器",
10422
"xloc": [
10415
- "default.handlebars->31->2421"
10423
+ "default.handlebars->31->2423"
10424
]
10425
},
10426
{
@@ -10432,7 +10440,7 @@
10440
"zh-chs": "科西嘉文",
10441
"zh-cht": "科西嘉文",
10442
"xloc": [
10435
- "default.handlebars->31->1296"
10443
+ "default.handlebars->31->1298"
10444
]
10445
},
10446
{
@@ -10452,7 +10460,7 @@
10460
"zh-chs": "创建帐号",
10461
"zh-cht": "創建帳號",
10462
"xloc": [
10455
- "default.handlebars->31->2063",
10463
+ "default.handlebars->31->2065",
10464
"login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->12->1->1",
10465
"login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1",
10466
"login2.handlebars->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1"
@@ -10481,7 +10489,7 @@
10489
{
10490
"en": "Create Login Token",
10491
"xloc": [
10484
- "default.handlebars->31->1480",
10492
+ "default.handlebars->31->1482",
10493
"default.handlebars->31->248"
10494
]
10495
},
@@ -10502,7 +10510,7 @@
10510
"zh-chs": "创建用户组",
10511
"zh-cht": "創建用戶群",
10512
"xloc": [
10505
- "default.handlebars->31->2102"
10513
+ "default.handlebars->31->2104"
10514
]
10515
},
10516
{
@@ -10542,7 +10550,7 @@
10550
"zh-chs": "使用以下选项创建一个新的设备组。",
10551
"zh-cht": "使用以下選項創建一個新的裝置群。",
10552
"xloc": [
10545
- "default.handlebars->31->1510"
10553
+ "default.handlebars->31->1512"
10554
]
10555
},
10556
{
@@ -10568,7 +10576,7 @@
10576
{
10577
"en": "Create a temporary username and password that can be used as alternative login to your account. This is useful for allowing tools or other services to access your account.",
10578
"xloc": [
10571
- "default.handlebars->31->1461"
10579
+ "default.handlebars->31->1463"
10580
]
10581
},
10582
{
@@ -10608,7 +10616,7 @@
10616
"zh-chs": "创建文件夹:“{0}”",
10617
"zh-cht": "創建文件夾:“{0}”",
10618
"xloc": [
10611
- "default.handlebars->31->1882"
10619
+ "default.handlebars->31->1884"
10620
]
10621
},
10622
{
@@ -10634,7 +10642,7 @@
10642
"zh-chs": "通过导入以下格式的JSON档案一次创建多个帐户:",
10643
"zh-cht": "通過導入以下格式的JSON檔案一次創建多個帳戶:",
10644
"xloc": [
10637
- "default.handlebars->31->2027"
10645
+ "default.handlebars->31->2029"
10646
]
10647
},
10648
{
@@ -10676,7 +10684,7 @@
10684
"zh-chs": "创建的设备组:{0}",
10685
"zh-cht": "創建的設備組:{0}",
10686
"xloc": [
10679
- "default.handlebars->31->1893"
10687
+ "default.handlebars->31->1895"
10688
]
10689
},
10690
{
@@ -10696,7 +10704,7 @@
10704
"zh-chs": "创建一个链接,该链接允许没有帐户的访客在有限的时间内远程控制此设备。",
10705
"zh-cht": "創建一個鏈接,該鏈接允許沒有帳戶的訪客在有限的時間內遠程控制此設備。",
10706
"xloc": [
10699
- "default.handlebars->31->844"
10707
+ "default.handlebars->31->846"
10708
]
10709
},
10710
{
@@ -10750,7 +10758,7 @@
10758
"zh-chs": "创建",
10759
"zh-cht": "創建",
10760
"xloc": [
10753
- "default.handlebars->31->2188"
10761
+ "default.handlebars->31->2190"
10762
]
10763
},
10764
{
@@ -10770,7 +10778,7 @@
10778
"zh-chs": "创建时间",
10779
"zh-cht": "創作時間",
10780
"xloc": [
10773
- "default.handlebars->31->1569"
10781
+ "default.handlebars->31->1571"
10782
]
10783
},
10784
{
@@ -10812,8 +10820,8 @@
10820
"zh-chs": "创建者",
10821
"zh-cht": "創作者",
10822
"xloc": [
10815
- "default.handlebars->31->1567",
10816
- "default.handlebars->31->1568"
10823
+ "default.handlebars->31->1569",
10824
+ "default.handlebars->31->1570"
10825
]
10826
},
10827
{
@@ -10833,7 +10841,7 @@
10841
"zh-chs": "证书",
10842
"zh-cht": "證書",
10843
"xloc": [
10836
- "default.handlebars->31->1538"
10844
+ "default.handlebars->31->1540"
10845
]
10846
},
10847
{
@@ -10853,7 +10861,7 @@
10861
"zh-chs": "克里语",
10862
"zh-cht": "克里語",
10863
"xloc": [
10856
- "default.handlebars->31->1297"
10864
+ "default.handlebars->31->1299"
10865
]
10866
},
10867
{
@@ -10873,7 +10881,7 @@
10881
"zh-chs": "克罗地亚文",
10882
"zh-cht": "克羅地亞文",
10883
"xloc": [
10876
- "default.handlebars->31->1298"
10884
+ "default.handlebars->31->1300"
10885
]
10886
},
10887
{
@@ -10939,8 +10947,8 @@
10947
"xloc": [
10948
"default-mobile.handlebars->11->375",
10949
"default-mobile.handlebars->11->379",
10942
- "default.handlebars->31->1021",
10943
- "default.handlebars->31->1025",
10950
+ "default.handlebars->31->1023",
10951
+ "default.handlebars->31->1027",
10952
"default.handlebars->31->57",
10953
"sharing.handlebars->11->24",
10954
"terminal.handlebars->3->6"
@@ -11061,7 +11069,7 @@
11069
"de": "Aktuelles Password nicht in korrekt.",
11070
"xloc": [
11071
"default-mobile.handlebars->11->633",
11064
- "default.handlebars->31->2361"
11072
+ "default.handlebars->31->2363"
11073
]
11074
},
11075
{
@@ -11123,7 +11131,7 @@
11131
"zh-chs": "捷克文",
11132
"zh-cht": "捷克文",
11133
"xloc": [
11126
- "default.handlebars->31->1299"
11134
+ "default.handlebars->31->1301"
11135
]
11136
},
11137
{
@@ -11163,7 +11171,7 @@
11171
"zh-chs": "丹麦文",
11172
"zh-cht": "丹麥文",
11173
"xloc": [
11166
- "default.handlebars->31->1300"
11174
+ "default.handlebars->31->1302"
11175
]
11176
},
11177
{
@@ -11193,7 +11201,7 @@
11201
"zh-chs": "数据通道",
11202
"zh-cht": "數據通道",
11203
"xloc": [
11196
- "default.handlebars->31->988",
11204
+ "default.handlebars->31->990",
11205
"desktop.handlebars->3->11",
11206
"sharing.handlebars->11->11"
11207
]
@@ -11215,7 +11223,7 @@
11223
"zh-chs": "日期和时间",
11224
"zh-cht": "日期和時間",
11225
"xloc": [
11218
- "default.handlebars->31->1458"
11226
+ "default.handlebars->31->1460"
11227
]
11228
},
11229
{
@@ -11236,7 +11244,7 @@
11244
"zh-cht": "天",
11245
"xloc": [
11246
"default-mobile.handlebars->11->331",
11239
- "default.handlebars->31->915"
11247
+ "default.handlebars->31->917"
11248
]
11249
},
11250
{
@@ -11256,7 +11264,7 @@
11264
"zh-chs": "停用",
11265
"zh-cht": "停用",
11266
"xloc": [
11259
- "default.handlebars->31->1620"
11267
+ "default.handlebars->31->1622"
11268
]
11269
},
11270
{
@@ -11276,7 +11284,7 @@
11284
"zh-chs": "如果设置停用CCM",
11285
"zh-cht": "如果設置停用CCM",
11286
"xloc": [
11279
- "default.handlebars->31->1632"
11287
+ "default.handlebars->31->1634"
11288
]
11289
},
11290
{
@@ -11334,10 +11342,10 @@
11342
"zh-chs": "默认",
11343
"zh-cht": "默認",
11344
"xloc": [
11337
- "default.handlebars->31->2050",
11338
- "default.handlebars->31->2098",
11339
- "default.handlebars->31->2109",
11340
- "default.handlebars->31->2177"
11345
+ "default.handlebars->31->2052",
11346
+ "default.handlebars->31->2100",
11347
+ "default.handlebars->31->2111",
11348
+ "default.handlebars->31->2179"
11349
]
11350
},
11351
{
@@ -11347,7 +11355,7 @@
11355
"de": "Löschen",
11356
"xloc": [
11357
"default-mobile.handlebars->11->363",
11350
- "default.handlebars->31->1009"
11358
+ "default.handlebars->31->1011"
11359
]
11360
},
11361
{
@@ -11372,8 +11380,8 @@
11380
"default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1",
11381
"default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1",
11382
"default-mobile.handlebars->dialog->idx_dlgButtonBar->5",
11375
- "default.handlebars->31->1087",
11376
- "default.handlebars->31->1824",
11383
+ "default.handlebars->31->1089",
11384
+ "default.handlebars->31->1826",
11385
"default.handlebars->31->604",
11386
"default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
11387
"default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3",
@@ -11384,6 +11392,7 @@
11392
"sharing.handlebars->11->61",
11393
"sharing.handlebars->dialog->idx_dlgButtonBar->5",
11394
"sharing.handlebars->p13->p13toolbar->fileArea2->3",
11395
+ "ssh.handlebars->p11->dialog->idx_dlgButtonBar->5",
11396
"terminal.handlebars->p12->dialog->idx_dlgButtonBar->5",
11397
"xterm.handlebars->p11->dialog->idx_dlgButtonBar->5"
11398
]
@@ -11406,7 +11415,7 @@
11415
"zh-cht": "刪除帳戶",
11416
"xloc": [
11417
"default-mobile.handlebars->11->108",
11409
- "default.handlebars->31->1495"
11418
+ "default.handlebars->31->1497"
11419
]
11420
},
11421
{
@@ -11426,7 +11435,7 @@
11435
"zh-chs": "删除帐户",
11436
"zh-cht": "刪除帳戶",
11437
"xloc": [
11429
- "default.handlebars->31->2017"
11438
+ "default.handlebars->31->2019"
11439
]
11440
},
11441
{
@@ -11469,8 +11478,8 @@
11478
"xloc": [
11479
"default-mobile.handlebars->11->545",
11480
"default-mobile.handlebars->11->548",
11472
- "default.handlebars->31->1616",
11473
- "default.handlebars->31->1649"
11481
+ "default.handlebars->31->1618",
11482
+ "default.handlebars->31->1651"
11483
]
11484
},
11485
{
@@ -11491,7 +11500,7 @@
11500
"zh-cht": "刪除節點",
11501
"xloc": [
11502
"default-mobile.handlebars->11->339",
11494
- "default.handlebars->31->941"
11503
+ "default.handlebars->31->943"
11504
]
11505
},
11506
{
@@ -11531,7 +11540,7 @@
11540
"zh-chs": "删除用户",
11541
"zh-cht": "刪除用戶",
11542
"xloc": [
11534
- "default.handlebars->31->2229"
11543
+ "default.handlebars->31->2231"
11544
]
11545
},
11546
{
@@ -11551,8 +11560,8 @@
11560
"zh-chs": "删除用户群组",
11561
"zh-cht": "刪除用戶群組",
11562
"xloc": [
11554
- "default.handlebars->31->2147",
11555
- "default.handlebars->31->2157"
11563
+ "default.handlebars->31->2149",
11564
+ "default.handlebars->31->2159"
11565
]
11566
},
11567
{
@@ -11572,7 +11581,7 @@
11581
"zh-chs": "删除用户群组",
11582
"zh-cht": "刪除用戶群組",
11583
"xloc": [
11575
- "default.handlebars->31->2096"
11584
+ "default.handlebars->31->2098"
11585
]
11586
},
11587
{
@@ -11592,7 +11601,7 @@
11601
"zh-chs": "删除用户{0}",
11602
"zh-cht": "刪除用戶{0}",
11603
"xloc": [
11595
- "default.handlebars->31->2256"
11604
+ "default.handlebars->31->2258"
11605
]
11606
},
11607
{
@@ -11613,7 +11622,7 @@
11622
"zh-cht": "刪除帳戶",
11623
"xloc": [
11624
"default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3AccountActions->p2AccountActions->3->9->0",
11616
- "default.handlebars->31->2013",
11625
+ "default.handlebars->31->2015",
11626
"default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->p2AccountPassActions->7"
11627
]
11628
},
@@ -11654,7 +11663,7 @@
11663
"zh-chs": "删除群组",
11664
"zh-cht": "刪除群組",
11665
"xloc": [
11657
- "default.handlebars->31->2092"
11666
+ "default.handlebars->31->2094"
11667
]
11668
},
11669
{
@@ -11694,7 +11703,7 @@
11703
"zh-chs": "递归删除:“{0}”,{1}个元素已删除",
11704
"zh-cht": "遞歸刪除:“{0}”,{1}個元素已刪除",
11705
"xloc": [
11697
- "default.handlebars->31->1884"
11706
+ "default.handlebars->31->1886"
11707
]
11708
},
11709
{
@@ -11716,8 +11725,8 @@
11725
"xloc": [
11726
"default-mobile.handlebars->11->148",
11727
"default-mobile.handlebars->11->400",
11719
- "default.handlebars->31->1089",
11720
- "default.handlebars->31->1826",
11728
+ "default.handlebars->31->1091",
11729
+ "default.handlebars->31->1828",
11730
"sharing.handlebars->11->63"
11731
]
11732
},
@@ -11738,7 +11747,7 @@
11747
"zh-chs": "删除用户群组{0}?",
11748
"zh-cht": "刪除用戶群組{0}?",
11749
"xloc": [
11741
- "default.handlebars->31->2155"
11750
+ "default.handlebars->31->2157"
11751
]
11752
},
11753
{
@@ -11760,8 +11769,8 @@
11769
"xloc": [
11770
"default-mobile.handlebars->11->147",
11771
"default-mobile.handlebars->11->399",
11763
- "default.handlebars->31->1088",
11764
- "default.handlebars->31->1825",
11772
+ "default.handlebars->31->1090",
11773
+ "default.handlebars->31->1827",
11774
"sharing.handlebars->11->62"
11775
]
11776
},
@@ -11802,7 +11811,7 @@
11811
"zh-chs": "删除:“{0}”",
11812
"zh-cht": "刪除:“{0}”",
11813
"xloc": [
11805
- "default.handlebars->31->1883"
11814
+ "default.handlebars->31->1885"
11815
]
11816
},
11817
{
@@ -11822,7 +11831,7 @@
11831
"zh-chs": "删除:“{0}”,{1}个元素已删除",
11832
"zh-cht": "刪除:“{0}”,已刪除{1}個元素",
11833
"xloc": [
11825
- "default.handlebars->31->1885"
11834
+ "default.handlebars->31->1887"
11835
]
11836
},
11837
{
@@ -11843,7 +11852,7 @@
11852
"zh-cht": "被拒絕",
11853
"xloc": [
11854
"default-mobile.handlebars->11->350",
11846
- "default.handlebars->31->984",
11855
+ "default.handlebars->31->986",
11856
"desktop.handlebars->3->7",
11857
"sharing.handlebars->11->29",
11858
"sharing.handlebars->11->7",
@@ -11946,19 +11955,19 @@
11955
"default-mobile.handlebars->11->461",
11956
"default-mobile.handlebars->11->536",
11957
"default-mobile.handlebars->11->550",
11949
- "default.handlebars->31->1141",
11950
- "default.handlebars->31->1151",
11951
- "default.handlebars->31->1516",
11952
- "default.handlebars->31->1564",
11953
- "default.handlebars->31->1651",
11954
- "default.handlebars->31->2101",
11955
- "default.handlebars->31->2111",
11956
- "default.handlebars->31->2112",
11957
- "default.handlebars->31->2153",
11958
+ "default.handlebars->31->1143",
11959
+ "default.handlebars->31->1153",
11960
+ "default.handlebars->31->1518",
11961
+ "default.handlebars->31->1566",
11962
+ "default.handlebars->31->1653",
11963
+ "default.handlebars->31->2103",
11964
+ "default.handlebars->31->2113",
11965
+ "default.handlebars->31->2114",
11966
+ "default.handlebars->31->2155",
11967
"default.handlebars->31->645",
11968
"default.handlebars->31->646",
11969
"default.handlebars->31->95",
11961
- "default.handlebars->31->979",
11970
+ "default.handlebars->31->981",
11971
"default.handlebars->container->column_l->p42->p42tbl->1->0->3"
11972
]
11973
},
@@ -11997,12 +12006,12 @@
12006
"zh-cht": "桌面",
12007
"xloc": [
12008
"default-mobile.handlebars->11->299",
12000
- "default.handlebars->31->1051",
12001
- "default.handlebars->31->1657",
12002
- "default.handlebars->31->2311",
12009
+ "default.handlebars->31->1053",
12010
+ "default.handlebars->31->1659",
12011
+ "default.handlebars->31->2313",
12012
"default.handlebars->31->610",
12004
- "default.handlebars->31->779",
12005
- "default.handlebars->31->846",
12013
+ "default.handlebars->31->781",
12014
+ "default.handlebars->31->848",
12015
"default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevDesktop",
12016
"default.handlebars->contextMenu->cxdesktop",
12017
"desktop.handlebars->3->23",
@@ -12014,23 +12023,23 @@
12023
"en": "Desktop + Files",
12024
"nl": "Desktop + Bestanden",
12025
"xloc": [
12017
- "default.handlebars->31->783",
12018
- "default.handlebars->31->849"
12026
+ "default.handlebars->31->785",
12027
+ "default.handlebars->31->851"
12028
]
12029
},
12030
{
12031
"en": "Desktop + Terminal",
12032
"nl": "Desktop + Terminal",
12033
"xloc": [
12025
- "default.handlebars->31->780"
12034
+ "default.handlebars->31->782"
12035
]
12036
},
12037
{
12038
"en": "Desktop + Terminal + Files",
12039
"nl": "Desktop + Terminal + Bestanden",
12040
"xloc": [
12032
- "default.handlebars->31->784",
12033
- "default.handlebars->31->851"
12041
+ "default.handlebars->31->786",
12042
+ "default.handlebars->31->853"
12043
]
12044
},
12045
{
@@ -12070,9 +12079,9 @@
12079
"zh-chs": "桌面通知",
12080
"zh-cht": "桌面通知",
12081
"xloc": [
12073
- "default.handlebars->31->1578",
12074
- "default.handlebars->31->2116",
12075
- "default.handlebars->31->2203",
12082
+ "default.handlebars->31->1580",
12083
+ "default.handlebars->31->2118",
12084
+ "default.handlebars->31->2205",
12085
"default.handlebars->31->696"
12086
]
12087
},
@@ -12093,9 +12102,9 @@
12102
"zh-chs": "桌面提示",
12103
"zh-cht": "桌面提示",
12104
"xloc": [
12096
- "default.handlebars->31->1577",
12097
- "default.handlebars->31->2115",
12098
- "default.handlebars->31->2202",
12105
+ "default.handlebars->31->1579",
12106
+ "default.handlebars->31->2117",
12107
+ "default.handlebars->31->2204",
12108
"default.handlebars->31->695"
12109
]
12110
},
@@ -12116,9 +12125,9 @@
12125
"zh-chs": "桌面提示+工具栏",
12126
"zh-cht": "桌面提示+工具欄",
12127
"xloc": [
12119
- "default.handlebars->31->1575",
12120
- "default.handlebars->31->2113",
12121
- "default.handlebars->31->2200",
12128
+ "default.handlebars->31->1577",
12129
+ "default.handlebars->31->2115",
12130
+ "default.handlebars->31->2202",
12131
"default.handlebars->31->693"
12132
]
12133
},
@@ -12126,7 +12135,7 @@
12135
"en": "Desktop Session",
12136
"nl": "Desktop sessie",
12137
"xloc": [
12129
- "default.handlebars->31->2304"
12138
+ "default.handlebars->31->2306"
12139
]
12140
},
12141
{
@@ -12189,9 +12198,9 @@
12198
"zh-chs": "桌面工具栏",
12199
"zh-cht": "桌面工具欄",
12200
"xloc": [
12192
- "default.handlebars->31->1576",
12193
- "default.handlebars->31->2114",
12194
- "default.handlebars->31->2201",
12201
+ "default.handlebars->31->1578",
12202
+ "default.handlebars->31->2116",
12203
+ "default.handlebars->31->2203",
12204
"default.handlebars->31->694"
12205
]
12206
},
@@ -12201,7 +12210,7 @@
12210
"fr": "Bureau en visualisation seulement",
12211
"de": "Desktop, nur Ansehen",
12212
"xloc": [
12204
- "default.handlebars->31->852"
12213
+ "default.handlebars->31->854"
12214
]
12215
},
12216
{
@@ -12221,7 +12230,7 @@
12230
"zh-chs": "桌面时段",
12231
"zh-cht": "桌面時段",
12232
"xloc": [
12224
- "default.handlebars->31->1050"
12233
+ "default.handlebars->31->1052"
12234
]
12235
},
12236
{
@@ -12315,11 +12324,11 @@
12324
"zh-cht": "裝置",
12325
"xloc": [
12326
"default-mobile.handlebars->11->456",
12318
- "default.handlebars->31->1136",
12319
- "default.handlebars->31->1244",
12320
- "default.handlebars->31->1680",
12327
+ "default.handlebars->31->1138",
12328
+ "default.handlebars->31->1246",
12329
+ "default.handlebars->31->1682",
12330
"default.handlebars->31->204",
12322
- "default.handlebars->31->2275",
12331
+ "default.handlebars->31->2277",
12332
"default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->5"
12333
]
12334
},
@@ -12342,7 +12351,7 @@
12351
"xloc": [
12352
"default-mobile.handlebars->11->320",
12353
"default-mobile.handlebars->11->329",
12345
- "default.handlebars->31->898"
12354
+ "default.handlebars->31->900"
12355
]
12356
},
12357
{
@@ -12392,15 +12401,15 @@
12401
"xloc": [
12402
"agent-translations.json",
12403
"default-mobile.handlebars->11->611",
12395
- "default.handlebars->31->1675",
12396
- "default.handlebars->31->1678",
12397
- "default.handlebars->31->1679",
12398
- "default.handlebars->31->1964",
12399
- "default.handlebars->31->2139",
12400
- "default.handlebars->31->2145",
12401
- "default.handlebars->31->2263",
12402
- "default.handlebars->31->2320",
12403
- "default.handlebars->31->2339"
12404
+ "default.handlebars->31->1677",
12405
+ "default.handlebars->31->1680",
12406
+ "default.handlebars->31->1681",
12407
+ "default.handlebars->31->1966",
12408
+ "default.handlebars->31->2141",
12409
+ "default.handlebars->31->2147",
12410
+ "default.handlebars->31->2265",
12411
+ "default.handlebars->31->2322",
12412
+ "default.handlebars->31->2341"
12413
]
12414
},
12415
{
@@ -12421,7 +12430,7 @@
12430
"zh-cht": "裝置群用戶",
12431
"xloc": [
12432
"default-mobile.handlebars->11->600",
12424
- "default.handlebars->31->1745"
12433
+ "default.handlebars->31->1747"
12434
]
12435
},
12436
{
@@ -12442,11 +12451,11 @@
12451
"zh-cht": "裝置群",
12452
"xloc": [
12453
"default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->3",
12445
- "default.handlebars->31->1980",
12446
- "default.handlebars->31->2086",
12447
- "default.handlebars->31->2126",
12448
- "default.handlebars->31->2197",
12449
- "default.handlebars->31->2390",
12454
+ "default.handlebars->31->1982",
12455
+ "default.handlebars->31->2088",
12456
+ "default.handlebars->31->2128",
12457
+ "default.handlebars->31->2199",
12458
+ "default.handlebars->31->2392",
12459
"default.handlebars->container->column_l->p2->p2info->9"
12460
]
12461
},
@@ -12487,7 +12496,7 @@
12496
"zh-chs": "设备位置",
12497
"zh-cht": "裝置位置",
12498
"xloc": [
12490
- "default.handlebars->31->942"
12499
+ "default.handlebars->31->944"
12500
]
12501
},
12502
{
@@ -12507,7 +12516,7 @@
12516
"zh-chs": "设备消息",
12517
"zh-cht": "裝置訊息",
12518
"xloc": [
12510
- "default.handlebars->31->836"
12519
+ "default.handlebars->31->838"
12520
]
12521
},
12522
{
@@ -12528,10 +12537,10 @@
12537
"zh-cht": "裝置名稱",
12538
"xloc": [
12539
"default-mobile.handlebars->11->343",
12531
- "default.handlebars->31->2319",
12540
+ "default.handlebars->31->2321",
12541
"default.handlebars->31->346",
12542
"default.handlebars->31->355",
12534
- "default.handlebars->31->977",
12543
+ "default.handlebars->31->979",
12544
"player.handlebars->3->9"
12545
]
12546
},
@@ -12553,7 +12562,7 @@
12562
"zh-cht": "裝置通知",
12563
"xloc": [
12564
"default.handlebars->31->550",
12556
- "default.handlebars->31->841"
12565
+ "default.handlebars->31->843"
12566
]
12567
},
12568
{
@@ -12599,7 +12608,7 @@
12608
"zh-chs": "设备共享链接",
12609
"zh-cht": "設備共享鏈接",
12610
"xloc": [
12602
- "default.handlebars->31->776"
12611
+ "default.handlebars->31->778"
12612
]
12613
},
12614
{
@@ -12647,8 +12656,8 @@
12656
"zh-chs": "设备连接。",
12657
"zh-cht": "裝置連接。",
12658
"xloc": [
12650
- "default.handlebars->31->1483",
12651
- "default.handlebars->31->1766"
12659
+ "default.handlebars->31->1485",
12660
+ "default.handlebars->31->1768"
12661
]
12662
},
12663
{
@@ -12668,8 +12677,8 @@
12677
"zh-chs": "设备断开连接。",
12678
"zh-cht": "裝置斷開連接。",
12679
"xloc": [
12671
- "default.handlebars->31->1484",
12672
- "default.handlebars->31->1767"
12680
+ "default.handlebars->31->1486",
12681
+ "default.handlebars->31->1769"
12682
]
12683
},
12684
{
@@ -12689,7 +12698,7 @@
12698
"zh-chs": "创建的设备组:{0}",
12699
"zh-cht": "設備組已創建:{0}",
12700
"xloc": [
12692
- "default.handlebars->31->1914"
12701
+ "default.handlebars->31->1916"
12702
]
12703
},
12704
{
@@ -12709,7 +12718,7 @@
12718
"zh-chs": "设备组已删除:{0}",
12719
"zh-cht": "設備組已刪除:{0}",
12720
"xloc": [
12712
- "default.handlebars->31->1915"
12721
+ "default.handlebars->31->1917"
12722
]
12723
},
12724
{
@@ -12729,7 +12738,7 @@
12738
"zh-chs": "设备组成员身份已更改:{0}",
12739
"zh-cht": "設備組成員身份已更改:{0}",
12740
"xloc": [
12732
- "default.handlebars->31->1916"
12741
+ "default.handlebars->31->1918"
12742
]
12743
},
12744
{
@@ -12750,7 +12759,7 @@
12759
"zh-cht": "其他裝置群管理員可以查看和更改裝置群註釋。",
12760
"xloc": [
12761
"default-mobile.handlebars->11->327",
12753
- "default.handlebars->31->833"
12762
+ "default.handlebars->31->835"
12763
]
12764
},
12765
{
@@ -12770,7 +12779,7 @@
12779
"zh-chs": "设备组通知已更改",
12780
"zh-cht": "設備組通知已更改",
12781
"xloc": [
12773
- "default.handlebars->31->1911"
12782
+ "default.handlebars->31->1913"
12783
]
12784
},
12785
{
@@ -12790,7 +12799,7 @@
12799
"zh-chs": "未删除的设备组:{0}",
12800
"zh-cht": "未刪除的設備組:{0}",
12801
"xloc": [
12793
- "default.handlebars->31->1894"
12802
+ "default.handlebars->31->1896"
12803
]
12804
},
12805
{
@@ -13172,7 +13181,7 @@
13181
"fr": "L'appareil a demandé l'activation d'Intel (R) AMT ACM TLS, nom de domaine complet: {0} ",
13182
"de": "Gerät angefordert Intel(R) AMT ACM TLS activation, FQDN: {0}",
13183
"xloc": [
13175
- "default.handlebars->31->1949"
13184
+ "default.handlebars->31->1951"
13185
]
13186
},
13187
{
@@ -13192,7 +13201,7 @@
13201
"zh-chs": "设备请求激活Intel(R)AMT ACM,FQDN:{0}",
13202
"zh-cht": "設備請求激活Intel(R)AMT ACM,FQDN:{0}",
13203
"xloc": [
13195
- "default.handlebars->31->1896"
13204
+ "default.handlebars->31->1898"
13205
]
13206
},
13207
{
@@ -13229,8 +13238,8 @@
13238
"zh-chs": "设备",
13239
"zh-cht": "裝置",
13240
"xloc": [
13232
- "default.handlebars->31->2087",
13233
- "default.handlebars->31->2127"
13241
+ "default.handlebars->31->2089",
13242
+ "default.handlebars->31->2129"
13243
]
13244
},
13245
{
@@ -13271,7 +13280,7 @@
13280
"zh-chs": "禁用的电子邮件两因素身份验证",
13281
"zh-cht": "禁用的電子郵件兩因素身份驗證",
13282
"xloc": [
13274
- "default.handlebars->31->1927"
13283
+ "default.handlebars->31->1929"
13284
]
13285
},
13286
{
@@ -13295,14 +13304,15 @@
13304
"default-mobile.handlebars->11->389",
13305
"default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
13306
"default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->disconnectbutton2span",
13298
- "default.handlebars->31->1069",
13299
- "default.handlebars->31->1588",
13307
+ "default.handlebars->31->1071",
13308
+ "default.handlebars->31->1590",
13309
"default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->disconnectbutton1span",
13310
"default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->disconnectbutton2span",
13311
"desktop.handlebars->p11->deskarea0->deskarea1->3->disconnectbutton1span",
13312
"sharing.handlebars->11->43",
13313
"sharing.handlebars->p11->deskarea0->deskarea1->3->disconnectbutton1span",
13314
"sharing.handlebars->p12->5->3->disconnectbutton2span",
13315
+ "ssh.handlebars->p11->deskarea0->deskarea1->3",
13316
"terminal.handlebars->p12->5->3->disconnectbutton2span",
13317
"xterm.handlebars->p11->deskarea0->deskarea1->3"
13318
]
@@ -13362,6 +13372,7 @@
13372
"sharing.handlebars->p11->deskarea0->deskarea1->3->deskstatus",
13373
"sharing.handlebars->p12->5->3->termstatus",
13374
"sharing.handlebars->p13->p13toolbar->1->3->p13Status",
13375
+ "ssh.handlebars->9->1",
13376
"terminal.handlebars->3->1",
13377
"terminal.handlebars->p12->5->3->termstatus",
13378
"xterm.handlebars->9->1"
@@ -13404,7 +13415,7 @@
13415
"zh-chs": "在远程设备上显示一个消息框。",
13416
"zh-cht": "在遠程裝置上顯示一個訊息框。",
13417
"xloc": [
13407
- "default.handlebars->31->837"
13418
+ "default.handlebars->31->839"
13419
]
13420
},
13421
{
@@ -13464,7 +13475,7 @@
13475
"zh-chs": "显示设备组名称",
13476
"zh-cht": "顯示裝置群名稱",
13477
"xloc": [
13467
- "default.handlebars->31->1482"
13478
+ "default.handlebars->31->1484"
13479
]
13480
},
13481
{
@@ -13484,7 +13495,7 @@
13495
"zh-chs": "显示名称",
13496
"zh-cht": "顯示名稱",
13497
"xloc": [
13487
- "default.handlebars->31->1036"
13498
+ "default.handlebars->31->1038"
13499
]
13500
},
13501
{
@@ -13504,7 +13515,7 @@
13515
"zh-chs": "显示公共连结",
13516
"zh-cht": "顯示公共鏈結",
13517
"xloc": [
13507
- "default.handlebars->31->1797"
13518
+ "default.handlebars->31->1799"
13519
]
13520
},
13521
{
@@ -13512,7 +13523,7 @@
13523
"nl": "Scherm {0}",
13524
"fr": "Affichage {0}",
13525
"xloc": [
13515
- "default.handlebars->31->1053"
13526
+ "default.handlebars->31->1055"
13527
]
13528
},
13529
{
@@ -13532,7 +13543,7 @@
13543
"zh-chs": "显示消息框,标题= “{0}”,消息= “{1}”",
13544
"zh-cht": "顯示消息框,標題= “{0}”,消息= “{1}”",
13545
"xloc": [
13535
- "default.handlebars->31->1856"
13546
+ "default.handlebars->31->1858"
13547
]
13548
},
13549
{
@@ -13552,7 +13563,7 @@
13563
"zh-chs": "显示吐司消息,标题= “{0}”,消息= “{1}”",
13564
"zh-cht": "顯示吐司消息,標題= “{0}”,消息= “{1}”",
13565
"xloc": [
13555
- "default.handlebars->31->1864"
13566
+ "default.handlebars->31->1866"
13567
]
13568
},
13569
{
@@ -13572,8 +13583,8 @@
13583
"zh-chs": "什么都不做",
13584
"zh-cht": "什麼都不做",
13585
"xloc": [
13575
- "default.handlebars->31->1635",
13576
- "default.handlebars->31->1639"
13586
+ "default.handlebars->31->1637",
13587
+ "default.handlebars->31->1641"
13588
]
13589
},
13590
{
@@ -13593,10 +13604,10 @@
13604
"zh-chs": "域",
13605
"zh-cht": "域",
13606
"xloc": [
13596
- "default.handlebars->31->2051",
13597
- "default.handlebars->31->2099",
13598
- "default.handlebars->31->2108",
13599
- "default.handlebars->31->2176",
13607
+ "default.handlebars->31->2053",
13608
+ "default.handlebars->31->2101",
13609
+ "default.handlebars->31->2110",
13610
+ "default.handlebars->31->2178",
13611
"mstsc.handlebars->main->1->3->1->2->1->0",
13612
"mstsc.handlebars->main->1->3->1->2->3"
13613
]
@@ -13618,7 +13629,7 @@
13629
"zh-chs": "请勿更改,如果设置请保留CCM",
13630
"zh-cht": "請勿更改,如果設置請保留CCM",
13631
"xloc": [
13621
- "default.handlebars->31->1631"
13632
+ "default.handlebars->31->1633"
13633
]
13634
},
13635
{
@@ -13655,7 +13666,7 @@
13666
"zh-chs": "不要连接到服务器",
13667
"zh-cht": "不要連接到伺服器",
13668
"xloc": [
13658
- "default.handlebars->31->1640"
13669
+ "default.handlebars->31->1642"
13670
]
13671
},
13672
{
@@ -13721,7 +13732,7 @@
13732
"de": "runter",
13733
"xloc": [
13734
"default-mobile.handlebars->11->371",
13724
- "default.handlebars->31->1017"
13735
+ "default.handlebars->31->1019"
13736
]
13737
},
13738
{
@@ -13785,7 +13796,7 @@
13796
"zh-cht": "下載檔案",
13797
"xloc": [
13798
"default-mobile.handlebars->11->419",
13788
- "default.handlebars->31->1108",
13799
+ "default.handlebars->31->1110",
13800
"sharing.handlebars->11->82"
13801
]
13802
},
@@ -13826,7 +13837,7 @@
13837
"zh-chs": "下载MeshCmd",
13838
"zh-cht": "下載MeshCmd",
13839
"xloc": [
13829
- "default.handlebars->31->967"
13840
+ "default.handlebars->31->969"
13841
]
13842
},
13843
{
@@ -13886,7 +13897,7 @@
13897
"zh-chs": "下载报告",
13898
"zh-cht": "下載報告",
13899
"xloc": [
13889
- "default.handlebars->31->1969",
13900
+ "default.handlebars->31->1971",
13901
"default.handlebars->container->column_l->p3->3->1->0->3"
13902
]
13903
},
@@ -13907,7 +13918,7 @@
13918
"zh-chs": "下载带有指令档案的“ meshcmd”,以通过此服务器将网络讯息发送到该设备。紧记编辑meshaction.txt并添加您的帐户密码或进行任何必要的更改。",
13919
"zh-cht": "下載帶有指令檔案的“ meshcmd”,以通過此服務器將網絡讯息發送到該裝置。緊記編輯meshaction.txt並新增你的帳戶密碼或進行任何必要的更改。",
13920
"xloc": [
13910
- "default.handlebars->31->960"
13921
+ "default.handlebars->31->962"
13922
]
13923
},
13924
{
@@ -13987,7 +13998,7 @@
13998
"zh-chs": "下载电源事件",
13999
"zh-cht": "下載電源事件",
14000
"xloc": [
13990
- "default.handlebars->31->916"
14001
+ "default.handlebars->31->918"
14002
]
14003
},
14004
{
@@ -14096,7 +14107,7 @@
14107
"zh-chs": "使用以下一种档案格式下载事件列表。",
14108
"zh-cht": "使用以下一種檔案格式下載事件列表。",
14109
"xloc": [
14099
- "default.handlebars->31->1970"
14110
+ "default.handlebars->31->1972"
14111
]
14112
},
14113
{
@@ -14116,7 +14127,7 @@
14127
"zh-chs": "使用以下一种档案格式下载用户列表。",
14128
"zh-cht": "使用以下一種檔案格式下載用戶列表。",
14129
"xloc": [
14119
- "default.handlebars->31->2035"
14130
+ "default.handlebars->31->2037"
14131
]
14132
},
14133
{
@@ -14197,7 +14208,7 @@
14208
"zh-chs": "下载:“{0}”",
14209
"zh-cht": "下載:“{0}”",
14210
"xloc": [
14200
- "default.handlebars->31->1887"
14211
+ "default.handlebars->31->1889"
14212
]
14213
},
14214
{
@@ -14206,7 +14217,7 @@
14217
"fr": "Téléchargement : \\\"{0}\\\", Taille : {1}",
14218
"de": "Download: \\\"{0}\\\", Größe: {1}",
14219
"xloc": [
14209
- "default.handlebars->31->1944"
14220
+ "default.handlebars->31->1946"
14221
]
14222
},
14223
{
@@ -14246,7 +14257,7 @@
14257
"zh-chs": "代理重复",
14258
"zh-cht": "代理重複",
14259
"xloc": [
14249
- "default.handlebars->31->2386"
14260
+ "default.handlebars->31->2388"
14261
]
14262
},
14263
{
@@ -14286,7 +14297,7 @@
14297
"zh-chs": "复制用户组",
14298
"zh-cht": "複製用戶群",
14299
"xloc": [
14289
- "default.handlebars->31->2103"
14300
+ "default.handlebars->31->2105"
14301
]
14302
},
14303
{
@@ -14323,8 +14334,8 @@
14334
"zh-chs": "持续时间",
14335
"zh-cht": "持續時間",
14336
"xloc": [
14326
- "default.handlebars->31->2299",
14327
- "default.handlebars->31->2325",
14337
+ "default.handlebars->31->2301",
14338
+ "default.handlebars->31->2327",
14339
"player.handlebars->3->2"
14340
]
14341
},
@@ -14362,7 +14373,7 @@
14373
"zh-chs": "荷兰文(比利时)",
14374
"zh-cht": "荷蘭文(比利時)",
14375
"xloc": [
14365
- "default.handlebars->31->1302"
14376
+ "default.handlebars->31->1304"
14377
]
14378
},
14379
{
@@ -14382,7 +14393,7 @@
14393
"zh-chs": "荷兰文(标准)",
14394
"zh-cht": "荷蘭文(標準)",
14395
"xloc": [
14385
- "default.handlebars->31->1301"
14396
+ "default.handlebars->31->1303"
14397
]
14398
},
14399
{
@@ -14673,7 +14684,7 @@
14684
"zh-cht": "編輯裝置",
14685
"xloc": [
14686
"default-mobile.handlebars->11->348",
14676
- "default.handlebars->31->982"
14687
+ "default.handlebars->31->984"
14688
]
14689
},
14690
{
@@ -14696,10 +14707,10 @@
14707
"default-mobile.handlebars->11->551",
14708
"default-mobile.handlebars->11->557",
14709
"default-mobile.handlebars->11->577",
14699
- "default.handlebars->31->1652",
14700
- "default.handlebars->31->1684",
14701
- "default.handlebars->31->1709",
14702
- "default.handlebars->31->1721"
14710
+ "default.handlebars->31->1654",
14711
+ "default.handlebars->31->1686",
14712
+ "default.handlebars->31->1711",
14713
+ "default.handlebars->31->1723"
14714
]
14715
},
14716
{
@@ -14719,7 +14730,7 @@
14730
"zh-chs": "编辑设备组功能",
14731
"zh-cht": "編輯裝置群功能",
14732
"xloc": [
14722
- "default.handlebars->31->1670"
14733
+ "default.handlebars->31->1672"
14734
]
14735
},
14736
{
@@ -14739,8 +14750,8 @@
14750
"zh-chs": "编辑设备组权限",
14751
"zh-cht": "編輯裝置群權限",
14752
"xloc": [
14742
- "default.handlebars->31->1706",
14743
- "default.handlebars->31->1718"
14753
+ "default.handlebars->31->1708",
14754
+ "default.handlebars->31->1720"
14755
]
14756
},
14757
{
@@ -14760,7 +14771,7 @@
14771
"zh-chs": "编辑设备组用户同意",
14772
"zh-cht": "編輯裝置群用戶同意",
14773
"xloc": [
14763
- "default.handlebars->31->1653"
14774
+ "default.handlebars->31->1655"
14775
]
14776
},
14777
{
@@ -14781,7 +14792,7 @@
14792
"zh-cht": "編輯裝置筆記",
14793
"xloc": [
14794
"default-mobile.handlebars->11->569",
14784
- "default.handlebars->31->1698"
14795
+ "default.handlebars->31->1700"
14796
]
14797
},
14798
{
@@ -14801,8 +14812,8 @@
14812
"zh-chs": "编辑设备权限",
14813
"zh-cht": "編輯裝置權限",
14814
"xloc": [
14804
- "default.handlebars->31->1711",
14805
- "default.handlebars->31->1713"
14815
+ "default.handlebars->31->1713",
14816
+ "default.handlebars->31->1715"
14817
]
14818
},
14819
{
@@ -14842,7 +14853,7 @@
14853
"zh-chs": "编辑设备用户同意",
14854
"zh-cht": "編輯裝置用戶同意",
14855
"xloc": [
14845
- "default.handlebars->31->1655"
14856
+ "default.handlebars->31->1657"
14857
]
14858
},
14859
{
@@ -14862,7 +14873,7 @@
14873
"zh-chs": "编辑群组",
14874
"zh-cht": "編輯群組",
14875
"xloc": [
14865
- "default.handlebars->31->810"
14876
+ "default.handlebars->31->812"
14877
]
14878
},
14879
{
@@ -14889,7 +14900,7 @@
14900
"default.handlebars->31->660",
14901
"default.handlebars->31->665",
14902
"default.handlebars->31->666",
14892
- "default.handlebars->31->923"
14903
+ "default.handlebars->31->925"
14904
]
14905
},
14906
{
@@ -14910,7 +14921,7 @@
14921
"zh-cht": "編輯筆記",
14922
"xloc": [
14923
"default-mobile.handlebars->11->584",
14913
- "default.handlebars->31->1728"
14924
+ "default.handlebars->31->1730"
14925
]
14926
},
14927
{
@@ -14930,7 +14941,7 @@
14941
"zh-chs": "编辑用户同意",
14942
"zh-cht": "編輯用戶同意",
14943
"xloc": [
14933
- "default.handlebars->31->1654"
14944
+ "default.handlebars->31->1656"
14945
]
14946
},
14947
{
@@ -14950,7 +14961,7 @@
14961
"zh-chs": "编辑用户设备组权限",
14962
"zh-cht": "編輯用戶裝置群權限",
14963
"xloc": [
14953
- "default.handlebars->31->1719"
14964
+ "default.handlebars->31->1721"
14965
]
14966
},
14967
{
@@ -14970,7 +14981,7 @@
14981
"zh-chs": "编辑用户设备权限",
14982
"zh-cht": "編輯用戶裝置權限",
14983
"xloc": [
14973
- "default.handlebars->31->1714"
14984
+ "default.handlebars->31->1716"
14985
]
14986
},
14987
{
@@ -14990,7 +15001,7 @@
15001
"zh-chs": "编辑用户组",
15002
"zh-cht": "編輯用戶群",
15003
"xloc": [
14993
- "default.handlebars->31->2154"
15004
+ "default.handlebars->31->2156"
15005
]
15006
},
15007
{
@@ -15010,7 +15021,7 @@
15021
"zh-chs": "编辑用户组设备权限",
15022
"zh-cht": "編輯用戶群裝置權限",
15023
"xloc": [
15013
- "default.handlebars->31->1716"
15024
+ "default.handlebars->31->1718"
15025
]
15026
},
15027
{
@@ -15030,7 +15041,7 @@
15041
"zh-chs": "编辑用户组用户同意",
15042
"zh-cht": "編輯用戶組用戶同意",
15043
"xloc": [
15033
- "default.handlebars->31->1656"
15044
+ "default.handlebars->31->1658"
15045
]
15046
},
15047
{
@@ -15113,11 +15124,11 @@
15124
"zh-cht": "電郵",
15125
"xloc": [
15126
"default-mobile.handlebars->11->102",
15116
- "default.handlebars->31->2053",
15117
- "default.handlebars->31->2180",
15127
+ "default.handlebars->31->2055",
15128
"default.handlebars->31->2182",
15119
- "default.handlebars->31->2222",
15120
- "default.handlebars->31->2242",
15129
+ "default.handlebars->31->2184",
15130
+ "default.handlebars->31->2224",
15131
+ "default.handlebars->31->2244",
15132
"default.handlebars->31->388",
15133
"login-mobile.handlebars->5->42",
15134
"login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3",
@@ -15150,7 +15161,7 @@
15161
"zh-cht": "電郵地址變更",
15162
"xloc": [
15163
"default-mobile.handlebars->11->103",
15153
- "default.handlebars->31->1491"
15164
+ "default.handlebars->31->1493"
15165
]
15166
},
15167
{
@@ -15171,7 +15182,7 @@
15182
"zh-cht": "電郵認證",
15183
"xloc": [
15184
"default-mobile.handlebars->11->92",
15174
- "default.handlebars->31->1232"
15185
+ "default.handlebars->31->1234"
15186
]
15187
},
15188
{
@@ -15231,7 +15242,7 @@
15242
"zh-cht": "電郵驗證",
15243
"xloc": [
15244
"default-mobile.handlebars->11->101",
15234
- "default.handlebars->31->1489"
15245
+ "default.handlebars->31->1491"
15246
]
15247
},
15248
{
@@ -15271,7 +15282,7 @@
15282
"zh-chs": "电邮未验证",
15283
"zh-cht": "電郵未驗證",
15284
"xloc": [
15274
- "default.handlebars->31->1999"
15285
+ "default.handlebars->31->2001"
15286
]
15287
},
15288
{
@@ -15291,8 +15302,8 @@
15302
"zh-chs": "电子邮件已验证",
15303
"zh-cht": "電子郵件已驗證",
15304
"xloc": [
15294
- "default.handlebars->31->2000",
15295
- "default.handlebars->31->2174"
15305
+ "default.handlebars->31->2002",
15306
+ "default.handlebars->31->2176"
15307
]
15308
},
15309
{
@@ -15312,7 +15323,7 @@
15323
"zh-chs": "电邮已验证。",
15324
"zh-cht": "電郵已驗證。",
15325
"xloc": [
15315
- "default.handlebars->31->2059"
15326
+ "default.handlebars->31->2061"
15327
]
15328
},
15329
{
@@ -15332,7 +15343,7 @@
15343
"zh-chs": "电邮未验证",
15344
"zh-cht": "電郵未驗證",
15345
"xloc": [
15335
- "default.handlebars->31->2175"
15346
+ "default.handlebars->31->2177"
15347
]
15348
},
15349
{
@@ -15353,7 +15364,7 @@
15364
"zh-cht": "電郵已發送。",
15365
"xloc": [
15366
"default-mobile.handlebars->11->626",
15356
- "default.handlebars->31->2354",
15367
+ "default.handlebars->31->2356",
15368
"login-mobile.handlebars->5->2",
15369
"login.handlebars->5->2",
15370
"login2.handlebars->7->3"
@@ -15398,7 +15409,7 @@
15409
"zh-chs": "已通过电邮验证,并且需要重置密码。",
15410
"zh-cht": "已通過電郵驗證,並且需要重置密碼。",
15411
"xloc": [
15401
- "default.handlebars->31->2060"
15412
+ "default.handlebars->31->2062"
15413
]
15414
},
15415
{
@@ -15423,7 +15434,7 @@
15434
"nl": "Email/SMS/Push verkeer",
15435
"de": "Email/SMS/Push-Verkehr",
15436
"xloc": [
15426
- "default.handlebars->31->2430"
15437
+ "default.handlebars->31->2432"
15438
]
15439
},
15440
{
@@ -15469,7 +15480,7 @@
15480
"zh-chs": "启用邀请代码",
15481
"zh-cht": "啟用邀請代碼",
15482
"xloc": [
15472
- "default.handlebars->31->1751"
15483
+ "default.handlebars->31->1753"
15484
]
15485
},
15486
{
@@ -15510,7 +15521,7 @@
15521
"zh-cht": "啟用電郵二因子鑑別。",
15522
"xloc": [
15523
"default-mobile.handlebars->11->94",
15513
- "default.handlebars->31->1234"
15524
+ "default.handlebars->31->1236"
15525
]
15526
},
15527
{
@@ -15550,7 +15561,7 @@
15561
"zh-chs": "已启用",
15562
"zh-cht": "已啟用",
15563
"xloc": [
15553
- "default.handlebars->31->2327"
15564
+ "default.handlebars->31->2329"
15565
]
15566
},
15567
{
@@ -15570,7 +15581,7 @@
15581
"zh-chs": "启用电子邮件两因素身份验证",
15582
"zh-cht": "啟用電子郵件兩因素身份驗證",
15583
"xloc": [
15573
- "default.handlebars->31->1926"
15584
+ "default.handlebars->31->1928"
15585
]
15586
},
15587
{
@@ -15600,7 +15611,7 @@
15611
"de": "Ende",
15612
"xloc": [
15613
"default-mobile.handlebars->11->365",
15603
- "default.handlebars->31->1011"
15614
+ "default.handlebars->31->1013"
15615
]
15616
},
15617
{
@@ -15620,7 +15631,7 @@
15631
"zh-chs": "时间结束",
15632
"zh-cht": "時間結束",
15633
"xloc": [
15623
- "default.handlebars->31->2324"
15634
+ "default.handlebars->31->2326"
15635
]
15636
},
15637
{
@@ -15640,7 +15651,7 @@
15651
"zh-chs": "从{1}到{2},{3}秒结束了桌面会话“{0}”",
15652
"zh-cht": "從{1}到{2},{3}秒結束了桌面會話“{0}”",
15653
"xloc": [
15643
- "default.handlebars->31->1849"
15654
+ "default.handlebars->31->1851"
15655
]
15656
},
15657
{
@@ -15660,14 +15671,14 @@
15671
"zh-chs": "从{1}到{2},{3}秒结束了文件管理会话“{0}”",
15672
"zh-cht": "從{1}到{2},{3}秒結束了文件管理會話“{0}”",
15673
"xloc": [
15663
- "default.handlebars->31->1850"
15674
+ "default.handlebars->31->1852"
15675
]
15676
},
15677
{
15678
"en": "Ended messenger session \\\"{0}\\\" from {1} to {2}, {3} second(s)",
15679
"nl": "Beëindigde messengersessie \\\"{0}\\\" van {1} naar {2}, {3} second(s)",
15680
"xloc": [
15670
- "default.handlebars->31->1950"
15681
+ "default.handlebars->31->1952"
15682
]
15683
},
15684
{
@@ -15687,7 +15698,7 @@
15698
"zh-chs": "从{1}到{2},{3}秒结束了中继会话“{0}”",
15699
"zh-cht": "從{1}到{2},{3}秒結束了中繼會話“{0}”",
15700
"xloc": [
15690
- "default.handlebars->31->1847"
15701
+ "default.handlebars->31->1849"
15702
]
15703
},
15704
{
@@ -15707,7 +15718,7 @@
15718
"zh-chs": "从{1}到{2},{3}秒结束了终端会话“{0}”",
15719
"zh-cht": "從{1}到{2},{3}秒結束了終端會話“{0}”",
15720
"xloc": [
15710
- "default.handlebars->31->1848"
15721
+ "default.handlebars->31->1850"
15722
]
15723
},
15724
{
@@ -15727,7 +15738,7 @@
15738
"zh-chs": "英文",
15739
"zh-cht": "英文",
15740
"xloc": [
15730
- "default.handlebars->31->1303"
15741
+ "default.handlebars->31->1305"
15742
]
15743
},
15744
{
@@ -15747,7 +15758,7 @@
15758
"zh-chs": "英文(澳洲)",
15759
"zh-cht": "英文(澳洲)",
15760
"xloc": [
15750
- "default.handlebars->31->1304"
15761
+ "default.handlebars->31->1306"
15762
]
15763
},
15764
{
@@ -15767,7 +15778,7 @@
15778
"zh-chs": "英文(伯利茲)",
15779
"zh-cht": "英文(伯利茲)",
15780
"xloc": [
15770
- "default.handlebars->31->1305"
15781
+ "default.handlebars->31->1307"
15782
]
15783
},
15784
{
@@ -15787,7 +15798,7 @@
15798
"zh-chs": "英文(加拿大)",
15799
"zh-cht": "英文(加拿大)",
15800
"xloc": [
15790
- "default.handlebars->31->1306"
15801
+ "default.handlebars->31->1308"
15802
]
15803
},
15804
{
@@ -15807,7 +15818,7 @@
15818
"zh-chs": "英文(爱尔兰)",
15819
"zh-cht": "英文(愛爾蘭)",
15820
"xloc": [
15810
- "default.handlebars->31->1307"
15821
+ "default.handlebars->31->1309"
15822
]
15823
},
15824
{
@@ -15827,7 +15838,7 @@
15838
"zh-chs": "英文(牙买加)",
15839
"zh-cht": "英文(牙買加)",
15840
"xloc": [
15830
- "default.handlebars->31->1308"
15841
+ "default.handlebars->31->1310"
15842
]
15843
},
15844
{
@@ -15847,7 +15858,7 @@
15858
"zh-chs": "英文(纽西兰)",
15859
"zh-cht": "英文(紐西蘭)",
15860
"xloc": [
15850
- "default.handlebars->31->1309"
15861
+ "default.handlebars->31->1311"
15862
]
15863
},
15864
{
@@ -15867,7 +15878,7 @@
15878
"zh-chs": "英文(菲律宾)",
15879
"zh-cht": "英文(菲律賓)",
15880
"xloc": [
15870
- "default.handlebars->31->1310"
15881
+ "default.handlebars->31->1312"
15882
]
15883
},
15884
{
@@ -15887,7 +15898,7 @@
15898
"zh-chs": "英语(南非)",
15899
"zh-cht": "英語(南非)",
15900
"xloc": [
15890
- "default.handlebars->31->1311"
15901
+ "default.handlebars->31->1313"
15902
]
15903
},
15904
{
@@ -15907,7 +15918,7 @@
15918
"zh-chs": "英文(特立尼达和多巴哥)",
15919
"zh-cht": "英文(特立尼達和多巴哥)",
15920
"xloc": [
15910
- "default.handlebars->31->1312"
15921
+ "default.handlebars->31->1314"
15922
]
15923
},
15924
{
@@ -15927,7 +15938,7 @@
15938
"zh-chs": "英文(英国)",
15939
"zh-cht": "英文(英國)",
15940
"xloc": [
15930
- "default.handlebars->31->1313"
15941
+ "default.handlebars->31->1315"
15942
]
15943
},
15944
{
@@ -15947,7 +15958,7 @@
15958
"zh-chs": "美国英文",
15959
"zh-cht": "美國英語",
15960
"xloc": [
15950
- "default.handlebars->31->1314"
15961
+ "default.handlebars->31->1316"
15962
]
15963
},
15964
{
@@ -15967,7 +15978,7 @@
15978
"zh-chs": "英文(津巴布韦)",
15979
"zh-cht": "英文(津巴布韋)",
15980
"xloc": [
15970
- "default.handlebars->31->1315"
15981
+ "default.handlebars->31->1317"
15982
]
15983
},
15984
{
@@ -15988,10 +15999,10 @@
15999
"zh-cht": "輸入",
16000
"xloc": [
16001
"default-mobile.handlebars->11->359",
15991
- "default.handlebars->31->1005",
15992
- "default.handlebars->31->1081",
15993
- "default.handlebars->31->1518",
15994
- "default.handlebars->31->1519",
16002
+ "default.handlebars->31->1007",
16003
+ "default.handlebars->31->1083",
16004
+ "default.handlebars->31->1520",
16005
+ "default.handlebars->31->1521",
16006
"sharing.handlebars->11->55"
16007
]
16008
},
@@ -16012,7 +16023,7 @@
16023
"zh-chs": "输入管理领域名称的逗号分隔列表。",
16024
"zh-cht": "輸入管理領域名稱的逗號分隔列表。",
16025
"xloc": [
16015
- "default.handlebars->31->2064"
16026
+ "default.handlebars->31->2066"
16027
]
16028
},
16029
{
@@ -16073,7 +16084,7 @@
16084
"zh-chs": "输入文本,然后单击确定以远程键入它。在继续操作之前,请确保将远程光标放置在正确的位置。",
16085
"zh-cht": "輸入文本,然後單擊確定以遠程鍵入它。在繼續操作之前,請確保將遠程光標放置在正確的位置。",
16086
"xloc": [
16076
- "default.handlebars->31->1030"
16087
+ "default.handlebars->31->1032"
16088
]
16089
},
16090
{
@@ -16135,7 +16146,7 @@
16146
"zh-chs": "输入支持SMS的电话号码。验证后,该号码可用于登录验证和其他通知。",
16147
"zh-cht": "輸入支持SMS的電話號碼。驗證後,該號碼可用於登入驗證和其他通知。",
16148
"xloc": [
16138
- "default.handlebars->31->1229"
16149
+ "default.handlebars->31->1231"
16150
]
16151
},
16152
{
@@ -16165,7 +16176,7 @@
16176
"de": "Fehler, Einladungscode \\\"{0}\\\" wird bereits verwendet.",
16177
"xloc": [
16178
"default-mobile.handlebars->11->634",
16168
- "default.handlebars->31->2362"
16179
+ "default.handlebars->31->2364"
16180
]
16181
},
16182
{
@@ -16175,7 +16186,7 @@
16186
"de": "Fehler, Password wurde nicht geändert.",
16187
"xloc": [
16188
"default-mobile.handlebars->11->631",
16178
- "default.handlebars->31->2359"
16189
+ "default.handlebars->31->2361"
16190
]
16191
},
16192
{
@@ -16185,7 +16196,7 @@
16196
"de": "Fehler, kann nicht zu häufig verwendeten Passwörtern geändert werden.",
16197
"xloc": [
16198
"default-mobile.handlebars->11->630",
16188
- "default.handlebars->31->2358"
16199
+ "default.handlebars->31->2360"
16200
]
16201
},
16202
{
@@ -16195,7 +16206,7 @@
16206
"de": "Fehler, Änderung des zuvor verwendeten Kennworts nicht möglich.",
16207
"xloc": [
16208
"default-mobile.handlebars->11->629",
16198
- "default.handlebars->31->2357"
16209
+ "default.handlebars->31->2359"
16210
]
16211
},
16212
{
@@ -16224,7 +16235,7 @@
16235
"nl": "Escape",
16236
"xloc": [
16237
"default-mobile.handlebars->11->360",
16227
- "default.handlebars->31->1006"
16238
+ "default.handlebars->31->1008"
16239
]
16240
},
16241
{
@@ -16244,7 +16255,7 @@
16255
"zh-chs": "世界文",
16256
"zh-cht": "世界語",
16257
"xloc": [
16247
- "default.handlebars->31->1316"
16258
+ "default.handlebars->31->1318"
16259
]
16260
},
16261
{
@@ -16264,7 +16275,7 @@
16275
"zh-chs": "爱沙尼亚文",
16276
"zh-cht": "愛沙尼亞語",
16277
"xloc": [
16267
- "default.handlebars->31->1317"
16278
+ "default.handlebars->31->1319"
16279
]
16280
},
16281
{
@@ -16284,7 +16295,7 @@
16295
"zh-chs": "事件详情",
16296
"zh-cht": "事件詳情",
16297
"xloc": [
16287
- "default.handlebars->31->1121"
16298
+ "default.handlebars->31->1123"
16299
]
16300
},
16301
{
@@ -16304,7 +16315,7 @@
16315
"zh-chs": "事件列表输出",
16316
"zh-cht": "事件列表輸出",
16317
"xloc": [
16307
- "default.handlebars->31->1975"
16318
+ "default.handlebars->31->1977"
16319
]
16320
},
16321
{
@@ -16415,9 +16426,9 @@
16426
"zh-chs": "到期时间",
16427
"zh-cht": "到期時間",
16428
"xloc": [
16418
- "default.handlebars->31->1479",
16429
+ "default.handlebars->31->1481",
16430
"default.handlebars->31->210",
16420
- "default.handlebars->31->872"
16431
+ "default.handlebars->31->874"
16432
]
16433
},
16434
{
@@ -16459,7 +16470,7 @@
16470
"zh-chs": "过期{0}",
16471
"zh-cht": "過期{0}",
16472
"xloc": [
16462
- "default.handlebars->31->1532",
16473
+ "default.handlebars->31->1534",
16474
"desktop.handlebars->3->27",
16475
"sharing.handlebars->11->95",
16476
"terminal.handlebars->3->25"
@@ -16502,7 +16513,7 @@
16513
"zh-chs": "扩充式ASCII",
16514
"zh-cht": "擴充式ASCII",
16515
"xloc": [
16505
- "default.handlebars->31->1060",
16516
+ "default.handlebars->31->1062",
16517
"sharing.handlebars->11->34",
16518
"terminal.handlebars->3->16"
16519
]
@@ -16546,7 +16557,7 @@
16557
"zh-chs": "外部",
16558
"zh-cht": "外部",
16559
"xloc": [
16549
- "default.handlebars->31->2413"
16560
+ "default.handlebars->31->2415"
16561
]
16562
},
16563
{
@@ -16586,7 +16597,7 @@
16597
"zh-chs": "FYRO马其顿语",
16598
"zh-cht": "FYRO馬其頓語",
16599
"xloc": [
16589
- "default.handlebars->31->1367"
16600
+ "default.handlebars->31->1369"
16601
]
16602
},
16603
{
@@ -16606,7 +16617,7 @@
16617
"zh-chs": "法罗语",
16618
"zh-cht": "法羅語",
16619
"xloc": [
16609
- "default.handlebars->31->1318"
16620
+ "default.handlebars->31->1320"
16621
]
16622
},
16623
{
@@ -16636,7 +16647,7 @@
16647
"de": "Fehler beim ändern der E-Mail-Adresse, wird bereits von einem anderen Konto verwendet: {0}.",
16648
"xloc": [
16649
"default-mobile.handlebars->11->625",
16639
- "default.handlebars->31->2353"
16650
+ "default.handlebars->31->2355"
16651
]
16652
},
16653
{
@@ -16662,7 +16673,7 @@
16673
"zh-chs": "本地用户拒绝后无法启动远程桌面",
16674
"zh-cht": "本地用戶拒絕後無法啟動遠程桌面",
16675
"xloc": [
16665
- "default.handlebars->31->1872"
16676
+ "default.handlebars->31->1874"
16677
]
16678
},
16679
{
@@ -16682,7 +16693,7 @@
16693
"zh-chs": "本地用户拒绝后无法启动远程文件",
16694
"zh-cht": "本地用戶拒絕後無法啟動遠程文件",
16695
"xloc": [
16685
- "default.handlebars->31->1879"
16696
+ "default.handlebars->31->1881"
16697
]
16698
},
16699
{
@@ -16703,7 +16714,7 @@
16714
"zh-cht": "無法啟動遠程終端接合{0}({1})",
16715
"xloc": [
16716
"default-mobile.handlebars->11->351",
16706
- "default.handlebars->31->985",
16717
+ "default.handlebars->31->987",
16718
"desktop.handlebars->3->8",
16719
"sharing.handlebars->11->30",
16720
"sharing.handlebars->11->8",
@@ -16727,7 +16738,7 @@
16738
"zh-chs": "波斯文(波斯文)",
16739
"zh-cht": "波斯語(波斯語)",
16740
"xloc": [
16730
- "default.handlebars->31->1319"
16741
+ "default.handlebars->31->1321"
16742
]
16743
},
16744
{
@@ -16770,7 +16781,7 @@
16781
"zh-chs": "功能",
16782
"zh-cht": "功能",
16783
"xloc": [
16773
- "default.handlebars->31->1574"
16784
+ "default.handlebars->31->1576"
16785
]
16786
},
16787
{
@@ -16790,7 +16801,7 @@
16801
"zh-chs": "斐济",
16802
"zh-cht": "斐濟",
16803
"xloc": [
16793
- "default.handlebars->31->1320"
16804
+ "default.handlebars->31->1322"
16805
]
16806
},
16807
{
@@ -16831,7 +16842,7 @@
16842
"zh-cht": "檔案編輯器",
16843
"xloc": [
16844
"default-mobile.handlebars->11->403",
16834
- "default.handlebars->31->1092",
16845
+ "default.handlebars->31->1094",
16846
"default.handlebars->31->602",
16847
"sharing.handlebars->11->66"
16848
]
@@ -16869,8 +16880,8 @@
16880
"zh-chs": "档案操作",
16881
"zh-cht": "檔案操作",
16882
"xloc": [
16872
- "default.handlebars->31->1072",
16883
"default.handlebars->31->1074",
16884
+ "default.handlebars->31->1076",
16885
"sharing.handlebars->11->46",
16886
"sharing.handlebars->11->48"
16887
]
@@ -16899,7 +16910,7 @@
16910
"en": "File Transfer",
16911
"nl": "Bestandsoverdracht",
16912
"xloc": [
16902
- "default.handlebars->31->2305"
16913
+ "default.handlebars->31->2307"
16914
]
16915
},
16916
{
@@ -16919,7 +16930,7 @@
16930
"zh-chs": "文件系统驱动",
16931
"zh-cht": "FileSystemDriver",
16932
"xloc": [
16922
- "default.handlebars->31->1039"
16933
+ "default.handlebars->31->1041"
16934
]
16935
},
16936
{
@@ -16941,11 +16952,11 @@
16952
"xloc": [
16953
"default-mobile.handlebars->11->203",
16954
"default-mobile.handlebars->11->301",
16944
- "default.handlebars->31->1664",
16945
- "default.handlebars->31->2312",
16955
+ "default.handlebars->31->1666",
16956
+ "default.handlebars->31->2314",
16957
"default.handlebars->31->315",
16947
- "default.handlebars->31->781",
16948
- "default.handlebars->31->848",
16958
+ "default.handlebars->31->783",
16959
+ "default.handlebars->31->850",
16960
"default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevFiles",
16961
"default.handlebars->contextMenu->cxfiles",
16962
"sharing.handlebars->LeftSideToolBar"
@@ -16988,9 +16999,9 @@
16999
"zh-chs": "档案通知",
17000
"zh-cht": "檔案通知",
17001
"xloc": [
16991
- "default.handlebars->31->1582",
16992
- "default.handlebars->31->2120",
16993
- "default.handlebars->31->2207",
17002
+ "default.handlebars->31->1584",
17003
+ "default.handlebars->31->2122",
17004
+ "default.handlebars->31->2209",
17005
"default.handlebars->31->700"
17006
]
17007
},
@@ -17011,9 +17022,9 @@
17022
"zh-chs": "档案提示",
17023
"zh-cht": "檔案提示",
17024
"xloc": [
17014
- "default.handlebars->31->1581",
17015
- "default.handlebars->31->2119",
17016
- "default.handlebars->31->2206",
17025
+ "default.handlebars->31->1583",
17026
+ "default.handlebars->31->2121",
17027
+ "default.handlebars->31->2208",
17028
"default.handlebars->31->699"
17029
]
17030
},
@@ -17035,7 +17046,7 @@
17046
"zh-cht": "過濾",
17047
"xloc": [
17048
"default-mobile.handlebars->container->page_content->column_l->p2->xdevicesBar->1",
17038
- "default.handlebars->31->1077",
17049
+ "default.handlebars->31->1079",
17050
"default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar",
17051
"default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->kvmListToolbar",
17052
"default.handlebars->container->column_l->p4->3->1->0->3->3",
@@ -17080,7 +17091,7 @@
17091
"zh-chs": "查找文件",
17092
"zh-cht": "查找文件",
17093
"xloc": [
17083
- "default.handlebars->31->1080",
17094
+ "default.handlebars->31->1082",
17095
"sharing.handlebars->11->54"
17096
]
17097
},
@@ -17101,7 +17112,7 @@
17112
"zh-chs": "录制会话已完成,{0}秒",
17113
"zh-cht": "錄製會話已完成,{0}秒",
17114
"xloc": [
17104
- "default.handlebars->31->1845"
17115
+ "default.handlebars->31->1847"
17116
]
17117
},
17118
{
@@ -17121,7 +17132,7 @@
17132
"zh-chs": "芬兰",
17133
"zh-cht": "芬蘭",
17134
"xloc": [
17124
- "default.handlebars->31->1321"
17135
+ "default.handlebars->31->1323"
17136
]
17137
},
17138
{
@@ -17141,8 +17152,8 @@
17152
"fr": "Pare-feu désactivé",
17153
"de": "Firewall nicht aktiv",
17154
"xloc": [
17144
- "default.handlebars->31->1777",
17145
- "default.handlebars->31->1791"
17155
+ "default.handlebars->31->1779",
17156
+ "default.handlebars->31->1793"
17157
]
17158
},
17159
{
@@ -17175,7 +17186,7 @@
17186
"nl": "Flits",
17187
"xloc": [
17188
"default-mobile.handlebars->11->305",
17178
- "default.handlebars->31->879"
17189
+ "default.handlebars->31->881"
17190
]
17191
},
17192
{
@@ -17343,8 +17354,8 @@
17354
"zh-chs": "下次登录时强制重置密码。",
17355
"zh-cht": "下次登入時強制重置密碼。",
17356
"xloc": [
17346
- "default.handlebars->31->2058",
17347
- "default.handlebars->31->2253"
17357
+ "default.handlebars->31->2060",
17358
+ "default.handlebars->31->2255"
17359
]
17360
},
17361
{
@@ -17427,7 +17438,7 @@
17438
"zh-chs": "格式化",
17439
"zh-cht": "格式化",
17440
"xloc": [
17430
- "default.handlebars->31->1966"
17441
+ "default.handlebars->31->1968"
17442
]
17443
},
17444
{
@@ -17469,8 +17480,8 @@
17480
"zh-chs": "自由",
17481
"zh-cht": "自由",
17482
"xloc": [
17472
- "default.handlebars->31->2371",
17473
- "default.handlebars->31->2373"
17483
+ "default.handlebars->31->2373",
17484
+ "default.handlebars->31->2375"
17485
]
17486
},
17487
{
@@ -17511,7 +17522,7 @@
17522
"zh-chs": "法文(比利时)",
17523
"zh-cht": "法語(比利時)",
17524
"xloc": [
17514
- "default.handlebars->31->1323"
17525
+ "default.handlebars->31->1325"
17526
]
17527
},
17528
{
@@ -17531,7 +17542,7 @@
17542
"zh-chs": "法文(加拿大)",
17543
"zh-cht": "法語(加拿大)",
17544
"xloc": [
17534
- "default.handlebars->31->1324"
17545
+ "default.handlebars->31->1326"
17546
]
17547
},
17548
{
@@ -17551,7 +17562,7 @@
17562
"zh-chs": "法文(法国)",
17563
"zh-cht": "法語(法國)",
17564
"xloc": [
17554
- "default.handlebars->31->1325"
17565
+ "default.handlebars->31->1327"
17566
]
17567
},
17568
{
@@ -17571,7 +17582,7 @@
17582
"zh-chs": "法文(卢森堡)",
17583
"zh-cht": "法語(盧森堡)",
17584
"xloc": [
17574
- "default.handlebars->31->1326"
17585
+ "default.handlebars->31->1328"
17586
]
17587
},
17588
{
@@ -17591,7 +17602,7 @@
17602
"zh-chs": "法文(摩纳哥)",
17603
"zh-cht": "法語(摩納哥)",
17604
"xloc": [
17594
- "default.handlebars->31->1327"
17605
+ "default.handlebars->31->1329"
17606
]
17607
},
17608
{
@@ -17611,7 +17622,7 @@
17622
"zh-chs": "法文(标准)",
17623
"zh-cht": "法語(標準)",
17624
"xloc": [
17614
- "default.handlebars->31->1322"
17625
+ "default.handlebars->31->1324"
17626
]
17627
},
17628
{
@@ -17631,7 +17642,7 @@
17642
"zh-chs": "法文(瑞士)",
17643
"zh-cht": "法語(瑞士)",
17644
"xloc": [
17634
- "default.handlebars->31->1328"
17645
+ "default.handlebars->31->1330"
17646
]
17647
},
17648
{
@@ -17651,7 +17662,7 @@
17662
"zh-chs": "弗里斯兰文",
17663
"zh-cht": "弗里斯蘭語",
17664
"xloc": [
17654
- "default.handlebars->31->1329"
17665
+ "default.handlebars->31->1331"
17666
]
17667
},
17668
{
@@ -17671,7 +17682,7 @@
17682
"zh-chs": "弗留利",
17683
"zh-cht": "弗留利",
17684
"xloc": [
17674
- "default.handlebars->31->1330"
17685
+ "default.handlebars->31->1332"
17686
]
17687
},
17688
{
@@ -17695,9 +17706,9 @@
17706
"default-mobile.handlebars->11->543",
17707
"default-mobile.handlebars->11->556",
17708
"default-mobile.handlebars->11->576",
17698
- "default.handlebars->31->1525",
17699
- "default.handlebars->31->1683",
17700
- "default.handlebars->31->2070"
17709
+ "default.handlebars->31->1527",
17710
+ "default.handlebars->31->1685",
17711
+ "default.handlebars->31->2072"
17712
]
17713
},
17714
{
@@ -17717,7 +17728,7 @@
17728
"zh-chs": "完整管理员(保留所有权利)",
17729
"zh-cht": "完整管理員(保留所有權利)",
17730
"xloc": [
17720
- "default.handlebars->31->1720"
17731
+ "default.handlebars->31->1722"
17732
]
17733
},
17734
{
@@ -17754,7 +17765,7 @@
17765
"zh-chs": "完整设备权限",
17766
"zh-cht": "完整裝置權限",
17767
"xloc": [
17757
- "default.handlebars->31->790"
17768
+ "default.handlebars->31->792"
17769
]
17770
},
17771
{
@@ -17774,7 +17785,7 @@
17785
"zh-chs": "全部权限",
17786
"zh-cht": "全部權限",
17787
"xloc": [
17777
- "default.handlebars->31->809"
17788
+ "default.handlebars->31->811"
17789
]
17790
},
17791
{
@@ -17837,7 +17848,7 @@
17848
"zh-chs": "完整管理员",
17849
"zh-cht": "完整管理員",
17850
"xloc": [
17840
- "default.handlebars->31->2168"
17851
+ "default.handlebars->31->2170"
17852
]
17853
},
17854
{
@@ -17857,8 +17868,8 @@
17868
"zh-chs": "全自动的",
17869
"zh-cht": "全自動的",
17870
"xloc": [
17860
- "default.handlebars->31->1599",
17861
- "default.handlebars->31->1622"
17871
+ "default.handlebars->31->1601",
17872
+ "default.handlebars->31->1624"
17873
]
17874
},
17875
{
@@ -17879,7 +17890,7 @@
17890
"zh-cht": "GPU",
17891
"xloc": [
17892
"default-mobile.handlebars->11->500",
17882
- "default.handlebars->31->1190"
17893
+ "default.handlebars->31->1192"
17894
]
17895
},
17896
{
@@ -17899,7 +17910,7 @@
17910
"zh-chs": "盖尔文(爱尔兰)",
17911
"zh-cht": "蓋爾語(愛爾蘭)",
17912
"xloc": [
17902
- "default.handlebars->31->1332"
17913
+ "default.handlebars->31->1334"
17914
]
17915
},
17916
{
@@ -17919,7 +17930,7 @@
17930
"zh-chs": "盖尔文(苏格兰文)",
17931
"zh-cht": "蓋爾語(蘇格蘭語)",
17932
"xloc": [
17922
- "default.handlebars->31->1331"
17933
+ "default.handlebars->31->1333"
17934
]
17935
},
17936
{
@@ -17939,7 +17950,7 @@
17950
"zh-chs": "加拉契文",
17951
"zh-cht": "加拉契語",
17952
"xloc": [
17942
- "default.handlebars->31->1333"
17953
+ "default.handlebars->31->1335"
17954
]
17955
},
17956
{
@@ -18065,7 +18076,7 @@
18076
"zh-chs": "格鲁吉亚文",
18077
"zh-cht": "格魯吉亞文",
18078
"xloc": [
18068
- "default.handlebars->31->1334"
18079
+ "default.handlebars->31->1336"
18080
]
18081
},
18082
{
@@ -18085,7 +18096,7 @@
18096
"zh-chs": "德文(奥地利)",
18097
"zh-cht": "德語(奧地利)",
18098
"xloc": [
18088
- "default.handlebars->31->1336"
18099
+ "default.handlebars->31->1338"
18100
]
18101
},
18102
{
@@ -18105,7 +18116,7 @@
18116
"zh-chs": "德文(德国)",
18117
"zh-cht": "德文(德國)",
18118
"xloc": [
18108
- "default.handlebars->31->1337"
18119
+ "default.handlebars->31->1339"
18120
]
18121
},
18122
{
@@ -18125,7 +18136,7 @@
18136
"zh-chs": "德文(列支敦士登)",
18137
"zh-cht": "德文(列支敦士登)",
18138
"xloc": [
18128
- "default.handlebars->31->1338"
18139
+ "default.handlebars->31->1340"
18140
]
18141
},
18142
{
@@ -18145,7 +18156,7 @@
18156
"zh-chs": "德文(卢森堡)",
18157
"zh-cht": "德語(盧森堡)",
18158
"xloc": [
18148
- "default.handlebars->31->1339"
18159
+ "default.handlebars->31->1341"
18160
]
18161
},
18162
{
@@ -18165,7 +18176,7 @@
18176
"zh-chs": "德文(标准)",
18177
"zh-cht": "德語(標準)",
18178
"xloc": [
18168
- "default.handlebars->31->1335"
18179
+ "default.handlebars->31->1337"
18180
]
18181
},
18182
{
@@ -18185,7 +18196,7 @@
18196
"zh-chs": "德文(瑞士)",
18197
"zh-cht": "德文(瑞士)",
18198
"xloc": [
18188
- "default.handlebars->31->1340"
18199
+ "default.handlebars->31->1342"
18200
]
18201
},
18202
{
@@ -18205,7 +18216,7 @@
18216
"zh-chs": "获取此设备的MQTT登录凭证。",
18217
"zh-cht": "獲取此裝置的MQTT登入憑證。",
18218
"xloc": [
18208
- "default.handlebars->31->754"
18219
+ "default.handlebars->31->756"
18220
]
18221
},
18222
{
@@ -18246,7 +18257,7 @@
18257
"zh-chs": "正在获取剪贴板内容,{0}个字节",
18258
"zh-cht": "正在獲取剪貼板內容,{0}個字節",
18259
"xloc": [
18249
- "default.handlebars->31->1859"
18260
+ "default.handlebars->31->1861"
18261
]
18262
},
18263
{
@@ -18308,7 +18319,7 @@
18319
"zh-chs": "好",
18320
"zh-cht": "好",
18321
"xloc": [
18311
- "default.handlebars->31->1521"
18322
+ "default.handlebars->31->1523"
18323
]
18324
},
18325
{
@@ -18353,8 +18364,8 @@
18364
"zh-chs": "Google云端硬盘备份",
18365
"zh-cht": "Google雲端硬盤備份",
18366
"xloc": [
18356
- "default.handlebars->31->1542",
18357
- "default.handlebars->31->1545",
18367
+ "default.handlebars->31->1544",
18368
+ "default.handlebars->31->1547",
18369
"default.handlebars->31->232"
18370
]
18371
},
@@ -18375,7 +18386,7 @@
18386
"zh-chs": "Google云端硬盘控制台",
18387
"zh-cht": "Google雲端硬盤控制台",
18388
"xloc": [
18378
- "default.handlebars->31->1539"
18389
+ "default.handlebars->31->1541"
18390
]
18391
},
18392
{
@@ -18415,7 +18426,7 @@
18426
"zh-chs": "Google云端硬盘备份当前处于活动状态。",
18427
"zh-cht": "Google雲端硬盤備份當前處於活動狀態。",
18428
"xloc": [
18418
- "default.handlebars->31->1543"
18429
+ "default.handlebars->31->1545"
18430
]
18431
},
18432
{
@@ -18443,7 +18454,7 @@
18454
"zh-chs": "希腊文",
18455
"zh-cht": "希臘文",
18456
"xloc": [
18446
- "default.handlebars->31->1341"
18457
+ "default.handlebars->31->1343"
18458
]
18459
},
18460
{
@@ -18485,8 +18496,8 @@
18496
"zh-chs": "集体指令",
18497
"zh-cht": "集體指令",
18498
"xloc": [
18488
- "default.handlebars->31->2014",
18489
- "default.handlebars->31->2093",
18499
+ "default.handlebars->31->2016",
18500
+ "default.handlebars->31->2095",
18501
"default.handlebars->31->526",
18502
"default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar",
18503
"default.handlebars->container->column_l->p4->3->1->0->3->3",
@@ -18510,7 +18521,7 @@
18521
"zh-chs": "通过...分组",
18522
"zh-cht": "通過...分群",
18523
"xloc": [
18513
- "default.handlebars->31->1962"
18524
+ "default.handlebars->31->1964"
18525
]
18526
},
18527
{
@@ -18530,7 +18541,7 @@
18541
"zh-chs": "组标识符",
18542
"zh-cht": "群標識符",
18543
"xloc": [
18533
- "default.handlebars->31->2110"
18544
+ "default.handlebars->31->2112"
18545
]
18546
},
This file is too large to show in full.
views/default.handlebars
+18
-1
@@ -2480,6 +2480,12 @@
2480
if (node != null) { rdpurl += '&name=' + encodeURIComponentEx(node.name); }
2481
if (message.localRelay) { rdpurl += '&local=1'; }
2482
safeNewWindow(rdpurl, 'mcmstsc/' + message.nodeid);
2483
+ } else if (message.tag == 'ssh') {
2484
+ var sshurl = window.location.origin + domainUrl + 'ssh.html?ws=' + message.cookie + (urlargs.key?('&key=' + urlargs.key):'');
2485
+ var node = getNodeFromId(message.nodeid);
2486
+ if (node != null) { sshurl += '&name=' + encodeURIComponentEx(node.name); }
2487
+ if (message.localRelay) { sshurl += '&local=1'; }
2488
+ safeNewWindow(sshurl, 'mcssh/' + message.nodeid);
2489
}
2490
break;
2491
}
@@ -6442,7 +6448,7 @@
6448
6449
// noVNC link
6450
if ((((connectivity & 1) != 0) || (node.mtype == 3)) && (node.agent) && ((meshrights & 8) != 0) && ((features & 0x20000000) == 0) && (node.agent.id != 14)) {
6445
- x += '<a href=# cmenu=rfbPortContextMenu id=rfbLink onclick=p10rfb("' + node._id + '") title="' + "Launch noVNC session to this device" + '.">' + "noVNC" + '</a> ';
6451
+ x += '<a href=# cmenu=rfbPortContextMenu id=rfbLink onclick=p10rfb("' + node._id + '") title="' + "Launch web-based VNC session to this device" + '.">' + "Web-VNC" + '</a> ';
6452
}
6453
6454
// MSTSC.js link
@@ -6450,6 +6456,11 @@
6456
x += '<a href=# cmenu=altPortContextMenu id=mstscLink onclick=p10mstsc("' + node._id + '") title="' + "Launch web-based RDP session to this device" + '.">' + "Web-RDP" + '</a> ';
6457
}
6458
6459
+ // SSH link
6460
+ if ((((connectivity & 1) != 0) || (node.mtype == 3)) && (node.agent) && ((meshrights & 8) != 0) && ((features & 0x40000000) == 0) && (node.agent.id != 14)) {
6461
+ x += '<a href=# cmenu=altPortContextMenu id=sshLink onclick=p10ssh("' + node._id + '") title="' + "Launch web-based SSH session to this device" + '.">' + "Web-SSH" + '</a> ';
6462
+ }
6463
+
6464
// MQTT options
6465
if ((meshrights == 0xFFFFFFFF) && (features & 0x00400000)) { x += '<a href=# onclick=p10showMqttLoginDialog("' + node._id + '") title="' + "Get MQTT login credentials for this device." + '">' + "MQTT Login" + '</a> '; }
6466
x += '</div><br>'
@@ -7224,6 +7235,12 @@
7235
meshserver.send({ action: 'getcookie', nodeid: nodeid, tcpport: port, tag: 'mstsc' });
7236
}
7237
7238
+ function p10ssh(nodeid, port) {
7239
+ var node = getNodeFromId(nodeid);
7240
+ if (port == null) { if (node.sshport != null) { port = node.sshport; } else { port = 22; } }
7241
+ meshserver.send({ action: 'getcookie', nodeid: nodeid, tcpport: port, tag: 'ssh' });
7242
+ }
7243
+
7244
// Show current location
7245
var d2map = null;
7246
function p10showNodeLocationDialog() {
views/ssh.handlebars
new
+212
@@ -0,0 +1,212 @@
1
+<!DOCTYPE html>
2
+<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
3
+<head lang="en">
4
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
5
+ <meta content="text/html;charset=utf-8" http-equiv="Content-Type" />
6
+ <meta name="viewport" content="user-scalable=1.0,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0" />
7
+ <meta name="apple-mobile-web-app-capable" content="yes" />
8
+ <meta name="format-detection" content="telephone=no" />
9
+ <meta name="robots" content="noindex,nofollow">
10
+ <link type="text/css" href="styles/style.css" media="screen" rel="stylesheet" title="CSS" />
11
+ <link type="text/css" href="styles/xterm.css" media="screen" rel="stylesheet" title="CSS" />
12
+ <link rel="apple-touch-icon" href="/favicon-303x303.png" />
13
+ <script type="text/javascript" src="scripts/common-0.0.1{{min}}.js"></script>
14
+ <script type="text/javascript" src="scripts/meshcentral{{min}}.js"></script>
15
+ <script type="text/javascript" src="scripts/agent-redir-ws-0.1.1{{min}}.js"></script>
16
+ <script type="text/javascript" src="scripts/agent-redir-rtc-0.1.0{{min}}.js"></script>
17
+ <script type="text/javascript" src="scripts/xterm-min.js"></script>
18
+ <script type="text/javascript" src="scripts/xterm-addon-fit-min.js"></script>
19
+ <title>SSH</title>
20
+</head>
21
+<body style="overflow:hidden;background-color:black" onload="start()">
22
+ <div id=p11 class="noselect" style="overflow:hidden">
23
+ <div id=deskarea0 style="position:relative">
24
+ <div id=deskarea1 class="areaHead">
25
+ <div class="toright2">
26
+ </div>
27
+ <div>
28
+ <input id="ConnectButton" style="display:none" type=button value="Connect" onclick="connectButton()">
29
+ <input id="DisconnectButton" type=button value="Disconnect" onclick="connectButton()">
30
+ <span><b>{{{name}}}</b></span> - <span id="termstatus"></span>
31
+ </div>
32
+ </div>
33
+ <div id=deskarea2 style="">
34
+ <div class="areaProgress"><div id="progressbar" style=""></div></div>
35
+ </div>
36
+ <div id=deskarea3x style="max-height:calc(100vh - 54px);height:calc(100vh - 54px);">
37
+ <div id="bigok" style="display:none;left:calc((100vh / 2))"><b>✓</b></div>
38
+ <div id="bigfail" style="display:none;left:calc((100vh / 2))"><b>✗</b></div>
39
+ <div id="metadatadiv" style="padding:20px;color:lightgrey;text-align:left;display:none"></div>
40
+ <div id=terminal style="max-height:calc(100vh - 54px);height:calc(100vh - 54px);"></div>
41
+ <div id=TermConsoleMsg style="display:none;cursor:pointer;z-index:10;position:absolute;left:30px;top:17px;color:yellow;background-color:rgba(0,0,0,0.6);padding:10px;border-radius:5px" onclick=clearConsoleMsg()></div>
42
+ </div>
43
+ <div id=deskarea4 class="areaHead">
44
+ <div class="toright2">
45
+ </div>
46
+ <div style="height:21px;max-height:21px">
47
+ </div>
48
+ </div>
49
+ </div>
50
+ <div id=dialog class="noselect" style="display:none">
51
+ <div id=dialogHeader>
52
+ <div tabindex=0 id=id_dialogclose onclick=setDialogMode() onkeypress="if (event.key == 'Enter') setDialogMode()">✖</div>
53
+ <div id=id_dialogtitle></div>
54
+ </div>
55
+ <div id=dialogBody>
56
+ <div id=dialog1>
57
+ <div id=id_dialogMessage style=""></div>
58
+ </div>
59
+ <div id=dialog2 style="">
60
+ <div id=id_dialogOptions></div>
61
+ </div>
62
+ </div>
63
+ <div id="idx_dlgButtonBar">
64
+ <input id="idx_dlgCancelButton" type="button" value="Cancel" style="" onclick="dialogclose(0)">
65
+ <input id="idx_dlgOkButton" type="button" value="OK" style="" onclick="dialogclose(1)">
66
+ <div><input id="idx_dlgDeleteButton" type="button" value="Delete" style="display:none" onclick="dialogclose(2)"></div>
67
+ </div>
68
+ </div>
69
+ </div>
70
+ <script>
71
+ var term = null;
72
+ var termfit = null;
73
+ var resizeTimer = null;
74
+ var urlargs = parseUriArgs();
75
+ if (urlargs.key && (isAlphaNumeric(urlargs.key) == false)) { delete urlargs.key; }
76
+ var cookie = '{{{cookie}}}';
77
+ var domainurl = '{{{domainurl}}}';
78
+ var name = decodeURIComponent('{{{name}}}');
79
+ if (name != '') { document.title = name + ' - ' + document.title; }
80
+ var StatusStrs = ["Disconnected", "Connecting...", "Setup...", "Connected"];
81
+ var state = 0;
82
+ var socket = null;
83
+
84
+ function start() {
85
+ // When the user resizes the window, re-fit
86
+ window.onresize = function () { if (termfit != null) { termfit.fit(); } }
87
+
88
+ // Update the terminal status and buttons
89
+ updateState();
90
+
91
+ // Setup the terminal with auto-fit
92
+ if (term != null) { term.dispose(); }
93
+ if (urlargs.fixsize != 1) { termfit = new FitAddon.FitAddon(); }
94
+ term = new Terminal();
95
+ if (termfit) { term.loadAddon(termfit); }
96
+ term.open(Q('terminal'));
97
+ term.onData(function (data) {
98
+ //if (tunnel != null) { tunnel.sendText(data); }
99
+ });
100
+ if (termfit) { termfit.fit(); }
101
+ term.onResize(function (size) {
102
+ // Despam resize
103
+ if (resizeTimer) clearTimeout(resizeTimer);
104
+ resizeTimer = setTimeout(sendResize, 200);
105
+ });
106
+ //term.setOption('convertEol', true); // Consider \n to be \r\n, this should be taken care of by "termios"
107
+ }
108
+
109
+ // Send the new terminal size to the agent
110
+ function sendResize() {
111
+ resizeTimer = null;
112
+ //if ((term != null) && (tunnel != null)) { tunnel.sendCtrlMsg(JSON.stringify({ ctrlChannel: '102938', type: 'termsize', cols: term.cols, rows: term.rows })); }
113
+ }
114
+
115
+ function connectButton() {
116
+ if (state == 0) {
117
+ state = 1;
118
+ var url = window.location.protocol.replace('http', 'ws') + '//' + window.location.host + domainurl + 'ssh/relay.ashx?auth=' + cookie + (urlargs.key ? ('&key=' + urlargs.key) : '');
119
+ console.log('Connecting to ' + url);
120
+ socket = new WebSocket(url);
121
+ socket.onopen = function (e) { console.log('open'); state = 2; updateState(); }
122
+ socket.onmessage = function (e) { console.log('message'); }
123
+ socket.onclose = function (e) { console.log('close'); disconnect(); }
124
+ socket.onerror = function (e) { console.log('error'); disconnect(); }
125
+ updateState();
126
+ } else {
127
+ disconnect();
128
+ }
129
+ }
130
+
131
+ function disconnect() {
132
+ console.log('disconnect');
133
+ if (socket != null) { socket.close(); socket = null; }
134
+ state = 0;
135
+ updateState();
136
+ }
137
+
138
+ function updateState() {
139
+ QV('ConnectButton', state == 0);
140
+ QV('DisconnectButton', state != 0);
141
+ QH('termstatus', StatusStrs[state]);
142
+ }
143
+
144
+
145
+ //
146
+ // POPUP DIALOG
147
+ //
148
+
149
+ // null = Hidden, 1 = Generic Message
150
+ var xxdialogMode;
151
+ var xxdialogFunc;
152
+ var xxdialogButtons;
153
+ var xxdialogTag;
154
+ var xxcurrentView = -1;
155
+
156
+ // Display a dialog box
157
+ // Parameters: Dialog Mode (0 = none), Dialog Title, Buttons (1 = OK, 2 = Cancel, 3 = OK & Cancel), Call back function(0 = Cancel, 1 = OK), Dialog Content (Mode 2 only)
158
+ function setDialogMode(x, y, b, f, c, tag) {
159
+ xxdialogMode = x;
160
+ xxdialogFunc = f;
161
+ xxdialogButtons = b;
162
+ xxdialogTag = tag;
163
+ QE('idx_dlgOkButton', true);
164
+ QV('idx_dlgOkButton', b & 1);
165
+ QV('idx_dlgCancelButton', b & 2);
166
+ QV('id_dialogclose', (b & 2) || (b & 8));
167
+ QV('idx_dlgDeleteButton', b & 4);
168
+ QV('idx_dlgButtonBar', b & 7);
169
+ if (y) QH('id_dialogtitle', y);
170
+ for (var i = 1; i < 3; i++) { QV('dialog' + i, i == x); } // Edit this line when more dialogs are added
171
+ QV('dialog', x);
172
+ if (c) { if (x == 2) { QH('id_dialogOptions', c); } else { QH('id_dialogMessage', c); } }
173
+ }
174
+
175
+ // Called when the dialog box must be closed
176
+ function dialogclose(x) {
177
+ var f = xxdialogFunc, b = xxdialogButtons, t = xxdialogTag;
178
+ setDialogMode();
179
+ if (((b & 8) || x) && f) f(x, t);
180
+ }
181
+
182
+ function messagebox(t, m) { setSessionActivity(); QH('id_dialogMessage', m); setDialogMode(1, t, 1); }
183
+ function statusbox(t, m) { setSessionActivity(); QH('id_dialogMessage', m); setDialogMode(1, t); }
184
+ function haltEvent(e) { if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false; }
185
+ function pad2(num) { var s = '00' + num; return s.substr(s.length - 2); }
186
+ function format(format) { var args = Array.prototype.slice.call(arguments, 1); return format.replace(/{(\d+)}/g, function (match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); };
187
+ function isAlphaNumeric(str) { return (str.match(/^[A-Za-z0-9]+$/) != null); };
188
+ function isSafeString(str) { return ((typeof str == 'string') && (str.indexOf('<') == -1) && (str.indexOf('>') == -1) && (str.indexOf('&') == -1) && (str.indexOf('"') == -1) && (str.indexOf('\'') == -1) && (str.indexOf('+') == -1) && (str.indexOf('(') == -1) && (str.indexOf(')') == -1) && (str.indexOf('#') == -1) && (str.indexOf('%') == -1) && (str.indexOf(':') == -1)) };
189
+
190
+ // Parse URL arguments, only keep safe values
191
+ function parseUriArgs() {
192
+ var href = window.document.location.href;
193
+ if (href.endsWith('#')) { href = href.substring(0, href.length - 1); }
194
+ var name, r = {}, parsedUri = href.split(/[\?&|\=]/);
195
+ parsedUri.splice(0, 1);
196
+ for (x in parsedUri) {
197
+ switch (x % 2) {
198
+ case 0: { name = decodeURIComponent(parsedUri[x]); break; }
199
+ case 1: {
200
+ r[name] = decodeURIComponent(parsedUri[x]);
201
+ if (!isSafeString(r[name])) { delete r[name]; } else { var x = parseInt(r[name]); if (x == r[name]) { r[name] = x; } }
202
+ break;
203
+ } default: { break; }
204
+ }
205
+ }
206
+ return r;
207
+ }
208
+
209
+ start();
210
+ </script>
211
+</body>
212
+</html>
\ No newline at end of file
webserver.js
+24
-8
@@ -1801,8 +1801,8 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1801
render(req, res, getRenderPage('invite', req, domain), getRenderArgs({ messageid: 100 }, req, domain)); // Bad invitation code
1802
}
1803
1804
- // Called to render the MSTSC (RDP) web page
1805
- function handleMSTSCRequest(req, res) {
1804
+ // Called to render the MSTSC (RDP) or SSH web page
1805
+ function handleMSTSCRequest(req, res, page) {
1806
const domain = getDomain(req);
1807
if (domain == null) { parent.debug('web', 'handleMSTSCRequest: failed checks.'); res.sendStatus(404); return; }
1808
if ((domain.loginkey != null) && (domain.loginkey.indexOf(req.query.key) == -1)) { res.sendStatus(404); return; } // Check 3FA URL key
@@ -1817,7 +1817,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1817
// This is a query with a websocket relay cookie, check that the cookie is valid and use it.
1818
var rcookie = parent.decodeCookie(req.query.ws, parent.loginCookieEncryptionKey, 60); // Cookie with 1 hour timeout
1819
if ((rcookie != null) && (rcookie.domainid == domain.id) && (rcookie.nodeid != null) && (rcookie.tcpport != null)) {
1820
- render(req, res, getRenderPage('mstsc', req, domain), getRenderArgs({ cookie: req.query.ws, name: encodeURIComponent(req.query.name).replace(/'/g, '%27') }, req, domain)); return;
1820
+ render(req, res, getRenderPage(page, req, domain), getRenderArgs({ cookie: req.query.ws, name: encodeURIComponent(req.query.name).replace(/'/g, '%27') }, req, domain)); return;
1821
}
1822
}
1823
@@ -1852,7 +1852,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1852
}
1853
1854
// If there is no nodeid, exit now
1855
- if (req.query.node == null) { render(req, res, getRenderPage('mstsc', req, domain), getRenderArgs({ cookie: '', name: '' }, req, domain)); return; }
1855
+ if (req.query.node == null) { render(req, res, getRenderPage(page, req, domain), getRenderArgs({ cookie: '', name: '' }, req, domain)); return; }
1856
1857
// Fetch the node from the database
1858
obj.db.Get(req.query.node, function (err, nodes) {
@@ -1864,15 +1864,21 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1864
1865
// Figure out the target port
1866
var port = 3389;
1867
- if (typeof node.rdpport == 'number') { port = node.rdpport; }
1867
+ if (page == 'ssh') {
1868
+ // SSH port
1869
+ port = 22;
1870
+ } else {
1871
+ // RDP port
1872
+ if (typeof node.rdpport == 'number') { port = node.rdpport; }
1873
+ }
1874
if (req.query.port != null) { var qport = 0; try { qport = parseInt(req.query.port); } catch (ex) { } if ((typeof qport == 'number') && (qport > 0) && (qport < 65536)) { port = qport; } }
1875
1876
// Generate a cookie and respond
1877
var cookie = parent.encodeCookie({ userid: user._id, domainid: user.domain, nodeid: node._id, tcpport: port }, parent.loginCookieEncryptionKey);
1872
- render(req, res, getRenderPage('mstsc', req, domain), getRenderArgs({ cookie: cookie, name: encodeURIComponent(node.name).replace(/'/g, '%27') }, req, domain));
1878
+ render(req, res, getRenderPage(page, req, domain), getRenderArgs({ cookie: cookie, name: encodeURIComponent(node.name).replace(/'/g, '%27') }, req, domain));
1879
});
1880
}
1875
-
1881
+
1882
// Called to handle push-only requests
1883
function handleFirebasePushOnlyRelayRequest(req, res) {
1884
parent.debug('email', 'handleFirebasePushOnlyRelayRequest');
@@ -5561,7 +5567,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
5567
5568
// Setup MSTSC.js if needed
5569
if (domain.mstsc === true) {
5564
- obj.app.get(url + 'mstsc.html', handleMSTSCRequest);
5570
+ obj.app.get(url + 'mstsc.html', function (req, res) { handleMSTSCRequest(req, res, 'mstsc'); });
5571
obj.app.ws(url + 'mstsc/relay.ashx', function (ws, req) {
5572
const domain = getDomain(req);
5573
if (domain == null) { parent.debug('web', 'mstsc: failed checks.'); try { ws.close(); } catch (e) { } return; }
@@ -5569,6 +5575,16 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
5575
});
5576
}
5577
5578
+ // Setup SSH if needed
5579
+ if (domain.mstsc === true) {
5580
+ obj.app.get(url + 'ssh.html', function (req, res) { handleMSTSCRequest(req, res, 'ssh'); });
5581
+ obj.app.ws(url + 'ssh/relay.ashx', function (ws, req) {
5582
+ const domain = getDomain(req);
5583
+ if (domain == null) { parent.debug('web', 'ssh: failed checks.'); try { ws.close(); } catch (e) { } return; }
5584
+ require('./ssh.js').CreateSshRelay(obj, obj.db, ws, req, obj.args, domain);
5585
+ });
5586
+ }
5587
+
5588
// Setup firebase push only server
5589
if ((obj.parent.firebase != null) && (obj.parent.config.firebase)) {
5590
if (obj.parent.config.firebase.pushrelayserver) { parent.debug('email', 'Firebase-pushrelay-handler'); obj.app.post(url + 'firebaserelay.aspx', handleFirebasePushOnlyRelayRequest); }