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

Merge branch 'master' into wol

This commit is contained in:
Ylian Saint-Hilaire
2023-10-07 12:09:10 -07:00
committed by GitHub
10 changed files with 150 additions and 93 deletions

View File

@@ -1413,7 +1413,8 @@ namespace MeshCentralRouter
transferStatusForm.transferCompleted(); transferStatusForm.transferCompleted();
} }
remoteFolder = strDownloadRel; // Zurücksetzen if (downloadActive)
remoteFolder = strDownloadRel; // Zurücksetzen
remoteRefresh(); remoteRefresh();
} }

View File

@@ -568,13 +568,24 @@ namespace MeshCentralRouter
if (c >= 32) { SendUnicodeKey(c, 0); } if (c >= 32) { SendUnicodeKey(c, 0); }
} }
private static readonly Keys[] ignoreKeys = {
// 0-9 (KeyCode: 48-57)
Keys.D0, Keys.D1, Keys.D2, Keys.D3, Keys.D4, Keys.D5, Keys.D6, Keys.D7, Keys.D8, Keys.D9,
// NumPad 0-9 (KeyCode: 96-105)
Keys.NumPad0, Keys.NumPad1, Keys.NumPad2, Keys.NumPad3, Keys.NumPad4, Keys.NumPad5, Keys.NumPad6, Keys.NumPad7, Keys.NumPad8, Keys.NumPad9,
// Special-Keys
Keys.Space, Keys.Divide, Keys.Multiply, Keys.Subtract, Keys.Add, Keys.Decimal,
// Oem-Keys
Keys.Oem1, Keys.Oem2, Keys.Oem3, Keys.Oem4, Keys.Oem5, Keys.Oem6, Keys.Oem7, Keys.Oem8, Keys.Oem102, Keys.OemSemicolon, Keys.Oemplus, Keys.Oemcomma,
Keys.OemMinus, Keys.OemPeriod, Keys.OemQuestion, Keys.Oemtilde, Keys.OemOpenBrackets, Keys.OemPipe, Keys.OemCloseBrackets, Keys.OemQuotes
};
private void SendKey(KeyEventArgs e, byte action) private void SendKey(KeyEventArgs e, byte action)
{ {
//if (state != ConnectState.Connected) return; //if (state != ConnectState.Connected) return;
if (remoteKeyboardMap == true) { SendKey((byte)e.KeyCode, action); return; } // Use old key system that uses the remote keyboard mapping. if (remoteKeyboardMap == true) { SendKey((byte)e.KeyCode, action); return; } // Use old key system that uses the remote keyboard mapping.
string keycode = e.KeyCode.ToString(); string keycode = e.KeyCode.ToString();
if ((action == 0) && (e.Control == false) && (e.Alt == false) && (((e.KeyValue >= 48) && (e.KeyValue <= 57))|| ((e.KeyValue >= 96) && (e.KeyValue <= 105)) || (keycode.Length == 1) || (keycode.StartsWith("Oem") == true))) return; if ((action == 0) && (e.Control == false) && (e.Alt == false) && (Array.IndexOf(ignoreKeys, e.KeyCode) > -1 || (keycode.Length == 1))) return;
if ((e.Control == true) || (e.Alt == true)) { killNextKeyPress = DateTime.Now.Ticks; } if ((e.Control == true) || (e.Alt == true)) { killNextKeyPress = DateTime.Now.Ticks; }
SendKey((byte)e.KeyCode, action); SendKey((byte)e.KeyCode, action);
e.Handled = true; e.Handled = true;

View File

@@ -51,6 +51,7 @@ namespace MeshCentralRouter
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
this.updateTimer = new System.Windows.Forms.Timer(this.components); this.updateTimer = new System.Windows.Forms.Timer(this.components);
this.topPanel = new System.Windows.Forms.Panel(); this.topPanel = new System.Windows.Forms.Panel();
this.openRemoteFilesButton = new System.Windows.Forms.Button();
this.extraButtonsPanel = new System.Windows.Forms.Panel(); this.extraButtonsPanel = new System.Windows.Forms.Panel();
this.splitButton = new System.Windows.Forms.Button(); this.splitButton = new System.Windows.Forms.Button();
this.clipOutboundButton = new System.Windows.Forms.Button(); this.clipOutboundButton = new System.Windows.Forms.Button();
@@ -104,6 +105,7 @@ namespace MeshCentralRouter
// topPanel // topPanel
// //
this.topPanel.BackColor = System.Drawing.SystemColors.Control; this.topPanel.BackColor = System.Drawing.SystemColors.Control;
this.topPanel.Controls.Add(this.openRemoteFilesButton);
this.topPanel.Controls.Add(this.extraButtonsPanel); this.topPanel.Controls.Add(this.extraButtonsPanel);
this.topPanel.Controls.Add(this.splitButton); this.topPanel.Controls.Add(this.splitButton);
this.topPanel.Controls.Add(this.clipOutboundButton); this.topPanel.Controls.Add(this.clipOutboundButton);
@@ -116,6 +118,14 @@ namespace MeshCentralRouter
resources.ApplyResources(this.topPanel, "topPanel"); resources.ApplyResources(this.topPanel, "topPanel");
this.topPanel.Name = "topPanel"; this.topPanel.Name = "topPanel";
// //
// openRemoteFilesButton
//
resources.ApplyResources(this.openRemoteFilesButton, "openRemoteFilesButton");
this.openRemoteFilesButton.Name = "openRemoteFilesButton";
this.openRemoteFilesButton.TabStop = false;
this.openRemoteFilesButton.UseVisualStyleBackColor = true;
this.openRemoteFilesButton.Click += new System.EventHandler(this.openRemoteFilesButton_Click);
//
// extraButtonsPanel // extraButtonsPanel
// //
resources.ApplyResources(this.extraButtonsPanel, "extraButtonsPanel"); resources.ApplyResources(this.extraButtonsPanel, "extraButtonsPanel");
@@ -298,6 +308,7 @@ namespace MeshCentralRouter
private Button splitButton; private Button splitButton;
private Panel extraButtonsPanel; private Panel extraButtonsPanel;
private ImageList displaySelectorImageList; private ImageList displaySelectorImageList;
private Button openRemoteFilesButton;
} }
} }

View File

@@ -397,6 +397,7 @@ namespace MeshCentralRouter
} }
cadButton.Enabled = (state == 3); cadButton.Enabled = (state == 3);
openRemoteFilesButton.Enabled = (state == 3 && (node.agentcaps & 4) != 0);
if ((kvmControl.AutoSendClipboard) && ((server.features2 & 0x1000) == 0)) // 0x1000 Clipboard Set if ((kvmControl.AutoSendClipboard) && ((server.features2 & 0x1000) == 0)) // 0x1000 Clipboard Set
{ {
clipInboundButton.Visible = false; clipInboundButton.Visible = false;
@@ -755,6 +756,20 @@ namespace MeshCentralRouter
} }
} }
private void openRemoteFilesButton_Click(object sender, EventArgs e)
{
if ((node.conn & 1) == 0) { return; } // Agent not connected on this device
if (node.fileViewer == null)
{
node.fileViewer = new FileViewer(server, node);
node.fileViewer.Show();
node.fileViewer.MenuItemConnect_Click(null, null);
}
else
{
node.fileViewer.Focus();
}
}
} }
} }

View File

@@ -122,7 +122,7 @@
</metadata> </metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="mainToolStripStatusLabel.Size" type="System.Drawing.Size, System.Drawing"> <data name="mainToolStripStatusLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>1372, 20</value> <value>1029, 17</value>
</data> </data>
<data name="mainToolStripStatusLabel.Text" xml:space="preserve"> <data name="mainToolStripStatusLabel.Text" xml:space="preserve">
<value>---</value> <value>---</value>
@@ -131,7 +131,7 @@
<value>MiddleLeft</value> <value>MiddleLeft</value>
</data> </data>
<data name="toolStripStatusLabel1.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolStripStatusLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 20</value> <value>13, 17</value>
</data> </data>
<data name="toolStripStatusLabel1.Text" xml:space="preserve"> <data name="toolStripStatusLabel1.Text" xml:space="preserve">
<value>v</value> <value>v</value>
@@ -141,14 +141,10 @@
<value>False</value> <value>False</value>
</data> </data>
<data name="mainStatusStrip.Location" type="System.Drawing.Point, System.Drawing"> <data name="mainStatusStrip.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 897</value> <value>0, 727</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="mainStatusStrip.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>1, 0, 19, 0</value>
</data> </data>
<data name="mainStatusStrip.Size" type="System.Drawing.Size, System.Drawing"> <data name="mainStatusStrip.Size" type="System.Drawing.Size, System.Drawing">
<value>1392, 25</value> <value>1044, 22</value>
</data> </data>
<data name="mainStatusStrip.TabIndex" type="System.Int32, mscorlib"> <data name="mainStatusStrip.TabIndex" type="System.Int32, mscorlib">
<value>9</value> <value>9</value>
@@ -171,14 +167,48 @@
<metadata name="updateTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="updateTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>154, 17</value> <value>154, 17</value>
</metadata> </metadata>
<data name="openRemoteFilesButton.Enabled" type="System.Boolean, mscorlib">
<value>False</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>
<data name="openRemoteFilesButton.Size" type="System.Drawing.Size, System.Drawing">
<value>89, 26</value>
</data>
<data name="openRemoteFilesButton.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="openRemoteFilesButton.Text" xml:space="preserve">
<value>Remote Files</value>
</data>
<data name="&gt;&gt;openRemoteFilesButton.Name" xml:space="preserve">
<value>openRemoteFilesButton</value>
</data>
<data name="&gt;&gt;openRemoteFilesButton.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;openRemoteFilesButton.Parent" xml:space="preserve">
<value>topPanel</value>
</data>
<data name="&gt;&gt;openRemoteFilesButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="extraButtonsPanel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="extraButtonsPanel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value> <value>Top, Left, Right</value>
</data> </data>
<data name="extraButtonsPanel.Location" type="System.Drawing.Point, System.Drawing"> <data name="extraButtonsPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>383, 4</value> <value>380, 2</value>
</data>
<data name="extraButtonsPanel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data> </data>
<data name="extraButtonsPanel.Size" type="System.Drawing.Size, System.Drawing"> <data name="extraButtonsPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>658, 32</value> <value>401, 27</value>
</data> </data>
<data name="extraButtonsPanel.TabIndex" type="System.Int32, mscorlib"> <data name="extraButtonsPanel.TabIndex" type="System.Int32, mscorlib">
<value>10</value> <value>10</value>
@@ -193,7 +223,7 @@
<value>topPanel</value> <value>topPanel</value>
</data> </data>
<data name="&gt;&gt;extraButtonsPanel.ZOrder" xml:space="preserve"> <data name="&gt;&gt;extraButtonsPanel.ZOrder" xml:space="preserve">
<value>0</value> <value>1</value>
</data> </data>
<data name="splitButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="splitButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value> <value>Top, Right</value>
@@ -202,13 +232,10 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="splitButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="splitButton.Location" type="System.Drawing.Point, System.Drawing">
<value>1048, 4</value> <value>786, 3</value>
</data>
<data name="splitButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data> </data>
<data name="splitButton.Size" type="System.Drawing.Size, System.Drawing"> <data name="splitButton.Size" type="System.Drawing.Size, System.Drawing">
<value>119, 32</value> <value>89, 26</value>
</data> </data>
<data name="splitButton.TabIndex" type="System.Int32, mscorlib"> <data name="splitButton.TabIndex" type="System.Int32, mscorlib">
<value>8</value> <value>8</value>
@@ -229,7 +256,7 @@
<value>topPanel</value> <value>topPanel</value>
</data> </data>
<data name="&gt;&gt;splitButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;splitButton.ZOrder" xml:space="preserve">
<value>1</value> <value>2</value>
</data> </data>
<data name="clipOutboundButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="clipOutboundButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value> <value>Top, Right</value>
@@ -241,16 +268,13 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="clipOutboundButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="clipOutboundButton.Location" type="System.Drawing.Point, System.Drawing">
<value>1175, 4</value> <value>881, 3</value>
</data>
<data name="clipOutboundButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data> </data>
<data name="clipOutboundButton.Size" type="System.Drawing.Size, System.Drawing"> <data name="clipOutboundButton.Size" type="System.Drawing.Size, System.Drawing">
<value>40, 32</value> <value>30, 26</value>
</data> </data>
<data name="clipOutboundButton.TabIndex" type="System.Int32, mscorlib"> <data name="clipOutboundButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value> <value>4</value>
</data> </data>
<data name="&gt;&gt;clipOutboundButton.Name" xml:space="preserve"> <data name="&gt;&gt;clipOutboundButton.Name" xml:space="preserve">
<value>clipOutboundButton</value> <value>clipOutboundButton</value>
@@ -262,7 +286,7 @@
<value>topPanel</value> <value>topPanel</value>
</data> </data>
<data name="&gt;&gt;clipOutboundButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;clipOutboundButton.ZOrder" xml:space="preserve">
<value>2</value> <value>3</value>
</data> </data>
<data name="clipInboundButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="clipInboundButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value> <value>Top, Right</value>
@@ -274,16 +298,13 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="clipInboundButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="clipInboundButton.Location" type="System.Drawing.Point, System.Drawing">
<value>1223, 4</value> <value>917, 3</value>
</data>
<data name="clipInboundButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data> </data>
<data name="clipInboundButton.Size" type="System.Drawing.Size, System.Drawing"> <data name="clipInboundButton.Size" type="System.Drawing.Size, System.Drawing">
<value>40, 32</value> <value>30, 26</value>
</data> </data>
<data name="clipInboundButton.TabIndex" type="System.Int32, mscorlib"> <data name="clipInboundButton.TabIndex" type="System.Int32, mscorlib">
<value>4</value> <value>5</value>
</data> </data>
<metadata name="mainToolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="mainToolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>399, 17</value> <value>399, 17</value>
@@ -301,7 +322,7 @@
<value>topPanel</value> <value>topPanel</value>
</data> </data>
<data name="&gt;&gt;clipInboundButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;clipInboundButton.ZOrder" xml:space="preserve">
<value>3</value> <value>4</value>
</data> </data>
<data name="statsButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="statsButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value> <value>Top, Right</value>
@@ -310,13 +331,10 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="statsButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="statsButton.Location" type="System.Drawing.Point, System.Drawing">
<value>1319, 4</value> <value>989, 3</value>
</data>
<data name="statsButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data> </data>
<data name="statsButton.Size" type="System.Drawing.Size, System.Drawing"> <data name="statsButton.Size" type="System.Drawing.Size, System.Drawing">
<value>69, 32</value> <value>52, 26</value>
</data> </data>
<data name="statsButton.TabIndex" type="System.Int32, mscorlib"> <data name="statsButton.TabIndex" type="System.Int32, mscorlib">
<value>7</value> <value>7</value>
@@ -334,22 +352,19 @@
<value>topPanel</value> <value>topPanel</value>
</data> </data>
<data name="&gt;&gt;statsButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;statsButton.ZOrder" xml:space="preserve">
<value>4</value> <value>5</value>
</data> </data>
<data name="settingsButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="settingsButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="settingsButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="settingsButton.Location" type="System.Drawing.Point, System.Drawing">
<value>257, 4</value> <value>286, 3</value>
</data>
<data name="settingsButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data> </data>
<data name="settingsButton.Size" type="System.Drawing.Size, System.Drawing"> <data name="settingsButton.Size" type="System.Drawing.Size, System.Drawing">
<value>119, 32</value> <value>89, 26</value>
</data> </data>
<data name="settingsButton.TabIndex" type="System.Int32, mscorlib"> <data name="settingsButton.TabIndex" type="System.Int32, mscorlib">
<value>2</value> <value>3</value>
</data> </data>
<data name="settingsButton.Text" xml:space="preserve"> <data name="settingsButton.Text" xml:space="preserve">
<value>Settings</value> <value>Settings</value>
@@ -364,7 +379,7 @@
<value>topPanel</value> <value>topPanel</value>
</data> </data>
<data name="&gt;&gt;settingsButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;settingsButton.ZOrder" xml:space="preserve">
<value>5</value> <value>6</value>
</data> </data>
<data name="zoomButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="zoomButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value> <value>Top, Right</value>
@@ -373,13 +388,10 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="zoomButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="zoomButton.Location" type="System.Drawing.Point, System.Drawing">
<value>1271, 4</value> <value>953, 3</value>
</data>
<data name="zoomButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data> </data>
<data name="zoomButton.Size" type="System.Drawing.Size, System.Drawing"> <data name="zoomButton.Size" type="System.Drawing.Size, System.Drawing">
<value>40, 32</value> <value>30, 26</value>
</data> </data>
<data name="zoomButton.TabIndex" type="System.Int32, mscorlib"> <data name="zoomButton.TabIndex" type="System.Int32, mscorlib">
<value>6</value> <value>6</value>
@@ -394,7 +406,7 @@
<value>topPanel</value> <value>topPanel</value>
</data> </data>
<data name="&gt;&gt;zoomButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;zoomButton.ZOrder" xml:space="preserve">
<value>6</value> <value>7</value>
</data> </data>
<data name="cadButton.Enabled" type="System.Boolean, mscorlib"> <data name="cadButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value> <value>False</value>
@@ -403,13 +415,10 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="cadButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="cadButton.Location" type="System.Drawing.Point, System.Drawing">
<value>131, 4</value> <value>98, 3</value>
</data>
<data name="cadButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data> </data>
<data name="cadButton.Size" type="System.Drawing.Size, System.Drawing"> <data name="cadButton.Size" type="System.Drawing.Size, System.Drawing">
<value>119, 32</value> <value>89, 26</value>
</data> </data>
<data name="cadButton.TabIndex" type="System.Int32, mscorlib"> <data name="cadButton.TabIndex" type="System.Int32, mscorlib">
<value>1</value> <value>1</value>
@@ -427,31 +436,31 @@
<value>topPanel</value> <value>topPanel</value>
</data> </data>
<data name="&gt;&gt;cadButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;cadButton.ZOrder" xml:space="preserve">
<value>7</value> <value>8</value>
</data> </data>
<metadata name="consentContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="consentContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>518, 17</value> <value>518, 17</value>
</metadata> </metadata>
<data name="askConsentBarToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="askConsentBarToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>198, 24</value> <value>171, 22</value>
</data> </data>
<data name="askConsentBarToolStripMenuItem.Text" xml:space="preserve"> <data name="askConsentBarToolStripMenuItem.Text" xml:space="preserve">
<value>Ask Consent + Bar</value> <value>Ask Consent + Bar</value>
</data> </data>
<data name="askConsentToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="askConsentToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>198, 24</value> <value>171, 22</value>
</data> </data>
<data name="askConsentToolStripMenuItem.Text" xml:space="preserve"> <data name="askConsentToolStripMenuItem.Text" xml:space="preserve">
<value>Ask Consent</value> <value>Ask Consent</value>
</data> </data>
<data name="privacyBarToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="privacyBarToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>198, 24</value> <value>171, 22</value>
</data> </data>
<data name="privacyBarToolStripMenuItem.Text" xml:space="preserve"> <data name="privacyBarToolStripMenuItem.Text" xml:space="preserve">
<value>Privacy Bar</value> <value>Privacy Bar</value>
</data> </data>
<data name="consentContextMenuStrip.Size" type="System.Drawing.Size, System.Drawing"> <data name="consentContextMenuStrip.Size" type="System.Drawing.Size, System.Drawing">
<value>199, 76</value> <value>172, 70</value>
</data> </data>
<data name="&gt;&gt;consentContextMenuStrip.Name" xml:space="preserve"> <data name="&gt;&gt;consentContextMenuStrip.Name" xml:space="preserve">
<value>consentContextMenuStrip</value> <value>consentContextMenuStrip</value>
@@ -463,13 +472,10 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="connectButton.Location" type="System.Drawing.Point, System.Drawing"> <data name="connectButton.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 4</value> <value>3, 3</value>
</data>
<data name="connectButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data> </data>
<data name="connectButton.Size" type="System.Drawing.Size, System.Drawing"> <data name="connectButton.Size" type="System.Drawing.Size, System.Drawing">
<value>119, 32</value> <value>89, 26</value>
</data> </data>
<data name="connectButton.TabIndex" type="System.Int32, mscorlib"> <data name="connectButton.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</value>
@@ -487,7 +493,7 @@
<value>topPanel</value> <value>topPanel</value>
</data> </data>
<data name="&gt;&gt;connectButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;connectButton.ZOrder" xml:space="preserve">
<value>8</value> <value>9</value>
</data> </data>
<data name="topPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms"> <data name="topPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value> <value>Top</value>
@@ -495,11 +501,8 @@
<data name="topPanel.Location" type="System.Drawing.Point, System.Drawing"> <data name="topPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="topPanel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data>
<data name="topPanel.Size" type="System.Drawing.Size, System.Drawing"> <data name="topPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>1392, 39</value> <value>1044, 32</value>
</data> </data>
<data name="topPanel.TabIndex" type="System.Int32, mscorlib"> <data name="topPanel.TabIndex" type="System.Int32, mscorlib">
<value>11</value> <value>11</value>
@@ -529,13 +532,10 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="consoleMessage.Location" type="System.Drawing.Point, System.Drawing"> <data name="consoleMessage.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 73</value> <value>12, 59</value>
</data>
<data name="consoleMessage.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 0, 4, 0</value>
</data> </data>
<data name="consoleMessage.Size" type="System.Drawing.Size, System.Drawing"> <data name="consoleMessage.Size" type="System.Drawing.Size, System.Drawing">
<value>86, 31</value> <value>70, 25</value>
</data> </data>
<data name="consoleMessage.TabIndex" type="System.Int32, mscorlib"> <data name="consoleMessage.TabIndex" type="System.Int32, mscorlib">
<value>12</value> <value>12</value>
@@ -565,13 +565,10 @@
<value>Fill</value> <value>Fill</value>
</data> </data>
<data name="resizeKvmControl.Location" type="System.Drawing.Point, System.Drawing"> <data name="resizeKvmControl.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 39</value> <value>0, 32</value>
</data>
<data name="resizeKvmControl.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data> </data>
<data name="resizeKvmControl.Size" type="System.Drawing.Size, System.Drawing"> <data name="resizeKvmControl.Size" type="System.Drawing.Size, System.Drawing">
<value>1392, 858</value> <value>1044, 695</value>
</data> </data>
<data name="resizeKvmControl.TabIndex" type="System.Int32, mscorlib"> <data name="resizeKvmControl.TabIndex" type="System.Int32, mscorlib">
<value>10</value> <value>10</value>
@@ -580,7 +577,7 @@
<value>resizeKvmControl</value> <value>resizeKvmControl</value>
</data> </data>
<data name="&gt;&gt;resizeKvmControl.Type" xml:space="preserve"> <data name="&gt;&gt;resizeKvmControl.Type" xml:space="preserve">
<value>MeshCentralRouter.KVMResizeControl, MeshCentralRouter, Version=1.8.8096.29519, Culture=neutral, PublicKeyToken=null</value> <value>MeshCentralRouter.KVMResizeControl, MeshCentralRouter, Version=1.8.8475.33354, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;resizeKvmControl.Parent" xml:space="preserve"> <data name="&gt;&gt;resizeKvmControl.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@@ -596,7 +593,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADs ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADs
DgAAAk1TRnQBSQFMAgEBBAEAARABAAEQAQABEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA DgAAAk1TRnQBSQFMAgEBBAEAATABAAEwAQABEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABIAMAAQEBAAEQBgABEP8A/wD/AP8A/wD/AP8A/wAiAAH3AV4BpQEUAaUBFAGlARQBpQEUAaUBFAGl AwABIAMAAQEBAAEQBgABEP8A/wD/AP8A/wD/AP8A/wAiAAH3AV4BpQEUAaUBFAGlARQBpQEUAaUBFAGl
ARQB9wFeEAAB9wFeAaUBFAGlARQBpQEUAaUBFAGlARQBpQEUAfcBXhAAAfcBXgGlARQBpQEUAaUBFAGl ARQB9wFeEAAB9wFeAaUBFAGlARQBpQEUAaUBFAGlARQBpQEUAfcBXhAAAfcBXgGlARQBpQEUAaUBFAGl
ARQBpQEUAaUBFAH3AV4QAAH3AV4BpQEUAaUBFAGlARQBpQEUAaUBFAGlARQB9wFeEAAB3gF7ARgBYwFr ARQBpQEUAaUBFAH3AV4QAAH3AV4BpQEUAaUBFAGlARQBpQEUAaUBFAGlARQB9wFeEAAB3gF7ARgBYwFr
@@ -666,10 +663,10 @@
<value>True</value> <value>True</value>
</metadata> </metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing"> <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>8, 16</value> <value>6, 13</value>
</data> </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>1392, 922</value> <value>1044, 749</value>
</data> </data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
@@ -1097,7 +1094,7 @@
</value> </value>
</data> </data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 2, 3, 2</value> <value>2, 2, 2, 2</value>
</data> </data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms"> <data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value> <value>CenterScreen</value>

View File

@@ -526,7 +526,10 @@ namespace MeshCentralRouter
private void MainForm_FormClosing(object sender, FormClosingEventArgs e) private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{ {
// ignore close-to-tray on debug-builds
#if !DEBUG
if ((notifyIcon.Visible == true) && (currentPanel == 4) && (forceExit == false)) { e.Cancel = true; Visible = false; } if ((notifyIcon.Visible == true) && (currentPanel == 4) && (forceExit == false)) { e.Cancel = true; Visible = false; }
#endif
Settings.SetRegValue("Location", Location.X + "," + Location.Y); Settings.SetRegValue("Location", Location.X + "," + Location.Y);
} }
@@ -1709,13 +1712,22 @@ namespace MeshCentralRouter
public void QuickMap(int protocol, int port, int appId, NodeClass node) public void QuickMap(int protocol, int port, int appId, NodeClass node)
{ {
NodeClass tmpNode = node;
if (node.mesh.relayid != null)
{
if (!meshcentral.nodes.ContainsKey(node.mesh.relayid))
return;
tmpNode = meshcentral.nodes[node.mesh.relayid];
}
// See if we already have the right port mapping // See if we already have the right port mapping
foreach (Control c in mapPanel.Controls) foreach (Control c in mapPanel.Controls)
{ {
if (c.GetType() == typeof(MapUserControl)) if (c.GetType() == typeof(MapUserControl))
{ {
MapUserControl cc = (MapUserControl)c; MapUserControl cc = (MapUserControl)c;
if ((cc.protocol == protocol) && (cc.remotePort == port) && (cc.appId == appId) && (cc.node == node)) if ((cc.remoteIP == node.host) && (cc.protocol == protocol) && (cc.remotePort == port) && (cc.appId == appId) && (cc.node == tmpNode))
{ {
// Found a match // Found a match
cc.appButton_Click(this, null); cc.appButton_Click(this, null);
@@ -1729,11 +1741,17 @@ namespace MeshCentralRouter
map.xdebug = debug; map.xdebug = debug;
map.inaddrany = false; // Loopback only map.inaddrany = false; // Loopback only
map.protocol = protocol; // 1 = TCP, 2 = UDP map.protocol = protocol; // 1 = TCP, 2 = UDP
if (node.mesh.relayid != null)
{
map.name = node.name;
map.remoteIP = node.host;
}
map.localPort = 0; // Any map.localPort = 0; // Any
map.remotePort = port; // HTTP map.remotePort = port; // HTTP
map.appId = appId; // 0 = Custom, 1 = HTTP, 2 = HTTPS, 3 = RDP, 4 = PuTTY, 5 = WinSCP map.appId = appId; // 0 = Custom, 1 = HTTP, 2 = HTTPS, 3 = RDP, 4 = PuTTY, 5 = WinSCP
map.appIdStr = null; map.appIdStr = null;
map.node = node; map.node = tmpNode;
if (authLoginUrl != null) { map.host = authLoginUrl.Host + ":" + ((authLoginUrl.Port > 0) ? authLoginUrl.Port : 443) + authLoginUrl.AbsolutePath.Replace("/control.ashx", ""); } else { map.host = serverNameComboBox.Text; } if (authLoginUrl != null) { map.host = authLoginUrl.Host + ":" + ((authLoginUrl.Port > 0) ? authLoginUrl.Port : 443) + authLoginUrl.AbsolutePath.Replace("/control.ashx", ""); } else { map.host = serverNameComboBox.Text; }
map.certhash = meshcentral.wshash; map.certhash = meshcentral.wshash;
map.parent = this; map.parent = this;

View File

@@ -494,6 +494,7 @@ namespace MeshCentralRouter
m.meshid = (string)mesh["_id"]; m.meshid = (string)mesh["_id"];
m.name = (string)mesh["name"]; m.name = (string)mesh["name"];
if (mesh.ContainsKey("desc")) { m.desc = (string)mesh["desc"]; } if (mesh.ContainsKey("desc")) { m.desc = (string)mesh["desc"]; }
if (mesh.ContainsKey("relayid")) { m.relayid = (string)mesh["relayid"]; }
m.rights = 0; m.rights = 0;
m.links = new Dictionary<string, ulong>(); m.links = new Dictionary<string, ulong>();
@@ -602,6 +603,7 @@ namespace MeshCentralRouter
} }
n.name = (string)node["name"]; n.name = (string)node["name"];
n.meshid = meshid; n.meshid = meshid;
if (node.ContainsKey("host")) { n.host = (string)node["host"]; }
if (node.ContainsKey("mtype")) if (node.ContainsKey("mtype"))
{ {

View File

@@ -167,7 +167,7 @@ namespace MeshCentralRouter
TcpClient client = null; TcpClient client = null;
try try
{ {
client = listener.EndAcceptTcpClient(ar); client = listener?.EndAcceptTcpClient(ar);
} }
catch (Exception) { exit = true; } catch (Exception) { exit = true; }
@@ -179,7 +179,7 @@ namespace MeshCentralRouter
try try
{ {
listener.BeginAcceptTcpClient(new AsyncCallback(AcceptTcpClientSink), null); listener?.BeginAcceptTcpClient(new AsyncCallback(AcceptTcpClientSink), null);
} }
catch (Exception) { exit = true; } catch (Exception) { exit = true; }
} }

View File

@@ -25,6 +25,7 @@ namespace MeshCentralRouter
public int icon; public int icon;
public string nodeid; public string nodeid;
public string meshid; public string meshid;
public string host;
public int agentid; public int agentid;
public int agentcaps; public int agentcaps;
public int conn; public int conn;
@@ -60,6 +61,7 @@ namespace MeshCentralRouter
public string name; public string name;
public string meshid; public string meshid;
public string desc; public string desc;
public string relayid;
public int type; public int type;
public ulong rights; public ulong rights;
public Dictionary<string, ulong> links; public Dictionary<string, ulong> links;

View File

@@ -270,10 +270,10 @@ namespace MeshCentralRouter
Uri proxyUri = Win32Api.GetProxy(url); Uri proxyUri = Win32Api.GetProxy(url);
string userCreds = proxyUri.UserInfo; string userCreds = proxyUri.UserInfo;
string basicAuth = ""; string basicAuth = "";
if (userCreds.Length > 0) if (proxyUri?.UserInfo != null)
{ {
// Base64 encode for basic authentication // Base64 encode for basic authentication
userCreds = System.Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes(userCreds)); string userCreds = System.Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes(proxyUri.UserInfo));
basicAuth = "\r\nProxy-Authorization: Basic " + userCreds; basicAuth = "\r\nProxy-Authorization: Basic " + userCreds;
} }