mirror of
https://github.com/2dust/v2rayN.git
synced 2026-02-28 05:03:02 +00:00
Fix
This commit is contained in:
parent
a9cd6394d0
commit
c76c302e44
3 changed files with 47 additions and 30 deletions
|
|
@ -1249,6 +1249,47 @@ public static class ConfigHandler
|
||||||
return itemSocks;
|
return itemSocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static CoreConfigContext? GetPreSocksCoreConfigContext(CoreConfigContext nodeContext)
|
||||||
|
{
|
||||||
|
var config = nodeContext.AppConfig;
|
||||||
|
var node = nodeContext.Node;
|
||||||
|
var coreType = AppManager.Instance.GetCoreType(node, node.ConfigType);
|
||||||
|
|
||||||
|
var preSocksItem = GetPreSocksItem(config, node, coreType);
|
||||||
|
if (preSocksItem != null)
|
||||||
|
{
|
||||||
|
return nodeContext with { Node = preSocksItem, };
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((!nodeContext.IsTunEnabled)
|
||||||
|
|| coreType != ECoreType.Xray
|
||||||
|
|| node.ConfigType == EConfigType.Custom)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
var tunProtectSsPort = Utils.GetFreePort();
|
||||||
|
var proxyRelaySsPort = Utils.GetFreePort();
|
||||||
|
var preItem = new ProfileItem()
|
||||||
|
{
|
||||||
|
CoreType = ECoreType.sing_box,
|
||||||
|
ConfigType = EConfigType.Shadowsocks,
|
||||||
|
Address = Global.Loopback,
|
||||||
|
Port = proxyRelaySsPort,
|
||||||
|
Password = Global.None,
|
||||||
|
};
|
||||||
|
preItem.SetProtocolExtra(preItem.GetProtocolExtra() with
|
||||||
|
{
|
||||||
|
SsMethod = Global.None,
|
||||||
|
});
|
||||||
|
var preContext = nodeContext with
|
||||||
|
{
|
||||||
|
Node = preItem,
|
||||||
|
TunProtectSsPort = tunProtectSsPort,
|
||||||
|
ProxyRelaySsPort = proxyRelaySsPort,
|
||||||
|
};
|
||||||
|
return preContext;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Remove servers with invalid test results (timeout)
|
/// Remove servers with invalid test results (timeout)
|
||||||
/// Useful for cleaning up subscription lists
|
/// Useful for cleaning up subscription lists
|
||||||
|
|
|
||||||
|
|
@ -67,37 +67,13 @@ public class CoreManager
|
||||||
|
|
||||||
var fileName = Utils.GetBinConfigPath(Global.CoreConfigFileName);
|
var fileName = Utils.GetBinConfigPath(Global.CoreConfigFileName);
|
||||||
var context = await CoreConfigHandler.BuildCoreConfigContext(_config, node);
|
var context = await CoreConfigHandler.BuildCoreConfigContext(_config, node);
|
||||||
CoreConfigContext? preContext = null;
|
var preContext = ConfigHandler.GetPreSocksCoreConfigContext(context);
|
||||||
if (context.IsTunEnabled)
|
if (preContext is not null)
|
||||||
{
|
{
|
||||||
var coreType = AppManager.Instance.GetCoreType(node, node.ConfigType);
|
context = context with
|
||||||
if (coreType == ECoreType.Xray && node.ConfigType != EConfigType.Custom)
|
|
||||||
{
|
{
|
||||||
var tunProtectSsPort = Utils.GetFreePort();
|
TunProtectSsPort = preContext.TunProtectSsPort, ProxyRelaySsPort = preContext.ProxyRelaySsPort,
|
||||||
var proxyRelaySsPort = Utils.GetFreePort();
|
|
||||||
context = context with { TunProtectSsPort = tunProtectSsPort, ProxyRelaySsPort = proxyRelaySsPort, };
|
|
||||||
var preItem = new ProfileItem()
|
|
||||||
{
|
|
||||||
CoreType = ECoreType.sing_box,
|
|
||||||
ConfigType = EConfigType.Shadowsocks,
|
|
||||||
Address = Global.Loopback,
|
|
||||||
Port = proxyRelaySsPort,
|
|
||||||
Password = Global.None,
|
|
||||||
};
|
};
|
||||||
preItem.SetProtocolExtra(preItem.GetProtocolExtra() with
|
|
||||||
{
|
|
||||||
SsMethod = Global.None,
|
|
||||||
});
|
|
||||||
preContext = context with { Node = preItem, };
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var preItem = ConfigHandler.GetPreSocksItem(_config, node, coreType);
|
|
||||||
if (preItem is not null)
|
|
||||||
{
|
|
||||||
preContext = context with { Node = preItem, };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
var result = await CoreConfigHandler.GenerateClientConfig(context, fileName);
|
var result = await CoreConfigHandler.GenerateClientConfig(context, fileName);
|
||||||
if (result.Success != true)
|
if (result.Success != true)
|
||||||
|
|
|
||||||
|
|
@ -304,7 +304,7 @@ public partial class CoreConfigV2rayService(CoreConfigContext context)
|
||||||
|
|
||||||
var protectNode = new ProfileItem()
|
var protectNode = new ProfileItem()
|
||||||
{
|
{
|
||||||
CoreType = ECoreType.sing_box,
|
CoreType = ECoreType.Xray,
|
||||||
ConfigType = EConfigType.Shadowsocks,
|
ConfigType = EConfigType.Shadowsocks,
|
||||||
Address = Global.Loopback,
|
Address = Global.Loopback,
|
||||||
Port = context.TunProtectSsPort,
|
Port = context.TunProtectSsPort,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue