1
0
mirror of https://github.com/Ylianst/MeshCentralRouter synced 2025-12-06 00:13:33 +00:00

add chat button to remote desktop view (#98)

Signed-off-by: Simon Smith <simonsmith5521@gmail.com>
This commit is contained in:
Simon Smith
2024-08-05 12:42:38 +01:00
committed by GitHub
parent b2e93b11cf
commit c3e72182bb
4 changed files with 199 additions and 113 deletions

View File

@@ -51,6 +51,11 @@ namespace MeshCentralRouter
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
this.updateTimer = new System.Windows.Forms.Timer(this.components);
this.topPanel = new System.Windows.Forms.Panel();
this.chatButton = new System.Windows.Forms.Button();
this.consentContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
this.askConsentBarToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.askConsentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.privacyBarToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openRemoteFilesButton = new System.Windows.Forms.Button();
this.extraButtonsPanel = new System.Windows.Forms.Panel();
this.splitButton = new System.Windows.Forms.Button();
@@ -61,15 +66,11 @@ namespace MeshCentralRouter
this.zoomButton = new System.Windows.Forms.Button();
this.cadButton = new System.Windows.Forms.Button();
this.connectButton = new System.Windows.Forms.Button();
this.consentContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
this.askConsentBarToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.askConsentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.privacyBarToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.consoleMessage = new System.Windows.Forms.Label();
this.consoleTimer = new System.Windows.Forms.Timer(this.components);
this.mainToolTip = new System.Windows.Forms.ToolTip(this.components);
this.resizeKvmControl = new MeshCentralRouter.KVMResizeControl();
this.displaySelectorImageList = new System.Windows.Forms.ImageList(this.components);
this.resizeKvmControl = new MeshCentralRouter.KVMResizeControl();
this.mainStatusStrip.SuspendLayout();
this.topPanel.SuspendLayout();
this.consentContextMenuStrip.SuspendLayout();
@@ -105,6 +106,7 @@ namespace MeshCentralRouter
// topPanel
//
this.topPanel.BackColor = System.Drawing.SystemColors.Control;
this.topPanel.Controls.Add(this.chatButton);
this.topPanel.Controls.Add(this.openRemoteFilesButton);
this.topPanel.Controls.Add(this.extraButtonsPanel);
this.topPanel.Controls.Add(this.splitButton);
@@ -118,6 +120,44 @@ namespace MeshCentralRouter
resources.ApplyResources(this.topPanel, "topPanel");
this.topPanel.Name = "topPanel";
//
// chatButton
//
this.chatButton.ContextMenuStrip = this.consentContextMenuStrip;
resources.ApplyResources(this.chatButton, "chatButton");
this.chatButton.Name = "chatButton";
this.chatButton.TabStop = false;
this.chatButton.UseVisualStyleBackColor = true;
this.chatButton.Click += new System.EventHandler(this.chatButton_Click);
//
// consentContextMenuStrip
//
this.consentContextMenuStrip.ImageScalingSize = new System.Drawing.Size(20, 20);
this.consentContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.askConsentBarToolStripMenuItem,
this.askConsentToolStripMenuItem,
this.privacyBarToolStripMenuItem});
this.consentContextMenuStrip.Name = "consentContextMenuStrip";
resources.ApplyResources(this.consentContextMenuStrip, "consentContextMenuStrip");
this.consentContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.consentContextMenuStrip_Opening);
//
// askConsentBarToolStripMenuItem
//
this.askConsentBarToolStripMenuItem.Name = "askConsentBarToolStripMenuItem";
resources.ApplyResources(this.askConsentBarToolStripMenuItem, "askConsentBarToolStripMenuItem");
this.askConsentBarToolStripMenuItem.Click += new System.EventHandler(this.askConsentBarToolStripMenuItem_Click);
//
// askConsentToolStripMenuItem
//
this.askConsentToolStripMenuItem.Name = "askConsentToolStripMenuItem";
resources.ApplyResources(this.askConsentToolStripMenuItem, "askConsentToolStripMenuItem");
this.askConsentToolStripMenuItem.Click += new System.EventHandler(this.askConsentToolStripMenuItem_Click);
//
// privacyBarToolStripMenuItem
//
this.privacyBarToolStripMenuItem.Name = "privacyBarToolStripMenuItem";
resources.ApplyResources(this.privacyBarToolStripMenuItem, "privacyBarToolStripMenuItem");
this.privacyBarToolStripMenuItem.Click += new System.EventHandler(this.privacyBarToolStripMenuItem_Click);
//
// openRemoteFilesButton
//
resources.ApplyResources(this.openRemoteFilesButton, "openRemoteFilesButton");
@@ -200,35 +240,6 @@ namespace MeshCentralRouter
this.connectButton.UseVisualStyleBackColor = true;
this.connectButton.Click += new System.EventHandler(this.MenuItemDisconnect_Click);
//
// consentContextMenuStrip
//
this.consentContextMenuStrip.ImageScalingSize = new System.Drawing.Size(20, 20);
this.consentContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.askConsentBarToolStripMenuItem,
this.askConsentToolStripMenuItem,
this.privacyBarToolStripMenuItem});
this.consentContextMenuStrip.Name = "consentContextMenuStrip";
resources.ApplyResources(this.consentContextMenuStrip, "consentContextMenuStrip");
this.consentContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.consentContextMenuStrip_Opening);
//
// askConsentBarToolStripMenuItem
//
this.askConsentBarToolStripMenuItem.Name = "askConsentBarToolStripMenuItem";
resources.ApplyResources(this.askConsentBarToolStripMenuItem, "askConsentBarToolStripMenuItem");
this.askConsentBarToolStripMenuItem.Click += new System.EventHandler(this.askConsentBarToolStripMenuItem_Click);
//
// askConsentToolStripMenuItem
//
this.askConsentToolStripMenuItem.Name = "askConsentToolStripMenuItem";
resources.ApplyResources(this.askConsentToolStripMenuItem, "askConsentToolStripMenuItem");
this.askConsentToolStripMenuItem.Click += new System.EventHandler(this.askConsentToolStripMenuItem_Click);
//
// privacyBarToolStripMenuItem
//
this.privacyBarToolStripMenuItem.Name = "privacyBarToolStripMenuItem";
resources.ApplyResources(this.privacyBarToolStripMenuItem, "privacyBarToolStripMenuItem");
this.privacyBarToolStripMenuItem.Click += new System.EventHandler(this.privacyBarToolStripMenuItem_Click);
//
// consoleMessage
//
resources.ApplyResources(this.consoleMessage, "consoleMessage");
@@ -240,6 +251,15 @@ namespace MeshCentralRouter
this.consoleTimer.Interval = 5000;
this.consoleTimer.Tick += new System.EventHandler(this.consoleTimer_Tick);
//
// displaySelectorImageList
//
this.displaySelectorImageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("displaySelectorImageList.ImageStream")));
this.displaySelectorImageList.TransparentColor = System.Drawing.Color.Transparent;
this.displaySelectorImageList.Images.SetKeyName(0, "icon-monitor1.png");
this.displaySelectorImageList.Images.SetKeyName(1, "icon-monitor1b.png");
this.displaySelectorImageList.Images.SetKeyName(2, "icon-monitor2.png");
this.displaySelectorImageList.Images.SetKeyName(3, "icon-monitor2b.png");
//
// resizeKvmControl
//
this.resizeKvmControl.BackColor = System.Drawing.Color.Gray;
@@ -251,15 +271,6 @@ namespace MeshCentralRouter
this.resizeKvmControl.Enter += new System.EventHandler(this.resizeKvmControl_Enter);
this.resizeKvmControl.Leave += new System.EventHandler(this.resizeKvmControl_Leave);
//
// displaySelectorImageList
//
this.displaySelectorImageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("displaySelectorImageList.ImageStream")));
this.displaySelectorImageList.TransparentColor = System.Drawing.Color.Transparent;
this.displaySelectorImageList.Images.SetKeyName(0, "icon-monitor1.png");
this.displaySelectorImageList.Images.SetKeyName(1, "icon-monitor1b.png");
this.displaySelectorImageList.Images.SetKeyName(2, "icon-monitor2.png");
this.displaySelectorImageList.Images.SetKeyName(3, "icon-monitor2b.png");
//
// KVMViewer
//
resources.ApplyResources(this, "$this");
@@ -309,6 +320,7 @@ namespace MeshCentralRouter
private Panel extraButtonsPanel;
private ImageList displaySelectorImageList;
private Button openRemoteFilesButton;
private Button chatButton;
}
}

View File

@@ -21,6 +21,8 @@ using System.Collections.Generic;
using System.Security.Cryptography;
using System.Web.Script.Serialization;
using System.Threading;
using System.Diagnostics;
using System.IO;
namespace MeshCentralRouter
{
@@ -771,5 +773,43 @@ namespace MeshCentralRouter
node.fileViewer.Focus();
}
}
private void chatButton_Click(object sender, EventArgs e)
{
if (kvmControl == null) return;
server.sendCommand("{\"action\":\"meshmessenger\",\"nodeid\":\"" + node.nodeid + "\"}");
string url = "https://" + server.serverinfo["name"];
if (server.serverinfo.TryGetValue("port", out var value1) && value1 is int portNumber && portNumber != 443)
{
url += ":" + portNumber;
}
if (server.serverinfo.TryGetValue("domainsuffix", out var value) && value is string domainSuffix && !string.IsNullOrEmpty(domainSuffix))
{
url += "/" + domainSuffix;
}
url += "/messenger?id=meshmessenger/" + Uri.EscapeDataString(node.nodeid) + "/" + Uri.EscapeDataString(server.userid) + "&title=" + node.name;
if ((server.authCookie != null) && (server.authCookie != "")) { url += "&auth=" + server.authCookie; }
try
{
if (server.debug) { try { File.AppendAllText("debug.log", "Opening chat window locally using ProcessStartInfo\r\n"); } catch (Exception) { } }
Process.Start(new ProcessStartInfo
{
FileName = url,
UseShellExecute = true
});
}
catch (Exception)
{
try
{
if (server.debug) { try { File.AppendAllText("debug.log", "Opening chat window locally using cmd\r\n"); } catch (Exception) { } }
Process.Start(new ProcessStartInfo("cmd", $"/c start {url}") { CreateNoWindow = true });
}
catch (Exception)
{
if (server.debug) { try { File.AppendAllText("debug.log", "Failed to open chat window locally\r\n"); } catch (Exception) { } }
}
}
}
}
}

View File

@@ -167,13 +167,73 @@
<metadata name="updateTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>154, 17</value>
</metadata>
<metadata name="consentContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>518, 17</value>
</metadata>
<data name="askConsentBarToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>171, 22</value>
</data>
<data name="askConsentBarToolStripMenuItem.Text" xml:space="preserve">
<value>Ask Consent + Bar</value>
</data>
<data name="askConsentToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>171, 22</value>
</data>
<data name="askConsentToolStripMenuItem.Text" xml:space="preserve">
<value>Ask Consent</value>
</data>
<data name="privacyBarToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>171, 22</value>
</data>
<data name="privacyBarToolStripMenuItem.Text" xml:space="preserve">
<value>Privacy Bar</value>
</data>
<data name="consentContextMenuStrip.Size" type="System.Drawing.Size, System.Drawing">
<value>172, 70</value>
</data>
<data name="&gt;&gt;consentContextMenuStrip.Name" xml:space="preserve">
<value>consentContextMenuStrip</value>
</data>
<data name="&gt;&gt;consentContextMenuStrip.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="chatButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="chatButton.Location" type="System.Drawing.Point, System.Drawing">
<value>286, 3</value>
</data>
<data name="chatButton.Size" type="System.Drawing.Size, System.Drawing">
<value>89, 26</value>
</data>
<data name="chatButton.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="chatButton.Text" xml:space="preserve">
<value>Chat</value>
</data>
<data name="&gt;&gt;chatButton.Name" xml:space="preserve">
<value>chatButton</value>
</data>
<data name="&gt;&gt;chatButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;chatButton.Parent" xml:space="preserve">
<value>topPanel</value>
</data>
<data name="&gt;&gt;chatButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="openRemoteFilesButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="openRemoteFilesButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="openRemoteFilesButton.Location" type="System.Drawing.Point, System.Drawing">
<value>192, 3</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="openRemoteFilesButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
@@ -196,19 +256,19 @@
<value>topPanel</value>
</data>
<data name="&gt;&gt;openRemoteFilesButton.ZOrder" xml:space="preserve">
<value>0</value>
<value>1</value>
</data>
<data name="extraButtonsPanel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="extraButtonsPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>380, 2</value>
<value>474, 2</value>
</data>
<data name="extraButtonsPanel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="extraButtonsPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>401, 27</value>
<value>307, 27</value>
</data>
<data name="extraButtonsPanel.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
@@ -223,7 +283,7 @@
<value>topPanel</value>
</data>
<data name="&gt;&gt;extraButtonsPanel.ZOrder" xml:space="preserve">
<value>1</value>
<value>2</value>
</data>
<data name="splitButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -256,7 +316,7 @@
<value>topPanel</value>
</data>
<data name="&gt;&gt;splitButton.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<data name="clipOutboundButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -286,7 +346,7 @@
<value>topPanel</value>
</data>
<data name="&gt;&gt;clipOutboundButton.ZOrder" xml:space="preserve">
<value>3</value>
<value>4</value>
</data>
<data name="clipInboundButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -322,7 +382,7 @@
<value>topPanel</value>
</data>
<data name="&gt;&gt;clipInboundButton.ZOrder" xml:space="preserve">
<value>4</value>
<value>5</value>
</data>
<data name="statsButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -352,13 +412,13 @@
<value>topPanel</value>
</data>
<data name="&gt;&gt;statsButton.ZOrder" xml:space="preserve">
<value>5</value>
<value>6</value>
</data>
<data name="settingsButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="settingsButton.Location" type="System.Drawing.Point, System.Drawing">
<value>286, 3</value>
<value>380, 3</value>
</data>
<data name="settingsButton.Size" type="System.Drawing.Size, System.Drawing">
<value>89, 26</value>
@@ -379,7 +439,7 @@
<value>topPanel</value>
</data>
<data name="&gt;&gt;settingsButton.ZOrder" xml:space="preserve">
<value>6</value>
<value>7</value>
</data>
<data name="zoomButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -406,7 +466,7 @@
<value>topPanel</value>
</data>
<data name="&gt;&gt;zoomButton.ZOrder" xml:space="preserve">
<value>7</value>
<value>8</value>
</data>
<data name="cadButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
@@ -436,37 +496,7 @@
<value>topPanel</value>
</data>
<data name="&gt;&gt;cadButton.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<metadata name="consentContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>518, 17</value>
</metadata>
<data name="askConsentBarToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>171, 22</value>
</data>
<data name="askConsentBarToolStripMenuItem.Text" xml:space="preserve">
<value>Ask Consent + Bar</value>
</data>
<data name="askConsentToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>171, 22</value>
</data>
<data name="askConsentToolStripMenuItem.Text" xml:space="preserve">
<value>Ask Consent</value>
</data>
<data name="privacyBarToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>171, 22</value>
</data>
<data name="privacyBarToolStripMenuItem.Text" xml:space="preserve">
<value>Privacy Bar</value>
</data>
<data name="consentContextMenuStrip.Size" type="System.Drawing.Size, System.Drawing">
<value>172, 70</value>
</data>
<data name="&gt;&gt;consentContextMenuStrip.Name" xml:space="preserve">
<value>consentContextMenuStrip</value>
</data>
<data name="&gt;&gt;consentContextMenuStrip.Type" xml:space="preserve">
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>9</value>
</data>
<data name="connectButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
@@ -493,7 +523,7 @@
<value>topPanel</value>
</data>
<data name="&gt;&gt;connectButton.ZOrder" xml:space="preserve">
<value>9</value>
<value>10</value>
</data>
<data name="topPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
@@ -561,30 +591,6 @@
<metadata name="consoleTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>275, 17</value>
</metadata>
<data name="resizeKvmControl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="resizeKvmControl.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 32</value>
</data>
<data name="resizeKvmControl.Size" type="System.Drawing.Size, System.Drawing">
<value>1044, 695</value>
</data>
<data name="resizeKvmControl.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="&gt;&gt;resizeKvmControl.Name" xml:space="preserve">
<value>resizeKvmControl</value>
</data>
<data name="&gt;&gt;resizeKvmControl.Type" xml:space="preserve">
<value>MeshCentralRouter.KVMResizeControl, MeshCentralRouter, Version=1.8.8475.33354, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;resizeKvmControl.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;resizeKvmControl.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<metadata name="displaySelectorImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>752, 17</value>
</metadata>
@@ -593,7 +599,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADs
DgAAAk1TRnQBSQFMAgEBBAEAATABAAEwAQABEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA
DgAAAk1TRnQBSQFMAgEBBAEAAUgBAAFIAQABEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABIAMAAQEBAAEQBgABEP8A/wD/AP8A/wD/AP8A/wAiAAH3AV4BpQEUAaUBFAGlARQBpQEUAaUBFAGl
ARQB9wFeEAAB9wFeAaUBFAGlARQBpQEUAaUBFAGlARQBpQEUAfcBXhAAAfcBXgGlARQBpQEUAaUBFAGl
ARQBpQEUAaUBFAH3AV4QAAH3AV4BpQEUAaUBFAGlARQBpQEUAaUBFAGlARQB9wFeEAAB3gF7ARgBYwFr
@@ -659,6 +665,30 @@
AQ8B8AEPAfABDwHwAQ8B8AEPAfABDwHwAQ8B/AE/AfwBPwH8AT8B/AE/aAAL
</value>
</data>
<data name="resizeKvmControl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="resizeKvmControl.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 32</value>
</data>
<data name="resizeKvmControl.Size" type="System.Drawing.Size, System.Drawing">
<value>1044, 695</value>
</data>
<data name="resizeKvmControl.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="&gt;&gt;resizeKvmControl.Name" xml:space="preserve">
<value>resizeKvmControl</value>
</data>
<data name="&gt;&gt;resizeKvmControl.Type" xml:space="preserve">
<value>MeshCentralRouter.KVMResizeControl, MeshCentralRouter, Version=1.8.8983.22465, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;resizeKvmControl.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;resizeKvmControl.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
@@ -1093,6 +1123,9 @@
/////wAA/P//////AAA=
</value>
</data>
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>

View File

@@ -67,6 +67,7 @@ namespace MeshCentralRouter
private JavaScriptSerializer JSON = new JavaScriptSerializer();
public int features = 0; // Bit flags of server features
public int features2 = 0; // Bit flags of server features
public Dictionary<string, object> serverinfo = null;
public int connectionState { get { return constate; } }
@@ -257,7 +258,7 @@ namespace MeshCentralRouter
case "serverinfo":
{
// Get the bit flags of server features
Dictionary<string, object> serverinfo = (Dictionary<string, object>)jsonAction["serverinfo"];
serverinfo = (Dictionary<string, object>)jsonAction["serverinfo"];
if (serverinfo.ContainsKey("features") && (serverinfo["features"].GetType() == typeof(int))) { features = (int)serverinfo["features"]; }
if (serverinfo.ContainsKey("features2") && (serverinfo["features2"].GetType() == typeof(int))) { features2 = (int)serverinfo["features2"]; }