From 3ca3e45ce26181859e44b510841e107a7e47af14 Mon Sep 17 00:00:00 2001 From: ChsBuffer <33744752+chsbuffer@users.noreply.github.com> Date: Fri, 23 Oct 2020 13:44:52 +0800 Subject: [PATCH] feat: Add AioDNS Setting --- Netch/Controllers/DNSController.cs | 6 +- Netch/Forms/SettingForm.Designer.cs | 103 +++++++++++++++++++++++++--- Netch/Forms/SettingForm.cs | 21 +++++- Netch/Models/Setting.cs | 11 +++ 4 files changed, 128 insertions(+), 13 deletions(-) diff --git a/Netch/Controllers/DNSController.cs b/Netch/Controllers/DNSController.cs index aa3df7d8..a3a67d99 100644 --- a/Netch/Controllers/DNSController.cs +++ b/Netch/Controllers/DNSController.cs @@ -15,9 +15,9 @@ namespace Netch.Controllers /// public bool Start() { - if (!aiodns_dial(Encoding.UTF8.GetBytes(Path.GetFullPath("bin\\china_site_list")), - Encoding.UTF8.GetBytes("223.5.5.5:53"), - Encoding.UTF8.GetBytes("1.1.1.1:53")) + if (!aiodns_dial(Encoding.UTF8.GetBytes(Path.GetFullPath(Global.Settings.AioDNS.RulePath)), + Encoding.UTF8.GetBytes($"{Global.Settings.AioDNS.ChinaDNS}:53"), + Encoding.UTF8.GetBytes($"{Global.Settings.AioDNS.OtherDNS}:53")) ) return false; return diff --git a/Netch/Forms/SettingForm.Designer.cs b/Netch/Forms/SettingForm.Designer.cs index d6c8d7da..3efe9f7a 100644 --- a/Netch/Forms/SettingForm.Designer.cs +++ b/Netch/Forms/SettingForm.Designer.cs @@ -87,6 +87,7 @@ namespace Netch.Forms this.writeBufferSizeLabel = new System.Windows.Forms.Label(); this.writeBufferSizeTextBox = new System.Windows.Forms.TextBox(); this.congestionCheckBox = new System.Windows.Forms.CheckBox(); + this.UseMuxCheckBox = new System.Windows.Forms.CheckBox(); this.TLSAllowInsecureCheckBox = new System.Windows.Forms.CheckBox(); this.OtherTabPage = new System.Windows.Forms.TabPage(); this.UpdateSubscribeatWhenOpenedCheckBox = new System.Windows.Forms.CheckBox(); @@ -99,7 +100,13 @@ namespace Netch.Forms this.ExitWhenClosedCheckBox = new System.Windows.Forms.CheckBox(); this.ControlButton = new System.Windows.Forms.Button(); this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); - this.UseMuxCheckBox = new System.Windows.Forms.CheckBox(); + this.AioDNSTabPage = new System.Windows.Forms.TabPage(); + this.AioDNSRulePathTextBox = new System.Windows.Forms.TextBox(); + this.AioDNSRuleRuleLabel = new System.Windows.Forms.Label(); + this.ChinaDNSTextBox = new System.Windows.Forms.TextBox(); + this.ChinaDNSLabel = new System.Windows.Forms.Label(); + this.OtherDNSTextBox = new System.Windows.Forms.TextBox(); + this.OtherDNSLabel = new System.Windows.Forms.Label(); this.TabControl.SuspendLayout(); this.GeneralTabPage.SuspendLayout(); this.PortGroupBox.SuspendLayout(); @@ -110,6 +117,7 @@ namespace Netch.Forms this.KCPGroupBox.SuspendLayout(); this.OtherTabPage.SuspendLayout(); this.flowLayoutPanel1.SuspendLayout(); + this.AioDNSTabPage.SuspendLayout(); this.SuspendLayout(); // // TabControl @@ -120,6 +128,7 @@ namespace Netch.Forms this.TabControl.Controls.Add(this.TAPTabPage); this.TabControl.Controls.Add(this.v2rayTabPage); this.TabControl.Controls.Add(this.OtherTabPage); + this.TabControl.Controls.Add(this.AioDNSTabPage); this.TabControl.Location = new System.Drawing.Point(3, 3); this.TabControl.Name = "TabControl"; this.TabControl.SelectedIndex = 0; @@ -669,6 +678,16 @@ namespace Netch.Forms this.congestionCheckBox.Text = "congestion"; this.congestionCheckBox.UseVisualStyleBackColor = true; // + // UseMuxCheckBox + // + this.UseMuxCheckBox.AutoSize = true; + this.UseMuxCheckBox.Location = new System.Drawing.Point(138, 15); + this.UseMuxCheckBox.Name = "UseMuxCheckBox"; + this.UseMuxCheckBox.Size = new System.Drawing.Size(66, 16); + this.UseMuxCheckBox.TabIndex = 0; + this.UseMuxCheckBox.Text = "Use Mux"; + this.UseMuxCheckBox.UseVisualStyleBackColor = true; + // // TLSAllowInsecureCheckBox // this.TLSAllowInsecureCheckBox.AutoSize = true; @@ -807,15 +826,72 @@ namespace Netch.Forms this.flowLayoutPanel1.Size = new System.Drawing.Size(480, 400); this.flowLayoutPanel1.TabIndex = 13; // - // UseMuxCheckBox + // AioDNSTabPage // - this.UseMuxCheckBox.AutoSize = true; - this.UseMuxCheckBox.Location = new System.Drawing.Point(138, 15); - this.UseMuxCheckBox.Name = "UseMuxCheckBox"; - this.UseMuxCheckBox.Size = new System.Drawing.Size(66, 16); - this.UseMuxCheckBox.TabIndex = 0; - this.UseMuxCheckBox.Text = "Use Mux"; - this.UseMuxCheckBox.UseVisualStyleBackColor = true; + this.AioDNSTabPage.Controls.Add(this.AioDNSRuleRuleLabel); + this.AioDNSTabPage.Controls.Add(this.AioDNSRulePathTextBox); + this.AioDNSTabPage.Controls.Add(this.ChinaDNSLabel); + this.AioDNSTabPage.Controls.Add(this.ChinaDNSTextBox); + this.AioDNSTabPage.Controls.Add(this.OtherDNSLabel); + this.AioDNSTabPage.Controls.Add(this.OtherDNSTextBox); + this.AioDNSTabPage.Location = new System.Drawing.Point(4, 25); + this.AioDNSTabPage.Name = "AioDNSTabPage"; + this.AioDNSTabPage.Padding = new System.Windows.Forms.Padding(3); + this.AioDNSTabPage.Size = new System.Drawing.Size(461, 325); + this.AioDNSTabPage.TabIndex = 5; + this.AioDNSTabPage.Text = "AioDNS"; + this.AioDNSTabPage.UseVisualStyleBackColor = true; + // + // AioDNSRulePathTextBox + // + this.AioDNSRulePathTextBox.Enabled = false; + this.AioDNSRulePathTextBox.Location = new System.Drawing.Point(147, 24); + this.AioDNSRulePathTextBox.Name = "AioDNSRulePathTextBox"; + this.AioDNSRulePathTextBox.Size = new System.Drawing.Size(201, 21); + this.AioDNSRulePathTextBox.TabIndex = 0; + // + // AioDNSRuleRuleLabel + // + this.AioDNSRuleRuleLabel.AutoSize = true; + this.AioDNSRuleRuleLabel.Location = new System.Drawing.Point(16, 27); + this.AioDNSRuleRuleLabel.Name = "AioDNSRuleRuleLabel"; + this.AioDNSRuleRuleLabel.Size = new System.Drawing.Size(59, 12); + this.AioDNSRuleRuleLabel.TabIndex = 1; + this.AioDNSRuleRuleLabel.Text = "Rule File"; + // + // ChinaDNSTextBox + // + this.ChinaDNSTextBox.Location = new System.Drawing.Point(147, 70); + this.ChinaDNSTextBox.Name = "ChinaDNSTextBox"; + this.ChinaDNSTextBox.Size = new System.Drawing.Size(201, 21); + this.ChinaDNSTextBox.TabIndex = 0; + this.ChinaDNSTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // ChinaDNSLabel + // + this.ChinaDNSLabel.AutoSize = true; + this.ChinaDNSLabel.Location = new System.Drawing.Point(16, 73); + this.ChinaDNSLabel.Name = "ChinaDNSLabel"; + this.ChinaDNSLabel.Size = new System.Drawing.Size(59, 12); + this.ChinaDNSLabel.TabIndex = 1; + this.ChinaDNSLabel.Text = "China DNS"; + // + // OtherDNSTextBox + // + this.OtherDNSTextBox.Location = new System.Drawing.Point(147, 106); + this.OtherDNSTextBox.Name = "OtherDNSTextBox"; + this.OtherDNSTextBox.Size = new System.Drawing.Size(201, 21); + this.OtherDNSTextBox.TabIndex = 0; + this.OtherDNSTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // OtherDNSLabel + // + this.OtherDNSLabel.AutoSize = true; + this.OtherDNSLabel.Location = new System.Drawing.Point(16, 109); + this.OtherDNSLabel.Name = "OtherDNSLabel"; + this.OtherDNSLabel.Size = new System.Drawing.Size(59, 12); + this.OtherDNSLabel.TabIndex = 1; + this.OtherDNSLabel.Text = "Other DNS"; // // SettingForm // @@ -848,6 +924,8 @@ namespace Netch.Forms this.OtherTabPage.ResumeLayout(false); this.OtherTabPage.PerformLayout(); this.flowLayoutPanel1.ResumeLayout(false); + this.AioDNSTabPage.ResumeLayout(false); + this.AioDNSTabPage.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -923,5 +1001,12 @@ namespace Netch.Forms private System.Windows.Forms.Label ttiLabel; private System.Windows.Forms.TextBox ttiTextBox; private System.Windows.Forms.CheckBox UseMuxCheckBox; + private System.Windows.Forms.TabPage AioDNSTabPage; + private System.Windows.Forms.Label AioDNSRuleRuleLabel; + private System.Windows.Forms.TextBox AioDNSRulePathTextBox; + private System.Windows.Forms.Label OtherDNSLabel; + private System.Windows.Forms.Label ChinaDNSLabel; + private System.Windows.Forms.TextBox OtherDNSTextBox; + private System.Windows.Forms.TextBox ChinaDNSTextBox; } } \ No newline at end of file diff --git a/Netch/Forms/SettingForm.cs b/Netch/Forms/SettingForm.cs index 1b0d07aa..6f8d6f74 100644 --- a/Netch/Forms/SettingForm.cs +++ b/Netch/Forms/SettingForm.cs @@ -208,6 +208,25 @@ namespace Netch.Forms Global.Settings.UpdateSubscribeatWhenOpened); #endregion + + #region AioDNS + + BindTextBox(AioDNSRulePathTextBox, + s => true, + s => Global.Settings.AioDNS.RulePath = s, + Global.Settings.AioDNS.RulePath); + + BindTextBox(ChinaDNSTextBox, + s => IPAddress.TryParse(s,out _), + s => Global.Settings.AioDNS.ChinaDNS= s, + Global.Settings.AioDNS.ChinaDNS); + + BindTextBox(OtherDNSTextBox, + s => IPAddress.TryParse(s,out _), + s => Global.Settings.AioDNS.OtherDNS= s, + Global.Settings.AioDNS.OtherDNS); + + #endregion } private void TUNTAPUseCustomDNSCheckBox_CheckedChanged(object sender, EventArgs e) @@ -222,7 +241,7 @@ namespace Netch.Forms } else { - TUNTAPDNSTextBox.Text = "Local DNS"; + TUNTAPDNSTextBox.Text = "AioDNS"; } } diff --git a/Netch/Models/Setting.cs b/Netch/Models/Setting.cs index 8937ee4d..23fa6e0c 100644 --- a/Netch/Models/Setting.cs +++ b/Netch/Models/Setting.cs @@ -69,6 +69,15 @@ namespace Netch.Models public bool UseMux = true; } + public class AioDNSConfig + { + public string RulePath = "bin\\china_site_list"; + + public string ChinaDNS = "223.5.5.5"; + + public string OtherDNS = "1.1.1.1"; + } + /// /// 用于读取和写入的配置的类 /// @@ -235,5 +244,7 @@ namespace Netch.Models public string Language = "System"; public V2rayConfig V2RayConfig = new V2rayConfig(); + + public AioDNSConfig AioDNS = new AioDNSConfig(); } } \ No newline at end of file