From 2a8d1d3a6cc8dd7a9397733b4f38a22455540f8a Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Wed, 16 Sep 2020 14:42:23 -0700 Subject: [PATCH] Many improvements. --- AddPortMapForm.Designer.cs | 17 +++-- AddPortMapForm.cs | 43 ++++++++---- AddPortMapForm.resx | 72 ++++++++++++-------- AddRelayMapForm.Designer.cs | 17 +++-- AddRelayMapForm.cs | 43 ++++++++---- AddRelayMapForm.resx | 73 ++++++++++++-------- DeviceUserControl.resx | 26 +++---- KVMControl.cs | 1 + KVMViewer.Designer.cs | 52 +++++++++++--- KVMViewer.cs | 24 ++++++- KVMViewer.resx | 113 +++++++++++++++++++++++++++---- MainForm.Designer.cs | 19 ++++-- MainForm.cs | 39 +++++++++-- MainForm.resx | 66 +++++++++++++----- MapUserControl.cs | 6 +- MapUserControl.resx | 32 ++++----- MeshCentralRouter.csproj | 3 + MeshCentralServer.cs | 17 +++++ Properties/Resources.Designer.cs | 39 +++++++++++ Properties/Resources.resx | 36 ++++++---- Resources/MC2-Banner.png | Bin 49216 -> 37787 bytes Resources/ZoomToFit.png | Bin 0 -> 215 bytes Resources/icon-clipboard-in.png | Bin 0 -> 409 bytes Resources/icon-clipboard-out.png | Bin 0 -> 415 bytes 24 files changed, 549 insertions(+), 189 deletions(-) create mode 100644 Resources/ZoomToFit.png create mode 100644 Resources/icon-clipboard-in.png create mode 100644 Resources/icon-clipboard-out.png diff --git a/AddPortMapForm.Designer.cs b/AddPortMapForm.Designer.cs index 451de07..f7d940d 100644 --- a/AddPortMapForm.Designer.cs +++ b/AddPortMapForm.Designer.cs @@ -28,6 +28,7 @@ /// private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddPortMapForm)); this.cancelButton = new System.Windows.Forms.Button(); this.okButton = new System.Windows.Forms.Button(); @@ -44,8 +45,9 @@ this.label6 = new System.Windows.Forms.Label(); this.tcpRadioButton = new System.Windows.Forms.RadioButton(); this.udpRadioButton = new System.Windows.Forms.RadioButton(); - this.ruleNameTextBox = new System.Windows.Forms.TextBox(); + this.nameTextBox = new System.Windows.Forms.TextBox(); this.label8 = new System.Windows.Forms.Label(); + this.mainToolTip = new System.Windows.Forms.ToolTip(this.components); ((System.ComponentModel.ISupportInitialize)(this.localNumericUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.remoteNumericUpDown)).BeginInit(); this.SuspendLayout(); @@ -171,15 +173,17 @@ this.udpRadioButton.UseVisualStyleBackColor = true; this.udpRadioButton.CheckedChanged += new System.EventHandler(this.tcpRadioButton_CheckedChanged); // - // ruleNameTextBox + // nameTextBox // - resources.ApplyResources(this.ruleNameTextBox, "ruleNameTextBox"); - this.ruleNameTextBox.Name = "ruleNameTextBox"; + resources.ApplyResources(this.nameTextBox, "nameTextBox"); + this.nameTextBox.Name = "nameTextBox"; + this.mainToolTip.SetToolTip(this.nameTextBox, resources.GetString("nameTextBox.ToolTip")); // // label8 // resources.ApplyResources(this.label8, "label8"); this.label8.Name = "label8"; + this.mainToolTip.SetToolTip(this.label8, resources.GetString("label8.ToolTip")); // // AddPortMapForm // @@ -187,7 +191,7 @@ resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.cancelButton; - this.Controls.Add(this.ruleNameTextBox); + this.Controls.Add(this.nameTextBox); this.Controls.Add(this.label8); this.Controls.Add(this.udpRadioButton); this.Controls.Add(this.tcpRadioButton); @@ -233,7 +237,8 @@ private System.Windows.Forms.Label label6; private System.Windows.Forms.RadioButton tcpRadioButton; private System.Windows.Forms.RadioButton udpRadioButton; - private System.Windows.Forms.TextBox ruleNameTextBox; + private System.Windows.Forms.TextBox nameTextBox; private System.Windows.Forms.Label label8; + private System.Windows.Forms.ToolTip mainToolTip; } } \ No newline at end of file diff --git a/AddPortMapForm.cs b/AddPortMapForm.cs index 9537348..0265807 100644 --- a/AddPortMapForm.cs +++ b/AddPortMapForm.cs @@ -1,11 +1,4 @@ using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; namespace MeshCentralRouter @@ -21,7 +14,7 @@ namespace MeshCentralRouter InitializeComponent(); } - public string getRuleName() { return ruleNameTextBox.Text; } + public string getName() { return nameTextBox.Text; } public int getProtocol() { return (int)(tcpRadioButton.Checked?1:2); } public int getLocalPort() { return (int)localNumericUpDown.Value; } public int getRemotePort() { return (int)remoteNumericUpDown.Value; } @@ -50,12 +43,34 @@ namespace MeshCentralRouter } } + // If the user has indivitual device rights, add an extra device group + if (meshcentral.userRights != null) + { + bool indivitualDevices = false; + foreach (string id in meshcentral.userRights.Keys) { if (id.StartsWith("node/")) { indivitualDevices = true; } } + if (indivitualDevices) + { + MeshClass m = new MeshClass(); + m.name = Properties.Resources.IndividualDevices; + groupComboBox.Items.Add(m); + } + } + // Set default selection if (groupComboBox.Items.Count > 0) { groupComboBox.SelectedIndex = 0; } appComboBox.SelectedIndex = 1; fillNodesInDropDown(); } else { - groupComboBox.Items.Add(selectedNode.mesh); + if (selectedNode.mesh == null) + { + MeshClass m = new MeshClass(); + m.name = Properties.Resources.IndividualDevices; + groupComboBox.Items.Add(m); + } + else + { + groupComboBox.Items.Add(selectedNode.mesh); + } groupComboBox.SelectedIndex = 0; groupComboBox.Enabled = false; nodeComboBox.Items.Add(selectedNode); @@ -63,6 +78,7 @@ namespace MeshCentralRouter nodeComboBox.Enabled = false; appComboBox.SelectedIndex = 1; } + nameTextBox.Focus(); } private void fillNodesInDropDown() @@ -73,10 +89,13 @@ namespace MeshCentralRouter // Fill the nodes dropdown nodeComboBox.Items.Clear(); - foreach (string nodeid in meshcentral.nodes.Keys) + if (meshcentral.nodes != null) { - NodeClass node = meshcentral.nodes[nodeid]; - if ((node.meshid == mesh.meshid) && ((node.conn & 1) != 0)) { nodeComboBox.Items.Add(node); } + foreach (string nodeid in meshcentral.nodes.Keys) + { + NodeClass node = meshcentral.nodes[nodeid]; + if (((node.meshid == mesh.meshid) || ((mesh.meshid == null) && (meshcentral.userRights.ContainsKey(node.nodeid)))) && ((node.conn & 1) != 0)) { nodeComboBox.Items.Add(node); } + } } if (nodeComboBox.Items.Count > 0) { nodeComboBox.SelectedIndex = 0; } diff --git a/AddPortMapForm.resx b/AddPortMapForm.resx index 99d8fef..dc78a90 100644 --- a/AddPortMapForm.resx +++ b/AddPortMapForm.resx @@ -123,7 +123,7 @@ - 288, 194 + 288, 200 75, 23 @@ -151,7 +151,7 @@ Bottom, Right - 207, 194 + 207, 200 75, 23 @@ -178,7 +178,7 @@ Top, Left, Right - 157, 60 + 157, 63 206, 20 @@ -205,7 +205,7 @@ True - 12, 62 + 12, 65 55, 13 @@ -232,7 +232,7 @@ Top, Left, Right - 157, 113 + 157, 116 206, 21 @@ -256,7 +256,7 @@ True - 12, 116 + 12, 119 81, 13 @@ -283,7 +283,7 @@ True - 12, 169 + 12, 172 66, 13 @@ -310,7 +310,7 @@ Top, Left, Right - 157, 167 + 157, 170 206, 20 @@ -337,7 +337,7 @@ True - 12, 143 + 12, 146 59, 13 @@ -382,7 +382,7 @@ WinSCP - 157, 140 + 157, 143 206, 21 @@ -406,7 +406,7 @@ True - 12, 89 + 12, 92 73, 13 @@ -433,7 +433,7 @@ Top, Left, Right - 157, 86 + 157, 89 206, 21 @@ -457,7 +457,7 @@ True - 12, 36 + 12, 39 46, 13 @@ -484,7 +484,7 @@ True - 157, 36 + 157, 39 46, 17 @@ -511,7 +511,7 @@ True - 209, 36 + 209, 39 48, 17 @@ -534,30 +534,39 @@ 2 - + Top, Left, Right - + 157, 10 - + 206, 20 - + 20 - - ruleNameTextBox + + 17, 17 + + + Optional mapping name - + + nameTextBox + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + $this - + 0 + + 17, 17 + True @@ -568,13 +577,16 @@ 12, 13 - 60, 13 + 35, 13 19 - Rule Name + Name + + + Optional mapping name label8 @@ -595,7 +607,7 @@ 6, 13 - 375, 229 + 375, 235 @@ -2297,6 +2309,12 @@ Port Mapping + + mainToolTip + + + System.Windows.Forms.ToolTip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + AddPortMapForm diff --git a/AddRelayMapForm.Designer.cs b/AddRelayMapForm.Designer.cs index cfff2ff..0c947ac 100644 --- a/AddRelayMapForm.Designer.cs +++ b/AddRelayMapForm.Designer.cs @@ -28,6 +28,7 @@ /// private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddRelayMapForm)); this.cancelButton = new System.Windows.Forms.Button(); this.okButton = new System.Windows.Forms.Button(); @@ -46,8 +47,9 @@ this.udpRadioButton = new System.Windows.Forms.RadioButton(); this.tcpRadioButton = new System.Windows.Forms.RadioButton(); this.label7 = new System.Windows.Forms.Label(); - this.ruleNameTextBox = new System.Windows.Forms.TextBox(); + this.nameTextBox = new System.Windows.Forms.TextBox(); this.label8 = new System.Windows.Forms.Label(); + this.mainToolTip = new System.Windows.Forms.ToolTip(this.components); ((System.ComponentModel.ISupportInitialize)(this.localNumericUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.remoteNumericUpDown)).BeginInit(); this.SuspendLayout(); @@ -183,15 +185,17 @@ resources.ApplyResources(this.label7, "label7"); this.label7.Name = "label7"; // - // ruleNameTextBox + // nameTextBox // - resources.ApplyResources(this.ruleNameTextBox, "ruleNameTextBox"); - this.ruleNameTextBox.Name = "ruleNameTextBox"; + resources.ApplyResources(this.nameTextBox, "nameTextBox"); + this.nameTextBox.Name = "nameTextBox"; + this.mainToolTip.SetToolTip(this.nameTextBox, resources.GetString("nameTextBox.ToolTip")); // // label8 // resources.ApplyResources(this.label8, "label8"); this.label8.Name = "label8"; + this.mainToolTip.SetToolTip(this.label8, resources.GetString("label8.ToolTip")); // // AddRelayMapForm // @@ -199,7 +203,7 @@ resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.cancelButton; - this.Controls.Add(this.ruleNameTextBox); + this.Controls.Add(this.nameTextBox); this.Controls.Add(this.label8); this.Controls.Add(this.udpRadioButton); this.Controls.Add(this.tcpRadioButton); @@ -249,7 +253,8 @@ private System.Windows.Forms.RadioButton udpRadioButton; private System.Windows.Forms.RadioButton tcpRadioButton; private System.Windows.Forms.Label label7; - private System.Windows.Forms.TextBox ruleNameTextBox; + private System.Windows.Forms.TextBox nameTextBox; private System.Windows.Forms.Label label8; + private System.Windows.Forms.ToolTip mainToolTip; } } \ No newline at end of file diff --git a/AddRelayMapForm.cs b/AddRelayMapForm.cs index 81eb8f0..2706e59 100644 --- a/AddRelayMapForm.cs +++ b/AddRelayMapForm.cs @@ -1,12 +1,5 @@ using System; using System.Net; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; namespace MeshCentralRouter @@ -23,7 +16,7 @@ namespace MeshCentralRouter updateInfo(); } - public string getRuleName() { return ruleNameTextBox.Text; } + public string getName() { return nameTextBox.Text; } public int getProtocol() { return (int)(tcpRadioButton.Checked ? 1 : 2); } public int getLocalPort() { return (int)localNumericUpDown.Value; } public int getRemotePort() { return (int)remoteNumericUpDown.Value; } @@ -53,12 +46,34 @@ namespace MeshCentralRouter } } + // If the user has indivitual device rights, add an extra device group + if (meshcentral.userRights != null) + { + bool indivitualDevices = false; + foreach (string id in meshcentral.userRights.Keys) { if (id.StartsWith("node/")) { indivitualDevices = true; } } + if (indivitualDevices) + { + MeshClass m = new MeshClass(); + m.name = Properties.Resources.IndividualDevices; + groupComboBox.Items.Add(m); + } + } + // Set default selection if (groupComboBox.Items.Count > 0) { groupComboBox.SelectedIndex = 0; } appComboBox.SelectedIndex = 1; fillNodesInDropDown(); } else { - groupComboBox.Items.Add(selectedNode.mesh); + if (selectedNode.mesh == null) + { + MeshClass m = new MeshClass(); + m.name = Properties.Resources.IndividualDevices; + groupComboBox.Items.Add(m); + } + else + { + groupComboBox.Items.Add(selectedNode.mesh); + } groupComboBox.SelectedIndex = 0; groupComboBox.Enabled = false; nodeComboBox.Items.Add(selectedNode); @@ -66,6 +81,7 @@ namespace MeshCentralRouter nodeComboBox.Enabled = false; appComboBox.SelectedIndex = 1; } + nameTextBox.Focus(); } private void fillNodesInDropDown() @@ -75,10 +91,13 @@ namespace MeshCentralRouter // Fill the nodes dropdown nodeComboBox.Items.Clear(); - foreach (string nodeid in meshcentral.nodes.Keys) + if (meshcentral.nodes != null) { - NodeClass node = meshcentral.nodes[nodeid]; - if ((node.meshid == mesh.meshid) && ((node.conn & 1) != 0)) { nodeComboBox.Items.Add(node); } + foreach (string nodeid in meshcentral.nodes.Keys) + { + NodeClass node = meshcentral.nodes[nodeid]; + if (((node.meshid == mesh.meshid) || ((mesh.meshid == null) && (meshcentral.userRights.ContainsKey(node.nodeid)))) && ((node.conn & 1) != 0)) { nodeComboBox.Items.Add(node); } + } } if (nodeComboBox.Items.Count > 0) { nodeComboBox.SelectedIndex = 0; } diff --git a/AddRelayMapForm.resx b/AddRelayMapForm.resx index 2b59855..e530b72 100644 --- a/AddRelayMapForm.resx +++ b/AddRelayMapForm.resx @@ -123,7 +123,7 @@ - 288, 220 + 288, 225 75, 23 @@ -151,7 +151,7 @@ Bottom, Right - 207, 220 + 207, 225 75, 23 @@ -178,7 +178,7 @@ Top, Left, Right - 157, 59 + 157, 63 206, 20 @@ -205,7 +205,7 @@ True - 12, 61 + 12, 65 55, 13 @@ -232,7 +232,7 @@ Top, Left, Right - 157, 112 + 157, 116 206, 21 @@ -256,7 +256,7 @@ True - 12, 115 + 12, 119 71, 13 @@ -283,7 +283,7 @@ True - 12, 194 + 12, 198 66, 13 @@ -310,7 +310,7 @@ Top, Left, Right - 157, 192 + 157, 196 206, 20 @@ -337,7 +337,7 @@ True - 12, 142 + 12, 146 59, 13 @@ -382,7 +382,7 @@ WinSCP - 157, 139 + 157, 143 206, 21 @@ -406,7 +406,7 @@ True - 12, 169 + 12, 173 57, 13 @@ -433,7 +433,7 @@ Top, Left, Right - 157, 166 + 157, 170 206, 20 @@ -463,7 +463,7 @@ True - 12, 88 + 12, 92 73, 13 @@ -490,7 +490,7 @@ Top, Left, Right - 157, 85 + 157, 89 206, 21 @@ -514,7 +514,7 @@ True - 209, 36 + 209, 39 48, 17 @@ -541,7 +541,7 @@ True - 157, 36 + 157, 39 46, 17 @@ -568,7 +568,7 @@ True - 12, 36 + 12, 39 46, 13 @@ -591,28 +591,34 @@ 4 - + Top, Left, Right - + 157, 10 - + 206, 20 - + 18 - - ruleNameTextBox + + 17, 17 + + + Optional mapping name - + + nameTextBox + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + $this - + 0 @@ -625,13 +631,16 @@ 12, 13 - 60, 13 + 35, 13 17 - Rule Name + Name + + + Optional mapping name label8 @@ -652,7 +661,7 @@ 6, 13 - 375, 255 + 375, 260 @@ -2354,6 +2363,12 @@ Relay Mapping + + mainToolTip + + + System.Windows.Forms.ToolTip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + AddRelayMapForm diff --git a/DeviceUserControl.resx b/DeviceUserControl.resx index 188e742..ce43b5a 100644 --- a/DeviceUserControl.resx +++ b/DeviceUserControl.resx @@ -237,7 +237,7 @@ - 6, 3 + 4, 1 50, 50 @@ -266,7 +266,7 @@ Microsoft Sans Serif, 8.25pt, style=Bold - 62, 12 + 60, 10 235, 15 @@ -293,7 +293,7 @@ Top, Left, Right - 62, 32 + 60, 30 235, 15 @@ -338,7 +338,7 @@ System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 367, 6 + 365, 4 58, 47 @@ -362,14 +362,14 @@ 6 - 17, 17 + 15, 17 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAy - mgAAAk1TRnQBSQFMAgEBCAEAAXABAAFwAQABMgEAATIBAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAHI + mgAAAk1TRnQBSQFMAgEBCAEAAXgBAAF4AQABMgEAATIBAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAHI AwABlgMAAQEBAAEQBQABYAHq/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A @@ -1030,14 +1030,14 @@ - 127, 17 + 125, 17 AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC4 - mgAAAk1TRnQBSQFMAgEBCAEAAXgBAAF4AQABMgEAATIBAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAHI + mgAAAk1TRnQBSQFMAgEBCAEAAYABAAGAAQABMgEAATIBAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAHI AwABlgMAAQEBAAEQBQABYAHq/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A @@ -1722,7 +1722,7 @@ System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 303, 6 + 301, 4 58, 23 @@ -1749,7 +1749,7 @@ Top, Right - 303, 30 + 301, 28 58, 23 @@ -1776,7 +1776,7 @@ Top, Right - 367, 30 + 365, 28 58, 23 @@ -1803,7 +1803,7 @@ Top, Right - 367, 6 + 365, 4 58, 23 @@ -1833,7 +1833,7 @@ 6, 13 - 429, 56 + 425, 52 setRDPPortToolStripMenuItem diff --git a/KVMControl.cs b/KVMControl.cs index 9519aa7..044ef36 100644 --- a/KVMControl.cs +++ b/KVMControl.cs @@ -545,6 +545,7 @@ namespace MeshCentralRouter private void KVMControl_KeyDown(object sender, KeyEventArgs e) { + if ((e.KeyCode == Keys.LWin) || (e.KeyCode == Keys.RWin)) return; // Don't process the Windows key SendKey(e, 0); e.Handled = true; } diff --git a/KVMViewer.Designer.cs b/KVMViewer.Designer.cs index 678c4fa..94e8aa7 100644 --- a/KVMViewer.Designer.cs +++ b/KVMViewer.Designer.cs @@ -51,6 +51,9 @@ 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.clipOutboundButton = new System.Windows.Forms.Button(); + this.clipInboundButton = new System.Windows.Forms.Button(); + this.statsButton = new System.Windows.Forms.Button(); this.displaySelectComboBox = new System.Windows.Forms.ComboBox(); this.settingsButton = new System.Windows.Forms.Button(); this.zoomButton = new System.Windows.Forms.Button(); @@ -58,7 +61,7 @@ namespace MeshCentralRouter this.connectButton = new System.Windows.Forms.Button(); this.consoleMessage = new System.Windows.Forms.Label(); this.consoleTimer = new System.Windows.Forms.Timer(this.components); - this.statsButton = new System.Windows.Forms.Button(); + this.mainToolTip = new System.Windows.Forms.ToolTip(this.components); this.resizeKvmControl = new MeshCentralRouter.KVMResizeControl(); this.mainStatusStrip.SuspendLayout(); this.topPanel.SuspendLayout(); @@ -93,6 +96,8 @@ namespace MeshCentralRouter // topPanel // this.topPanel.BackColor = System.Drawing.SystemColors.Control; + this.topPanel.Controls.Add(this.clipOutboundButton); + this.topPanel.Controls.Add(this.clipInboundButton); this.topPanel.Controls.Add(this.statsButton); this.topPanel.Controls.Add(this.displaySelectComboBox); this.topPanel.Controls.Add(this.settingsButton); @@ -102,6 +107,35 @@ namespace MeshCentralRouter resources.ApplyResources(this.topPanel, "topPanel"); this.topPanel.Name = "topPanel"; // + // clipOutboundButton + // + resources.ApplyResources(this.clipOutboundButton, "clipOutboundButton"); + this.clipOutboundButton.Image = global::MeshCentralRouter.Properties.Resources.icon_clipboard_out; + this.clipOutboundButton.Name = "clipOutboundButton"; + this.clipOutboundButton.TabStop = false; + this.mainToolTip.SetToolTip(this.clipOutboundButton, resources.GetString("clipOutboundButton.ToolTip")); + this.clipOutboundButton.UseVisualStyleBackColor = true; + this.clipOutboundButton.Click += new System.EventHandler(this.clipOutboundButton_Click); + // + // clipInboundButton + // + resources.ApplyResources(this.clipInboundButton, "clipInboundButton"); + this.clipInboundButton.Image = global::MeshCentralRouter.Properties.Resources.icon_clipboard_in; + this.clipInboundButton.Name = "clipInboundButton"; + this.clipInboundButton.TabStop = false; + this.mainToolTip.SetToolTip(this.clipInboundButton, resources.GetString("clipInboundButton.ToolTip")); + this.clipInboundButton.UseVisualStyleBackColor = true; + this.clipInboundButton.Click += new System.EventHandler(this.clipInboundButton_Click); + // + // statsButton + // + resources.ApplyResources(this.statsButton, "statsButton"); + this.statsButton.Name = "statsButton"; + this.statsButton.TabStop = false; + this.mainToolTip.SetToolTip(this.statsButton, resources.GetString("statsButton.ToolTip")); + this.statsButton.UseVisualStyleBackColor = true; + this.statsButton.Click += new System.EventHandler(this.statsButton_Click); + // // displaySelectComboBox // this.displaySelectComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; @@ -115,14 +149,17 @@ namespace MeshCentralRouter resources.ApplyResources(this.settingsButton, "settingsButton"); this.settingsButton.Name = "settingsButton"; this.settingsButton.TabStop = false; + this.mainToolTip.SetToolTip(this.settingsButton, resources.GetString("settingsButton.ToolTip")); this.settingsButton.UseVisualStyleBackColor = true; this.settingsButton.Click += new System.EventHandler(this.settingsToolStripMenuItem_Click); // // zoomButton // resources.ApplyResources(this.zoomButton, "zoomButton"); + this.zoomButton.Image = global::MeshCentralRouter.Properties.Resources.ZoomToFit; this.zoomButton.Name = "zoomButton"; this.zoomButton.TabStop = false; + this.mainToolTip.SetToolTip(this.zoomButton, resources.GetString("zoomButton.ToolTip")); this.zoomButton.UseVisualStyleBackColor = true; this.zoomButton.Click += new System.EventHandler(this.zoomButton_Click); // @@ -131,6 +168,7 @@ namespace MeshCentralRouter resources.ApplyResources(this.cadButton, "cadButton"); this.cadButton.Name = "cadButton"; this.cadButton.TabStop = false; + this.mainToolTip.SetToolTip(this.cadButton, resources.GetString("cadButton.ToolTip")); this.cadButton.UseVisualStyleBackColor = true; this.cadButton.Click += new System.EventHandler(this.sendCtrlAltDelToolStripMenuItem_Click); // @@ -139,6 +177,7 @@ namespace MeshCentralRouter resources.ApplyResources(this.connectButton, "connectButton"); this.connectButton.Name = "connectButton"; this.connectButton.TabStop = false; + this.mainToolTip.SetToolTip(this.connectButton, resources.GetString("connectButton.ToolTip")); this.connectButton.UseVisualStyleBackColor = true; this.connectButton.Click += new System.EventHandler(this.MenuItemDisconnect_Click); // @@ -153,14 +192,6 @@ namespace MeshCentralRouter this.consoleTimer.Interval = 5000; this.consoleTimer.Tick += new System.EventHandler(this.consoleTimer_Tick); // - // statsButton - // - resources.ApplyResources(this.statsButton, "statsButton"); - this.statsButton.Name = "statsButton"; - this.statsButton.TabStop = false; - this.statsButton.UseVisualStyleBackColor = true; - this.statsButton.Click += new System.EventHandler(this.statsButton_Click); - // // resizeKvmControl // this.resizeKvmControl.BackColor = System.Drawing.Color.Gray; @@ -206,6 +237,9 @@ namespace MeshCentralRouter private Label consoleMessage; private Timer consoleTimer; private Button statsButton; + private Button clipInboundButton; + private Button clipOutboundButton; + private ToolTip mainToolTip; } } diff --git a/KVMViewer.cs b/KVMViewer.cs index 4a59b85..1a18435 100644 --- a/KVMViewer.cs +++ b/KVMViewer.cs @@ -101,7 +101,10 @@ namespace MeshCentralRouter randomIdHex = BitConverter.ToString(randomid).Replace("-", string.Empty); state = 1; - Uri u = new Uri(server.wsurl.ToString().Replace("/control.ashx", "/") + "meshrelay.ashx?browser=1&p=2&nodeid=" + node.nodeid + "&id=" + randomIdHex + "&auth=" + server.authCookie); + string ux = server.wsurl.ToString().Replace("/control.ashx", "/"); + int i = ux.IndexOf("?"); + if (i >= 0) { ux = ux.Substring(0, i); } + Uri u = new Uri(ux + "meshrelay.ashx?browser=1&p=2&nodeid=" + node.nodeid + "&id=" + randomIdHex + "&auth=" + server.authCookie); wc = new webSocketClient(); wc.onStateChanged += Wc_onStateChanged; wc.onBinaryData += Wc_onBinaryData; @@ -267,6 +270,8 @@ namespace MeshCentralRouter } cadButton.Enabled = (state == 3); + clipInboundButton.Enabled = (state == 3); + clipOutboundButton.Enabled = (state == 3); } private void updateTimer_Tick(object sender, EventArgs e) @@ -458,5 +463,22 @@ namespace MeshCentralRouter kvmStats.Close(); kvmStats = null; } + + private void clipInboundButton_Click(object sender, EventArgs e) + { + //string textData = "abc"; + //Clipboard.SetData(DataFormats.Text, (Object)textData); + server.sendCommand("{\"action\":\"msg\",\"type\":\"getclip\",\"nodeid\":\"" + node.nodeid + "\"}"); + } + + private void clipOutboundButton_Click(object sender, EventArgs e) + { + string textData = (string)Clipboard.GetData(DataFormats.Text); + if (textData != null) + { + textData = textData.Replace("\\", "\\\\").Replace("\"", "\\\""); + server.sendCommand("{\"action\":\"msg\",\"type\":\"setclip\",\"nodeid\":\"" + node.nodeid + "\",\"data\":\"" + textData + "\"}"); + } + } } } diff --git a/KVMViewer.resx b/KVMViewer.resx index c21acfc..3ff2688 100644 --- a/KVMViewer.resx +++ b/KVMViewer.resx @@ -167,7 +167,70 @@ 264, 17 + + False + + + NoControl + + + 324, 3 + + + 30, 26 + + + 9 + + + 509, 17 + + + Push local clipboard to remote device + + + clipOutboundButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + topPanel + + + 0 + + + False + + + NoControl + + + 288, 3 + + + 30, 26 + + + 8 + + + Pull clipboard from remote device + + + clipInboundButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + topPanel + + + 1 + Top, Right @@ -186,6 +249,9 @@ Stats + + Display connection statistics + statsButton @@ -196,10 +262,10 @@ topPanel - 0 + 2 - 383, 5 + 360, 5 128, 21 @@ -220,13 +286,13 @@ topPanel - 1 + 3 NoControl - 288, 3 + 193, 3 89, 26 @@ -237,6 +303,9 @@ Settings + + Change remote desktop settings + settingsButton @@ -247,22 +316,25 @@ topPanel - 2 + 4 + + + Top, Right NoControl - 193, 3 + 953, 3 - 89, 26 + 30, 26 4 - - Zoom-to-Fit + + Toggle zoom-to-fit mode zoomButton @@ -274,7 +346,10 @@ topPanel - 3 + 5 + + + False NoControl @@ -291,6 +366,9 @@ Ctrl-Alt-Del + + Send Ctrl-Alt-Del to remote device + cadButton @@ -301,7 +379,7 @@ topPanel - 4 + 6 NoControl @@ -318,6 +396,9 @@ Connect + + Toggle remote desktop connection + connectButton @@ -328,7 +409,7 @@ topPanel - 5 + 7 Top @@ -412,7 +493,7 @@ resizeKvmControl - MeshCentralRouter.KVMResizeControl, MeshCentralRouter, Version=1.0.7533.35016, Culture=neutral, PublicKeyToken=null + MeshCentralRouter.KVMResizeControl, MeshCentralRouter, Version=1.0.7564.25887, Culture=neutral, PublicKeyToken=null $this @@ -887,6 +968,12 @@ System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + mainToolTip + + + System.Windows.Forms.ToolTip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + KVMViewer diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs index ada6bef..e5e487d 100644 --- a/MainForm.Designer.cs +++ b/MainForm.Designer.cs @@ -90,6 +90,7 @@ this.addMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.addRelayMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); + this.remoteDesktopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.httpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.httpsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.rdpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -123,7 +124,7 @@ this.saveMappingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.openMapFileDialog = new System.Windows.Forms.OpenFileDialog(); this.saveMapFileDialog = new System.Windows.Forms.SaveFileDialog(); - this.remoteDesktopToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.rememberCertCheckBox = new System.Windows.Forms.CheckBox(); this.panel5.SuspendLayout(); this.mainPanel.SuspendLayout(); this.mainTabControl.SuspendLayout(); @@ -394,6 +395,7 @@ // // panel3 // + this.panel3.Controls.Add(this.rememberCertCheckBox); this.panel3.Controls.Add(this.certDetailsTextBox); this.panel3.Controls.Add(this.certDetailsButton); this.panel3.Controls.Add(this.label4); @@ -616,6 +618,12 @@ this.toolStripMenuItem3.Name = "toolStripMenuItem3"; resources.ApplyResources(this.toolStripMenuItem3, "toolStripMenuItem3"); // + // remoteDesktopToolStripMenuItem + // + this.remoteDesktopToolStripMenuItem.Name = "remoteDesktopToolStripMenuItem"; + resources.ApplyResources(this.remoteDesktopToolStripMenuItem, "remoteDesktopToolStripMenuItem"); + this.remoteDesktopToolStripMenuItem.Click += new System.EventHandler(this.remoteDesktopToolStripMenuItem_Click); + // // httpToolStripMenuItem // this.httpToolStripMenuItem.Name = "httpToolStripMenuItem"; @@ -847,11 +855,11 @@ this.saveMapFileDialog.DefaultExt = "mcrouter"; resources.ApplyResources(this.saveMapFileDialog, "saveMapFileDialog"); // - // remoteDesktopToolStripMenuItem + // rememberCertCheckBox // - this.remoteDesktopToolStripMenuItem.Name = "remoteDesktopToolStripMenuItem"; - resources.ApplyResources(this.remoteDesktopToolStripMenuItem, "remoteDesktopToolStripMenuItem"); - this.remoteDesktopToolStripMenuItem.Click += new System.EventHandler(this.remoteDesktopToolStripMenuItem_Click); + resources.ApplyResources(this.rememberCertCheckBox, "rememberCertCheckBox"); + this.rememberCertCheckBox.Name = "rememberCertCheckBox"; + this.rememberCertCheckBox.UseVisualStyleBackColor = true; // // MainForm // @@ -996,6 +1004,7 @@ private System.Windows.Forms.ToolStripMenuItem addRelayMapToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3; private System.Windows.Forms.ToolStripMenuItem remoteDesktopToolStripMenuItem; + private System.Windows.Forms.CheckBox rememberCertCheckBox; } } diff --git a/MainForm.cs b/MainForm.cs index 9421b4d..e1b1e1d 100644 --- a/MainForm.cs +++ b/MainForm.cs @@ -285,7 +285,6 @@ namespace MeshCentralRouter private void backButton5_Click(object sender, EventArgs e) { - authLoginUrl = null; meshcentral.disconnect(); } @@ -314,7 +313,16 @@ namespace MeshCentralRouter meshcentral.onStateChanged += Meshcentral_onStateChanged; meshcentral.onNodesChanged += Meshcentral_onNodesChanged; meshcentral.onLoginTokenChanged += Meshcentral_onLoginTokenChanged; - if (lastBadConnectCert != null) { meshcentral.okCertHash = lastBadConnectCert.GetCertHashString(); } + meshcentral.onClipboardData += Meshcentral_onClipboardData; + if (lastBadConnectCert != null) + { + meshcentral.okCertHash = lastBadConnectCert.GetCertHashString(); + } + else + { + string ignoreCert = loadFromRegistry("IgnoreCert"); + if (ignoreCert != null) { meshcentral.okCertHash = ignoreCert; } + } Uri serverurl = null; if (authLoginUrl != null) { @@ -329,8 +337,17 @@ namespace MeshCentralRouter } } + private void Meshcentral_onClipboardData(string nodeid, string data) + { + if (this.InvokeRequired) { this.Invoke(new MeshCentralServer.onClipboardDataHandler(Meshcentral_onClipboardData), nodeid, data); return; } + Clipboard.SetData(DataFormats.Text, (Object)data); + } + private void nextButton3_Click(object sender, EventArgs e) { + // If we need to remember this certificate + if (rememberCertCheckBox.Checked) { saveToRegistry("IgnoreCert", lastBadConnectCert.GetCertHashString()); } + // Attempt to login, ignore bad cert. addButton.Enabled = false; addRelayButton.Enabled = false; @@ -341,6 +358,7 @@ namespace MeshCentralRouter meshcentral.onStateChanged += Meshcentral_onStateChanged; meshcentral.onNodesChanged += Meshcentral_onNodesChanged; meshcentral.onLoginTokenChanged += Meshcentral_onLoginTokenChanged; + meshcentral.onClipboardData += Meshcentral_onClipboardData; meshcentral.okCertHash = lastBadConnectCert.GetCertHashString(); Uri serverurl = null; @@ -618,6 +636,7 @@ namespace MeshCentralRouter meshcentral.onStateChanged -= Meshcentral_onStateChanged; meshcentral.onNodesChanged -= Meshcentral_onNodesChanged; meshcentral = null; + authLoginUrl = null; } else if (state == 1) { stateLabel.Visible = false; //setPanel(1); @@ -815,7 +834,7 @@ namespace MeshCentralRouter MapUserControl map = new MapUserControl(); map.xdebug = debug; map.inaddrany = inaddrany; - map.ruleName = form.getRuleName(); + map.name = form.getName(); map.protocol = form.getProtocol(); map.localPort = form.getLocalPort(); map.remotePort = form.getRemotePort(); @@ -863,10 +882,16 @@ namespace MeshCentralRouter meshcentral = new MeshCentralServer(); meshcentral.debug = debug; meshcentral.ignoreCert = ignoreCert; - if (lastBadConnectCert != null) { meshcentral.okCertHash = lastBadConnectCert.GetCertHashString(); } + if (lastBadConnectCert != null) { + meshcentral.okCertHash = lastBadConnectCert.GetCertHashString(); + } else { + string ignoreCert = loadFromRegistry("IgnoreCert"); + if (ignoreCert != null) { meshcentral.okCertHash = ignoreCert; } + } meshcentral.onStateChanged += Meshcentral_onStateChanged; meshcentral.onNodesChanged += Meshcentral_onNodesChanged; meshcentral.onLoginTokenChanged += Meshcentral_onLoginTokenChanged; + meshcentral.onClipboardData += Meshcentral_onClipboardData; if (sendEmailToken == true) { sendEmailToken = false; @@ -943,7 +968,7 @@ namespace MeshCentralRouter MapUserControl map = new MapUserControl(); map.xdebug = debug; map.inaddrany = inaddrany; - map.ruleName = form.getRuleName(); + map.name = form.getName(); map.protocol = form.getProtocol(); map.localPort = form.getLocalPort(); map.remotePort = form.getRemotePort(); @@ -1244,7 +1269,7 @@ namespace MeshCentralRouter MapUserControl map = new MapUserControl(); map.xdebug = debug; map.inaddrany = inaddrany; - map.ruleName = x["ruleName"].ToString(); + if (x.ContainsKey("name")) { map.name = x["name"].ToString(); } else { map.name = ""; } map.protocol = (int)x["protocol"]; map.localPort = (int)x["localPort"]; if (x.ContainsKey("remoteIP")) { map.remoteIP = (string)x["remoteIP"]; } @@ -1286,7 +1311,7 @@ namespace MeshCentralRouter MeshMapper map = ((MapUserControl)c).mapper; if (mapCounter == 0) { text += " {\r\n"; } else { text += ",\r\n {\r\n"; } text += " \"nodeName\": \"" + mapCtrl.node.name + "\",\r\n"; - text += " \"ruleName\": \"" + mapCtrl.ruleName + "\",\r\n"; + if ((mapCtrl.name != null) && (mapCtrl.name != "")) { text += " \"name\": \"" + mapCtrl.name + "\",\r\n"; } text += " \"meshId\": \"" + mapCtrl.node.meshid + "\",\r\n"; text += " \"nodeId\": \"" + mapCtrl.node.nodeid + "\",\r\n"; text += " \"appId\": " + mapCtrl.appId + ",\r\n"; diff --git a/MainForm.resx b/MainForm.resx index 5cd6965..e9d3556 100644 --- a/MainForm.resx +++ b/MainForm.resx @@ -948,6 +948,36 @@ 1 + + Bottom, Left + + + True + + + 208, 255 + + + 145, 17 + + + 26 + + + Remember this certificate + + + rememberCertCheckBox + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel3 + + + 0 + Top, Bottom, Left, Right @@ -976,7 +1006,7 @@ panel3 - 0 + 1 Bottom, Left @@ -1006,7 +1036,7 @@ panel3 - 1 + 2 Top, Left, Right @@ -1042,7 +1072,7 @@ panel3 - 2 + 3 Top, Left, Right @@ -1072,7 +1102,7 @@ panel3 - 3 + 4 Bottom, Right @@ -1102,7 +1132,7 @@ panel3 - 4 + 5 Bottom, Right @@ -1132,7 +1162,7 @@ panel3 - 5 + 6 Bottom, Left, Right @@ -1162,7 +1192,7 @@ panel3 - 6 + 7 Fill @@ -1393,7 +1423,7 @@ SCP - 171, 208 + 171, 186 devicesContextMenuStrip @@ -1409,7 +1439,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADg - HQAAAk1TRnQBSQFMAgEBEAEAATABAAEQAQABEAEAARABAAT/ARkBAAj/AUIBTQE2BwABNgMAASgDAAFA + HQAAAk1TRnQBSQFMAgEBEAEAARgBAAEYAQABEAEAARABAAT/ARkBAAj/AUIBTQE2BwABNgMAASgDAAFA AwABUAMAAQEBAAEYBgABPP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AJYAA/0D+AP3A/sD/yEAA/0D+gP5 A/wD/xgAAfoB+wH6A/4qAAP9A/8tAAP7A88D1QPbA88D1AO+A9QYAAP8A90D4APjA90D4APUA+MSAAP8 AZEBjwF9AU4BaAEhAfQB9QH0JAAD/gPRA8YD+ioAAcYCxwHPAtAB2ALZA90DywPBA68DmgP3FQAD2APd @@ -1576,7 +1606,7 @@ 2, 88 - 450, 52 + 446, 52 5 @@ -1615,7 +1645,7 @@ 2, 88 - 450, 52 + 446, 52 4 @@ -1705,7 +1735,7 @@ 2, 79 - 450, 52 + 446, 52 4 @@ -5739,6 +5769,12 @@ Click "Add" to get started. System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + remoteDesktopToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + httpToolStripMenuItem @@ -5841,12 +5877,6 @@ Click "Add" to get started. System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - remoteDesktopToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - MainForm diff --git a/MapUserControl.cs b/MapUserControl.cs index 4ceb8bf..a9e3c87 100644 --- a/MapUserControl.cs +++ b/MapUserControl.cs @@ -14,7 +14,7 @@ namespace MeshCentralRouter { public partial class MapUserControl : UserControl { - public string ruleName; + public string name; public int protocol; public int localPort; public string remoteIP = null; @@ -46,9 +46,9 @@ namespace MeshCentralRouter public void UpdateInfo() { - if(this.ruleName != null) + if ((name != null) && (name != "")) { - deviceNameLabel.Text = node.name + ": " + this.ruleName; + deviceNameLabel.Text = node.name + ": " + this.name; } else { diff --git a/MapUserControl.resx b/MapUserControl.resx index 41ae00a..7f2ee4a 100644 --- a/MapUserControl.resx +++ b/MapUserControl.resx @@ -119,7 +119,7 @@ - 6, 3 + 5, 3 50, 50 @@ -151,10 +151,10 @@ NoControl - 62, 12 + 60, 11 - 294, 15 + 280, 15 1 @@ -181,10 +181,10 @@ NoControl - 62, 32 + 60, 31 - 294, 15 + 280, 15 2 @@ -208,7 +208,7 @@ Top, Right - 348, 6 + 346, 4 75, 23 @@ -235,7 +235,7 @@ Top, Right - 348, 30 + 346, 28 75, 23 @@ -266,7 +266,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAy - mgAAAk1TRnQBSQFMAgEBCAEAAUgBAAFIAQABMgEAATIBAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAHI + mgAAAk1TRnQBSQFMAgEBCAEAAVABAAFQAQABMgEAATIBAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAHI AwABlgMAAQEBAAEQBQABYAHq/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A @@ -929,14 +929,8 @@ 156, 17 - - 152, 22 - - - Stats... - - 153, 48 + 109, 26 mainContextMenuStrip @@ -944,6 +938,12 @@ System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 108, 22 + + + Stats... + True @@ -951,7 +951,7 @@ 6, 13 - 429, 56 + 425, 58 deviceImageList diff --git a/MeshCentralRouter.csproj b/MeshCentralRouter.csproj index 451ba21..b207b4c 100644 --- a/MeshCentralRouter.csproj +++ b/MeshCentralRouter.csproj @@ -722,6 +722,9 @@ + + + diff --git a/MeshCentralServer.cs b/MeshCentralServer.cs index bde55f3..ddc2656 100644 --- a/MeshCentralServer.cs +++ b/MeshCentralServer.cs @@ -554,6 +554,21 @@ namespace MeshCentralRouter if ((onNodesChanged != null) && (nodes != null)) onNodesChanged(true); break; } + case "msg": + { + if (jsonAction.ContainsKey("type")) + { + string type = (string)jsonAction["type"]; + if ((type == "getclip") && (jsonAction.ContainsKey("data")) && (jsonAction.ContainsKey("nodeid"))) + { + // We requested the remote clipboard + string nodeid = (string)jsonAction["nodeid"]; + string clipData = (string)jsonAction["data"]; + if (onClipboardData != null) { onClipboardData(nodeid, clipData); } + } + } + break; + } default: { break; @@ -569,6 +584,8 @@ namespace MeshCentralRouter public event onNodeListChangedHandler onNodesChanged; public delegate void onLoginTokenChangedHandler(); public event onLoginTokenChangedHandler onLoginTokenChanged; + public delegate void onClipboardDataHandler(string nodeid, string data); + public event onClipboardDataHandler onClipboardData; public class xwebclient : IDisposable { diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index fcdfe63..5711f6a 100644 --- a/Properties/Resources.Designer.cs +++ b/Properties/Resources.Designer.cs @@ -165,6 +165,26 @@ namespace MeshCentralRouter.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap icon_clipboard_in { + get { + object obj = ResourceManager.GetObject("icon-clipboard-in", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap icon_clipboard_out { + get { + object obj = ResourceManager.GetObject("icon-clipboard-out", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -175,6 +195,15 @@ namespace MeshCentralRouter.Properties { } } + /// + /// Looks up a localized string similar to (Individual Devices). + /// + internal static string IndividualDevices { + get { + return ResourceManager.GetString("IndividualDevices", resourceCulture); + } + } + /// /// Looks up a localized string similar to Invalid username or password. /// @@ -402,5 +431,15 @@ namespace MeshCentralRouter.Properties { return ((System.Drawing.Bitmap)(obj)); } } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ZoomToFit { + get { + object obj = ResourceManager.GetObject("ZoomToFit", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/Properties/Resources.resx b/Properties/Resources.resx index a9b120e..eb4e213 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -124,6 +124,9 @@ ..\Resources\Folder36.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + Languages + Search @@ -145,9 +148,6 @@ Changing language will close this tool. Are you sure? - - Starting... - Unable to connect @@ -166,6 +166,9 @@ ..\Resources\MeshCentral.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icon-clipboard-out.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + Offline @@ -199,34 +202,43 @@ , {0} connections. - - ..\Resources\icons01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + Starting... + + + ..\Resources\50-Computer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + (Individual Devices) Two-factor Authentication - - MQTT - MeshCentral - - Languages + + MQTT ..\Resources\Empty-Banner.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icons01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + , 1 connection. Unable to bind to local port + + ..\Resources\icon-clipboard-in.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + Invalid username or password - - ..\Resources\50-Computer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\ZoomToFit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/Resources/MC2-Banner.png b/Resources/MC2-Banner.png index a01fe3c77aecb3aa66876f56573dfb2528a88183..c767607eeb51137cfe8c2d05f6ab7c1443bc3e8e 100644 GIT binary patch literal 37787 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 D++lTb literal 49216 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 JPDHLkV1g`9uB89~ literal 0 HcmV?d00001