1
0
mirror of https://github.com/Ylianst/MeshCentralRouter synced 2025-12-18 01:03:16 +00:00

Fixed custom apps.

This commit is contained in:
Ylian Saint-Hilaire
2022-05-13 00:06:58 -07:00
parent 957bdb2648
commit f6c44b1d42
7 changed files with 162 additions and 81 deletions

View File

@@ -38,9 +38,11 @@
this.commandTextBox = new System.Windows.Forms.TextBox(); this.commandTextBox = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label();
this.groupBox1 = new System.Windows.Forms.GroupBox(); this.groupBox1 = new System.Windows.Forms.GroupBox();
this.label4 = new System.Windows.Forms.Label();
this.selectFileButton = new System.Windows.Forms.Button(); this.selectFileButton = new System.Windows.Forms.Button();
this.label4 = new System.Windows.Forms.Label();
this.openFileDialog = new System.Windows.Forms.OpenFileDialog(); this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
this.label5 = new System.Windows.Forms.Label();
this.argsTextBox = new System.Windows.Forms.TextBox();
this.groupBox1.SuspendLayout(); this.groupBox1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
@@ -48,7 +50,7 @@
// //
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.okButton.ImeMode = System.Windows.Forms.ImeMode.NoControl; this.okButton.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.okButton.Location = new System.Drawing.Point(244, 160); this.okButton.Location = new System.Drawing.Point(244, 190);
this.okButton.Name = "okButton"; this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(75, 23); this.okButton.Size = new System.Drawing.Size(75, 23);
this.okButton.TabIndex = 4; this.okButton.TabIndex = 4;
@@ -61,7 +63,7 @@
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.ImeMode = System.Windows.Forms.ImeMode.NoControl; this.cancelButton.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.cancelButton.Location = new System.Drawing.Point(325, 160); this.cancelButton.Location = new System.Drawing.Point(325, 190);
this.cancelButton.Name = "cancelButton"; this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(75, 23); this.cancelButton.Size = new System.Drawing.Size(75, 23);
this.cancelButton.TabIndex = 5; this.cancelButton.TabIndex = 5;
@@ -116,14 +118,17 @@
this.label3.AutoSize = true; this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(6, 74); this.label3.Location = new System.Drawing.Point(6, 74);
this.label3.Name = "label3"; this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(54, 13); this.label3.Size = new System.Drawing.Size(85, 13);
this.label3.TabIndex = 10; this.label3.TabIndex = 10;
this.label3.Text = "Command"; this.label3.Text = "Executable Path";
// //
// groupBox1 // groupBox1
// //
this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.groupBox1.Controls.Add(this.label5);
this.groupBox1.Controls.Add(this.argsTextBox);
this.groupBox1.Controls.Add(this.selectFileButton); this.groupBox1.Controls.Add(this.selectFileButton);
this.groupBox1.Controls.Add(this.nameTextBox); this.groupBox1.Controls.Add(this.nameTextBox);
this.groupBox1.Controls.Add(this.label3); this.groupBox1.Controls.Add(this.label3);
@@ -131,29 +136,16 @@
this.groupBox1.Controls.Add(this.label2); this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.protocolTextBox); this.groupBox1.Controls.Add(this.protocolTextBox);
this.groupBox1.Controls.Add(this.label1); this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Location = new System.Drawing.Point(12, 56); this.groupBox1.Location = new System.Drawing.Point(12, 57);
this.groupBox1.Name = "groupBox1"; this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(388, 98); this.groupBox1.Size = new System.Drawing.Size(388, 127);
this.groupBox1.TabIndex = 12; this.groupBox1.TabIndex = 12;
this.groupBox1.TabStop = false; this.groupBox1.TabStop = false;
this.groupBox1.Text = "Application"; this.groupBox1.Text = "Application";
//
// label4
//
this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.label4.Location = new System.Drawing.Point(12, 9);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(388, 44);
this.label4.TabIndex = 13;
this.label4.Text = "Enter a friendly name, protocol (like HTTP, RDP, VNC) and the command line and ar" +
"guments to run the application. In the command line, use %L for address and %P f" +
"or connection port.";
// //
// selectFileButton // selectFileButton
// //
this.selectFileButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.selectFileButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.selectFileButton.Location = new System.Drawing.Point(360, 71); this.selectFileButton.Location = new System.Drawing.Point(360, 71);
this.selectFileButton.Name = "selectFileButton"; this.selectFileButton.Name = "selectFileButton";
this.selectFileButton.Size = new System.Drawing.Size(21, 20); this.selectFileButton.Size = new System.Drawing.Size(21, 20);
@@ -161,20 +153,49 @@
this.selectFileButton.Text = "..."; this.selectFileButton.Text = "...";
this.selectFileButton.UseVisualStyleBackColor = true; this.selectFileButton.UseVisualStyleBackColor = true;
this.selectFileButton.Click += new System.EventHandler(this.selectFileButton_Click); this.selectFileButton.Click += new System.EventHandler(this.selectFileButton_Click);
//
// label4
//
this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.label4.Location = new System.Drawing.Point(12, 9);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(388, 45);
this.label4.TabIndex = 13;
this.label4.Text = "Enter a friendly name, protocol (like HTTP, RDP, VNC) and the command line and ar" +
"guments to run the application. In the arguments, use %L for address, %P for con" +
"nection port and %N for computer name.";
// //
// openFileDialog // openFileDialog
// //
this.openFileDialog.DefaultExt = "exe"; this.openFileDialog.DefaultExt = "exe";
this.openFileDialog.Filter = "Executable|*.exe"; this.openFileDialog.Filter = "Executable|*.exe|All Files|*.*";
this.openFileDialog.Title = "Select Application Executable"; this.openFileDialog.Title = "Select Application Executable";
// //
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(6, 100);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(57, 13);
this.label5.TabIndex = 13;
this.label5.Text = "Arguments";
//
// argsTextBox
//
this.argsTextBox.Location = new System.Drawing.Point(116, 97);
this.argsTextBox.Name = "argsTextBox";
this.argsTextBox.Size = new System.Drawing.Size(265, 20);
this.argsTextBox.TabIndex = 14;
this.argsTextBox.TextChanged += new System.EventHandler(this.nameTextBox_TextChanged);
//
// CustomAppsAddForm // CustomAppsAddForm
// //
this.AcceptButton = this.okButton; this.AcceptButton = this.okButton;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.cancelButton; this.CancelButton = this.cancelButton;
this.ClientSize = new System.Drawing.Size(412, 195); this.ClientSize = new System.Drawing.Size(412, 225);
this.Controls.Add(this.label4); this.Controls.Add(this.label4);
this.Controls.Add(this.groupBox1); this.Controls.Add(this.groupBox1);
this.Controls.Add(this.okButton); this.Controls.Add(this.okButton);
@@ -207,5 +228,7 @@
private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label4;
private System.Windows.Forms.Button selectFileButton; private System.Windows.Forms.Button selectFileButton;
private System.Windows.Forms.OpenFileDialog openFileDialog; private System.Windows.Forms.OpenFileDialog openFileDialog;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox argsTextBox;
} }
} }

View File

@@ -1,11 +1,5 @@
using System; using System;
using System.Collections.Generic; using System.IO;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace MeshCentralRouter namespace MeshCentralRouter
@@ -27,6 +21,11 @@ namespace MeshCentralRouter
get { return commandTextBox.Text; } get { return commandTextBox.Text; }
set { commandTextBox.Text = value; updateInfo(); } set { commandTextBox.Text = value; updateInfo(); }
} }
public string appArgs
{
get { return argsTextBox.Text; }
set { argsTextBox.Text = value; updateInfo(); }
}
public CustomAppsAddForm() public CustomAppsAddForm()
{ {
@@ -35,7 +34,7 @@ namespace MeshCentralRouter
public void updateInfo() public void updateInfo()
{ {
okButton.Enabled = (nameTextBox.Text.Length > 0) && (protocolTextBox.Text.Length > 0) && (commandTextBox.Text.Length > 0) && (nameTextBox.Text.IndexOf(' ') == -1) && (protocolTextBox.Text.IndexOf(' ') == -1); okButton.Enabled = (nameTextBox.Text.Length > 0) && (protocolTextBox.Text.Length > 0) && (commandTextBox.Text.Length > 0) && (nameTextBox.Text.IndexOf(' ') == -1) && (protocolTextBox.Text.IndexOf(' ') == -1) && (File.Exists(commandTextBox.Text));
} }
private void CustomAppsAddForm_Load(object sender, EventArgs e) private void CustomAppsAddForm_Load(object sender, EventArgs e)

View File

@@ -1,13 +1,8 @@
using System; 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;
using System.Diagnostics; using System.Diagnostics;
using System.Windows.Forms;
using System.ComponentModel;
using System.Collections.Generic;
namespace MeshCentralRouter namespace MeshCentralRouter
{ {
@@ -23,7 +18,17 @@ namespace MeshCentralRouter
private void CustomAppsForm_Load(object sender, EventArgs e) private void CustomAppsForm_Load(object sender, EventArgs e)
{ {
if (apps != null) { foreach (string[] app in apps) { mainListView.Items.Add(new ListViewItem(app)); } } if (apps != null) {
foreach (string[] app in apps) {
string[] x = new string[5];
x[0] = app[0];
x[1] = app[1];
x[2] = "\"" + app[2] + "\" " + app[3];
x[3] = app[2];
x[4] = app[3];
mainListView.Items.Add(new ListViewItem(x));
}
}
UpdateInfo(); UpdateInfo();
} }
@@ -32,10 +37,11 @@ namespace MeshCentralRouter
List<string[]> r = new List<string[]>(); List<string[]> r = new List<string[]>();
foreach (ListViewItem l in mainListView.Items) foreach (ListViewItem l in mainListView.Items)
{ {
string[] x = new string[3]; string[] x = new string[4];
x[0] = l.SubItems[0].Text; x[0] = l.SubItems[0].Text;
x[1] = l.SubItems[1].Text.ToLower(); x[1] = l.SubItems[1].Text.ToLower();
x[2] = l.SubItems[2].Text; x[2] = l.SubItems[3].Text;
x[3] = l.SubItems[4].Text;
r.Add(x); r.Add(x);
} }
return r; return r;
@@ -52,10 +58,12 @@ namespace MeshCentralRouter
foreach (ListViewItem l in list) { mainListView.Items.Remove(l); } foreach (ListViewItem l in list) { mainListView.Items.Remove(l); }
// Add the new protocol // Add the new protocol
string[] x = new string[3]; string[] x = new string[5];
x[0] = f.appName; x[0] = f.appName;
x[1] = f.appProtocol.ToLower(); x[1] = f.appProtocol.ToLower();
x[2] = f.appCommand; x[2] = "\"" + f.appCommand + "\" " + f.appArgs;
x[3] = f.appCommand;
x[4] = f.appArgs;
mainListView.Items.Add(new ListViewItem(x)); mainListView.Items.Add(new ListViewItem(x));
} }
} }
@@ -99,8 +107,8 @@ namespace MeshCentralRouter
{ {
if (mainListView.SelectedItems.Count != 1) return; if (mainListView.SelectedItems.Count != 1) return;
ListViewItem i = mainListView.SelectedItems[0]; ListViewItem i = mainListView.SelectedItems[0];
CustomAppsRunForm f = new CustomAppsRunForm(i.SubItems[2].Text); CustomAppsRunForm f = new CustomAppsRunForm(i.SubItems[3].Text, i.SubItems[4].Text);
if (f.ShowDialog(this) == DialogResult.OK) { Process.Start(f.getFinalCommand()); } if (f.ShowDialog(this) == DialogResult.OK) { Process.Start(i.SubItems[3].Text, f.getFinalArgs()); }
} }
private void editToolStripMenuItem_Click(object sender, EventArgs e) private void editToolStripMenuItem_Click(object sender, EventArgs e)
@@ -110,7 +118,8 @@ namespace MeshCentralRouter
CustomAppsAddForm f = new CustomAppsAddForm(); CustomAppsAddForm f = new CustomAppsAddForm();
f.appName = i.SubItems[0].Text; f.appName = i.SubItems[0].Text;
f.appProtocol = i.SubItems[1].Text; f.appProtocol = i.SubItems[1].Text;
f.appCommand = i.SubItems[2].Text; f.appCommand = i.SubItems[3].Text;
f.appArgs = i.SubItems[4].Text;
if (f.ShowDialog(this) == DialogResult.OK) if (f.ShowDialog(this) == DialogResult.OK)
{ {
// Remove any matching protocol // Remove any matching protocol
@@ -119,13 +128,14 @@ namespace MeshCentralRouter
foreach (ListViewItem l in list) { mainListView.Items.Remove(l); } foreach (ListViewItem l in list) { mainListView.Items.Remove(l); }
// Add the new protocol // Add the new protocol
string[] x = new string[3]; string[] x = new string[5];
x[0] = f.appName; x[0] = f.appName;
x[1] = f.appProtocol.ToLower(); x[1] = f.appProtocol.ToLower();
x[2] = f.appCommand; x[2] = "\"" + f.appCommand + "\" " + f.appArgs;
x[3] = f.appCommand;
x[4] = f.appArgs;
mainListView.Items.Add(new ListViewItem(x)); mainListView.Items.Add(new ListViewItem(x));
} }
} }
} }
} }

View File

@@ -39,6 +39,10 @@
this.okButton = new System.Windows.Forms.Button(); this.okButton = new System.Windows.Forms.Button();
this.cancelButton = new System.Windows.Forms.Button(); this.cancelButton = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.argsTextBox = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.nameTextBox = new System.Windows.Forms.TextBox();
this.label6 = new System.Windows.Forms.Label();
this.groupBox1.SuspendLayout(); this.groupBox1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
@@ -47,6 +51,10 @@
this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.groupBox1.Controls.Add(this.nameTextBox);
this.groupBox1.Controls.Add(this.label6);
this.groupBox1.Controls.Add(this.argsTextBox);
this.groupBox1.Controls.Add(this.label5);
this.groupBox1.Controls.Add(this.portTextBox); this.groupBox1.Controls.Add(this.portTextBox);
this.groupBox1.Controls.Add(this.label4); this.groupBox1.Controls.Add(this.label4);
this.groupBox1.Controls.Add(this.addressTextBox); this.groupBox1.Controls.Add(this.addressTextBox);
@@ -55,16 +63,16 @@
this.groupBox1.Controls.Add(this.label2); this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Location = new System.Drawing.Point(12, 49); this.groupBox1.Location = new System.Drawing.Point(12, 49);
this.groupBox1.Name = "groupBox1"; this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(382, 101); this.groupBox1.Size = new System.Drawing.Size(382, 155);
this.groupBox1.TabIndex = 0; this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false; this.groupBox1.TabStop = false;
this.groupBox1.Text = "Application Command Line"; this.groupBox1.Text = "Application Command";
// //
// portTextBox // portTextBox
// //
this.portTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.portTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.portTextBox.Location = new System.Drawing.Point(116, 71); this.portTextBox.Location = new System.Drawing.Point(116, 97);
this.portTextBox.Name = "portTextBox"; this.portTextBox.Name = "portTextBox";
this.portTextBox.Size = new System.Drawing.Size(260, 20); this.portTextBox.Size = new System.Drawing.Size(260, 20);
this.portTextBox.TabIndex = 13; this.portTextBox.TabIndex = 13;
@@ -74,17 +82,17 @@
// label4 // label4
// //
this.label4.AutoSize = true; this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(6, 74); this.label4.Location = new System.Drawing.Point(6, 100);
this.label4.Name = "label4"; this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(26, 13); this.label4.Size = new System.Drawing.Size(44, 13);
this.label4.TabIndex = 12; this.label4.TabIndex = 12;
this.label4.Text = "Port"; this.label4.Text = "Port %P";
// //
// addressTextBox // addressTextBox
// //
this.addressTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.addressTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.addressTextBox.Location = new System.Drawing.Point(116, 45); this.addressTextBox.Location = new System.Drawing.Point(116, 71);
this.addressTextBox.Name = "addressTextBox"; this.addressTextBox.Name = "addressTextBox";
this.addressTextBox.Size = new System.Drawing.Size(260, 20); this.addressTextBox.Size = new System.Drawing.Size(260, 20);
this.addressTextBox.TabIndex = 11; this.addressTextBox.TabIndex = 11;
@@ -94,11 +102,11 @@
// label3 // label3
// //
this.label3.AutoSize = true; this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(6, 48); this.label3.Location = new System.Drawing.Point(6, 74);
this.label3.Name = "label3"; this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(45, 13); this.label3.Size = new System.Drawing.Size(62, 13);
this.label3.TabIndex = 10; this.label3.TabIndex = 10;
this.label3.Text = "Address"; this.label3.Text = "Address %L";
// //
// commandTextBox // commandTextBox
// //
@@ -122,7 +130,7 @@
// okButton // okButton
// //
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.okButton.Location = new System.Drawing.Point(238, 156); this.okButton.Location = new System.Drawing.Point(238, 210);
this.okButton.Name = "okButton"; this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(75, 23); this.okButton.Size = new System.Drawing.Size(75, 23);
this.okButton.TabIndex = 3; this.okButton.TabIndex = 3;
@@ -134,7 +142,7 @@
// //
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.Location = new System.Drawing.Point(319, 156); this.cancelButton.Location = new System.Drawing.Point(319, 210);
this.cancelButton.Name = "cancelButton"; this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(75, 23); this.cancelButton.Size = new System.Drawing.Size(75, 23);
this.cancelButton.TabIndex = 2; this.cancelButton.TabIndex = 2;
@@ -150,8 +158,46 @@
this.label1.Name = "label1"; this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(382, 35); this.label1.Size = new System.Drawing.Size(382, 35);
this.label1.TabIndex = 4; this.label1.TabIndex = 4;
this.label1.Text = "Test that the application runs correctly by specifying and address and port and c" + this.label1.Text = "Test that the application runs correctly by specifying and address, port and name" +
"lick ok to run the application."; ". Then click ok to run the application.";
//
// argsTextBox
//
this.argsTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.argsTextBox.Location = new System.Drawing.Point(116, 45);
this.argsTextBox.Name = "argsTextBox";
this.argsTextBox.ReadOnly = true;
this.argsTextBox.Size = new System.Drawing.Size(260, 20);
this.argsTextBox.TabIndex = 15;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(6, 48);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(57, 13);
this.label5.TabIndex = 14;
this.label5.Text = "Arguments";
//
// nameTextBox
//
this.nameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.nameTextBox.Location = new System.Drawing.Point(116, 123);
this.nameTextBox.Name = "nameTextBox";
this.nameTextBox.Size = new System.Drawing.Size(260, 20);
this.nameTextBox.TabIndex = 17;
this.nameTextBox.Text = "MyComputer";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(6, 126);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(54, 13);
this.label6.TabIndex = 16;
this.label6.Text = "Name %N";
// //
// CustomAppsRunForm // CustomAppsRunForm
// //
@@ -159,7 +205,7 @@
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.cancelButton; this.CancelButton = this.cancelButton;
this.ClientSize = new System.Drawing.Size(406, 191); this.ClientSize = new System.Drawing.Size(406, 245);
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.Controls.Add(this.okButton); this.Controls.Add(this.okButton);
this.Controls.Add(this.cancelButton); this.Controls.Add(this.cancelButton);
@@ -189,5 +235,9 @@
private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox commandTextBox; private System.Windows.Forms.TextBox commandTextBox;
private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox argsTextBox;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox nameTextBox;
private System.Windows.Forms.Label label6;
} }
} }

View File

@@ -13,21 +13,24 @@ namespace MeshCentralRouter
public partial class CustomAppsRunForm : Form public partial class CustomAppsRunForm : Form
{ {
private string command = null; private string command = null;
private string args = null;
public CustomAppsRunForm(string command) public CustomAppsRunForm(string command, string args)
{ {
this.command = command; this.command = command;
this.args = args;
InitializeComponent(); InitializeComponent();
} }
public string getFinalCommand() public string getFinalArgs()
{ {
return command.Replace("%L", addressTextBox.Text).Replace("%P", portTextBox.Text); return args.Replace("%L", addressTextBox.Text).Replace("%P", portTextBox.Text).Replace("%N", nameTextBox.Text);
} }
public void UpdateInfo() public void UpdateInfo()
{ {
commandTextBox.Text = getFinalCommand(); commandTextBox.Text = command;
argsTextBox.Text = getFinalArgs();
} }
private void addressTextBox_TextChanged(object sender, EventArgs e) private void addressTextBox_TextChanged(object sender, EventArgs e)

View File

@@ -131,18 +131,13 @@ namespace MeshCentralRouter
{ {
if (appIdStr == null) return; if (appIdStr == null) return;
string appCmd = null; string appCmd = null;
List<String[]> apps = Settings.GetApplications();
foreach (String[] app in apps) { if (app[1].ToLower() == appIdStr.ToLower()) { appCmd = app[2]; } }
appCmd = appCmd.Replace("%P", mapper.localport.ToString()).Replace("%L", "127.0.0.1");
string appArgs = null; string appArgs = null;
int i = appCmd.IndexOf(' '); List<String[]> apps = Settings.GetApplications();
if (i >= 0) { appArgs = appCmd.Substring(i + 1); appCmd = appCmd.Substring(0, i); } foreach (String[] app in apps) { if (app[1].ToLower() == appIdStr.ToLower()) { appCmd = app[2]; if (app[3] != null) { appArgs = app[3].Replace("%P", mapper.localport.ToString()).Replace("%L", "127.0.0.1").Replace("%N", "xxx"); } } }
if (appCmd != null) if (appCmd != null) {
{
// Launch the process // Launch the process
System.Diagnostics.Process proc = null; System.Diagnostics.Process proc = null;
try { proc = System.Diagnostics.Process.Start(appCmd, appArgs); } catch (System.ComponentModel.Win32Exception) { } try { proc = System.Diagnostics.Process.Start(appCmd, appArgs); } catch (System.ComponentModel.Win32Exception) { }
// Setup auto-exit // Setup auto-exit
if ((autoexit == true) && (parent.autoExitProc == null)) { parent.autoExitProc = proc; parent.SetAutoClose(); autoExitTimer.Enabled = true; } if ((autoexit == true) && (parent.autoExitProc == null)) { parent.autoExitProc = proc; parent.SetAutoClose(); autoExitTimer.Enabled = true; }
autoexit = false; autoexit = false;

View File

@@ -66,6 +66,7 @@ namespace MeshCentralRouter
{ {
skey.SetValue("Protocol", app[1]); skey.SetValue("Protocol", app[1]);
skey.SetValue("Command", app[2]); skey.SetValue("Command", app[2]);
skey.SetValue("Arguments", app[3]);
} }
} }
} }
@@ -83,10 +84,12 @@ namespace MeshCentralRouter
{ {
string protocol = (string)key2.GetValue("Protocol"); string protocol = (string)key2.GetValue("Protocol");
string command = (string)key2.GetValue("Command"); string command = (string)key2.GetValue("Command");
String[] a = new string[3]; string args = (string)key2.GetValue("Arguments");
String[] a = new string[4];
a[0] = k; a[0] = k;
a[1] = protocol; a[1] = protocol;
a[2] = command; a[2] = command;
a[3] = args;
apps.Add(a); apps.Add(a);
} }
} }
@@ -94,8 +97,6 @@ namespace MeshCentralRouter
return apps; return apps;
} }
//public static void DeleteSubKeyTree(RegistryKey key, string subkey) { if (key.OpenSubKey(subkey) == null) { return; } DeleteSubKeyTree(key, subkey); }
public static void ClearApplications() public static void ClearApplications()
{ {
RegistryKey key = Registry.CurrentUser.CreateSubKey(@"HKEY_CURRENT_USER\SOFTWARE\Open Source\MeshCentral Router", true); RegistryKey key = Registry.CurrentUser.CreateSubKey(@"HKEY_CURRENT_USER\SOFTWARE\Open Source\MeshCentral Router", true);