This commit is contained in:
zmjack 2021-03-16 19:07:19 +08:00
parent b5f2820097
commit 861434fd72
18 changed files with 7042 additions and 316 deletions

View File

@ -32,6 +32,7 @@
this.linkLabel1 = new System.Windows.Forms.LinkLabel(); this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.label_version = new System.Windows.Forms.Label(); this.label_version = new System.Windows.Forms.Label();
this.label_Star = new System.Windows.Forms.Label();
this.SuspendLayout(); this.SuspendLayout();
// //
// linkLabel1 // linkLabel1
@ -51,10 +52,16 @@
resources.ApplyResources(this.label_version, "label_version"); resources.ApplyResources(this.label_version, "label_version");
this.label_version.Name = "label_version"; this.label_version.Name = "label_version";
// //
// label_Star
//
resources.ApplyResources(this.label_Star, "label_Star");
this.label_Star.Name = "label_Star";
//
// About // About
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.label_Star);
this.Controls.Add(this.label_version); this.Controls.Add(this.label_version);
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.Controls.Add(this.linkLabel1); this.Controls.Add(this.linkLabel1);
@ -73,5 +80,6 @@
private System.Windows.Forms.LinkLabel linkLabel1; private System.Windows.Forms.LinkLabel linkLabel1;
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label_version; private System.Windows.Forms.Label label_version;
private System.Windows.Forms.Label label_Star;
} }
} }

View File

@ -112,19 +112,19 @@
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.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="linkLabel1.Location" type="System.Drawing.Point, System.Drawing"> <data name="linkLabel1.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 78</value> <value>12, 101</value>
</data> </data>
<data name="linkLabel1.Size" type="System.Drawing.Size, System.Drawing"> <data name="linkLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 25</value> <value>320, 25</value>
</data> </data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="linkLabel1.TabIndex" type="System.Int32, mscorlib"> <data name="linkLabel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</value>
</data> </data>
@ -132,31 +132,31 @@
<value>https://github.com/zmjack/PortProxyGUI</value> <value>https://github.com/zmjack/PortProxyGUI</value>
</data> </data>
<data name="linkLabel1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing"> <data name="linkLabel1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopCenter</value> <value>MiddleCenter</value>
</data> </data>
<data name="&gt;&gt;linkLabel1.Name" xml:space="preserve"> <data name="&gt;&gt;linkLabel1.Name" xml:space="preserve">
<value>linkLabel1</value> <value>linkLabel1</value>
</data> </data>
<data name="&gt;&gt;linkLabel1.Type" xml:space="preserve"> <data name="&gt;&gt;linkLabel1.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;linkLabel1.Parent" xml:space="preserve"> <data name="&gt;&gt;linkLabel1.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;linkLabel1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;linkLabel1.ZOrder" xml:space="preserve">
<value>2</value> <value>3</value>
</data> </data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing"> <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 31</value> <value>12, 31</value>
</data> </data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing"> <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 47</value> <value>320, 47</value>
</data> </data>
<data name="label1.TabIndex" type="System.Int32, mscorlib"> <data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>1</value> <value>1</value>
</data> </data>
<data name="label1.Text" xml:space="preserve"> <data name="label1.Text" xml:space="preserve">
<value>This is free software, <value>This is a free software.
You can browse the source code on GitHub.</value> You can browse the source code on GitHub.</value>
</data> </data>
<data name="label1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing"> <data name="label1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
@ -166,19 +166,19 @@ You can browse the source code on GitHub.</value>
<value>label1</value> <value>label1</value>
</data> </data>
<data name="&gt;&gt;label1.Type" xml:space="preserve"> <data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve"> <data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>1</value> <value>2</value>
</data> </data>
<data name="label_version.Location" type="System.Drawing.Point, System.Drawing"> <data name="label_version.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 6</value> <value>12, 6</value>
</data> </data>
<data name="label_version.Size" type="System.Drawing.Size, System.Drawing"> <data name="label_version.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 24</value> <value>320, 24</value>
</data> </data>
<data name="label_version.TabIndex" type="System.Int32, mscorlib"> <data name="label_version.TabIndex" type="System.Int32, mscorlib">
<value>1</value> <value>1</value>
@ -193,22 +193,49 @@ You can browse the source code on GitHub.</value>
<value>label_version</value> <value>label_version</value>
</data> </data>
<data name="&gt;&gt;label_version.Type" xml:space="preserve"> <data name="&gt;&gt;label_version.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;label_version.Parent" xml:space="preserve"> <data name="&gt;&gt;label_version.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label_version.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label_version.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="label_Star.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 78</value>
</data>
<data name="label_Star.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 23</value>
</data>
<data name="label_Star.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="label_Star.Text" xml:space="preserve">
<value>Star me at:</value>
</data>
<data name="label_Star.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;label_Star.Name" xml:space="preserve">
<value>label_Star</value>
</data>
<data name="&gt;&gt;label_Star.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label_Star.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;label_Star.ZOrder" xml:space="preserve">
<value>0</value> <value>0</value>
</data> </data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<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>6, 12</value> <value>6, 12</value>
</data> </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>296, 109</value> <value>344, 141</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>
@ -2368,7 +2395,7 @@ You can browse the source code on GitHub.</value>
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
</value> </value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<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>3, 2, 3, 2</value>
</data> </data>
@ -2382,6 +2409,6 @@ You can browse the source code on GitHub.</value>
<value>About</value> <value>About</value>
</data> </data>
<data name="&gt;&gt;$this.Type" xml:space="preserve"> <data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
</root> </root>

File diff suppressed because it is too large Load Diff

View File

@ -63,7 +63,12 @@ namespace PortProxyGUI
{ {
var item = listViewProxies.SelectedItems.OfType<ListViewItem>().FirstOrDefault(); var item = listViewProxies.SelectedItems.OfType<ListViewItem>().FirstOrDefault();
var subItems = item.SubItems.OfType<ListViewSubItem>().ToArray(); var subItems = item.SubItems.OfType<ListViewSubItem>().ToArray();
form.UseUpdateMode(item, subItems[1].Text, subItems[2].Text, subItems[3].Text, subItems[4].Text, subItems[5].Text);
if (int.TryParse(subItems[3].Text, out var listenPort) && 0 < listenPort && listenPort < 65536)
{
form.UseUpdateMode(item, subItems[1].Text, subItems[2].Text, listenPort, subItems[4].Text, subItems[5].Text);
}
else MessageBox.Show("无效端口号。", "无效端口号", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
} }
public void RefreshProxyList() public void RefreshProxyList()
@ -110,13 +115,13 @@ namespace PortProxyGUI
case ToolStripMenuItem item when item == toolStripMenuItem_New: case ToolStripMenuItem item when item == toolStripMenuItem_New:
if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this); if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this);
SetProxyForm.UseNormalMode(); SetProxyForm.UseNormalMode();
SetProxyForm.Show(); SetProxyForm.ShowDialog();
break; break;
case ToolStripMenuItem item when item == toolStripMenuItem_Modify: case ToolStripMenuItem item when item == toolStripMenuItem_Modify:
if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this); if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this);
SetProxyForUpdate(SetProxyForm); SetProxyForUpdate(SetProxyForm);
SetProxyForm.Show(); SetProxyForm.ShowDialog();
break; break;
case ToolStripMenuItem item when item == toolStripMenuItem_Refresh: case ToolStripMenuItem item when item == toolStripMenuItem_Refresh:
@ -158,7 +163,7 @@ namespace PortProxyGUI
{ {
if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this); if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this);
SetProxyForUpdate(SetProxyForm); SetProxyForUpdate(SetProxyForm);
SetProxyForm.Show(); SetProxyForm.ShowDialog();
} }
} }
} }

View File

@ -5,7 +5,7 @@ using System.Runtime.InteropServices;
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("PortProxyGUI - NET")] [assembly: AssemblyTitle("PortProxyGUI - NET")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("A manager of the netsh interface portproxy which is to evaluate TCP/IP port redirect on windows.")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("nstandard.net")] [assembly: AssemblyCompany("nstandard.net")]
[assembly: AssemblyProduct("PortProxyGUI - NET")] [assembly: AssemblyProduct("PortProxyGUI - NET")]
@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.1.0.0")] [assembly: AssemblyVersion("1.1.1.0")]
[assembly: AssemblyFileVersion("1.1.0.0")] [assembly: AssemblyFileVersion("1.1.1.0")]

View File

@ -8,22 +8,30 @@ namespace PortProxyGUI
{ {
public partial class SetProxyForm : Form public partial class SetProxyForm : Form
{ {
public readonly PortProxyGUI PortProxyGUI; public readonly PortProxyGUI ParentWindow;
private string AutoTypeString { get; } private string AutoTypeString { get; }
private ListViewItem _updateLiveViewItem;
public SetProxyForm(PortProxyGUI portProxyGUI) private bool _updateMode;
private ListViewItem _updateLiveViewItem;
private string _oldType;
private string _oldListenOn;
private int _oldListenPort;
public SetProxyForm(PortProxyGUI parent)
{ {
PortProxyGUI = portProxyGUI; ParentWindow = parent;
InitializeComponent(); InitializeComponent();
AutoTypeString = comboBox_type.Text = comboBox_type.Items.OfType<string>().First(); AutoTypeString = comboBox_type.Text = comboBox_type.Items.OfType<string>().First();
} }
public void UseNormalMode() public void UseNormalMode()
{ {
comboBox_type.Enabled = true; _updateMode = false;
textBox_listenOn.Enabled = true; _updateLiveViewItem = null;
textBox_listenPort.Enabled = true; _oldType = null;
_oldListenOn = null;
_oldListenPort = 0;
comboBox_type.Text = AutoTypeString; comboBox_type.Text = AutoTypeString;
textBox_listenOn.Text = "*"; textBox_listenOn.Text = "*";
textBox_listenPort.Text = ""; textBox_listenPort.Text = "";
@ -31,15 +39,17 @@ namespace PortProxyGUI
textBox_connectPort.Text = ""; textBox_connectPort.Text = "";
} }
public void UseUpdateMode(ListViewItem item, string type, string listenOn, string listenPort, string connectTo, string connectPort) public void UseUpdateMode(ListViewItem item, string type, string listenOn, int listenPort, string connectTo, string connectPort)
{ {
_updateMode = true;
_updateLiveViewItem = item; _updateLiveViewItem = item;
comboBox_type.Enabled = false; _oldType = type;
textBox_listenOn.Enabled = false; _oldListenOn = listenOn.Trim().ToLower();
textBox_listenPort.Enabled = false; _oldListenPort = listenPort;
comboBox_type.Text = type; comboBox_type.Text = type;
textBox_listenOn.Text = listenOn; textBox_listenOn.Text = listenOn.ToString();
textBox_listenPort.Text = listenPort; textBox_listenPort.Text = listenPort.ToString();
textBox_connectTo.Text = connectTo; textBox_connectTo.Text = connectTo;
textBox_connectPort.Text = connectPort; textBox_connectPort.Text = connectPort;
} }
@ -84,13 +94,20 @@ namespace PortProxyGUI
return; return;
} }
if (_updateLiveViewItem != null) if (_updateMode)
{ {
var rule = Program.SqliteDbScope.GetRule(type, listenOn, _listenPort); var rule = Program.SqliteDbScope.GetRule(_oldType, _oldListenOn, _oldListenPort);
CmdUtil.DeleteProxy(_oldType, _oldListenOn, _oldListenPort);
Program.SqliteDbScope.Remove(rule);
rule.Type = type;
rule.ListenOn = listenOn;
rule.ListenPort = _listenPort;
rule.ConnectTo = connectTo; rule.ConnectTo = connectTo;
rule.ConnectPort = _connectPort; rule.ConnectPort = _connectPort;
Program.SqliteDbScope.Update(rule);
CmdUtil.AddProxy("set", type, listenOn, _listenPort, connectTo, _connectPort); CmdUtil.AddProxy("add", type, listenOn, _listenPort, connectTo, _connectPort);
Program.SqliteDbScope.Add(rule);
_updateLiveViewItem.ImageIndex = 1; _updateLiveViewItem.ImageIndex = 1;
var subItems = _updateLiveViewItem.SubItems; var subItems = _updateLiveViewItem.SubItems;
@ -103,7 +120,7 @@ namespace PortProxyGUI
else else
{ {
CmdUtil.AddProxy("add", type, listenOn, _listenPort, connectTo, _connectPort); CmdUtil.AddProxy("add", type, listenOn, _listenPort, connectTo, _connectPort);
PortProxyGUI.RefreshProxyList(); ParentWindow.RefreshProxyList();
} }
Close(); Close();
@ -111,13 +128,13 @@ namespace PortProxyGUI
private void SetProxyForm_Load(object sender, EventArgs e) private void SetProxyForm_Load(object sender, EventArgs e)
{ {
Top = PortProxyGUI.Top + (PortProxyGUI.Height - Height) / 2; Top = ParentWindow.Top + (ParentWindow.Height - Height) / 2;
Left = PortProxyGUI.Left + (PortProxyGUI.Width - Width) / 2; Left = ParentWindow.Left + (ParentWindow.Width - Width) / 2;
} }
private void SetProxyForm_FormClosing(object sender, FormClosingEventArgs e) private void SetProxyForm_FormClosing(object sender, FormClosingEventArgs e)
{ {
PortProxyGUI.SetProxyForm = null; ParentWindow.SetProxyForm = null;
} }
} }

View File

@ -32,6 +32,7 @@
this.linkLabel1 = new System.Windows.Forms.LinkLabel(); this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.label_version = new System.Windows.Forms.Label(); this.label_version = new System.Windows.Forms.Label();
this.label_Star = new System.Windows.Forms.Label();
this.SuspendLayout(); this.SuspendLayout();
// //
// linkLabel1 // linkLabel1
@ -51,10 +52,16 @@
resources.ApplyResources(this.label_version, "label_version"); resources.ApplyResources(this.label_version, "label_version");
this.label_version.Name = "label_version"; this.label_version.Name = "label_version";
// //
// label_Star
//
resources.ApplyResources(this.label_Star, "label_Star");
this.label_Star.Name = "label_Star";
//
// About // About
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.label_Star);
this.Controls.Add(this.label_version); this.Controls.Add(this.label_version);
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.Controls.Add(this.linkLabel1); this.Controls.Add(this.linkLabel1);
@ -73,5 +80,6 @@
private System.Windows.Forms.LinkLabel linkLabel1; private System.Windows.Forms.LinkLabel linkLabel1;
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label_version; private System.Windows.Forms.Label label_version;
private System.Windows.Forms.Label label_Star;
} }
} }

View File

@ -112,19 +112,19 @@
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.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="linkLabel1.Location" type="System.Drawing.Point, System.Drawing"> <data name="linkLabel1.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 78</value> <value>12, 101</value>
</data> </data>
<data name="linkLabel1.Size" type="System.Drawing.Size, System.Drawing"> <data name="linkLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 25</value> <value>320, 25</value>
</data> </data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="linkLabel1.TabIndex" type="System.Int32, mscorlib"> <data name="linkLabel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</value>
</data> </data>
@ -132,31 +132,31 @@
<value>https://github.com/zmjack/PortProxyGUI</value> <value>https://github.com/zmjack/PortProxyGUI</value>
</data> </data>
<data name="linkLabel1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing"> <data name="linkLabel1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopCenter</value> <value>MiddleCenter</value>
</data> </data>
<data name="&gt;&gt;linkLabel1.Name" xml:space="preserve"> <data name="&gt;&gt;linkLabel1.Name" xml:space="preserve">
<value>linkLabel1</value> <value>linkLabel1</value>
</data> </data>
<data name="&gt;&gt;linkLabel1.Type" xml:space="preserve"> <data name="&gt;&gt;linkLabel1.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;linkLabel1.Parent" xml:space="preserve"> <data name="&gt;&gt;linkLabel1.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;linkLabel1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;linkLabel1.ZOrder" xml:space="preserve">
<value>2</value> <value>3</value>
</data> </data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing"> <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 31</value> <value>12, 31</value>
</data> </data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing"> <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 47</value> <value>320, 47</value>
</data> </data>
<data name="label1.TabIndex" type="System.Int32, mscorlib"> <data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>1</value> <value>1</value>
</data> </data>
<data name="label1.Text" xml:space="preserve"> <data name="label1.Text" xml:space="preserve">
<value>This is free software, <value>This is a free software.
You can browse the source code on GitHub.</value> You can browse the source code on GitHub.</value>
</data> </data>
<data name="label1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing"> <data name="label1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
@ -166,19 +166,19 @@ You can browse the source code on GitHub.</value>
<value>label1</value> <value>label1</value>
</data> </data>
<data name="&gt;&gt;label1.Type" xml:space="preserve"> <data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve"> <data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>1</value> <value>2</value>
</data> </data>
<data name="label_version.Location" type="System.Drawing.Point, System.Drawing"> <data name="label_version.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 6</value> <value>12, 6</value>
</data> </data>
<data name="label_version.Size" type="System.Drawing.Size, System.Drawing"> <data name="label_version.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 24</value> <value>320, 24</value>
</data> </data>
<data name="label_version.TabIndex" type="System.Int32, mscorlib"> <data name="label_version.TabIndex" type="System.Int32, mscorlib">
<value>1</value> <value>1</value>
@ -193,22 +193,49 @@ You can browse the source code on GitHub.</value>
<value>label_version</value> <value>label_version</value>
</data> </data>
<data name="&gt;&gt;label_version.Type" xml:space="preserve"> <data name="&gt;&gt;label_version.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;label_version.Parent" xml:space="preserve"> <data name="&gt;&gt;label_version.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label_version.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label_version.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="label_Star.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 78</value>
</data>
<data name="label_Star.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 23</value>
</data>
<data name="label_Star.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="label_Star.Text" xml:space="preserve">
<value>Star me at:</value>
</data>
<data name="label_Star.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;label_Star.Name" xml:space="preserve">
<value>label_Star</value>
</data>
<data name="&gt;&gt;label_Star.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label_Star.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;label_Star.ZOrder" xml:space="preserve">
<value>0</value> <value>0</value>
</data> </data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<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>6, 12</value> <value>6, 12</value>
</data> </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>296, 109</value> <value>344, 141</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>
@ -2368,7 +2395,7 @@ You can browse the source code on GitHub.</value>
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
</value> </value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<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>3, 2, 3, 2</value>
</data> </data>
@ -2382,6 +2409,6 @@ You can browse the source code on GitHub.</value>
<value>About</value> <value>About</value>
</data> </data>
<data name="&gt;&gt;$this.Type" xml:space="preserve"> <data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
</root> </root>

File diff suppressed because it is too large Load Diff

View File

@ -63,7 +63,12 @@ namespace PortProxyGUI
{ {
var item = listViewProxies.SelectedItems.OfType<ListViewItem>().FirstOrDefault(); var item = listViewProxies.SelectedItems.OfType<ListViewItem>().FirstOrDefault();
var subItems = item.SubItems.OfType<ListViewSubItem>().ToArray(); var subItems = item.SubItems.OfType<ListViewSubItem>().ToArray();
form.UseUpdateMode(item, subItems[1].Text, subItems[2].Text, subItems[3].Text, subItems[4].Text, subItems[5].Text);
if (int.TryParse(subItems[3].Text, out var listenPort) && 0 < listenPort && listenPort < 65536)
{
form.UseUpdateMode(item, subItems[1].Text, subItems[2].Text, listenPort, subItems[4].Text, subItems[5].Text);
}
else MessageBox.Show("无效端口号。", "无效端口号", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
} }
public void RefreshProxyList() public void RefreshProxyList()
@ -110,13 +115,13 @@ namespace PortProxyGUI
case ToolStripMenuItem item when item == toolStripMenuItem_New: case ToolStripMenuItem item when item == toolStripMenuItem_New:
if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this); if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this);
SetProxyForm.UseNormalMode(); SetProxyForm.UseNormalMode();
SetProxyForm.Show(); SetProxyForm.ShowDialog();
break; break;
case ToolStripMenuItem item when item == toolStripMenuItem_Modify: case ToolStripMenuItem item when item == toolStripMenuItem_Modify:
if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this); if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this);
SetProxyForUpdate(SetProxyForm); SetProxyForUpdate(SetProxyForm);
SetProxyForm.Show(); SetProxyForm.ShowDialog();
break; break;
case ToolStripMenuItem item when item == toolStripMenuItem_Refresh: case ToolStripMenuItem item when item == toolStripMenuItem_Refresh:
@ -158,7 +163,7 @@ namespace PortProxyGUI
{ {
if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this); if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this);
SetProxyForUpdate(SetProxyForm); SetProxyForUpdate(SetProxyForm);
SetProxyForm.Show(); SetProxyForm.ShowDialog();
} }
} }
} }

View File

@ -5,7 +5,7 @@ using System.Runtime.InteropServices;
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("PortProxyGUI - NET")] [assembly: AssemblyTitle("PortProxyGUI - NET")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("A manager of the netsh interface portproxy which is to evaluate TCP/IP port redirect on windows.")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("nstandard.net")] [assembly: AssemblyCompany("nstandard.net")]
[assembly: AssemblyProduct("PortProxyGUI - NET")] [assembly: AssemblyProduct("PortProxyGUI - NET")]
@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.1.0.0")] [assembly: AssemblyVersion("1.1.1.0")]
[assembly: AssemblyFileVersion("1.1.0.0")] [assembly: AssemblyFileVersion("1.1.1.0")]

View File

@ -8,22 +8,30 @@ namespace PortProxyGUI
{ {
public partial class SetProxyForm : Form public partial class SetProxyForm : Form
{ {
public readonly PortProxyGUI PortProxyGUI; public readonly PortProxyGUI ParentWindow;
private string AutoTypeString { get; } private string AutoTypeString { get; }
private ListViewItem _updateLiveViewItem;
public SetProxyForm(PortProxyGUI portProxyGUI) private bool _updateMode;
private ListViewItem _updateLiveViewItem;
private string _oldType;
private string _oldListenOn;
private int _oldListenPort;
public SetProxyForm(PortProxyGUI parent)
{ {
PortProxyGUI = portProxyGUI; ParentWindow = parent;
InitializeComponent(); InitializeComponent();
AutoTypeString = comboBox_type.Text = comboBox_type.Items.OfType<string>().First(); AutoTypeString = comboBox_type.Text = comboBox_type.Items.OfType<string>().First();
} }
public void UseNormalMode() public void UseNormalMode()
{ {
comboBox_type.Enabled = true; _updateMode = false;
textBox_listenOn.Enabled = true; _updateLiveViewItem = null;
textBox_listenPort.Enabled = true; _oldType = null;
_oldListenOn = null;
_oldListenPort = 0;
comboBox_type.Text = AutoTypeString; comboBox_type.Text = AutoTypeString;
textBox_listenOn.Text = "*"; textBox_listenOn.Text = "*";
textBox_listenPort.Text = ""; textBox_listenPort.Text = "";
@ -31,15 +39,17 @@ namespace PortProxyGUI
textBox_connectPort.Text = ""; textBox_connectPort.Text = "";
} }
public void UseUpdateMode(ListViewItem item, string type, string listenOn, string listenPort, string connectTo, string connectPort) public void UseUpdateMode(ListViewItem item, string type, string listenOn, int listenPort, string connectTo, string connectPort)
{ {
_updateMode = true;
_updateLiveViewItem = item; _updateLiveViewItem = item;
comboBox_type.Enabled = false; _oldType = type;
textBox_listenOn.Enabled = false; _oldListenOn = listenOn.Trim().ToLower();
textBox_listenPort.Enabled = false; _oldListenPort = listenPort;
comboBox_type.Text = type; comboBox_type.Text = type;
textBox_listenOn.Text = listenOn; textBox_listenOn.Text = listenOn.ToString();
textBox_listenPort.Text = listenPort; textBox_listenPort.Text = listenPort.ToString();
textBox_connectTo.Text = connectTo; textBox_connectTo.Text = connectTo;
textBox_connectPort.Text = connectPort; textBox_connectPort.Text = connectPort;
} }
@ -84,13 +94,20 @@ namespace PortProxyGUI
return; return;
} }
if (_updateLiveViewItem != null) if (_updateMode)
{ {
var rule = Program.SqliteDbScope.GetRule(type, listenOn, _listenPort); var rule = Program.SqliteDbScope.GetRule(_oldType, _oldListenOn, _oldListenPort);
CmdUtil.DeleteProxy(_oldType, _oldListenOn, _oldListenPort);
Program.SqliteDbScope.Remove(rule);
rule.Type = type;
rule.ListenOn = listenOn;
rule.ListenPort = _listenPort;
rule.ConnectTo = connectTo; rule.ConnectTo = connectTo;
rule.ConnectPort = _connectPort; rule.ConnectPort = _connectPort;
Program.SqliteDbScope.Update(rule);
CmdUtil.AddProxy("set", type, listenOn, _listenPort, connectTo, _connectPort); CmdUtil.AddProxy("add", type, listenOn, _listenPort, connectTo, _connectPort);
Program.SqliteDbScope.Add(rule);
_updateLiveViewItem.ImageIndex = 1; _updateLiveViewItem.ImageIndex = 1;
var subItems = _updateLiveViewItem.SubItems; var subItems = _updateLiveViewItem.SubItems;
@ -103,7 +120,7 @@ namespace PortProxyGUI
else else
{ {
CmdUtil.AddProxy("add", type, listenOn, _listenPort, connectTo, _connectPort); CmdUtil.AddProxy("add", type, listenOn, _listenPort, connectTo, _connectPort);
PortProxyGUI.RefreshProxyList(); ParentWindow.RefreshProxyList();
} }
Close(); Close();
@ -111,13 +128,13 @@ namespace PortProxyGUI
private void SetProxyForm_Load(object sender, EventArgs e) private void SetProxyForm_Load(object sender, EventArgs e)
{ {
Top = PortProxyGUI.Top + (PortProxyGUI.Height - Height) / 2; Top = ParentWindow.Top + (ParentWindow.Height - Height) / 2;
Left = PortProxyGUI.Left + (PortProxyGUI.Width - Width) / 2; Left = ParentWindow.Left + (ParentWindow.Width - Width) / 2;
} }
private void SetProxyForm_FormClosing(object sender, FormClosingEventArgs e) private void SetProxyForm_FormClosing(object sender, FormClosingEventArgs e)
{ {
PortProxyGUI.SetProxyForm = null; ParentWindow.SetProxyForm = null;
} }
} }

View File

@ -32,6 +32,7 @@
this.linkLabel1 = new System.Windows.Forms.LinkLabel(); this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.label_version = new System.Windows.Forms.Label(); this.label_version = new System.Windows.Forms.Label();
this.label_Star = new System.Windows.Forms.Label();
this.SuspendLayout(); this.SuspendLayout();
// //
// linkLabel1 // linkLabel1
@ -51,10 +52,16 @@
resources.ApplyResources(this.label_version, "label_version"); resources.ApplyResources(this.label_version, "label_version");
this.label_version.Name = "label_version"; this.label_version.Name = "label_version";
// //
// label_Star
//
resources.ApplyResources(this.label_Star, "label_Star");
this.label_Star.Name = "label_Star";
//
// About // About
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.label_Star);
this.Controls.Add(this.label_version); this.Controls.Add(this.label_version);
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.Controls.Add(this.linkLabel1); this.Controls.Add(this.linkLabel1);
@ -73,5 +80,6 @@
private System.Windows.Forms.LinkLabel linkLabel1; private System.Windows.Forms.LinkLabel linkLabel1;
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label_version; private System.Windows.Forms.Label label_version;
private System.Windows.Forms.Label label_Star;
} }
} }

View File

@ -112,19 +112,19 @@
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.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="linkLabel1.Location" type="System.Drawing.Point, System.Drawing"> <data name="linkLabel1.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 78</value> <value>12, 101</value>
</data> </data>
<data name="linkLabel1.Size" type="System.Drawing.Size, System.Drawing"> <data name="linkLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 25</value> <value>320, 25</value>
</data> </data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="linkLabel1.TabIndex" type="System.Int32, mscorlib"> <data name="linkLabel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</value>
</data> </data>
@ -132,31 +132,31 @@
<value>https://github.com/zmjack/PortProxyGUI</value> <value>https://github.com/zmjack/PortProxyGUI</value>
</data> </data>
<data name="linkLabel1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing"> <data name="linkLabel1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopCenter</value> <value>MiddleCenter</value>
</data> </data>
<data name="&gt;&gt;linkLabel1.Name" xml:space="preserve"> <data name="&gt;&gt;linkLabel1.Name" xml:space="preserve">
<value>linkLabel1</value> <value>linkLabel1</value>
</data> </data>
<data name="&gt;&gt;linkLabel1.Type" xml:space="preserve"> <data name="&gt;&gt;linkLabel1.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;linkLabel1.Parent" xml:space="preserve"> <data name="&gt;&gt;linkLabel1.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;linkLabel1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;linkLabel1.ZOrder" xml:space="preserve">
<value>2</value> <value>3</value>
</data> </data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing"> <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 31</value> <value>12, 31</value>
</data> </data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing"> <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 47</value> <value>320, 47</value>
</data> </data>
<data name="label1.TabIndex" type="System.Int32, mscorlib"> <data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>1</value> <value>1</value>
</data> </data>
<data name="label1.Text" xml:space="preserve"> <data name="label1.Text" xml:space="preserve">
<value>This is free software, <value>This is a free software.
You can browse the source code on GitHub.</value> You can browse the source code on GitHub.</value>
</data> </data>
<data name="label1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing"> <data name="label1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
@ -166,19 +166,19 @@ You can browse the source code on GitHub.</value>
<value>label1</value> <value>label1</value>
</data> </data>
<data name="&gt;&gt;label1.Type" xml:space="preserve"> <data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve"> <data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>1</value> <value>2</value>
</data> </data>
<data name="label_version.Location" type="System.Drawing.Point, System.Drawing"> <data name="label_version.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 6</value> <value>12, 6</value>
</data> </data>
<data name="label_version.Size" type="System.Drawing.Size, System.Drawing"> <data name="label_version.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 24</value> <value>320, 24</value>
</data> </data>
<data name="label_version.TabIndex" type="System.Int32, mscorlib"> <data name="label_version.TabIndex" type="System.Int32, mscorlib">
<value>1</value> <value>1</value>
@ -193,22 +193,49 @@ You can browse the source code on GitHub.</value>
<value>label_version</value> <value>label_version</value>
</data> </data>
<data name="&gt;&gt;label_version.Type" xml:space="preserve"> <data name="&gt;&gt;label_version.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;label_version.Parent" xml:space="preserve"> <data name="&gt;&gt;label_version.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;label_version.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label_version.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="label_Star.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 78</value>
</data>
<data name="label_Star.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 23</value>
</data>
<data name="label_Star.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="label_Star.Text" xml:space="preserve">
<value>Star me at:</value>
</data>
<data name="label_Star.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;label_Star.Name" xml:space="preserve">
<value>label_Star</value>
</data>
<data name="&gt;&gt;label_Star.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label_Star.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;label_Star.ZOrder" xml:space="preserve">
<value>0</value> <value>0</value>
</data> </data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<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>6, 12</value> <value>6, 12</value>
</data> </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>296, 109</value> <value>344, 141</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>
@ -2368,7 +2395,7 @@ You can browse the source code on GitHub.</value>
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
</value> </value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<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>3, 2, 3, 2</value>
</data> </data>
@ -2382,6 +2409,6 @@ You can browse the source code on GitHub.</value>
<value>About</value> <value>About</value>
</data> </data>
<data name="&gt;&gt;$this.Type" xml:space="preserve"> <data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
</root> </root>

File diff suppressed because it is too large Load Diff

View File

@ -63,7 +63,12 @@ namespace PortProxyGUI
{ {
var item = listViewProxies.SelectedItems.OfType<ListViewItem>().FirstOrDefault(); var item = listViewProxies.SelectedItems.OfType<ListViewItem>().FirstOrDefault();
var subItems = item.SubItems.OfType<ListViewSubItem>().ToArray(); var subItems = item.SubItems.OfType<ListViewSubItem>().ToArray();
form.UseUpdateMode(item, subItems[1].Text, subItems[2].Text, subItems[3].Text, subItems[4].Text, subItems[5].Text);
if (int.TryParse(subItems[3].Text, out var listenPort) && 0 < listenPort && listenPort < 65536)
{
form.UseUpdateMode(item, subItems[1].Text, subItems[2].Text, listenPort, subItems[4].Text, subItems[5].Text);
}
else MessageBox.Show("无效端口号。", "无效端口号", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
} }
public void RefreshProxyList() public void RefreshProxyList()
@ -110,13 +115,13 @@ namespace PortProxyGUI
case ToolStripMenuItem item when item == toolStripMenuItem_New: case ToolStripMenuItem item when item == toolStripMenuItem_New:
if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this); if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this);
SetProxyForm.UseNormalMode(); SetProxyForm.UseNormalMode();
SetProxyForm.Show(); SetProxyForm.ShowDialog();
break; break;
case ToolStripMenuItem item when item == toolStripMenuItem_Modify: case ToolStripMenuItem item when item == toolStripMenuItem_Modify:
if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this); if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this);
SetProxyForUpdate(SetProxyForm); SetProxyForUpdate(SetProxyForm);
SetProxyForm.Show(); SetProxyForm.ShowDialog();
break; break;
case ToolStripMenuItem item when item == toolStripMenuItem_Refresh: case ToolStripMenuItem item when item == toolStripMenuItem_Refresh:
@ -158,7 +163,7 @@ namespace PortProxyGUI
{ {
if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this); if (SetProxyForm == null) SetProxyForm = new SetProxyForm(this);
SetProxyForUpdate(SetProxyForm); SetProxyForUpdate(SetProxyForm);
SetProxyForm.Show(); SetProxyForm.ShowDialog();
} }
} }
} }

View File

@ -14,7 +14,7 @@
<PackageTags>portproxy TCP/IP redirector</PackageTags> <PackageTags>portproxy TCP/IP redirector</PackageTags>
<PackageLicenseFile>LICENSE.md</PackageLicenseFile> <PackageLicenseFile>LICENSE.md</PackageLicenseFile>
<Copyright>Copyright © nstandard.net 2020</Copyright> <Copyright>Copyright © nstandard.net 2020</Copyright>
<Version>1.1.0</Version> <Version>1.1.1</Version>
<ApplicationIcon>icon.ico</ApplicationIcon> <ApplicationIcon>icon.ico</ApplicationIcon>
</PropertyGroup> </PropertyGroup>

View File

@ -8,22 +8,30 @@ namespace PortProxyGUI
{ {
public partial class SetProxyForm : Form public partial class SetProxyForm : Form
{ {
public readonly PortProxyGUI PortProxyGUI; public readonly PortProxyGUI ParentWindow;
private string AutoTypeString { get; } private string AutoTypeString { get; }
private ListViewItem _updateLiveViewItem;
public SetProxyForm(PortProxyGUI portProxyGUI) private bool _updateMode;
private ListViewItem _updateLiveViewItem;
private string _oldType;
private string _oldListenOn;
private int _oldListenPort;
public SetProxyForm(PortProxyGUI parent)
{ {
PortProxyGUI = portProxyGUI; ParentWindow = parent;
InitializeComponent(); InitializeComponent();
AutoTypeString = comboBox_type.Text = comboBox_type.Items.OfType<string>().First(); AutoTypeString = comboBox_type.Text = comboBox_type.Items.OfType<string>().First();
} }
public void UseNormalMode() public void UseNormalMode()
{ {
comboBox_type.Enabled = true; _updateMode = false;
textBox_listenOn.Enabled = true; _updateLiveViewItem = null;
textBox_listenPort.Enabled = true; _oldType = null;
_oldListenOn = null;
_oldListenPort = 0;
comboBox_type.Text = AutoTypeString; comboBox_type.Text = AutoTypeString;
textBox_listenOn.Text = "*"; textBox_listenOn.Text = "*";
textBox_listenPort.Text = ""; textBox_listenPort.Text = "";
@ -31,15 +39,17 @@ namespace PortProxyGUI
textBox_connectPort.Text = ""; textBox_connectPort.Text = "";
} }
public void UseUpdateMode(ListViewItem item, string type, string listenOn, string listenPort, string connectTo, string connectPort) public void UseUpdateMode(ListViewItem item, string type, string listenOn, int listenPort, string connectTo, string connectPort)
{ {
_updateMode = true;
_updateLiveViewItem = item; _updateLiveViewItem = item;
comboBox_type.Enabled = false; _oldType = type;
textBox_listenOn.Enabled = false; _oldListenOn = listenOn.Trim().ToLower();
textBox_listenPort.Enabled = false; _oldListenPort = listenPort;
comboBox_type.Text = type; comboBox_type.Text = type;
textBox_listenOn.Text = listenOn; textBox_listenOn.Text = listenOn.ToString();
textBox_listenPort.Text = listenPort; textBox_listenPort.Text = listenPort.ToString();
textBox_connectTo.Text = connectTo; textBox_connectTo.Text = connectTo;
textBox_connectPort.Text = connectPort; textBox_connectPort.Text = connectPort;
} }
@ -84,13 +94,20 @@ namespace PortProxyGUI
return; return;
} }
if (_updateLiveViewItem != null) if (_updateMode)
{ {
var rule = Program.SqliteDbScope.GetRule(type, listenOn, _listenPort); var rule = Program.SqliteDbScope.GetRule(_oldType, _oldListenOn, _oldListenPort);
CmdUtil.DeleteProxy(_oldType, _oldListenOn, _oldListenPort);
Program.SqliteDbScope.Remove(rule);
rule.Type = type;
rule.ListenOn = listenOn;
rule.ListenPort = _listenPort;
rule.ConnectTo = connectTo; rule.ConnectTo = connectTo;
rule.ConnectPort = _connectPort; rule.ConnectPort = _connectPort;
Program.SqliteDbScope.Update(rule);
CmdUtil.AddProxy("set", type, listenOn, _listenPort, connectTo, _connectPort); CmdUtil.AddProxy("add", type, listenOn, _listenPort, connectTo, _connectPort);
Program.SqliteDbScope.Add(rule);
_updateLiveViewItem.ImageIndex = 1; _updateLiveViewItem.ImageIndex = 1;
var subItems = _updateLiveViewItem.SubItems; var subItems = _updateLiveViewItem.SubItems;
@ -103,7 +120,7 @@ namespace PortProxyGUI
else else
{ {
CmdUtil.AddProxy("add", type, listenOn, _listenPort, connectTo, _connectPort); CmdUtil.AddProxy("add", type, listenOn, _listenPort, connectTo, _connectPort);
PortProxyGUI.RefreshProxyList(); ParentWindow.RefreshProxyList();
} }
Close(); Close();
@ -111,13 +128,13 @@ namespace PortProxyGUI
private void SetProxyForm_Load(object sender, EventArgs e) private void SetProxyForm_Load(object sender, EventArgs e)
{ {
Top = PortProxyGUI.Top + (PortProxyGUI.Height - Height) / 2; Top = ParentWindow.Top + (ParentWindow.Height - Height) / 2;
Left = PortProxyGUI.Left + (PortProxyGUI.Width - Width) / 2; Left = ParentWindow.Left + (ParentWindow.Width - Width) / 2;
} }
private void SetProxyForm_FormClosing(object sender, FormClosingEventArgs e) private void SetProxyForm_FormClosing(object sender, FormClosingEventArgs e)
{ {
PortProxyGUI.SetProxyForm = null; ParentWindow.SetProxyForm = null;
} }
} }