Refactor and improve

This commit is contained in:
2dust 2022-03-28 18:54:05 +08:00
parent 4d16a5e801
commit ece4572058
8 changed files with 95 additions and 56 deletions

View file

@ -1392,15 +1392,15 @@ namespace v2rayN.Forms
private void tsbCheckUpdateCore_Click(object sender, EventArgs e) private void tsbCheckUpdateCore_Click(object sender, EventArgs e)
{ {
CheckUpdateCore("v2fly"); CheckUpdateCore(ECoreType.v2fly);
} }
private void tsbCheckUpdateXrayCore_Click(object sender, EventArgs e) private void tsbCheckUpdateXrayCore_Click(object sender, EventArgs e)
{ {
CheckUpdateCore("xray"); CheckUpdateCore(ECoreType.Xray);
} }
private void CheckUpdateCore(string type) private void CheckUpdateCore(ECoreType type)
{ {
void _updateUI(bool success, string msg) void _updateUI(bool success, string msg)
{ {

View file

@ -9,6 +9,7 @@ namespace v2rayN.Handler
{ {
private static readonly Lazy<LazyConfig> _instance = new Lazy<LazyConfig>(() => new LazyConfig()); private static readonly Lazy<LazyConfig> _instance = new Lazy<LazyConfig>(() => new LazyConfig());
private Config _config; private Config _config;
private List<CoreInfo> coreInfos;
public static LazyConfig Instance public static LazyConfig Instance
{ {
@ -51,5 +52,45 @@ namespace v2rayN.Handler
} }
return item.coreType; return item.coreType;
} }
public CoreInfo GetCoreInfo(ECoreType coreType)
{
if (coreInfos == null)
{
InitCoreInfo();
}
return coreInfos.Where(t => t.coreType == coreType).FirstOrDefault();
}
private void InitCoreInfo()
{
coreInfos = new List<CoreInfo>();
coreInfos.Add(new CoreInfo
{
coreType = ECoreType.v2fly,
coreExes = new List<string> { "wv2ray", "v2ray" },
arguments = "",
coreUrl = Global.v2flyCoreUrl
});
coreInfos.Add(new CoreInfo
{
coreType = ECoreType.Xray,
coreExes = new List<string> { "xray" },
arguments = "",
coreUrl = Global.xrayCoreUrl
});
coreInfos.Add(new CoreInfo
{
coreType = ECoreType.clash,
coreExes = new List<string> { "clash-windows-amd64", "clash-windows-386", "clash" },
arguments = "-f config.json",
coreUrl = Global.clashCoreUrl
});
}
} }
} }

View file

@ -104,11 +104,11 @@ namespace v2rayN.Handler
} }
}; };
_updateFunc(false, string.Format(UIRes.I18N("MsgStartUpdating"), "v2rayN")); _updateFunc(false, string.Format(UIRes.I18N("MsgStartUpdating"), "v2rayN"));
CheckUpdateAsync("v2rayN"); CheckUpdateAsync(ECoreType.v2rayN);
} }
public void CheckUpdateCore(string type, Config config, Action<bool, string> update) public void CheckUpdateCore(ECoreType type, Config config, Action<bool, string> update)
{ {
_config = config; _config = config;
_updateFunc = update; _updateFunc = update;
@ -292,7 +292,7 @@ namespace v2rayN.Handler
#region private #region private
private async void CheckUpdateAsync(string type) private async void CheckUpdateAsync(ECoreType type)
{ {
try try
{ {
@ -310,15 +310,15 @@ namespace v2rayN.Handler
HttpClient httpClient = new HttpClient(webRequestHandler); HttpClient httpClient = new HttpClient(webRequestHandler);
string url; string url;
if (type == "v2fly") if (type == ECoreType.v2fly)
{ {
url = v2flyCoreLatestUrl; url = v2flyCoreLatestUrl;
} }
else if (type == "xray") else if (type == ECoreType.Xray)
{ {
url = xrayCoreLatestUrl; url = xrayCoreLatestUrl;
} }
else if (type == "v2rayN") else if (type == ECoreType.v2rayN)
{ {
url = nLatestUrl; url = nLatestUrl;
} }
@ -347,18 +347,18 @@ namespace v2rayN.Handler
/// <summary> /// <summary>
/// 获取V2RayCore版本 /// 获取V2RayCore版本
/// </summary> /// </summary>
private string getCoreVersion(string type) private string getCoreVersion(ECoreType type)
{ {
try try
{ {
var core = string.Empty; var core = string.Empty;
var match = string.Empty; var match = string.Empty;
if (type == "v2fly") if (type == ECoreType.v2fly)
{ {
core = "v2ray.exe"; core = "v2ray.exe";
match = "V2Ray"; match = "V2Ray";
} }
else if (type == "xray") else if (type == ECoreType.Xray)
{ {
core = "xray.exe"; core = "xray.exe";
match = "Xray"; match = "Xray";
@ -392,7 +392,7 @@ namespace v2rayN.Handler
return ""; return "";
} }
} }
private void responseHandler(string type, string redirectUrl) private void responseHandler(ECoreType type, string redirectUrl)
{ {
try try
{ {
@ -401,21 +401,21 @@ namespace v2rayN.Handler
string curVersion; string curVersion;
string message; string message;
string url; string url;
if (type == "v2fly") if (type == ECoreType.v2fly)
{ {
curVersion = "v" + getCoreVersion(type); curVersion = "v" + getCoreVersion(type);
message = string.Format(UIRes.I18N("IsLatestCore"), curVersion); message = string.Format(UIRes.I18N("IsLatestCore"), curVersion);
string osBit = Environment.Is64BitProcess ? "64" : "32"; string osBit = Environment.Is64BitProcess ? "64" : "32";
url = string.Format(v2flyCoreUrl, version, osBit); url = string.Format(v2flyCoreUrl, version, osBit);
} }
else if (type == "xray") else if (type == ECoreType.Xray)
{ {
curVersion = "v" + getCoreVersion(type); curVersion = "v" + getCoreVersion(type);
message = string.Format(UIRes.I18N("IsLatestCore"), curVersion); message = string.Format(UIRes.I18N("IsLatestCore"), curVersion);
string osBit = Environment.Is64BitProcess ? "64" : "32"; string osBit = Environment.Is64BitProcess ? "64" : "32";
url = string.Format(xrayCoreUrl, version, osBit); url = string.Format(xrayCoreUrl, version, osBit);
} }
else if (type == "v2rayN") else if (type == ECoreType.v2rayN)
{ {
curVersion = FileVersionInfo.GetVersionInfo(Utils.GetExePath()).FileVersion.ToString(); curVersion = FileVersionInfo.GetVersionInfo(Utils.GetExePath()).FileVersion.ToString();
message = string.Format(UIRes.I18N("IsLatestN"), curVersion); message = string.Format(UIRes.I18N("IsLatestN"), curVersion);

View file

@ -168,6 +168,7 @@ namespace v2rayN.Handler
inbound2.protocol = Global.InboundHttp; inbound2.protocol = Global.InboundHttp;
inbound2.listen = inbound.listen; inbound2.listen = inbound.listen;
inbound2.settings.allowTransparent = false; inbound2.settings.allowTransparent = false;
inbound2.sniffing.enabled = inbound.sniffing.enabled;
} }
catch catch
{ {

View file

@ -21,9 +21,7 @@ namespace v2rayN.Handler
class V2rayHandler class V2rayHandler
{ {
private static string v2rayConfigRes = Global.v2rayConfigFileName; private static string v2rayConfigRes = Global.v2rayConfigFileName;
private List<string> lstCore; private CoreInfo coreInfo;
private string coreUrl;
private string coreArguments;
public event ProcessDelegate ProcessEvent; public event ProcessDelegate ProcessEvent;
//private int processId = 0; //private int processId = 0;
private Process _process; private Process _process;
@ -46,7 +44,11 @@ namespace v2rayN.Handler
return; return;
} }
SetCore(config, item); if (SetCore(config, item) != 0)
{
ShowMsg(false, UIRes.I18N("CheckServerSettings"));
return;
}
string fileName = Utils.GetPath(v2rayConfigRes); string fileName = Utils.GetPath(v2rayConfigRes);
if (V2rayConfigHandler.GenerateClientConfig(item, fileName, false, out string msg) != 0) if (V2rayConfigHandler.GenerateClientConfig(item, fileName, false, out string msg) != 0)
{ {
@ -106,7 +108,7 @@ namespace v2rayN.Handler
} }
else else
{ {
foreach (string vName in lstCore) foreach (string vName in coreInfo.coreExes)
{ {
Process[] existing = Process.GetProcessesByName(vName); Process[] existing = Process.GetProcessesByName(vName);
foreach (Process p in existing) foreach (Process p in existing)
@ -178,7 +180,7 @@ namespace v2rayN.Handler
} }
if (Utils.IsNullOrEmpty(fileName)) if (Utils.IsNullOrEmpty(fileName))
{ {
string msg = string.Format(UIRes.I18N("NotFoundCore"), coreUrl); string msg = string.Format(UIRes.I18N("NotFoundCore"), coreInfo.coreUrl);
ShowMsg(false, msg); ShowMsg(false, msg);
} }
return fileName; return fileName;
@ -193,7 +195,7 @@ namespace v2rayN.Handler
try try
{ {
string fileName = V2rayFindexe(lstCore); string fileName = V2rayFindexe(coreInfo.coreExes);
if (fileName == "") return; if (fileName == "") return;
Process p = new Process Process p = new Process
@ -201,7 +203,7 @@ namespace v2rayN.Handler
StartInfo = new ProcessStartInfo StartInfo = new ProcessStartInfo
{ {
FileName = fileName, FileName = fileName,
Arguments = coreArguments, Arguments = coreInfo.arguments,
WorkingDirectory = Utils.StartupPath(), WorkingDirectory = Utils.StartupPath(),
UseShellExecute = false, UseShellExecute = false,
RedirectStandardOutput = true, RedirectStandardOutput = true,
@ -247,7 +249,6 @@ namespace v2rayN.Handler
try try
{ {
coreUrl = Global.xrayCoreUrl;
string fileName = V2rayFindexe(new List<string> { "xray" }); string fileName = V2rayFindexe(new List<string> { "xray" });
if (fileName == "") return -1; if (fileName == "") return -1;
@ -325,44 +326,21 @@ namespace v2rayN.Handler
} }
} }
private void SetCore(Config config, VmessItem item) private int SetCore(Config config, VmessItem item)
{ {
if (item == null) if (item == null)
{ {
return; return -1;
} }
var coreType = LazyConfig.Instance.GetCoreType(item, item.configType); var coreType = LazyConfig.Instance.GetCoreType(item, item.configType);
if (coreType == ECoreType.v2fly) coreInfo = LazyConfig.Instance.GetCoreInfo(coreType);
if (coreInfo == null)
{ {
lstCore = new List<string> return -1;
{
"wv2ray",
"v2ray"
};
coreUrl = Global.v2flyCoreUrl;
coreArguments = string.Empty;
}
else if (coreType == ECoreType.Xray)
{
lstCore = new List<string>
{
"xray"
};
coreUrl = Global.xrayCoreUrl;
coreArguments = string.Empty;
}
else if (coreType == ECoreType.clash)
{
lstCore = new List<string>
{
"clash-windows-amd64",
"clash-windows-386",
"clash"
};
coreUrl = Global.clashCoreUrl;
coreArguments = "-f config.json";
} }
return 0;
} }
} }
} }

View file

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
namespace v2rayN.Mode
{
[Serializable]
public class CoreInfo
{
public ECoreType coreType { get; set; }
public List<string> coreExes { get; set; }
public string arguments { get; set; }
public string coreUrl { get; set; }
}
}

View file

@ -5,6 +5,7 @@ namespace v2rayN.Mode
{ {
v2fly = 1, v2fly = 1,
Xray = 2, Xray = 2,
clash = 3 clash = 3,
v2rayN = 99
} }
} }

View file

@ -208,6 +208,7 @@
<Compile Include="Mode\RoutingItem.cs" /> <Compile Include="Mode\RoutingItem.cs" />
<Compile Include="Mode\RulesItem.cs" /> <Compile Include="Mode\RulesItem.cs" />
<Compile Include="Mode\ServerStatistics.cs" /> <Compile Include="Mode\ServerStatistics.cs" />
<Compile Include="Mode\CoreInfo.cs" />
<Compile Include="Mode\SysproxyConfig.cs" /> <Compile Include="Mode\SysproxyConfig.cs" />
<Compile Include="Mode\EConfigType.cs" /> <Compile Include="Mode\EConfigType.cs" />
<Compile Include="Mode\ServerTestItem.cs" /> <Compile Include="Mode\ServerTestItem.cs" />