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);