From 6408d51c8529ecaecd4d86443b3840851a628442 Mon Sep 17 00:00:00 2001
From: 2dust <31833384+2dust@users.noreply.github.com>
Date: Thu, 17 Mar 2022 18:41:51 +0800
Subject: [PATCH] Improve custom configuration
---
.../v2rayN/Forms/AddServer2Form.Designer.cs | 16 +-
v2rayN/v2rayN/Forms/AddServer2Form.cs | 46 ++-
v2rayN/v2rayN/Forms/AddServer2Form.resx | 303 +++++++++++++-----
v2rayN/v2rayN/Forms/AddServerForm.cs | 4 +
v2rayN/v2rayN/Forms/MainForm.cs | 52 +--
v2rayN/v2rayN/Handler/ConfigHandler.cs | 17 +-
6 files changed, 312 insertions(+), 126 deletions(-)
diff --git a/v2rayN/v2rayN/Forms/AddServer2Form.Designer.cs b/v2rayN/v2rayN/Forms/AddServer2Form.Designer.cs
index 0e407a43..312658e5 100644
--- a/v2rayN/v2rayN/Forms/AddServer2Form.Designer.cs
+++ b/v2rayN/v2rayN/Forms/AddServer2Form.Designer.cs
@@ -31,6 +31,7 @@
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer2Form));
this.btnClose = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.btnBrowse = new System.Windows.Forms.Button();
this.txtAddress = new System.Windows.Forms.TextBox();
this.label13 = new System.Windows.Forms.Label();
this.txtRemarks = new System.Windows.Forms.TextBox();
@@ -45,23 +46,31 @@
//
// btnClose
//
- resources.ApplyResources(this.btnClose, "btnClose");
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ resources.ApplyResources(this.btnClose, "btnClose");
this.btnClose.Name = "btnClose";
this.btnClose.UseVisualStyleBackColor = true;
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
//
// groupBox1
//
- resources.ApplyResources(this.groupBox1, "groupBox1");
+ this.groupBox1.Controls.Add(this.btnBrowse);
this.groupBox1.Controls.Add(this.txtAddress);
this.groupBox1.Controls.Add(this.label13);
this.groupBox1.Controls.Add(this.txtRemarks);
this.groupBox1.Controls.Add(this.label6);
this.groupBox1.Controls.Add(this.label1);
+ resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
//
+ // btnBrowse
+ //
+ resources.ApplyResources(this.btnBrowse, "btnBrowse");
+ this.btnBrowse.Name = "btnBrowse";
+ this.btnBrowse.UseVisualStyleBackColor = true;
+ this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click);
+ //
// txtAddress
//
resources.ApplyResources(this.txtAddress, "txtAddress");
@@ -89,9 +98,9 @@
//
// panel2
//
- resources.ApplyResources(this.panel2, "panel2");
this.panel2.Controls.Add(this.btnClose);
this.panel2.Controls.Add(this.btnOK);
+ resources.ApplyResources(this.panel2, "panel2");
this.panel2.Name = "panel2";
//
// btnOK
@@ -136,5 +145,6 @@
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.TextBox txtAddress;
+ private System.Windows.Forms.Button btnBrowse;
}
}
\ No newline at end of file
diff --git a/v2rayN/v2rayN/Forms/AddServer2Form.cs b/v2rayN/v2rayN/Forms/AddServer2Form.cs
index 012f3039..38145096 100644
--- a/v2rayN/v2rayN/Forms/AddServer2Form.cs
+++ b/v2rayN/v2rayN/Forms/AddServer2Form.cs
@@ -15,12 +15,15 @@ namespace v2rayN.Forms
private void AddServer2Form_Load(object sender, EventArgs e)
{
+ txtAddress.ReadOnly = true;
if (vmessItem != null)
{
BindingServer();
}
else
{
+ vmessItem = new VmessItem();
+ vmessItem.groupId = groupId;
ClearServer();
}
}
@@ -32,7 +35,6 @@ namespace v2rayN.Forms
{
txtRemarks.Text = vmessItem.remarks;
txtAddress.Text = vmessItem.address;
- txtAddress.ReadOnly = true;
}
@@ -66,7 +68,47 @@ namespace v2rayN.Forms
private void btnClose_Click(object sender, EventArgs e)
{
- this.DialogResult = DialogResult.Cancel;
+ if (Utils.IsNullOrEmpty(vmessItem.indexId))
+ {
+ this.DialogResult = DialogResult.Cancel;
+ }
+ else
+ {
+ this.DialogResult = DialogResult.OK;
+ }
+ }
+
+ private void btnBrowse_Click(object sender, EventArgs e)
+ {
+ UI.Show(UIRes.I18N("CustomServerTips"));
+
+ OpenFileDialog fileDialog = new OpenFileDialog
+ {
+ Multiselect = false,
+ Filter = "Config|*.json|All|*.*"
+ };
+ if (fileDialog.ShowDialog() != DialogResult.OK)
+ {
+ return;
+ }
+ string fileName = fileDialog.FileName;
+ if (Utils.IsNullOrEmpty(fileName))
+ {
+ return;
+ }
+
+ vmessItem.address = fileName;
+ vmessItem.remarks = txtRemarks.Text;
+
+ if (ConfigHandler.AddCustomServer(ref config, vmessItem) == 0)
+ {
+ BindingServer();
+ UI.Show(UIRes.I18N("SuccessfullyImportedCustomServer"));
+ }
+ else
+ {
+ UI.ShowWarning(UIRes.I18N("FailedImportedCustomServer"));
+ }
}
}
}
diff --git a/v2rayN/v2rayN/Forms/AddServer2Form.resx b/v2rayN/v2rayN/Forms/AddServer2Form.resx
index 969bc410..c6c7ec13 100644
--- a/v2rayN/v2rayN/Forms/AddServer2Form.resx
+++ b/v2rayN/v2rayN/Forms/AddServer2Form.resx
@@ -117,74 +117,83 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
-
- 6, 12
-
-
- 611, 271
-
-
- True
-
-
- Edit custom configuration server
-
- 396, 17
+ 450, 17
75, 23
+
4
&Cancel
-
- 303, 17
+
+ btnClose
-
- 75, 23
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 5
+
+ panel2
-
- &OK
-
-
- Fill
-
-
- 0, 10
-
-
- 611, 201
-
-
- 3
-
-
- Server
-
-
- True
-
-
- 12, 62
-
-
- 83, 12
-
-
+
0
-
- Address
+
+
+ NoControl
+
+
+ 127, 121
+
+
+ 75, 23
+
+
+ 40
+
+
+ &Browse
+
+
+ btnBrowse
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox1
+
+
+ 0
+
+
+ 127, 62
+
+
+ True
+
+
+ 432, 37
+
+
+ 23
+
+
+ txtAddress
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox1
+
+
+ 1
True
@@ -201,6 +210,39 @@
* Fill in manually
+
+ label13
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox1
+
+
+ 2
+
+
+ 127, 23
+
+
+ 313, 21
+
+
+ 11
+
+
+ txtRemarks
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox1
+
+
+ 3
+
True
@@ -208,7 +250,7 @@
12, 27
- 83, 12
+ 95, 12
10
@@ -216,6 +258,120 @@
Alias (remarks)
+
+ label6
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox1
+
+
+ 4
+
+
+ True
+
+
+ 12, 62
+
+
+ 47, 12
+
+
+ 0
+
+
+ Address
+
+
+ label1
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ groupBox1
+
+
+ 5
+
+
+ Fill
+
+
+ 0, 10
+
+
+ 611, 189
+
+
+ 3
+
+
+ Server
+
+
+ groupBox1
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 0
+
+
+ 357, 17
+
+
+ 75, 23
+
+
+ 5
+
+
+ &OK
+
+
+ btnOK
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ panel2
+
+
+ 1
+
+
+ Bottom
+
+
+ 0, 199
+
+
+ 611, 60
+
+
+ 7
+
+
+ panel2
+
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 1
+
Top
@@ -228,37 +384,34 @@
6
-
- Bottom
+
+ panel1
-
- 0, 211
+
+ System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 611, 60
+
+ $this
-
- 7
+
+ 2
-
- 127, 62
-
-
+
True
+
+
+ 6, 12
-
- 432, 104
+
+ 611, 259
-
- 23
+
+ Edit custom configuration server
-
- 127, 23
+
+ AddServer2Form
-
- 313, 21
-
-
- 11
+
+ v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
\ No newline at end of file
diff --git a/v2rayN/v2rayN/Forms/AddServerForm.cs b/v2rayN/v2rayN/Forms/AddServerForm.cs
index 57b5871f..44e58ee0 100644
--- a/v2rayN/v2rayN/Forms/AddServerForm.cs
+++ b/v2rayN/v2rayN/Forms/AddServerForm.cs
@@ -16,6 +16,8 @@ namespace v2rayN.Forms
private void AddServerForm_Load(object sender, EventArgs e)
{
cmbSecurity.Items.AddRange(Global.vmessSecuritys.ToArray());
+ //FillCoreType(cmbCoreType);
+
if (vmessItem != null)
{
BindingServer();
@@ -39,6 +41,7 @@ namespace v2rayN.Forms
txtAlterId.Text = vmessItem.alterId.ToString();
cmbSecurity.Text = vmessItem.security;
txtRemarks.Text = vmessItem.remarks;
+ // BindingCoreType(cmbCoreType, vmessItem);
transportControl.BindingServer(vmessItem);
}
@@ -92,6 +95,7 @@ namespace v2rayN.Forms
vmessItem.alterId = Utils.ToInt(alterId);
vmessItem.security = security;
vmessItem.remarks = remarks;
+ //vmessItem.coreType = GetCoreType(cmbCoreType);
if (ConfigHandler.AddServer(ref config, vmessItem) == 0)
{
diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs
index 7a1fa555..a362787a 100644
--- a/v2rayN/v2rayN/Forms/MainForm.cs
+++ b/v2rayN/v2rayN/Forms/MainForm.cs
@@ -18,7 +18,7 @@ namespace v2rayN.Forms
public partial class MainForm : BaseForm
{
private V2rayHandler v2rayHandler;
- private List lvSelecteds = new List();
+ private List lstSelecteds = new List();
private StatisticsHandler statistics = null;
private string MsgFilter = string.Empty;
private List lstVmess = null;
@@ -498,6 +498,8 @@ namespace v2rayN.Forms
groupId = tabGroup.SelectedTab.Name;
RefreshServers();
+
+ lvServers.Focus();
}
#endregion
@@ -689,7 +691,7 @@ namespace v2rayN.Forms
return;
}
- ConfigHandler.RemoveServer(config, lvSelecteds);
+ ConfigHandler.RemoveServer(config, lstSelecteds);
RefreshServers();
_ = LoadV2ray();
@@ -767,7 +769,7 @@ namespace v2rayN.Forms
{
if (GetLvSelectedIndex() < 0) return;
ClearTestResult();
- SpeedtestHandler statistics = new SpeedtestHandler(ref config, ref v2rayHandler, lvSelecteds, actionType, UpdateSpeedtestHandler);
+ SpeedtestHandler statistics = new SpeedtestHandler(ref config, ref v2rayHandler, lstSelecteds, actionType, UpdateSpeedtestHandler);
}
private void tsbTestMe_Click(object sender, EventArgs e)
@@ -802,9 +804,9 @@ namespace v2rayN.Forms
GetLvSelectedIndex();
StringBuilder sb = new StringBuilder();
- foreach (var v in lvSelecteds)
+ foreach (var it in lstSelecteds)
{
- string url = ShareHandler.GetShareUrl(v);
+ string url = ShareHandler.GetShareUrl(it);
if (Utils.IsNullOrEmpty(url))
{
continue;
@@ -825,9 +827,9 @@ namespace v2rayN.Forms
GetLvSelectedIndex();
StringBuilder sb = new StringBuilder();
- foreach (var v in lvSelecteds)
+ foreach (var it in lstSelecteds)
{
- string url = ShareHandler.GetShareUrl(v);
+ string url = ShareHandler.GetShareUrl(it);
if (Utils.IsNullOrEmpty(url))
{
continue;
@@ -926,7 +928,7 @@ namespace v2rayN.Forms
private int GetLvSelectedIndex()
{
int index = -1;
- lvSelecteds.Clear();
+ lstSelecteds.Clear();
try
{
if (lvServers.SelectedIndices.Count <= 0)
@@ -938,7 +940,7 @@ namespace v2rayN.Forms
index = lvServers.SelectedIndices[0];
foreach (int i in lvServers.SelectedIndices)
{
- lvSelecteds.Add(lstVmess[i]);
+ lstSelecteds.Add(lstVmess[i]);
}
return index;
}
@@ -950,33 +952,7 @@ namespace v2rayN.Forms
private void menuAddCustomServer_Click(object sender, EventArgs e)
{
- UI.Show(UIRes.I18N("CustomServerTips"));
-
- OpenFileDialog fileDialog = new OpenFileDialog
- {
- Multiselect = false,
- Filter = "Config|*.json|All|*.*"
- };
- if (fileDialog.ShowDialog() != DialogResult.OK)
- {
- return;
- }
- string fileName = fileDialog.FileName;
- if (Utils.IsNullOrEmpty(fileName))
- {
- return;
- }
-
- if (ConfigHandler.AddCustomServer(ref config, fileName, groupId) == 0)
- {
- RefreshServers();
- //LoadV2ray();
- UI.Show(UIRes.I18N("SuccessfullyImportedCustomServer"));
- }
- else
- {
- UI.ShowWarning(UIRes.I18N("FailedImportedCustomServer"));
- }
+ ShowServerForm((int)EConfigType.Custom, -1);
}
private void menuAddShadowsocksServer_Click(object sender, EventArgs e)
@@ -1215,9 +1191,9 @@ namespace v2rayN.Forms
}
private void ClearTestResult()
{
- foreach (var s in lvSelecteds)
+ foreach (var it in lstSelecteds)
{
- SetTestResult(s.indexId, "");
+ SetTestResult(it.indexId, "");
}
}
private void UpdateSpeedtestHandler(string indexId, string msg)
diff --git a/v2rayN/v2rayN/Handler/ConfigHandler.cs b/v2rayN/v2rayN/Handler/ConfigHandler.cs
index 3547a9b3..a8eac639 100644
--- a/v2rayN/v2rayN/Handler/ConfigHandler.cs
+++ b/v2rayN/v2rayN/Handler/ConfigHandler.cs
@@ -439,10 +439,11 @@ namespace v2rayN.Handler
/// 添加自定义服务器
///
///
- ///
+ ///
///
- public static int AddCustomServer(ref Config config, string fileName, string groupId)
+ public static int AddCustomServer(ref Config config, VmessItem vmessItem)
{
+ var fileName = vmessItem.address;
string newFileName = string.Format("{0}.json", Utils.GetGUID());
//newFileName = Path.Combine(Utils.GetTempPath(), newFileName);
@@ -455,13 +456,13 @@ namespace v2rayN.Handler
return -1;
}
- VmessItem vmessItem = new VmessItem
+ vmessItem.address = newFileName;
+ vmessItem.configType = (int)EConfigType.Custom;
+ if (Utils.IsNullOrEmpty(vmessItem.remarks))
{
- groupId = groupId,
- address = newFileName,
- configType = (int)EConfigType.Custom,
- remarks = string.Format("import custom@{0}", DateTime.Now.ToShortDateString())
- };
+ vmessItem.remarks = string.Format("import custom@{0}", DateTime.Now.ToShortDateString());
+ }
+
AddServerCommon(ref config, vmessItem);