From 5e5893362c6a152c3b4d3469ab1fc19ad2a9f6af Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sat, 19 Mar 2022 19:26:51 +0800 Subject: [PATCH] add clash core --- v2rayN/v2rayN/Forms/AddServer2Form.cs | 3 ++- v2rayN/v2rayN/Global.cs | 3 +++ v2rayN/v2rayN/Handler/ConfigHandler.cs | 7 ++++++- v2rayN/v2rayN/Handler/V2rayHandler.cs | 27 +++++++++++++++++++++++++- v2rayN/v2rayN/Mode/ECoreType.cs | 3 ++- 5 files changed, 39 insertions(+), 4 deletions(-) diff --git a/v2rayN/v2rayN/Forms/AddServer2Form.cs b/v2rayN/v2rayN/Forms/AddServer2Form.cs index 892bb48f..f19794f2 100644 --- a/v2rayN/v2rayN/Forms/AddServer2Form.cs +++ b/v2rayN/v2rayN/Forms/AddServer2Form.cs @@ -18,6 +18,7 @@ namespace v2rayN.Forms private void AddServer2Form_Load(object sender, EventArgs e) { cmbCoreType.Items.AddRange(Global.coreTypes.ToArray()); + cmbCoreType.Items.Add("clash"); cmbCoreType.Items.Add(string.Empty); txtAddress.ReadOnly = true; @@ -112,7 +113,7 @@ namespace v2rayN.Forms OpenFileDialog fileDialog = new OpenFileDialog { Multiselect = false, - Filter = "Config|*.json|All|*.*" + Filter = "Config|*.json|YAML|*.yaml|All|*.*" }; if (fileDialog.ShowDialog() != DialogResult.OK) { diff --git a/v2rayN/v2rayN/Global.cs b/v2rayN/v2rayN/Global.cs index d4dccdaf..774ee12f 100644 --- a/v2rayN/v2rayN/Global.cs +++ b/v2rayN/v2rayN/Global.cs @@ -14,6 +14,9 @@ namespace v2rayN public const string v2flyCoreUrl = "https://github.com/v2fly/v2ray-core/releases"; public const string xrayCoreUrl = "https://github.com/XTLS/Xray-core/releases"; public const string NUrl = @"https://github.com/2dust/v2rayN/releases"; + public const string clashCoreUrl = "https://github.com/Dreamacro/clash/releases"; + + /// diff --git a/v2rayN/v2rayN/Handler/ConfigHandler.cs b/v2rayN/v2rayN/Handler/ConfigHandler.cs index 40b32a5b..b196fc1f 100644 --- a/v2rayN/v2rayN/Handler/ConfigHandler.cs +++ b/v2rayN/v2rayN/Handler/ConfigHandler.cs @@ -426,7 +426,12 @@ namespace v2rayN.Handler public static int AddCustomServer(ref Config config, VmessItem vmessItem) { var fileName = vmessItem.address; - string newFileName = string.Format("{0}.json", Utils.GetGUID()); + if (!File.Exists(fileName)) + { + return -1; + } + var ext = Path.GetExtension(fileName); + string newFileName = string.Format("{0}{1}", Utils.GetGUID(), ext); //newFileName = Path.Combine(Utils.GetTempPath(), newFileName); try diff --git a/v2rayN/v2rayN/Handler/V2rayHandler.cs b/v2rayN/v2rayN/Handler/V2rayHandler.cs index 1005366b..1d81a90a 100644 --- a/v2rayN/v2rayN/Handler/V2rayHandler.cs +++ b/v2rayN/v2rayN/Handler/V2rayHandler.cs @@ -23,6 +23,7 @@ namespace v2rayN.Handler private static string v2rayConfigRes = Global.v2rayConfigFileName; private List lstV2ray; private string coreUrl; + private string coreArguments; public event ProcessDelegate ProcessEvent; //private int processId = 0; private Process _process; @@ -39,6 +40,12 @@ namespace v2rayN.Handler if (Global.reloadV2ray) { var item = ConfigHandler.GetDefaultServer(ref config); + if (item == null) + { + ShowMsg(false, UIRes.I18N("CheckServerSettings")); + return; + } + SetCore(config, item); string fileName = Utils.GetPath(v2rayConfigRes); if (V2rayConfigHandler.GenerateClientConfig(item, fileName, false, out string msg) != 0) @@ -196,6 +203,7 @@ namespace v2rayN.Handler StartInfo = new ProcessStartInfo { FileName = fileName, + Arguments = coreArguments, WorkingDirectory = Utils.StartupPath(), UseShellExecute = false, RedirectStandardOutput = true, @@ -320,6 +328,10 @@ namespace v2rayN.Handler private void SetCore(Config config, VmessItem item) { + if (item == null) + { + return; + } var coreType = config.GetCoreType(item.configType); if (item.coreType != null) { @@ -334,14 +346,27 @@ namespace v2rayN.Handler "v2ray" }; coreUrl = Global.v2flyCoreUrl; + coreArguments = string.Empty; } - else + else if (coreType == ECoreType.Xray) { lstV2ray = new List { "xray" }; coreUrl = Global.xrayCoreUrl; + coreArguments = string.Empty; + } + else if (coreType == ECoreType.clash) + { + lstV2ray = new List + { + "clash-windows-amd64", + "clash-windows-386", + "clash" + }; + coreUrl = Global.clashCoreUrl; + coreArguments = "-f config.json"; } } } diff --git a/v2rayN/v2rayN/Mode/ECoreType.cs b/v2rayN/v2rayN/Mode/ECoreType.cs index e6d9af55..390f008f 100644 --- a/v2rayN/v2rayN/Mode/ECoreType.cs +++ b/v2rayN/v2rayN/Mode/ECoreType.cs @@ -4,6 +4,7 @@ namespace v2rayN.Mode public enum ECoreType { v2fly = 1, - Xray = 2 + Xray = 2, + clash = 3 } }