mirror of
https://github.com/2dust/v2rayN.git
synced 2025-05-15 20:58:07 +00:00
Refactor Inbound
This commit is contained in:
parent
f110446738
commit
977f0428e2
12 changed files with 145 additions and 72 deletions
|
@ -1277,26 +1277,12 @@ namespace v2rayN.Forms
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigHandler.SaveConfig(ref config, false);
|
ConfigHandler.SaveConfig(ref config, false);
|
||||||
DisplayToolStatus();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void DisplayToolStatus()
|
mainMsgControl.DisplayToolStatus(config);
|
||||||
{
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
sb.Append($"{Global.InboundSocks} {Global.Loopback}:{config.GetLocalPort(Global.InboundSocks)}");
|
|
||||||
sb.Append(" | ");
|
|
||||||
sb.Append($"{Global.InboundHttp} {Global.Loopback}:{config.GetLocalPort(Global.InboundHttp)}");
|
|
||||||
|
|
||||||
if (config.sysProxyType == ESysProxyType.ForcedChange)
|
|
||||||
{
|
|
||||||
sb.Append(" | ");
|
|
||||||
sb.Append($"{ResUI.SystemProxy} {Global.Loopback}:{config.GetLocalPort(Global.InboundHttp2)}");
|
|
||||||
}
|
|
||||||
|
|
||||||
mainMsgControl.SetToolSslInfo("inbound", sb.ToString());
|
|
||||||
|
|
||||||
notifyMain.Icon = MainFormHandler.Instance.GetNotifyIcon(config, this.Icon);
|
notifyMain.Icon = MainFormHandler.Instance.GetNotifyIcon(config, this.Icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
|
using v2rayN.Mode;
|
||||||
using v2rayN.Resx;
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
namespace v2rayN.Forms
|
||||||
|
@ -78,6 +79,32 @@ namespace v2rayN.Forms
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void DisplayToolStatus(Config config)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.Append($"{ResUI.LabLocal}:");
|
||||||
|
sb.Append($"[{Global.InboundSocks}:{config.GetLocalPort(Global.InboundSocks)}]");
|
||||||
|
sb.Append(" | ");
|
||||||
|
if (config.sysProxyType == ESysProxyType.ForcedChange)
|
||||||
|
{
|
||||||
|
sb.Append($"[{Global.InboundHttp}({ResUI.SystemProxy}):{config.GetLocalPort(Global.InboundHttp)}]");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.Append($"[{Global.InboundHttp}:{config.GetLocalPort(Global.InboundHttp)}]");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.inbound[0].allowLANConn)
|
||||||
|
{
|
||||||
|
sb.Append($" {ResUI.LabLAN}:");
|
||||||
|
sb.Append($"[{Global.InboundSocks}:{config.GetLocalPort(Global.InboundSocks2)}]");
|
||||||
|
sb.Append(" | ");
|
||||||
|
sb.Append($"[{Global.InboundHttp}:{config.GetLocalPort(Global.InboundHttp2)}]");
|
||||||
|
}
|
||||||
|
|
||||||
|
SetToolSslInfo("inbound", sb.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
public void SetToolSslInfo(string type, string value)
|
public void SetToolSslInfo(string type, string value)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
|
|
|
@ -65,9 +65,10 @@ namespace v2rayN
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string v2raySampleHttpresponseFileName = "v2rayN.Sample.SampleHttpresponse.txt";
|
public const string v2raySampleHttpresponseFileName = "v2rayN.Sample.SampleHttpresponse.txt";
|
||||||
|
|
||||||
|
|
||||||
public const string CustomRoutingFileName = "v2rayN.Sample.custom_routing_";
|
public const string CustomRoutingFileName = "v2rayN.Sample.custom_routing_";
|
||||||
|
|
||||||
|
public const string v2raySampleInbound = "v2rayN.Sample.SampleInbound.txt";
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 默认加密方式
|
/// 默认加密方式
|
||||||
|
@ -112,6 +113,7 @@ namespace v2rayN
|
||||||
|
|
||||||
public const string InboundSocks = "socks";
|
public const string InboundSocks = "socks";
|
||||||
public const string InboundHttp = "http";
|
public const string InboundHttp = "http";
|
||||||
|
public const string InboundSocks2 = "socks2";
|
||||||
public const string InboundHttp2 = "http2";
|
public const string InboundHttp2 = "http2";
|
||||||
public const string Loopback = "127.0.0.1";
|
public const string Loopback = "127.0.0.1";
|
||||||
public const string InboundAPITagName = "api";
|
public const string InboundAPITagName = "api";
|
||||||
|
|
|
@ -172,7 +172,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
if (webProxy == null)
|
if (webProxy == null)
|
||||||
{
|
{
|
||||||
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp2);
|
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp);
|
||||||
webProxy = new WebProxy(Global.Loopback, httpPort);
|
webProxy = new WebProxy(Global.Loopback, httpPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,7 +233,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp2);
|
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp);
|
||||||
var webProxy = new WebProxy(Global.Loopback, httpPort);
|
var webProxy = new WebProxy(Global.Loopback, httpPort);
|
||||||
if (RunAvailabilityCheck(webProxy) > 0)
|
if (RunAvailabilityCheck(webProxy) > 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -59,7 +59,7 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int port = config.GetLocalPort(Global.InboundHttp2);
|
int port = config.GetLocalPort(Global.InboundHttp);
|
||||||
if (port <= 0)
|
if (port <= 0)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -146,48 +146,35 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Inbounds inbound = v2rayConfig.inbounds[0];
|
v2rayConfig.inbounds = new List<Inbounds>();
|
||||||
inbound.tag = Global.InboundSocks;
|
|
||||||
inbound.port = config.inbound[0].localPort;
|
Inbounds inbound = GetInbound(config.inbound[0], Global.InboundSocks, 0, true);
|
||||||
inbound.protocol = config.inbound[0].protocol;
|
v2rayConfig.inbounds.Add(inbound);
|
||||||
if (config.inbound[0].allowLANConn)
|
|
||||||
{
|
|
||||||
inbound.listen = "0.0.0.0";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
inbound.listen = Global.Loopback;
|
|
||||||
}
|
|
||||||
//udp
|
|
||||||
inbound.settings.udp = config.inbound[0].udpEnabled;
|
|
||||||
inbound.sniffing.enabled = config.inbound[0].sniffingEnabled;
|
|
||||||
|
|
||||||
//http
|
//http
|
||||||
Inbounds inbound2 = v2rayConfig.inbounds[1];
|
Inbounds inbound2 = GetInbound(config.inbound[0], Global.InboundHttp, 1, false);
|
||||||
inbound2.tag = Global.InboundHttp;
|
v2rayConfig.inbounds.Add(inbound2);
|
||||||
inbound2.port = config.GetLocalPort(Global.InboundHttp);
|
|
||||||
inbound2.protocol = Global.InboundHttp;
|
|
||||||
inbound2.listen = inbound.listen;
|
|
||||||
inbound2.settings.allowTransparent = false;
|
|
||||||
inbound2.sniffing.enabled = inbound.sniffing.enabled;
|
|
||||||
|
|
||||||
//auth
|
if (config.inbound[0].allowLANConn)
|
||||||
if (!Utils.IsNullOrEmpty(config.inbound[0].user) && !Utils.IsNullOrEmpty(config.inbound[0].pass))
|
|
||||||
{
|
{
|
||||||
inbound.settings.auth = "password";
|
Inbounds inbound3 = GetInbound(config.inbound[0], Global.InboundSocks2, 2, true);
|
||||||
inbound.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
v2rayConfig.inbounds.Add(inbound3);
|
||||||
inbound2.settings.auth = "password";
|
|
||||||
inbound2.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
|
||||||
}
|
|
||||||
|
|
||||||
//http Loopback
|
Inbounds inbound4 = GetInbound(config.inbound[0], Global.InboundHttp2, 3, false);
|
||||||
Inbounds inbound3 = v2rayConfig.inbounds[2];
|
v2rayConfig.inbounds.Add(inbound4);
|
||||||
inbound3.tag = Global.InboundHttp2;
|
|
||||||
inbound3.port = config.GetLocalPort(Global.InboundHttp2);
|
//auth
|
||||||
inbound3.protocol = Global.InboundHttp;
|
if (!Utils.IsNullOrEmpty(config.inbound[0].user) && !Utils.IsNullOrEmpty(config.inbound[0].pass))
|
||||||
inbound3.listen = Global.Loopback;
|
{
|
||||||
inbound3.settings.allowTransparent = false;
|
inbound3.listen = "0.0.0.0";
|
||||||
inbound3.sniffing.enabled = inbound.sniffing.enabled;
|
inbound3.settings.auth = "password";
|
||||||
|
inbound3.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
||||||
|
|
||||||
|
inbound4.listen = "0.0.0.0";
|
||||||
|
inbound4.settings.auth = "password";
|
||||||
|
inbound4.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
@ -195,6 +182,28 @@ namespace v2rayN.Handler
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Inbounds GetInbound(InItem inItem, string tag, int offset, bool bSocks)
|
||||||
|
{
|
||||||
|
string result = Utils.GetEmbedText(Global.v2raySampleInbound);
|
||||||
|
if (Utils.IsNullOrEmpty(result))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var inbound = Utils.FromJson<Inbounds>(result);
|
||||||
|
if (inbound == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
inbound.tag = tag;
|
||||||
|
inbound.port = inItem.localPort + offset;
|
||||||
|
inbound.protocol = bSocks ? Global.InboundSocks : Global.InboundHttp;
|
||||||
|
inbound.settings.udp = inItem.udpEnabled;
|
||||||
|
inbound.sniffing.enabled = inItem.sniffingEnabled;
|
||||||
|
|
||||||
|
return inbound;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 路由
|
/// 路由
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -958,7 +967,7 @@ namespace v2rayN.Handler
|
||||||
break;
|
break;
|
||||||
case ECoreType.clash:
|
case ECoreType.clash:
|
||||||
case ECoreType.clash_meta:
|
case ECoreType.clash_meta:
|
||||||
fileContent.Add($"port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp2)}");
|
fileContent.Add($"port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp)}");
|
||||||
fileContent.Add($"socks-port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundSocks)}");
|
fileContent.Add($"socks-port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundSocks)}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -208,27 +208,27 @@ namespace v2rayN.Mode
|
||||||
|
|
||||||
public int GetLocalPort(string protocol)
|
public int GetLocalPort(string protocol)
|
||||||
{
|
{
|
||||||
if (protocol == Global.InboundHttp)
|
int localPort = inbound.FirstOrDefault(t => t.protocol == Global.InboundSocks).localPort;
|
||||||
|
|
||||||
|
if (protocol == Global.InboundSocks)
|
||||||
{
|
{
|
||||||
return GetLocalPort(Global.InboundSocks) + 1;
|
return localPort;
|
||||||
|
}
|
||||||
|
else if (protocol == Global.InboundHttp)
|
||||||
|
{
|
||||||
|
return localPort + 1;
|
||||||
|
}
|
||||||
|
else if (protocol == Global.InboundSocks2)
|
||||||
|
{
|
||||||
|
return localPort + 2;
|
||||||
}
|
}
|
||||||
else if (protocol == Global.InboundHttp2)
|
else if (protocol == Global.InboundHttp2)
|
||||||
{
|
{
|
||||||
return GetLocalPort(Global.InboundSocks) + 2;
|
return localPort + 3;
|
||||||
}
|
}
|
||||||
else if (protocol == "speedtest")
|
else if (protocol == "speedtest")
|
||||||
{
|
{
|
||||||
return GetLocalPort(Global.InboundSocks) + 103;
|
return localPort + 103;
|
||||||
}
|
|
||||||
|
|
||||||
int localPort = 0;
|
|
||||||
foreach (InItem inItem in inbound)
|
|
||||||
{
|
|
||||||
if (inItem.protocol.Equals(protocol))
|
|
||||||
{
|
|
||||||
localPort = inItem.localPort;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return localPort;
|
return localPort;
|
||||||
}
|
}
|
||||||
|
|
18
v2rayN/v2rayN/Resx/ResUI.Designer.cs
generated
18
v2rayN/v2rayN/Resx/ResUI.Designer.cs
generated
|
@ -321,6 +321,24 @@ namespace v2rayN.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 LAN 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string LabLAN {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("LabLAN", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Local 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string LabLocal {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("LabLocal", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Address 的本地化字符串。
|
/// 查找类似 Address 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -463,4 +463,10 @@
|
||||||
<data name="TooManyServersTip" xml:space="preserve">
|
<data name="TooManyServersTip" xml:space="preserve">
|
||||||
<value>Too many servers, please open the main interface</value>
|
<value>Too many servers, please open the main interface</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="LabLAN" xml:space="preserve">
|
||||||
|
<value>LAN</value>
|
||||||
|
</data>
|
||||||
|
<data name="LabLocal" xml:space="preserve">
|
||||||
|
<value>Local</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -463,4 +463,10 @@
|
||||||
<data name="TooManyServersTip" xml:space="preserve">
|
<data name="TooManyServersTip" xml:space="preserve">
|
||||||
<value>服务器太多,请打开主界面操作</value>
|
<value>服务器太多,请打开主界面操作</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="LabLAN" xml:space="preserve">
|
||||||
|
<value>局域网</value>
|
||||||
|
</data>
|
||||||
|
<data name="LabLocal" xml:space="preserve">
|
||||||
|
<value>本地</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
18
v2rayN/v2rayN/Sample/SampleInbound.txt
Normal file
18
v2rayN/v2rayN/Sample/SampleInbound.txt
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"tag": "tag1",
|
||||||
|
"port": 10808,
|
||||||
|
"protocol": "socks",
|
||||||
|
"listen": "127.0.0.1",
|
||||||
|
"settings": {
|
||||||
|
"auth": "noauth",
|
||||||
|
"udp": true,
|
||||||
|
"allowTransparent": false
|
||||||
|
},
|
||||||
|
"sniffing": {
|
||||||
|
"enabled": true,
|
||||||
|
"destOverride": [
|
||||||
|
"http",
|
||||||
|
"tls"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
|
@ -474,6 +474,7 @@
|
||||||
<None Include="Resources\minimize.png" />
|
<None Include="Resources\minimize.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="Sample\SampleInbound.txt" />
|
||||||
<None Include="Resources\share.png" />
|
<None Include="Resources\share.png" />
|
||||||
<None Include="Resources\promotion.png" />
|
<None Include="Resources\promotion.png" />
|
||||||
<None Include="Resources\sub.png" />
|
<None Include="Resources\sub.png" />
|
||||||
|
|
Loading…
Reference in a new issue