mirror of
https://github.com/2dust/v2rayN.git
synced 2025-05-04 14:18:50 +00:00
Refactor and improve
This commit is contained in:
parent
4d16a5e801
commit
ece4572058
8 changed files with 95 additions and 56 deletions
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
17
v2rayN/v2rayN/Mode/CoreInfo.cs
Normal file
17
v2rayN/v2rayN/Mode/CoreInfo.cs
Normal 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; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,6 +5,7 @@ namespace v2rayN.Mode
|
||||||
{
|
{
|
||||||
v2fly = 1,
|
v2fly = 1,
|
||||||
Xray = 2,
|
Xray = 2,
|
||||||
clash = 3
|
clash = 3,
|
||||||
|
v2rayN = 99
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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" />
|
||||||
|
|
Loading…
Reference in a new issue