mirror of
https://github.com/2dust/v2rayN.git
synced 2025-10-14 04:19:12 +00:00
Compare commits
3 commits
cf3846fbfd
...
c49ba735a0
Author | SHA1 | Date | |
---|---|---|---|
![]() |
c49ba735a0 | ||
![]() |
1a33c598e8 | ||
![]() |
a4bbdb49de |
4 changed files with 171 additions and 176 deletions
|
@ -350,21 +350,9 @@ namespace ServiceLib.Models
|
||||||
public string? path { get; set; }
|
public string? path { get; set; }
|
||||||
public string? host { get; set; }
|
public string? host { get; set; }
|
||||||
public string? mode { get; set; }
|
public string? mode { get; set; }
|
||||||
public object? scMaxEachPostBytes { get; set; }
|
|
||||||
public object? scMaxConcurrentPosts { get; set; }
|
|
||||||
public object? scMinPostsIntervalMs { get; set; }
|
|
||||||
//public Xmux4Ray? xmux { get; set; }
|
|
||||||
public object? extra { get; set; }
|
public object? extra { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
//public class Xmux4Ray
|
|
||||||
//{
|
|
||||||
// public object? maxConcurrency { get; set; }
|
|
||||||
// public object? maxConnections { get; set; }
|
|
||||||
// public object? cMaxReuseTimes { get; set; }
|
|
||||||
// public object? cMaxLifetimeMs { get; set; }
|
|
||||||
//}
|
|
||||||
|
|
||||||
public class HttpSettings4Ray
|
public class HttpSettings4Ray
|
||||||
{
|
{
|
||||||
public string? path { get; set; }
|
public string? path { get; set; }
|
||||||
|
|
|
@ -1,149 +1,156 @@
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"remarks": "绕过bittorrent",
|
"remarks": "绕过bittorrent",
|
||||||
"outboundTag": "direct",
|
"outboundTag": "direct",
|
||||||
"protocol": [
|
"protocol": [
|
||||||
"bittorrent"
|
"bittorrent"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"remarks": "Google cn",
|
"remarks": "api.ip.sb",
|
||||||
"outboundTag": "proxy",
|
"outboundTag": "proxy",
|
||||||
"domain": [
|
"domain": [
|
||||||
"domain:googleapis.cn",
|
"api.ip.sb"
|
||||||
"domain:gstatic.com"
|
]
|
||||||
]
|
},
|
||||||
},
|
{
|
||||||
{
|
"remarks": "Google cn",
|
||||||
"remarks": "阻断udp443",
|
"outboundTag": "proxy",
|
||||||
"outboundTag": "block",
|
"domain": [
|
||||||
"port": "443",
|
"domain:googleapis.cn",
|
||||||
"network": "udp"
|
"domain:gstatic.com"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"remarks": "阻断广告",
|
{
|
||||||
"outboundTag": "block",
|
"remarks": "阻断udp443",
|
||||||
"domain": [
|
"outboundTag": "block",
|
||||||
"geosite:category-ads-all"
|
"port": "443",
|
||||||
]
|
"network": "udp"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"remarks": "绕过局域网IP",
|
"remarks": "阻断广告",
|
||||||
"outboundTag": "direct",
|
"outboundTag": "block",
|
||||||
"ip": [
|
"domain": [
|
||||||
"geoip:private"
|
"geosite:category-ads-all"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"remarks": "绕过局域网域名",
|
"remarks": "绕过局域网IP",
|
||||||
"outboundTag": "direct",
|
"outboundTag": "direct",
|
||||||
"domain": [
|
"ip": [
|
||||||
"geosite:private"
|
"geoip:private"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"remarks": "代理海外公共DNSIP",
|
"remarks": "绕过局域网域名",
|
||||||
"outboundTag": "proxy",
|
"outboundTag": "direct",
|
||||||
"ip": [
|
"domain": [
|
||||||
"1.1.1.1",
|
"geosite:private"
|
||||||
"1.0.0.1",
|
]
|
||||||
"2606:4700:4700::1111",
|
},
|
||||||
"2606:4700:4700::1001",
|
{
|
||||||
"1.1.1.2",
|
"remarks": "代理海外公共DNSIP",
|
||||||
"1.0.0.2",
|
"outboundTag": "proxy",
|
||||||
"2606:4700:4700::1112",
|
"ip": [
|
||||||
"2606:4700:4700::1002",
|
"1.1.1.1",
|
||||||
"1.1.1.3",
|
"1.0.0.1",
|
||||||
"1.0.0.3",
|
"2606:4700:4700::1111",
|
||||||
"2606:4700:4700::1113",
|
"2606:4700:4700::1001",
|
||||||
"2606:4700:4700::1003",
|
"1.1.1.2",
|
||||||
"8.8.8.8",
|
"1.0.0.2",
|
||||||
"8.8.4.4",
|
"2606:4700:4700::1112",
|
||||||
"2001:4860:4860::8888",
|
"2606:4700:4700::1002",
|
||||||
"2001:4860:4860::8844",
|
"1.1.1.3",
|
||||||
"94.140.14.14",
|
"1.0.0.3",
|
||||||
"94.140.15.15",
|
"2606:4700:4700::1113",
|
||||||
"2a10:50c0::ad1:ff",
|
"2606:4700:4700::1003",
|
||||||
"2a10:50c0::ad2:ff",
|
"8.8.8.8",
|
||||||
"94.140.14.15",
|
"8.8.4.4",
|
||||||
"94.140.15.16",
|
"2001:4860:4860::8888",
|
||||||
"2a10:50c0::bad1:ff",
|
"2001:4860:4860::8844",
|
||||||
"2a10:50c0::bad2:ff",
|
"94.140.14.14",
|
||||||
"94.140.14.140",
|
"94.140.15.15",
|
||||||
"94.140.14.141",
|
"2a10:50c0::ad1:ff",
|
||||||
"2a10:50c0::1:ff",
|
"2a10:50c0::ad2:ff",
|
||||||
"2a10:50c0::2:ff",
|
"94.140.14.15",
|
||||||
"208.67.222.222",
|
"94.140.15.16",
|
||||||
"208.67.220.220",
|
"2a10:50c0::bad1:ff",
|
||||||
"2620:119:35::35",
|
"2a10:50c0::bad2:ff",
|
||||||
"2620:119:53::53",
|
"94.140.14.140",
|
||||||
"208.67.222.123",
|
"94.140.14.141",
|
||||||
"208.67.220.123",
|
"2a10:50c0::1:ff",
|
||||||
"2620:119:35::123",
|
"2a10:50c0::2:ff",
|
||||||
"2620:119:53::123",
|
"208.67.222.222",
|
||||||
"9.9.9.9",
|
"208.67.220.220",
|
||||||
"149.112.112.112",
|
"2620:119:35::35",
|
||||||
"2620:fe::9",
|
"2620:119:53::53",
|
||||||
"2620:fe::fe",
|
"208.67.222.123",
|
||||||
"9.9.9.11",
|
"208.67.220.123",
|
||||||
"149.112.112.11",
|
"2620:119:35::123",
|
||||||
"2620:fe::11",
|
"2620:119:53::123",
|
||||||
"2620:fe::fe:11",
|
"9.9.9.9",
|
||||||
"9.9.9.10",
|
"149.112.112.112",
|
||||||
"149.112.112.10",
|
"2620:fe::9",
|
||||||
"2620:fe::10",
|
"2620:fe::fe",
|
||||||
"2620:fe::fe:10",
|
"9.9.9.11",
|
||||||
"77.88.8.8",
|
"149.112.112.11",
|
||||||
"77.88.8.1",
|
"2620:fe::11",
|
||||||
"2a02:6b8::feed:0ff",
|
"2620:fe::fe:11",
|
||||||
"2a02:6b8:0:1::feed:0ff",
|
"9.9.9.10",
|
||||||
"77.88.8.88",
|
"149.112.112.10",
|
||||||
"77.88.8.2",
|
"2620:fe::10",
|
||||||
"2a02:6b8::feed:bad",
|
"2620:fe::fe:10",
|
||||||
"2a02:6b8:0:1::feed:bad",
|
"77.88.8.8",
|
||||||
"77.88.8.7",
|
"77.88.8.1",
|
||||||
"77.88.8.3",
|
"2a02:6b8::feed:0ff",
|
||||||
"2a02:6b8::feed:a11",
|
"2a02:6b8:0:1::feed:0ff",
|
||||||
"2a02:6b8:0:1::feed:a11"
|
"77.88.8.88",
|
||||||
]
|
"77.88.8.2",
|
||||||
},
|
"2a02:6b8::feed:bad",
|
||||||
{
|
"2a02:6b8:0:1::feed:bad",
|
||||||
"remarks": "代理海外公共DNS域名",
|
"77.88.8.7",
|
||||||
"outboundTag": "proxy",
|
"77.88.8.3",
|
||||||
"domain": [
|
"2a02:6b8::feed:a11",
|
||||||
"domain:cloudflare-dns.com",
|
"2a02:6b8:0:1::feed:a11"
|
||||||
"domain:one.one.one.one",
|
]
|
||||||
"domain:dns.google",
|
},
|
||||||
"domain:adguard-dns.com",
|
{
|
||||||
"domain:opendns.com",
|
"remarks": "代理海外公共DNS域名",
|
||||||
"domain:umbrella.com",
|
"outboundTag": "proxy",
|
||||||
"domain:quad9.net",
|
"domain": [
|
||||||
"domain:yandex.net"
|
"domain:cloudflare-dns.com",
|
||||||
]
|
"domain:one.one.one.one",
|
||||||
},
|
"domain:dns.google",
|
||||||
{
|
"domain:adguard-dns.com",
|
||||||
"remarks": "代理IP",
|
"domain:opendns.com",
|
||||||
"outboundTag": "proxy",
|
"domain:umbrella.com",
|
||||||
"ip": [
|
"domain:quad9.net",
|
||||||
"geoip:facebook",
|
"domain:yandex.net"
|
||||||
"geoip:fastly",
|
]
|
||||||
"geoip:google",
|
},
|
||||||
"geoip:netflix",
|
{
|
||||||
"geoip:telegram",
|
"remarks": "代理IP",
|
||||||
"geoip:twitter"
|
"outboundTag": "proxy",
|
||||||
]
|
"ip": [
|
||||||
},
|
"geoip:facebook",
|
||||||
{
|
"geoip:fastly",
|
||||||
"remarks": "代理GFW",
|
"geoip:google",
|
||||||
"outboundTag": "proxy",
|
"geoip:netflix",
|
||||||
"domain": [
|
"geoip:telegram",
|
||||||
"geosite:gfw",
|
"geoip:twitter"
|
||||||
"geosite:greatfire"
|
]
|
||||||
]
|
},
|
||||||
},
|
{
|
||||||
{
|
"remarks": "代理GFW",
|
||||||
"remarks": "最终直连",
|
"outboundTag": "proxy",
|
||||||
"port": "0-65535",
|
"domain": [
|
||||||
"outboundTag": "direct"
|
"geosite:gfw",
|
||||||
}
|
"geosite:greatfire"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"remarks": "最终直连",
|
||||||
|
"port": "0-65535",
|
||||||
|
"outboundTag": "direct"
|
||||||
|
}
|
||||||
]
|
]
|
|
@ -700,8 +700,7 @@ namespace ServiceLib.Services.CoreConfig
|
||||||
|
|
||||||
await GenOutboundMux(node, outbound, _config.CoreBasicItem.MuxEnabled);
|
await GenOutboundMux(node, outbound, _config.CoreBasicItem.MuxEnabled);
|
||||||
|
|
||||||
if (node.StreamSecurity == Global.StreamSecurityReality
|
if (node.StreamSecurity == Global.StreamSecurityReality || node.StreamSecurity == Global.StreamSecurity)
|
||||||
|| node.StreamSecurity == Global.StreamSecurity)
|
|
||||||
{
|
{
|
||||||
if (Utils.IsNotEmpty(node.Flow))
|
if (Utils.IsNotEmpty(node.Flow))
|
||||||
{
|
{
|
||||||
|
@ -745,7 +744,7 @@ namespace ServiceLib.Services.CoreConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
outbound.protocol = Global.ProtocolTypes[node.ConfigType];
|
outbound.protocol = Global.ProtocolTypes[node.ConfigType];
|
||||||
await GenBoundStreamSettings(node, outbound.streamSettings);
|
await GenBoundStreamSettings(node, outbound);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -778,10 +777,11 @@ namespace ServiceLib.Services.CoreConfig
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<int> GenBoundStreamSettings(ProfileItem node, StreamSettings4Ray streamSettings)
|
private async Task<int> GenBoundStreamSettings(ProfileItem node, Outbounds4Ray outbound)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
var streamSettings = outbound.streamSettings;
|
||||||
streamSettings.network = node.GetNetwork();
|
streamSettings.network = node.GetNetwork();
|
||||||
var host = node.RequestHost.TrimEx();
|
var host = node.RequestHost.TrimEx();
|
||||||
var path = node.Path.TrimEx();
|
var path = node.Path.TrimEx();
|
||||||
|
@ -869,7 +869,7 @@ namespace ServiceLib.Services.CoreConfig
|
||||||
case nameof(ETransport.ws):
|
case nameof(ETransport.ws):
|
||||||
WsSettings4Ray wsSettings = new();
|
WsSettings4Ray wsSettings = new();
|
||||||
wsSettings.headers = new Headers4Ray();
|
wsSettings.headers = new Headers4Ray();
|
||||||
|
|
||||||
if (Utils.IsNotEmpty(host))
|
if (Utils.IsNotEmpty(host))
|
||||||
{
|
{
|
||||||
wsSettings.host = host;
|
wsSettings.host = host;
|
||||||
|
@ -904,12 +904,7 @@ namespace ServiceLib.Services.CoreConfig
|
||||||
//xhttp
|
//xhttp
|
||||||
case nameof(ETransport.xhttp):
|
case nameof(ETransport.xhttp):
|
||||||
streamSettings.network = ETransport.xhttp.ToString();
|
streamSettings.network = ETransport.xhttp.ToString();
|
||||||
XhttpSettings4Ray xhttpSettings = new()
|
XhttpSettings4Ray xhttpSettings = new();
|
||||||
{
|
|
||||||
scMaxEachPostBytes = "500000-1000000",
|
|
||||||
scMaxConcurrentPosts = "50-100",
|
|
||||||
scMinPostsIntervalMs = "30-50"
|
|
||||||
};
|
|
||||||
|
|
||||||
if (Utils.IsNotEmpty(path))
|
if (Utils.IsNotEmpty(path))
|
||||||
{
|
{
|
||||||
|
@ -929,6 +924,7 @@ namespace ServiceLib.Services.CoreConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
streamSettings.xhttpSettings = xhttpSettings;
|
streamSettings.xhttpSettings = xhttpSettings;
|
||||||
|
await GenOutboundMux(node, outbound, false);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
//h2
|
//h2
|
||||||
|
|
|
@ -9,7 +9,6 @@ namespace ServiceLib.ViewModels
|
||||||
{
|
{
|
||||||
private ConcurrentQueue<string> _queueMsg = new();
|
private ConcurrentQueue<string> _queueMsg = new();
|
||||||
private int _numMaxMsg = 500;
|
private int _numMaxMsg = 500;
|
||||||
private string _lastMsgFilter = string.Empty;
|
|
||||||
private bool _lastMsgFilterNotAvailable;
|
private bool _lastMsgFilterNotAvailable;
|
||||||
private bool _blLockShow = false;
|
private bool _blLockShow = false;
|
||||||
|
|
||||||
|
@ -28,7 +27,7 @@ namespace ServiceLib.ViewModels
|
||||||
|
|
||||||
this.WhenAnyValue(
|
this.WhenAnyValue(
|
||||||
x => x.MsgFilter)
|
x => x.MsgFilter)
|
||||||
.Subscribe(c => _config.MsgUIItem.MainMsgFilter = MsgFilter);
|
.Subscribe(c => DoMsgFilter());
|
||||||
|
|
||||||
this.WhenAnyValue(
|
this.WhenAnyValue(
|
||||||
x => x.AutoRefresh,
|
x => x.AutoRefresh,
|
||||||
|
@ -77,8 +76,7 @@ namespace ServiceLib.ViewModels
|
||||||
private async Task EnqueueQueueMsg(string msg)
|
private async Task EnqueueQueueMsg(string msg)
|
||||||
{
|
{
|
||||||
//filter msg
|
//filter msg
|
||||||
if (MsgFilter != _lastMsgFilter) _lastMsgFilterNotAvailable = false;
|
if (MsgFilter.IsNotEmpty() && !_lastMsgFilterNotAvailable)
|
||||||
if (Utils.IsNotEmpty(MsgFilter) && !_lastMsgFilterNotAvailable)
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -87,12 +85,12 @@ namespace ServiceLib.ViewModels
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
_queueMsg.Enqueue(ex.Message);
|
||||||
_lastMsgFilterNotAvailable = true;
|
_lastMsgFilterNotAvailable = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_lastMsgFilter = MsgFilter;
|
|
||||||
|
|
||||||
//Enqueue
|
//Enqueue
|
||||||
if (_queueMsg.Count > _numMaxMsg)
|
if (_queueMsg.Count > _numMaxMsg)
|
||||||
|
@ -113,5 +111,11 @@ namespace ServiceLib.ViewModels
|
||||||
{
|
{
|
||||||
_queueMsg.Clear();
|
_queueMsg.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void DoMsgFilter()
|
||||||
|
{
|
||||||
|
_config.MsgUIItem.MainMsgFilter = MsgFilter;
|
||||||
|
_lastMsgFilterNotAvailable = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue