diff --git a/amt-desktop-0.0.2.js b/amt-desktop-0.0.2.js index bed30d5..7af45dc 100644 --- a/amt-desktop-0.0.2.js +++ b/amt-desktop-0.0.2.js @@ -190,6 +190,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) { _SendRefresh(); if (obj.onScreenSizeChange != null) { obj.onScreenSizeChange(obj, obj.ScreenWidth, obj.ScreenHeight); } + if (obj.parent) { obj.parent.disconnectCode = 50001; } // Everything looks good, a disconnection here would be Intel AMT initiated. } else if (obj.state == 4) { switch (obj.acc[0]) { diff --git a/amt-redir-node-0.1.0.js b/amt-redir-node-0.1.0.js index a3c1532..589b101 100644 --- a/amt-redir-node-0.1.0.js +++ b/amt-redir-node-0.1.0.js @@ -28,7 +28,7 @@ var CreateAmtRedirect = function (module) { obj.authuri = '/RedirectionService'; obj.digestRealmMatch = null; obj.onStateChanged = null; - obj.disconnectCode = 0; + obj.disconnectCode = 0; // 2 = BUSY, 3 = UNSUPPORTED, 256 = ERROR, 50000 = RLE16 fail, 50001 = AmtDisconnect. function ToIntStr(v) { return String.fromCharCode((v & 0xFF), ((v >> 8) & 0xFF), ((v >> 16) & 0xFF), ((v >> 24) & 0xFF)); } function ToShortStr(v) { return String.fromCharCode((v & 0xFF), ((v >> 8) & 0xFF)); } @@ -47,6 +47,7 @@ var CreateAmtRedirect = function (module) { obj.xtlsoptions = tlsoptions; obj.xtlsFingerprint = tlsFingerprint; obj.connectstate = 0; + obj.disconnectCode = 0; if (obj.xtlsoptions && obj.xtlsoptions.meshServerConnect) { // Use the websocket wrapper to connect to MeshServer server diff --git a/index.html b/index.html index 3368361..9a7f147 100644 --- a/index.html +++ b/index.html @@ -1028,7 +1028,7 @@
-   +    Disconnected.
@@ -2908,6 +2908,7 @@ terminal.Stop(); // ###END###{Terminal} // ###BEGIN###{Desktop} + desktop.disconnectCode = 0; desktop.Stop(); // ###END###{Desktop} } @@ -8213,6 +8214,8 @@ */ // ###END###{DesktopInband} + function connectDesktopButton(e) { desktop.disconnectCode = 0; connectDesktop(e); } + var connectDesktopConsent = false; function connectDesktop(skipConsent) { if (!desktop || xxdialogMode) return; @@ -8394,6 +8397,7 @@ // ###END###{Desktop-Multi} function onDesktopStateChange(desktop, state) { + var reconnect = false; //console.log("onDesktopStateChange: " + state); idx_connectbutton1.value = (state == 0) ? "Connect" : "Disconnect"; var input = ((state == 3) && !urlvars['kvmviewonly']); @@ -8424,6 +8428,8 @@ messagebox("Remote Desktop", "The device indicated that this type of connection of not supported."); } else if (desktop.disconnectCode == 50000) { // KVM-Disconnect messagebox("Remote Desktop", "KVM disconnection, they may indicate that Intel AMT is unable to capture the display (Try RLE8 encoding), or unsupported GPU."); + } else if (desktop.disconnectCode == 50001) { // Intel AMT disconnect, try to connect again + reconnect = true; } break; case 3: @@ -8440,6 +8446,7 @@ // ###END###{Mode-NodeWebkit} center(); updateDesktopState(); + if (reconnect) { setTimeout(connectDesktop, 200); } } // Update remote desktop status @@ -8488,7 +8495,7 @@ if (desktopsettings.showfocus == false) { desktop.m.focusmode = 0; idx_deskFocusBtn.value = "All Focus"; } // ###END###{DesktopFocus} desktop.m.frameRateDelay = (desktopsettings.limitFrameRate == true)?200:0; - if (desktop.State != 0) { desktop.Stop(); setTimeout(connectDesktop, 50); } + if (desktop.State != 0) { desktop.disconnectCode = 0; desktop.Stop(); setTimeout(connectDesktop, 50); } } function applyDesktopSettings() { @@ -13426,6 +13433,7 @@ // ###END###{Mode-NodeWebkit} // ###BEGIN###{Desktop} + window['connectDesktopButton'] = connectDesktopButton; window['connectDesktop'] = connectDesktop; window['deskToggleFull'] = deskToggleFull; window['showDesktopSettings'] = showDesktopSettings;