mirror of https://github.com/2dust/v2rayN
Enable pre tun mode for other cores
parent
288c02e092
commit
e9b0372174
|
@ -11,29 +11,31 @@ namespace v2rayN.Handler
|
|||
/// </summary>
|
||||
internal class CoreHandler
|
||||
{
|
||||
private Config _config;
|
||||
private CoreInfo? _coreInfo;
|
||||
private Process? _process;
|
||||
private Process? _processPre;
|
||||
private Action<bool, string> _updateFunc;
|
||||
|
||||
public CoreHandler(Action<bool, string> update)
|
||||
public CoreHandler(Config config, Action<bool, string> update)
|
||||
{
|
||||
_config = config;
|
||||
_updateFunc = update;
|
||||
|
||||
Environment.SetEnvironmentVariable("v2ray.location.asset", Utils.GetBinPath(""), EnvironmentVariableTarget.Process);
|
||||
Environment.SetEnvironmentVariable("xray.location.asset", Utils.GetBinPath(""), EnvironmentVariableTarget.Process);
|
||||
}
|
||||
|
||||
public void LoadCore(Config config)
|
||||
public void LoadCore()
|
||||
{
|
||||
var node = ConfigHandler.GetDefaultServer(ref config);
|
||||
var node = ConfigHandler.GetDefaultServer(ref _config);
|
||||
if (node == null)
|
||||
{
|
||||
ShowMsg(false, ResUI.CheckServerSettings);
|
||||
return;
|
||||
}
|
||||
|
||||
if (SetCore(config, node) != 0)
|
||||
if (SetCore(node) != 0)
|
||||
{
|
||||
ShowMsg(false, ResUI.CheckServerSettings);
|
||||
return;
|
||||
|
@ -52,10 +54,10 @@ namespace v2rayN.Handler
|
|||
}
|
||||
}
|
||||
|
||||
public int LoadCoreConfigString(Config config, List<ServerTestItem> _selecteds)
|
||||
public int LoadCoreConfigString(List<ServerTestItem> _selecteds)
|
||||
{
|
||||
int pid = -1;
|
||||
string configStr = CoreConfigHandler.GenerateClientSpeedtestConfigString(config, _selecteds, out string msg);
|
||||
string configStr = CoreConfigHandler.GenerateClientSpeedtestConfigString(_config, _selecteds, out string msg);
|
||||
if (configStr == "")
|
||||
{
|
||||
ShowMsg(false, msg);
|
||||
|
@ -158,23 +160,27 @@ namespace v2rayN.Handler
|
|||
_process = proc;
|
||||
|
||||
//start a socks service
|
||||
if (_process != null && !_process.HasExited && node.configType == EConfigType.Custom && node.preSocksPort > 0)
|
||||
if (_process != null && !_process.HasExited)
|
||||
{
|
||||
var itemSocks = new ProfileItem()
|
||||
if ((node.configType == EConfigType.Custom && node.preSocksPort > 0)
|
||||
|| (node.configType != EConfigType.Custom && _coreInfo.coreType != ECoreType.sing_box && _config.tunModeItem.enableTun))
|
||||
{
|
||||
coreType = ECoreType.sing_box,
|
||||
configType = EConfigType.Socks,
|
||||
address = Global.Loopback,
|
||||
port = node.preSocksPort
|
||||
};
|
||||
string fileName2 = Utils.GetConfigPath(Global.corePreConfigFileName);
|
||||
if (CoreConfigHandler.GenerateClientConfig(itemSocks, fileName2, out string msg2, out string configStr) == 0)
|
||||
{
|
||||
var coreInfo = LazyConfig.Instance.GetCoreInfo(ECoreType.sing_box);
|
||||
var proc2 = RunProcess(node, coreInfo, $" -c {Global.corePreConfigFileName}", ShowMsg);
|
||||
if (proc2 is not null)
|
||||
var itemSocks = new ProfileItem()
|
||||
{
|
||||
_processPre = proc2;
|
||||
coreType = ECoreType.sing_box,
|
||||
configType = EConfigType.Socks,
|
||||
address = Global.Loopback,
|
||||
port = node.preSocksPort > 0 ? node.preSocksPort : LazyConfig.Instance.GetLocalPort(Global.InboundSocks)
|
||||
};
|
||||
string fileName2 = Utils.GetConfigPath(Global.corePreConfigFileName);
|
||||
if (CoreConfigHandler.GenerateClientConfig(itemSocks, fileName2, out string msg2, out string configStr) == 0)
|
||||
{
|
||||
var coreInfo = LazyConfig.Instance.GetCoreInfo(ECoreType.sing_box);
|
||||
var proc2 = RunProcess(node, coreInfo, $" -c {Global.corePreConfigFileName}", ShowMsg);
|
||||
if (proc2 is not null)
|
||||
{
|
||||
_processPre = proc2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -251,7 +257,7 @@ namespace v2rayN.Handler
|
|||
_updateFunc(updateToTrayTooltip, msg);
|
||||
}
|
||||
|
||||
private int SetCore(Config config, ProfileItem node)
|
||||
private int SetCore(ProfileItem node)
|
||||
{
|
||||
if (node == null)
|
||||
{
|
||||
|
|
|
@ -150,7 +150,7 @@ namespace v2rayN.Handler
|
|||
{
|
||||
string msg = string.Empty;
|
||||
|
||||
pid = _coreHandler.LoadCoreConfigString(_config, _selecteds);
|
||||
pid = _coreHandler.LoadCoreConfigString(_selecteds);
|
||||
if (pid < 0)
|
||||
{
|
||||
UpdateFunc("", ResUI.FailedToRunCore);
|
||||
|
@ -212,7 +212,7 @@ namespace v2rayN.Handler
|
|||
// _selecteds = _selecteds.OrderBy(t => t.delay).ToList();
|
||||
//}
|
||||
|
||||
pid = _coreHandler.LoadCoreConfigString(_config, _selecteds);
|
||||
pid = _coreHandler.LoadCoreConfigString(_selecteds);
|
||||
if (pid < 0)
|
||||
{
|
||||
UpdateFunc("", ResUI.FailedToRunCore);
|
||||
|
@ -269,7 +269,7 @@ namespace v2rayN.Handler
|
|||
private async Task RunSpeedTestMulti()
|
||||
{
|
||||
int pid = -1;
|
||||
pid = _coreHandler.LoadCoreConfigString(_config, _selecteds);
|
||||
pid = _coreHandler.LoadCoreConfigString(_selecteds);
|
||||
if (pid < 0)
|
||||
{
|
||||
UpdateFunc("", ResUI.FailedToRunCore);
|
||||
|
|
|
@ -557,7 +557,7 @@ namespace v2rayN.ViewModels
|
|||
{
|
||||
ConfigHandler.InitBuiltinRouting(ref _config);
|
||||
ConfigHandler.InitBuiltinDNS(_config);
|
||||
_coreHandler = new CoreHandler(UpdateHandler);
|
||||
_coreHandler = new CoreHandler(_config, UpdateHandler);
|
||||
|
||||
if (_config.guiItem.enableStatistics)
|
||||
{
|
||||
|
@ -1481,7 +1481,7 @@ namespace v2rayN.ViewModels
|
|||
|
||||
await Task.Run(() =>
|
||||
{
|
||||
_coreHandler.LoadCore(_config);
|
||||
_coreHandler.LoadCore();
|
||||
|
||||
//ConfigHandler.SaveConfig(ref _config, false);
|
||||
|
||||
|
|
Loading…
Reference in New Issue