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

add chat to right click on device

Signed-off-by: Simon Smith <simonsmith5521@gmail.com>
This commit is contained in:
Simon Smith
2024-08-06 11:03:02 +01:00
parent c3e72182bb
commit 38580b4d0c
3 changed files with 139 additions and 72 deletions

View File

@@ -91,9 +91,6 @@
this.devicesTabPage = new System.Windows.Forms.TabPage();
this.devicesPanel = new System.Windows.Forms.Panel();
this.cancelAutoCloseButton1 = new System.Windows.Forms.Button();
this.devicesListView = new MeshCentralRouter.ListViewExtended();
this.nameColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.stateColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.devicesContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
this.addMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addRelayMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -141,6 +138,10 @@
this.customAppsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openMapFileDialog = new System.Windows.Forms.OpenFileDialog();
this.saveMapFileDialog = new System.Windows.Forms.SaveFileDialog();
this.chatToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.devicesListView = new MeshCentralRouter.ListViewExtended();
this.nameColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.stateColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.panel5.SuspendLayout();
this.mainPanel.SuspendLayout();
this.mainTabControl.SuspendLayout();
@@ -634,37 +635,6 @@
this.cancelAutoCloseButton1.Click += new System.EventHandler(this.cancelAutoCloseButton_Click);
this.cancelAutoCloseButton1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.MainForm_KeyPress);
//
// devicesListView
//
this.devicesListView.BackColor = System.Drawing.SystemColors.Window;
this.devicesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.nameColumnHeader,
this.stateColumnHeader});
this.devicesListView.ContextMenuStrip = this.devicesContextMenuStrip;
this.devicesListView.FullRowSelect = true;
this.devicesListView.GridLines = true;
this.devicesListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.devicesListView.HideSelection = false;
this.devicesListView.LargeImageList = this.devicesImageList;
resources.ApplyResources(this.devicesListView, "devicesListView");
this.devicesListView.MultiSelect = false;
this.devicesListView.Name = "devicesListView";
this.devicesListView.SmallImageList = this.devicesImageList;
this.devicesListView.Sorting = System.Windows.Forms.SortOrder.Ascending;
this.devicesListView.UseCompatibleStateImageBehavior = false;
this.devicesListView.View = System.Windows.Forms.View.Details;
this.devicesListView.Click += new System.EventHandler(this.devicesListView_Click);
this.devicesListView.DoubleClick += new System.EventHandler(this.devicesListView_DoubleClick);
this.devicesListView.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.MainForm_KeyPress);
//
// nameColumnHeader
//
resources.ApplyResources(this.nameColumnHeader, "nameColumnHeader");
//
// stateColumnHeader
//
resources.ApplyResources(this.stateColumnHeader, "stateColumnHeader");
//
// devicesContextMenuStrip
//
this.devicesContextMenuStrip.ImageScalingSize = new System.Drawing.Size(24, 24);
@@ -679,7 +649,8 @@
this.rdpToolStripMenuItem,
this.sshToolStripMenuItem,
this.scpToolStripMenuItem,
this.wolToolStripMenuItem});
this.wolToolStripMenuItem,
this.chatToolStripMenuItem});
this.devicesContextMenuStrip.Name = "devicesContextMenuStrip";
resources.ApplyResources(this.devicesContextMenuStrip, "devicesContextMenuStrip");
this.devicesContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.devicesContextMenuStrip_Opening);
@@ -1007,6 +978,43 @@
this.saveMapFileDialog.DefaultExt = "mcrouter";
resources.ApplyResources(this.saveMapFileDialog, "saveMapFileDialog");
//
// chatToolStripMenuItem
//
this.chatToolStripMenuItem.Name = "chatToolStripMenuItem";
resources.ApplyResources(this.chatToolStripMenuItem, "chatToolStripMenuItem");
this.chatToolStripMenuItem.Click += new System.EventHandler(this.chatToolStripMenuItem_Click);
//
// devicesListView
//
this.devicesListView.BackColor = System.Drawing.SystemColors.Window;
this.devicesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.nameColumnHeader,
this.stateColumnHeader});
this.devicesListView.ContextMenuStrip = this.devicesContextMenuStrip;
this.devicesListView.FullRowSelect = true;
this.devicesListView.GridLines = true;
this.devicesListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.devicesListView.HideSelection = false;
this.devicesListView.LargeImageList = this.devicesImageList;
resources.ApplyResources(this.devicesListView, "devicesListView");
this.devicesListView.MultiSelect = false;
this.devicesListView.Name = "devicesListView";
this.devicesListView.SmallImageList = this.devicesImageList;
this.devicesListView.Sorting = System.Windows.Forms.SortOrder.Ascending;
this.devicesListView.UseCompatibleStateImageBehavior = false;
this.devicesListView.View = System.Windows.Forms.View.Details;
this.devicesListView.Click += new System.EventHandler(this.devicesListView_Click);
this.devicesListView.DoubleClick += new System.EventHandler(this.devicesListView_DoubleClick);
this.devicesListView.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.MainForm_KeyPress);
//
// nameColumnHeader
//
resources.ApplyResources(this.nameColumnHeader, "nameColumnHeader");
//
// stateColumnHeader
//
resources.ApplyResources(this.stateColumnHeader, "stateColumnHeader");
//
// MainForm
//
resources.ApplyResources(this, "$this");
@@ -1168,6 +1176,7 @@
private System.Windows.Forms.ToolStripMenuItem customAppsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem customAppsToolStripMenuItem1;
private System.Windows.Forms.Button msgTokenButton;
private System.Windows.Forms.ToolStripMenuItem chatToolStripMenuItem;
}
}

View File

@@ -2115,6 +2115,7 @@ namespace MeshCentralRouter
sshToolStripMenuItem.Visible = false;
scpToolStripMenuItem.Visible = false;
wolToolStripMenuItem.Visible = true; // Wol not allowed for local devices
chatToolStripMenuItem.Visible = false;
}
else{ // Agent connected or local device
if (node.agentid < 6)
@@ -2134,6 +2135,7 @@ namespace MeshCentralRouter
addMapToolStripMenuItem.Visible = true;
httpToolStripMenuItem.Visible = true;
httpsToolStripMenuItem.Visible = true;
chatToolStripMenuItem.Visible = true;
addRelayMapToolStripMenuItem.Visible = (node.mtype != 3); // Relay mappings are not allowed for local devices
remoteDesktopToolStripMenuItem.Visible = ((node.agentcaps & 1) != 0); // Only display remote desktop if it's supported by the agent (1 = Desktop)
remoteFilesToolStripMenuItem.Visible = ((node.agentcaps & 4) != 0); // Only display remote desktop if it's supported by the agent (4 = Files)
@@ -2428,6 +2430,47 @@ namespace MeshCentralRouter
return r;
}
private void chatToolStripMenuItem_Click(object sender, EventArgs e)
{
if (devicesListView.SelectedItems.Count != 1) { return; }
ListViewItem selecteditem = devicesListView.SelectedItems[0];
NodeClass node = (NodeClass)selecteditem.Tag;
if (((node.conn & 1) == 0) && (node.mtype != 3)) { return; } // Agent not connected on this device & not local device
meshcentral.sendCommand("{\"action\":\"meshmessenger\",\"nodeid\":\"" + node.nodeid + "\"}");
string url = "https://" + meshcentral.serverinfo["name"];
if (meshcentral.serverinfo.TryGetValue("port", out var value1) && value1 is int portNumber && portNumber != 443)
{
url += ":" + portNumber;
}
if (meshcentral.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(meshcentral.userid) + "&title=" + node.name;
if ((meshcentral.authCookie != null) && (meshcentral.authCookie != "")) { url += "&auth=" + meshcentral.authCookie; }
try
{
if (meshcentral.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 (meshcentral.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 (meshcentral.debug) { try { File.AppendAllText("debug.log", "Failed to open chat window locally\r\n"); } catch (Exception) { } }
}
}
}
/*
private delegate void displayMessageHandler(string msg, int buttons, string extra, int progress);
private void displayMessage(string msg, int buttons = 0, string extra = "", int progress = 0)

View File

@@ -1474,7 +1474,7 @@
<value>NoControl</value>
</data>
<data name="cancelAutoCloseButton1.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 180</value>
<value>6, 176</value>
</data>
<data name="cancelAutoCloseButton1.Size" type="System.Drawing.Size, System.Drawing">
<value>168, 35</value>
@@ -1519,19 +1519,19 @@
<value>Segoe UI, 9pt, style=Bold</value>
</data>
<data name="addMapToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 22</value>
<value>180, 22</value>
</data>
<data name="addMapToolStripMenuItem.Text" xml:space="preserve">
<value>Add &amp;Map...</value>
</data>
<data name="addRelayMapToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 22</value>
<value>180, 22</value>
</data>
<data name="addRelayMapToolStripMenuItem.Text" xml:space="preserve">
<value>Add &amp;Relay Map...</value>
</data>
<data name="toolStripMenuItem3.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 6</value>
<value>177, 6</value>
</data>
<data name="askConsentBarToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>171, 22</value>
@@ -1552,55 +1552,61 @@
<value>Privacy Bar</value>
</data>
<data name="remoteDesktopToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 22</value>
<value>180, 22</value>
</data>
<data name="remoteDesktopToolStripMenuItem.Text" xml:space="preserve">
<value>Remote Desktop...</value>
</data>
<data name="remoteFilesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 22</value>
<value>180, 22</value>
</data>
<data name="remoteFilesToolStripMenuItem.Text" xml:space="preserve">
<value>Remote Files...</value>
</data>
<data name="httpToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 22</value>
<value>180, 22</value>
</data>
<data name="httpToolStripMenuItem.Text" xml:space="preserve">
<value>HTTP</value>
</data>
<data name="httpsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 22</value>
<value>180, 22</value>
</data>
<data name="httpsToolStripMenuItem.Text" xml:space="preserve">
<value>HTTPS</value>
</data>
<data name="rdpToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 22</value>
<value>180, 22</value>
</data>
<data name="rdpToolStripMenuItem.Text" xml:space="preserve">
<value>RDP</value>
</data>
<data name="sshToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 22</value>
<value>180, 22</value>
</data>
<data name="sshToolStripMenuItem.Text" xml:space="preserve">
<value>SSH</value>
</data>
<data name="scpToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 22</value>
<value>180, 22</value>
</data>
<data name="scpToolStripMenuItem.Text" xml:space="preserve">
<value>SCP</value>
</data>
<data name="wolToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 22</value>
<value>180, 22</value>
</data>
<data name="wolToolStripMenuItem.Text" xml:space="preserve">
<value>Wake Up...</value>
</data>
<data name="chatToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>180, 22</value>
</data>
<data name="chatToolStripMenuItem.Text" xml:space="preserve">
<value>Chat</value>
</data>
<data name="devicesContextMenuStrip.Size" type="System.Drawing.Size, System.Drawing">
<value>171, 230</value>
<value>181, 274</value>
</data>
<data name="&gt;&gt;devicesContextMenuStrip.Name" xml:space="preserve">
<value>devicesContextMenuStrip</value>
@@ -1616,7 +1622,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADg
HQAAAk1TRnQBSQFMAgEBEAEAATABAQEwAQEBEAEAARABAAT/ARkBAAj/AUIBTQE2BwABNgMAASgDAAFA
HQAAAk1TRnQBSQFMAgEBEAEAAUABAQFAAQEBEAEAARABAAT/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
@@ -1762,7 +1768,7 @@
<value>devicesListView</value>
</data>
<data name="&gt;&gt;devicesListView.Type" xml:space="preserve">
<value>MeshCentralRouter.ListViewExtended, MeshCentralRouter, Version=1.8.8680.22147, Culture=neutral, PublicKeyToken=null</value>
<value>MeshCentralRouter.ListViewExtended, MeshCentralRouter, Version=1.8.8984.19540, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;devicesListView.Parent" xml:space="preserve">
<value>devicesPanel</value>
@@ -1783,7 +1789,7 @@
<value>2, 88</value>
</data>
<data name="noSearchResultsLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>362, 52</value>
<value>358, 52</value>
</data>
<data name="noSearchResultsLabel.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
@@ -1822,7 +1828,7 @@
<value>2, 88</value>
</data>
<data name="noDevicesLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>362, 52</value>
<value>358, 52</value>
</data>
<data name="noDevicesLabel.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
@@ -1900,7 +1906,7 @@
<value>NoControl</value>
</data>
<data name="cancelAutoCloseButton2.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 182</value>
<value>4, 179</value>
</data>
<data name="cancelAutoCloseButton2.Size" type="System.Drawing.Size, System.Drawing">
<value>168, 35</value>
@@ -1945,7 +1951,7 @@
<value>6, 79</value>
</data>
<data name="noMapLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>436, 52</value>
<value>430, 52</value>
</data>
<data name="noMapLabel.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
@@ -1974,7 +1980,7 @@ Click "Add" to get started.</value>
<value>0, 0</value>
</data>
<data name="mapPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>472, 221</value>
<value>470, 218</value>
</data>
<data name="mapPanel.TabIndex" type="System.Int32, mscorlib">
<value>49</value>
@@ -1998,7 +2004,7 @@ Click "Add" to get started.</value>
<value>NoControl</value>
</data>
<data name="settingsPictureBox.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 226</value>
<value>1, 223</value>
</data>
<data name="settingsPictureBox.Size" type="System.Drawing.Size, System.Drawing">
<value>20, 20</value>
@@ -2025,7 +2031,7 @@ Click "Add" to get started.</value>
<value>NoControl</value>
</data>
<data name="helpPictureBox.Location" type="System.Drawing.Point, System.Drawing">
<value>240, 226</value>
<value>238, 223</value>
</data>
<data name="helpPictureBox.Size" type="System.Drawing.Size, System.Drawing">
<value>20, 20</value>
@@ -2055,7 +2061,7 @@ Click "Add" to get started.</value>
<value>NoControl</value>
</data>
<data name="addButton.Location" type="System.Drawing.Point, System.Drawing">
<value>372, 223</value>
<value>370, 220</value>
</data>
<data name="addButton.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
@@ -2088,7 +2094,7 @@ Click "Add" to get started.</value>
<value>NoControl</value>
</data>
<data name="addRelayButton.Location" type="System.Drawing.Point, System.Drawing">
<value>266, 223</value>
<value>264, 220</value>
</data>
<data name="addRelayButton.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
@@ -2118,7 +2124,7 @@ Click "Add" to get started.</value>
<value>3, 3, 3, 3</value>
</data>
<data name="portMapTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>472, 253</value>
<value>470, 250</value>
</data>
<data name="portMapTabPage.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@@ -5934,6 +5940,9 @@ Click "Add" to get started.</value>
AADAPwAAwD8AAMA/AADAPwAA
</value>
</data>
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value> MeshCentral Router</value>
</data>
@@ -5985,18 +5994,6 @@ Click "Add" to get started.</value>
<data name="&gt;&gt;customAppsToolStripMenuItem1.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;nameColumnHeader.Name" xml:space="preserve">
<value>nameColumnHeader</value>
</data>
<data name="&gt;&gt;nameColumnHeader.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;stateColumnHeader.Name" xml:space="preserve">
<value>stateColumnHeader</value>
</data>
<data name="&gt;&gt;stateColumnHeader.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;addMapToolStripMenuItem.Name" xml:space="preserve">
<value>addMapToolStripMenuItem</value>
</data>
@@ -6171,6 +6168,24 @@ Click "Add" to get started.</value>
<data name="&gt;&gt;saveMapFileDialog.Type" xml:space="preserve">
<value>System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;chatToolStripMenuItem.Name" xml:space="preserve">
<value>chatToolStripMenuItem</value>
</data>
<data name="&gt;&gt;chatToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;nameColumnHeader.Name" xml:space="preserve">
<value>nameColumnHeader</value>
</data>
<data name="&gt;&gt;nameColumnHeader.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;stateColumnHeader.Name" xml:space="preserve">
<value>stateColumnHeader</value>
</data>
<data name="&gt;&gt;stateColumnHeader.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>MainForm</value>
</data>