From a2838b82173d72494a03f4e9c0d5e339c8a01e27 Mon Sep 17 00:00:00 2001
From: ChsBuffer <33744752+chsbuffer@users.noreply.github.com>
Date: Thu, 13 Aug 2020 01:06:55 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=BF=9B=E7=A8=8B=E7=BC=96?=
=?UTF-8?q?=E8=BE=91=E6=A8=A1=E5=BC=8F=E6=96=87=E4=BB=B6=E5=90=8D=E4=BC=9A?=
=?UTF-8?q?=E8=A2=AB=E6=9B=B4=E6=94=B9=EF=BC=8C=E6=B7=BB=E5=8A=A0=E7=BC=96?=
=?UTF-8?q?=E8=BE=91=E6=A8=A1=E5=BC=8F=E4=B8=8D=E5=8F=AF=E7=94=A8=E6=8F=90?=
=?UTF-8?q?=E9=86=92=EF=BC=8C=E6=8A=BD=E5=8F=96=E8=BF=9B=E7=A8=8B=E6=A8=A1?=
=?UTF-8?q?=E5=BC=8F=E7=BC=96=E8=BE=91=E5=8F=B3=E9=94=AE=E8=8F=9C=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Netch/Forms/MainForm.cs | 35 ++++++++------
Netch/Forms/Mode/Process.Designer.cs | 20 ++++++++
Netch/Forms/Mode/Process.cs | 8 ++--
Netch/Forms/Mode/Process.resx | 3 ++
Netch/Models/Mode.cs | 71 +++++++++++++++-------------
5 files changed, 85 insertions(+), 52 deletions(-)
diff --git a/Netch/Forms/MainForm.cs b/Netch/Forms/MainForm.cs
index 9489b8d4..f3f0e73b 100644
--- a/Netch/Forms/MainForm.cs
+++ b/Netch/Forms/MainForm.cs
@@ -334,23 +334,28 @@ namespace Netch.Forms
private void EditModePictureBox_Click(object sender, EventArgs e)
{
// 当前ModeComboBox中至少有一项
- if (ModeComboBox.Items.Count > 0 && ModeComboBox.SelectedIndex != -1)
- {
- SaveConfigs();
- var selectedMode = (Models.Mode) ModeComboBox.SelectedItem;
- // 只允许修改进程加速的模式
- if (selectedMode.Type == 0)
- {
- //Process.Start(Environment.CurrentDirectory + "\\mode\\" + selectedMode.FileName + ".txt");
- var process = new Process(selectedMode);
- process.Text = "Edit Process Mode";
- process.Show();
- Hide();
- }
- }
- else
+ if (ModeComboBox.Items.Count <= 0 || ModeComboBox.SelectedIndex == -1)
{
MessageBoxX.Show(i18N.Translate("Please select a mode first"));
+ return;
+ }
+
+ SaveConfigs();
+ var selectedMode = (Models.Mode) ModeComboBox.SelectedItem;
+ switch (selectedMode.Type)
+ {
+ case 0:
+ {
+ var process = new Process(selectedMode);
+ process.Show();
+ Hide();
+ break;
+ }
+ default:
+ {
+ MessageBoxX.Show($"Current not support editing {selectedMode.TypeToString()} Mode");
+ break;
+ }
}
}
diff --git a/Netch/Forms/Mode/Process.Designer.cs b/Netch/Forms/Mode/Process.Designer.cs
index 7b49a61f..4f6fbc74 100644
--- a/Netch/Forms/Mode/Process.Designer.cs
+++ b/Netch/Forms/Mode/Process.Designer.cs
@@ -31,6 +31,7 @@ namespace Netch.Forms.Mode
///
private void InitializeComponent()
{
+ this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Process));
this.ConfigurationGroupBox = new System.Windows.Forms.GroupBox();
this.UseCustomFilenameBox = new System.Windows.Forms.CheckBox();
@@ -43,9 +44,12 @@ namespace Netch.Forms.Mode
this.RuleListBox = new System.Windows.Forms.ListBox();
this.RemarkTextBox = new System.Windows.Forms.TextBox();
this.RemarkLabel = new System.Windows.Forms.Label();
+ this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
this.ControlButton = new System.Windows.Forms.Button();
+ this.DeleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ConfigurationGroupBox.SuspendLayout();
this.ProcessGroupBox.SuspendLayout();
+ this.contextMenuStrip.SuspendLayout();
this.SuspendLayout();
//
// ConfigurationGroupBox
@@ -156,6 +160,12 @@ namespace Netch.Forms.Mode
this.RemarkLabel.TabIndex = 0;
this.RemarkLabel.Text = "Remark";
//
+ // contextMenuStrip
+ //
+ this.contextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.DeleteToolStripMenuItem});
+ this.contextMenuStrip.Name = "contextMenuStrip";
+ this.contextMenuStrip.Size = new System.Drawing.Size(153, 48);
+ //
// ControlButton
//
this.ControlButton.Location = new System.Drawing.Point(277, 362);
@@ -166,6 +176,13 @@ namespace Netch.Forms.Mode
this.ControlButton.UseVisualStyleBackColor = true;
this.ControlButton.Click += new System.EventHandler(this.ControlButton_Click);
//
+ // DeleteToolStripMenuItem
+ //
+ this.DeleteToolStripMenuItem.Name = "DeleteToolStripMenuItem";
+ this.DeleteToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+ this.DeleteToolStripMenuItem.Text = "Delete";
+ this.DeleteToolStripMenuItem.Click += new System.EventHandler(this.deleteRule_Click);
+ //
// Process
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
@@ -187,11 +204,14 @@ namespace Netch.Forms.Mode
this.ConfigurationGroupBox.PerformLayout();
this.ProcessGroupBox.ResumeLayout(false);
this.ProcessGroupBox.PerformLayout();
+ this.contextMenuStrip.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
+ private System.Windows.Forms.ContextMenuStrip contextMenuStrip;
+ private System.Windows.Forms.ToolStripMenuItem DeleteToolStripMenuItem;
private System.Windows.Forms.GroupBox ConfigurationGroupBox;
private System.Windows.Forms.Label RemarkLabel;
private System.Windows.Forms.GroupBox ProcessGroupBox;
diff --git a/Netch/Forms/Mode/Process.cs b/Netch/Forms/Mode/Process.cs
index af3409ed..3c7425b6 100644
--- a/Netch/Forms/Mode/Process.cs
+++ b/Netch/Forms/Mode/Process.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
-using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -34,6 +33,7 @@ namespace Netch.Forms.Mode
mode.Rule.ForEach(i => RuleListBox.Items.Add(i));
EditMode = true;
+ RemarkTextBox.TextChanged -= RemarkTextBox_TextChanged;
FilenameTextBox.Enabled = false;
FilenameLabel.Enabled = false;
UseCustomFilenameBox.Enabled = false;
@@ -109,6 +109,7 @@ namespace Netch.Forms.Mode
AddButton.Text = i18N.Translate(AddButton.Text);
ScanButton.Text = i18N.Translate(ScanButton.Text);
ControlButton.Text = i18N.Translate(ControlButton.Text);
+ DeleteToolStripMenuItem.Text = i18N.Translate(DeleteToolStripMenuItem.Text);
FilenameTextBox.Enabled = false;
FilenameLabel.Enabled = false;
@@ -129,10 +130,7 @@ namespace Netch.Forms.Mode
return;
if (e.Button == MouseButtons.Right)
{
- var strip = new ContextMenuStrip();
- strip.Items.Add(i18N.Translate("Delete"));
- strip.Items[0].Click += deleteRule_Click;
- strip.Show(RuleListBox, e.Location); //鼠标右键按下弹出菜单
+ contextMenuStrip.Show(RuleListBox, e.Location);
}
}
diff --git a/Netch/Forms/Mode/Process.resx b/Netch/Forms/Mode/Process.resx
index b3c3547f..6bfce0a3 100644
--- a/Netch/Forms/Mode/Process.resx
+++ b/Netch/Forms/Mode/Process.resx
@@ -117,6 +117,9 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 17, 17
+
diff --git a/Netch/Models/Mode.cs b/Netch/Models/Mode.cs
index 183ff2eb..fb64f996 100644
--- a/Netch/Models/Mode.cs
+++ b/Netch/Models/Mode.cs
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Globalization;
+using System.Linq;
namespace Netch.Models
{
@@ -20,9 +21,9 @@ namespace Netch.Models
/// 0. Socks5 + 进程加速
/// 1. Socks5 + TUN/TAP 规则内 IP CIDR 加速
/// 2. Socks5 + TUN/TAP 全局,绕过规则内 IP CIDR
- /// 3. Socks5 + HTTP 代理(自动设置到系统代理)
- /// 4. Socks5 代理(不自动设置到系统代理)
- /// 5. Socks5 + HTTP 代理(不自动设置到系统代理)
+ /// 3. Socks5 + HTTP 代理(设置到系统代理)
+ /// 4. Socks5 代理(不设置到系统代理)
+ /// 5. Socks5 + HTTP 代理(不设置到系统代理)
///
public int Type = 0;
@@ -34,7 +35,7 @@ namespace Netch.Models
///
/// 规则
///
- public List Rule = new List();
+ public readonly List Rule = new List();
///
/// 获取备注
@@ -42,7 +43,7 @@ namespace Netch.Models
/// 备注
public override string ToString()
{
- return string.Format("[{0}] {1}", Type + 1, Remark);
+ return $"[{Type + 1}] {Remark}";
}
///
@@ -51,38 +52,30 @@ namespace Netch.Models
/// 模式文件字符串
public string ToFileString()
{
- string FileString;
+ string fileString;
- // 进程模式
- if (Type == 0)
+ switch (Type)
{
- FileString = $"# {Remark}\r\n";
+ case 0:
+ // 进程模式
+ fileString = $"# {Remark}";
+ break;
+ case 1:
+ // TUN/TAP 规则内 IP CIDR,无 Bypass China 设置
+ fileString = $"# {Remark}, {Type}, 0";
+ break;
+ default:
+ fileString = $"# {Remark}, {Type}, {(BypassChina ? 1 : 0)}";
+ break;
}
- // TUN/TAP 规则内 IP CIDR,无 Bypass China 设置
- else if (Type == 1)
- {
- FileString = $"# {Remark}, {Type}, 0\r\n";
- }
+ fileString += Global.EOF;
- // TUN/TAP 全局,绕过规则内 IP CIDR
- // HTTP 代理(自动设置到系统代理)
- // Socks5 代理(不自动设置到系统代理)
- // Socks5 + HTTP 代理(不自动设置到系统代理)
- else
- {
- FileString = $"# {Remark}, {Type}, {(BypassChina ? 1 : 0)}\r\n";
- }
+ fileString = Rule.Aggregate(fileString, (current, item) => $"{current}{item}{Global.EOF}");
+ // 去除最后的行尾符
+ fileString = fileString.Substring(0, fileString.Length - 2);
- foreach (var item in Rule)
- {
- FileString = $"{FileString}{item}\r\n";
- }
-
- // 去除最后两个多余回车符和换行符
- FileString = FileString.Substring(0, FileString.Length - 2);
-
- return FileString;
+ return fileString;
}
///
@@ -131,5 +124,19 @@ namespace Netch.Models
}
}
}
+
+ public string TypeToString()
+ {
+ return Type switch
+ {
+ 0 => "Process",
+ 1 => "TUNTAP",
+ 2 => "TUNTAP",
+ 3 => "SYSTEM",
+ 4 => "S5",
+ 5 => "S5+HTTP",
+ _ => "ERROR",
+ };
+ }
}
-}
+}
\ No newline at end of file