From c670a2346b6dca81b80109330eecad39f9b865b9 Mon Sep 17 00:00:00 2001 From: ukuq Date: Thu, 25 Feb 2021 00:36:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E5=9C=A8=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E7=9B=AE=E5=BD=95=E4=B8=8B=E4=BD=BF=E7=94=A8=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E7=9A=84v2rayN.Sample.SampleClientConfig.txt?= =?UTF-8?q?=E7=AD=89=E6=96=87=E4=BB=B6=E8=A6=86=E7=9B=96=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=20=E9=AB=98=E7=BA=A7=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=B8=AD=E7=9A=84OutboundTag=E4=BC=9A?= =?UTF-8?q?=E6=A0=B9=E6=8D=AESampleClientConfig.txt=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=86=20=E4=BF=AE=E5=A4=8D=E4=BA=86util?= =?UTF-8?q?=E4=B8=AD=E5=AD=97=E7=AC=A6=E4=B8=B2=E5=A4=84=E7=90=86=E7=9A=84?= =?UTF-8?q?=E7=A9=BA=E6=8C=87=E9=92=88=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RoutingRuleSettingDetailsForm.Designer.cs | 37 ++++++++++++++++--- v2rayN/v2rayN/Tool/Utils.cs | 8 ++++ 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/v2rayN/v2rayN/Forms/RoutingRuleSettingDetailsForm.Designer.cs b/v2rayN/v2rayN/Forms/RoutingRuleSettingDetailsForm.Designer.cs index d33ade0f..499947bf 100644 --- a/v2rayN/v2rayN/Forms/RoutingRuleSettingDetailsForm.Designer.cs +++ b/v2rayN/v2rayN/Forms/RoutingRuleSettingDetailsForm.Designer.cs @@ -1,7 +1,14 @@ -namespace v2rayN.Forms +using System.Collections.Generic; +using v2rayN.Mode; + +namespace v2rayN.Forms { partial class RoutingRuleSettingDetailsForm { + + //缓存当前支持的outbound类型,以免频繁读取配置文件 + private static object[] cmbOutboundTags; + /// /// Required designer variable. /// @@ -112,10 +119,30 @@ // this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cmbOutboundTag.FormattingEnabled = true; - this.cmbOutboundTag.Items.AddRange(new object[] { - resources.GetString("cmbOutboundTag.Items"), - resources.GetString("cmbOutboundTag.Items1"), - resources.GetString("cmbOutboundTag.Items2")}); + + if (cmbOutboundTags == null) + { + cmbOutboundTags = new object[] { + resources.GetString("cmbOutboundTag.Items"), + resources.GetString("cmbOutboundTag.Items1"), + resources.GetString("cmbOutboundTag.Items2")}; + + //尝试从配置里面读取outbound选项 + try + { + List list = new List(); + foreach (Outbounds item in Utils.FromJson(Utils.GetEmbedText(Global.v2raySampleClient)).outbounds) + { + list.Add(item.tag); + }; + cmbOutboundTags = list.ToArray(); + } + catch + { + } + } + + this.cmbOutboundTag.Items.AddRange(cmbOutboundTags); resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag"); this.cmbOutboundTag.Name = "cmbOutboundTag"; // diff --git a/v2rayN/v2rayN/Tool/Utils.cs b/v2rayN/v2rayN/Tool/Utils.cs index 1e1e9444..baa8c73b 100644 --- a/v2rayN/v2rayN/Tool/Utils.cs +++ b/v2rayN/v2rayN/Tool/Utils.cs @@ -36,6 +36,13 @@ namespace v2rayN /// public static string GetEmbedText(string res) { + //支持自定义文件覆盖默认配置 + string path = GetPath(res); + if (File.Exists(path)) + { + return LoadResource(path); + } + string result = string.Empty; try @@ -173,6 +180,7 @@ namespace v2rayN { try { + if (lst == null) lst = new List(); if (wrap) { return string.Join("," + Environment.NewLine, lst.ToArray());