From bf44a2bc87f9b891ed3576fee5f9bb3ca6bf9ec1 Mon Sep 17 00:00:00 2001 From: zmjack Date: Mon, 23 Nov 2020 00:45:06 +0800 Subject: [PATCH] v1.0.3 --- PortProxyGUI - NET/NewProxy.Designer.cs | 3 +- PortProxyGUI - NET/NewProxy.cs | 51 ++++++------------- PortProxyGUI - NET/NewProxy.resx | 9 ++-- PortProxyGUI - NET/NewProxy.zh-CN.resx | 11 ++-- PortProxyGUI - NET/Properties/AssemblyInfo.cs | 8 +-- PortProxyGUI/NewProxy.Designer.cs | 3 +- PortProxyGUI/NewProxy.cs | 51 ++++++------------- PortProxyGUI/NewProxy.resx | 9 ++-- PortProxyGUI/NewProxy.zh-CN.resx | 11 ++-- PortProxyGUI/PortProxyGUI.csproj | 2 +- 10 files changed, 65 insertions(+), 93 deletions(-) diff --git a/PortProxyGUI - NET/NewProxy.Designer.cs b/PortProxyGUI - NET/NewProxy.Designer.cs index e3e5dd6..b5ea27d 100644 --- a/PortProxyGUI - NET/NewProxy.Designer.cs +++ b/PortProxyGUI - NET/NewProxy.Designer.cs @@ -102,7 +102,8 @@ resources.GetString("comboBox_type.Items"), resources.GetString("comboBox_type.Items1"), resources.GetString("comboBox_type.Items2"), - resources.GetString("comboBox_type.Items3")}); + resources.GetString("comboBox_type.Items3"), + resources.GetString("comboBox_type.Items4")}); this.comboBox_type.Name = "comboBox_type"; // // NewProxy diff --git a/PortProxyGUI - NET/NewProxy.cs b/PortProxyGUI - NET/NewProxy.cs index 49d34c2..a8814c0 100644 --- a/PortProxyGUI - NET/NewProxy.cs +++ b/PortProxyGUI - NET/NewProxy.cs @@ -9,12 +9,13 @@ namespace PortProxyGUI public partial class NewProxy : Form { public readonly PortProxyGUI PortProxyGUI; + private string AutoString { get; } public NewProxy(PortProxyGUI portProxyGUI) { PortProxyGUI = portProxyGUI; - InitializeComponent(); + AutoString = comboBox_type.Text = comboBox_type.Items.OfType().First(); } private void AddPortProxy(string type, string listenOn, string listenPort, string connectTo, string connectPort) @@ -25,13 +26,18 @@ namespace PortProxyGUI private bool IsIPv4(string ip) { - if (ip == "localhost" || ip == "*") return true; - else return ip.IsMatch(new Regex(@"^(?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])(?:\.(?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])){3}$")); + return ip.IsMatch(new Regex(@"^(?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])(?:\.(?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])){3}$")); } private bool IsIPv6(string ip) { - if (ip == "localhost" || ip == "*") return true; - else return ip.IsMatch(new Regex(@"^[\dABCDEF]{2}(?::(?:[\dABCDEF]{2})){5}$")); + return ip.IsMatch(new Regex(@"^[\dABCDEF]{2}(?::(?:[\dABCDEF]{2})){5}$")); + } + + private string GetPassType(string listenOn, string connectTo) + { + var from = IsIPv6(listenOn) ? "v6" : "v4"; + var to = IsIPv6(connectTo) ? "v6" : "v4"; + return $"{from}to{to}"; } private void button1_Click(object sender, EventArgs e) @@ -54,37 +60,11 @@ namespace PortProxyGUI return; } - if (string.IsNullOrEmpty(type)) + if (type == AutoString) type = GetPassType(listenOn, connectTo); + + if (!new[] { "v4tov4", "v4tov6", "v6tov4", "v6tov6" }.Contains(type)) { - if (IsIPv4(listenOn) && IsIPv4(connectTo)) type = comboBox_type.Text = "v4tov4"; - else if (IsIPv4(listenOn) && IsIPv6(connectTo)) type = comboBox_type.Text = "v4tov6"; - else if (IsIPv6(listenOn) && IsIPv4(connectTo)) type = comboBox_type.Text = "v6tov4"; - else if (IsIPv6(listenOn) && IsIPv6(connectTo)) type = comboBox_type.Text = "v6tov6"; - else - { - MessageBox.Show($"The address which is connect to is neither IPv4 nor IPv6.", "Fail", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - return; - } - } - else if (new[] { "v4tov4", "v4tov6", "v6tov4", "v6tov6" }.Contains(type)) - { - bool invalid = false; - switch (type) - { - case "v4tov4": if (!IsIPv4(listenOn) || !IsIPv4(connectTo)) invalid = true; break; - case "v4tov6": if (!IsIPv4(listenOn) || !IsIPv6(connectTo)) invalid = true; break; - case "v6tov4": if (!IsIPv6(listenOn) || !IsIPv4(connectTo)) invalid = true; break; - case "v6tov6": if (!IsIPv6(listenOn) || !IsIPv6(connectTo)) invalid = true; break; - } - if (invalid) - { - MessageBox.Show($"The type ({type}) is invalid for ({listenOn} -> {connectTo}).", "Fail", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - return; - } - } - else - { - MessageBox.Show($"Unknow type ({type}).", "Fail", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + MessageBox.Show($"Unknow type for ({listenOn} -> {connectTo}).", "Fail", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } @@ -93,7 +73,6 @@ namespace PortProxyGUI private void NewProxy_Load(object sender, EventArgs e) { - } private void NewProxy_FormClosing(object sender, FormClosingEventArgs e) diff --git a/PortProxyGUI - NET/NewProxy.resx b/PortProxyGUI - NET/NewProxy.resx index 5545e70..2b93f0b 100644 --- a/PortProxyGUI - NET/NewProxy.resx +++ b/PortProxyGUI - NET/NewProxy.resx @@ -394,15 +394,18 @@ Popup - v4tov4 + (Auto) - v4tov6 + v4tov4 - v6tov4 + v4tov6 + v6tov4 + + v6tov6 diff --git a/PortProxyGUI - NET/NewProxy.zh-CN.resx b/PortProxyGUI - NET/NewProxy.zh-CN.resx index f851938..27fe0b0 100644 --- a/PortProxyGUI - NET/NewProxy.zh-CN.resx +++ b/PortProxyGUI - NET/NewProxy.zh-CN.resx @@ -258,16 +258,16 @@ 1 - + v4tov4 - + v4tov6 - + v6tov4 - + v6tov6 @@ -453,4 +453,7 @@ Center + + (自动) + \ No newline at end of file diff --git a/PortProxyGUI - NET/Properties/AssemblyInfo.cs b/PortProxyGUI - NET/Properties/AssemblyInfo.cs index 2a54d2d..23a6dc3 100644 --- a/PortProxyGUI - NET/Properties/AssemblyInfo.cs +++ b/PortProxyGUI - NET/Properties/AssemblyInfo.cs @@ -7,9 +7,9 @@ using System.Runtime.InteropServices; [assembly: AssemblyTitle("PortProxyGUI - NET")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] +[assembly: AssemblyCompany("nstandard.net")] [assembly: AssemblyProduct("PortProxyGUI - NET")] -[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyCopyright("Copyright © nstandard.net 2020")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.2.0")] -[assembly: AssemblyFileVersion("1.0.2.0")] +[assembly: AssemblyVersion("1.0.3.0")] +[assembly: AssemblyFileVersion("1.0.3.0")] diff --git a/PortProxyGUI/NewProxy.Designer.cs b/PortProxyGUI/NewProxy.Designer.cs index e3e5dd6..b5ea27d 100644 --- a/PortProxyGUI/NewProxy.Designer.cs +++ b/PortProxyGUI/NewProxy.Designer.cs @@ -102,7 +102,8 @@ resources.GetString("comboBox_type.Items"), resources.GetString("comboBox_type.Items1"), resources.GetString("comboBox_type.Items2"), - resources.GetString("comboBox_type.Items3")}); + resources.GetString("comboBox_type.Items3"), + resources.GetString("comboBox_type.Items4")}); this.comboBox_type.Name = "comboBox_type"; // // NewProxy diff --git a/PortProxyGUI/NewProxy.cs b/PortProxyGUI/NewProxy.cs index 49d34c2..a8814c0 100644 --- a/PortProxyGUI/NewProxy.cs +++ b/PortProxyGUI/NewProxy.cs @@ -9,12 +9,13 @@ namespace PortProxyGUI public partial class NewProxy : Form { public readonly PortProxyGUI PortProxyGUI; + private string AutoString { get; } public NewProxy(PortProxyGUI portProxyGUI) { PortProxyGUI = portProxyGUI; - InitializeComponent(); + AutoString = comboBox_type.Text = comboBox_type.Items.OfType().First(); } private void AddPortProxy(string type, string listenOn, string listenPort, string connectTo, string connectPort) @@ -25,13 +26,18 @@ namespace PortProxyGUI private bool IsIPv4(string ip) { - if (ip == "localhost" || ip == "*") return true; - else return ip.IsMatch(new Regex(@"^(?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])(?:\.(?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])){3}$")); + return ip.IsMatch(new Regex(@"^(?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])(?:\.(?:\d{1,2}|1\d{2}|2[0-4]\d|25[0-5])){3}$")); } private bool IsIPv6(string ip) { - if (ip == "localhost" || ip == "*") return true; - else return ip.IsMatch(new Regex(@"^[\dABCDEF]{2}(?::(?:[\dABCDEF]{2})){5}$")); + return ip.IsMatch(new Regex(@"^[\dABCDEF]{2}(?::(?:[\dABCDEF]{2})){5}$")); + } + + private string GetPassType(string listenOn, string connectTo) + { + var from = IsIPv6(listenOn) ? "v6" : "v4"; + var to = IsIPv6(connectTo) ? "v6" : "v4"; + return $"{from}to{to}"; } private void button1_Click(object sender, EventArgs e) @@ -54,37 +60,11 @@ namespace PortProxyGUI return; } - if (string.IsNullOrEmpty(type)) + if (type == AutoString) type = GetPassType(listenOn, connectTo); + + if (!new[] { "v4tov4", "v4tov6", "v6tov4", "v6tov6" }.Contains(type)) { - if (IsIPv4(listenOn) && IsIPv4(connectTo)) type = comboBox_type.Text = "v4tov4"; - else if (IsIPv4(listenOn) && IsIPv6(connectTo)) type = comboBox_type.Text = "v4tov6"; - else if (IsIPv6(listenOn) && IsIPv4(connectTo)) type = comboBox_type.Text = "v6tov4"; - else if (IsIPv6(listenOn) && IsIPv6(connectTo)) type = comboBox_type.Text = "v6tov6"; - else - { - MessageBox.Show($"The address which is connect to is neither IPv4 nor IPv6.", "Fail", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - return; - } - } - else if (new[] { "v4tov4", "v4tov6", "v6tov4", "v6tov6" }.Contains(type)) - { - bool invalid = false; - switch (type) - { - case "v4tov4": if (!IsIPv4(listenOn) || !IsIPv4(connectTo)) invalid = true; break; - case "v4tov6": if (!IsIPv4(listenOn) || !IsIPv6(connectTo)) invalid = true; break; - case "v6tov4": if (!IsIPv6(listenOn) || !IsIPv4(connectTo)) invalid = true; break; - case "v6tov6": if (!IsIPv6(listenOn) || !IsIPv6(connectTo)) invalid = true; break; - } - if (invalid) - { - MessageBox.Show($"The type ({type}) is invalid for ({listenOn} -> {connectTo}).", "Fail", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - return; - } - } - else - { - MessageBox.Show($"Unknow type ({type}).", "Fail", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + MessageBox.Show($"Unknow type for ({listenOn} -> {connectTo}).", "Fail", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } @@ -93,7 +73,6 @@ namespace PortProxyGUI private void NewProxy_Load(object sender, EventArgs e) { - } private void NewProxy_FormClosing(object sender, FormClosingEventArgs e) diff --git a/PortProxyGUI/NewProxy.resx b/PortProxyGUI/NewProxy.resx index 5545e70..2b93f0b 100644 --- a/PortProxyGUI/NewProxy.resx +++ b/PortProxyGUI/NewProxy.resx @@ -394,15 +394,18 @@ Popup - v4tov4 + (Auto) - v4tov6 + v4tov4 - v6tov4 + v4tov6 + v6tov4 + + v6tov6 diff --git a/PortProxyGUI/NewProxy.zh-CN.resx b/PortProxyGUI/NewProxy.zh-CN.resx index f851938..27fe0b0 100644 --- a/PortProxyGUI/NewProxy.zh-CN.resx +++ b/PortProxyGUI/NewProxy.zh-CN.resx @@ -258,16 +258,16 @@ 1 - + v4tov4 - + v4tov6 - + v6tov4 - + v6tov6 @@ -453,4 +453,7 @@ Center + + (自动) + \ No newline at end of file diff --git a/PortProxyGUI/PortProxyGUI.csproj b/PortProxyGUI/PortProxyGUI.csproj index 35e7e24..81e14d2 100644 --- a/PortProxyGUI/PortProxyGUI.csproj +++ b/PortProxyGUI/PortProxyGUI.csproj @@ -14,7 +14,7 @@ portproxy TCP/IP redirector LICENSE.md Copyright © nstandard.net 2020 - 1.0.2 + 1.0.3 icon.ico