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