Compare commits

..

13 Commits
6.24 ... 6.25

Author SHA1 Message Date
2dust
bc957fea71 up 6.25 2023-05-21 16:31:48 +08:00
2dust
566f056149 use Task.Delay instead of Thread.Sleep 2023-05-21 16:30:05 +08:00
2dust
abe484b0df use Task.Delay instead of Thread.Sleep 2023-05-21 16:29:57 +08:00
2dust
982c865245 Fix subscription ordering 2023-05-21 16:03:29 +08:00
2dust
07d2a27b5f optimize sing-box DNS 2023-05-21 15:22:30 +08:00
2dust
e4c65deda8 Add fakeip for sing-box 2023-05-21 15:05:15 +08:00
2dust
4930646e05 Tum mode forcibly closes the system proxy 2023-05-21 14:55:48 +08:00
2dust
01dd1ff56f Fix cannot insert routing rule with only process name 2023-05-21 14:43:07 +08:00
2dust
9433213fe5 Fill sing-box server_name 2023-05-21 14:35:18 +08:00
2dust
82dea829f1 Temporarily disable sing-box multiplex 2023-05-21 14:30:48 +08:00
2dust
dafc83aa53 Code clean 2023-05-14 17:25:05 +08:00
2dust
7ab1cd6612 Merge pull request #3852 from qhy040404/master
Fix download url
2023-05-14 17:21:33 +08:00
qhy040404
d0e3b3ffbd Fix download url 2023-05-14 17:16:55 +08:00
17 changed files with 133 additions and 100 deletions

View File

@@ -2,7 +2,6 @@
using System.IO;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace PacLib;
@@ -50,7 +49,7 @@ public class PacHandler
_tcpListener = TcpListener.Create(_pacPort);
_isRunning = true;
_tcpListener.Start();
Task.Factory.StartNew(() =>
Task.Factory.StartNew(async () =>
{
while (_isRunning)
{
@@ -58,25 +57,25 @@ public class PacHandler
{
if (!_tcpListener.Pending())
{
Thread.Sleep(10);
await Task.Delay(10);
continue;
}
var client = _tcpListener.AcceptTcpClient();
Task.Run(() =>
{
var stream = client.GetStream();
var sb = new StringBuilder();
sb.AppendLine("HTTP/1.0 200 OK");
sb.AppendLine("Content-type:application/x-ns-proxy-autoconfig");
sb.AppendLine("Connection:close");
sb.AppendLine("Content-Length:" + Encoding.UTF8.GetByteCount(_pacText));
sb.AppendLine();
sb.Append(_pacText);
var content = Encoding.UTF8.GetBytes(sb.ToString());
stream.Write(content, 0, content.Length);
stream.Flush();
});
await Task.Run(() =>
{
var stream = client.GetStream();
var sb = new StringBuilder();
sb.AppendLine("HTTP/1.0 200 OK");
sb.AppendLine("Content-type:application/x-ns-proxy-autoconfig");
sb.AppendLine("Connection:close");
sb.AppendLine("Content-Length:" + Encoding.UTF8.GetByteCount(_pacText));
sb.AppendLine();
sb.Append(_pacText);
var content = Encoding.UTF8.GetBytes(sb.ToString());
stream.Write(content, 0, content.Length);
stream.Flush();
});
}
catch (Exception e)
{

View File

@@ -1,9 +1,9 @@
<Application
x:Class="v2rayN.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:conv="clr-namespace:v2rayN.Converters"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
ShutdownMode="OnExplicitShutdown"
StartupUri="Views/MainWindow.xaml">
<Application.Resources>
@@ -21,7 +21,7 @@
<system:Double x:Key="StdFontSize2">14</system:Double>
<system:Double x:Key="StdFontSizeMsg">11</system:Double>
<conv:InverseBooleanConverter x:Key="InverseBooleanConverter"/>
<conv:InverseBooleanConverter x:Key="InverseBooleanConverter" />
<Thickness
x:Key="ServerItemMargin"
Bottom="4"

View File

@@ -8,7 +8,7 @@ namespace v2rayN.Converters
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(targetType != typeof(bool))
if (targetType != typeof(bool))
{
throw new InvalidOperationException("The target must be a boolean");
}
@@ -21,4 +21,4 @@ namespace v2rayN.Converters
throw new NotImplementedException();
}
}
}
}

View File

@@ -858,10 +858,18 @@ namespace v2rayN.Handler
profileItem.network = Global.DefaultNetwork;
}
var maxSort = -1;
if (Utils.IsNullOrEmpty(profileItem.indexId))
{
profileItem.indexId = Utils.GetGUID(false);
var maxSort = ProfileExHandler.Instance.GetMaxSort();
maxSort = ProfileExHandler.Instance.GetMaxSort();
}
if (!toFile && maxSort < 0)
{
maxSort = ProfileExHandler.Instance.GetMaxSort();
}
if (maxSort > 0)
{
ProfileExHandler.Instance.SetSort(profileItem.indexId, maxSort + 1);
}

View File

@@ -288,19 +288,19 @@ namespace v2rayN.Handler
{
try
{
if (_config.coreBasicItem.muxEnabled)
{
var mux = new Multiplex4Sbox()
{
enabled = true,
protocol = _config.mux4Sbox.protocol,
max_connections = _config.mux4Sbox.max_connections,
min_streams = _config.mux4Sbox.min_streams,
max_streams = _config.mux4Sbox.max_streams,
padding = _config.mux4Sbox.padding
};
outbound.multiplex = mux;
}
//if (_config.coreBasicItem.muxEnabled)
//{
// var mux = new Multiplex4Sbox()
// {
// enabled = true,
// protocol = _config.mux4Sbox.protocol,
// max_connections = _config.mux4Sbox.max_connections,
// min_streams = _config.mux4Sbox.min_streams,
// max_streams = _config.mux4Sbox.max_streams,
// padding = _config.mux4Sbox.padding
// };
// outbound.multiplex = mux;
//}
}
catch (Exception ex)
{
@@ -315,10 +315,19 @@ namespace v2rayN.Handler
{
if (node.streamSecurity == Global.StreamSecurityReality || node.streamSecurity == Global.StreamSecurity)
{
var server_name = string.Empty;
if (!string.IsNullOrWhiteSpace(node.sni))
{
server_name = node.sni;
}
else if (!string.IsNullOrWhiteSpace(node.requestHost))
{
server_name = Utils.String2List(node.requestHost)[0];
}
var tls = new Tls4Sbox()
{
enabled = true,
server_name = node.sni,
server_name = server_name,
insecure = Utils.ToBool(node.allowInsecure.IsNullOrEmpty() ? _config.coreBasicItem.defAllowInsecure.ToString().ToLower() : node.allowInsecure),
alpn = node.GetAlpn(),
};
@@ -666,24 +675,21 @@ namespace v2rayN.Handler
return 0;
}
//Add the dns of the remote server domain
if (Utils.IsDomain(node.address))
if (dns4Sbox.rules is null)
{
if (dns4Sbox.rules is null)
{
dns4Sbox.rules = new();
}
dns4Sbox.servers.Add(new()
{
tag = "local_local",
address = "223.5.5.5",
detour = "direct"
});
dns4Sbox.rules.Add(new()
{
server = "local_local",
domain = new List<string>() { node.address }
});
dns4Sbox.rules = new();
}
dns4Sbox.servers.Add(new()
{
tag = "local_local",
address = "223.5.5.5",
detour = "direct"
});
dns4Sbox.rules.Add(new()
{
server = "local_local",
outbound = "any"
});
singboxConfig.dns = dns4Sbox;
}

View File

@@ -160,9 +160,9 @@ namespace v2rayN.Handler
Task.Run(() => UpdateTaskRunGeo(config, update));
}
private void UpdateTaskRunSubscription(Config config, Action<bool, string> update)
private async Task UpdateTaskRunSubscription(Config config, Action<bool, string> update)
{
Thread.Sleep(60000);
await Task.Delay(60000);
Utils.SaveLog("UpdateTaskRunSubscription");
var updateHandle = new UpdateHandle();
@@ -185,17 +185,17 @@ namespace v2rayN.Handler
item.updateTime = updateTime;
ConfigHandler.AddSubItem(ref config, item);
Thread.Sleep(5000);
await Task.Delay(5000);
}
Thread.Sleep(60000);
await Task.Delay(60000);
}
}
private void UpdateTaskRunGeo(Config config, Action<bool, string> update)
private async Task UpdateTaskRunGeo(Config config, Action<bool, string> update)
{
var autoUpdateGeoTime = DateTime.Now;
Thread.Sleep(1000 * 120);
await Task.Delay(1000 * 120);
Utils.SaveLog("UpdateTaskRunGeo");
var updateHandle = new UpdateHandle();
@@ -214,7 +214,7 @@ namespace v2rayN.Handler
}
}
Thread.Sleep(1000 * 3600);
await Task.Delay(1000 * 3600);
}
}

View File

@@ -24,7 +24,7 @@ namespace v2rayN.Handler
_lstProfileEx = new(SqliteHelper.Instance.Table<ProfileExItem>());
Task.Run(() =>
Task.Run(async () =>
{
while (true)
{
@@ -38,7 +38,7 @@ namespace v2rayN.Handler
SqliteHelper.Instance.Replace(item);
}
}
Thread.Sleep(1000 * 60);
await Task.Delay(1000 * 60);
}
});
}

View File

@@ -95,7 +95,7 @@ namespace v2rayN.Handler
}
}
private void RunPingSub(Action<ServerTestItem> updateFun)
private async Task RunPingSubAsync(Action<ServerTestItem> updateFun)
{
try
{
@@ -111,7 +111,7 @@ namespace v2rayN.Handler
}
}
Thread.Sleep(10);
await Task.Delay(10);
}
catch (Exception ex)
{
@@ -119,21 +119,21 @@ namespace v2rayN.Handler
}
}
private void RunPing()
private async void RunPing()
{
RunPingSub((ServerTestItem it) =>
{
long time = Ping(it.address);
var output = FormatOut(time, Global.DelayUnit);
await RunPingSubAsync((ServerTestItem it) =>
{
long time = Ping(it.address);
var output = FormatOut(time, Global.DelayUnit);
ProfileExHandler.Instance.SetTestDelay(it.indexId, output);
UpdateFunc(it.indexId, output);
});
ProfileExHandler.Instance.SetTestDelay(it.indexId, output);
UpdateFunc(it.indexId, output);
});
}
private void RunTcping()
private async void RunTcping()
{
RunPingSub((ServerTestItem it) =>
await RunPingSubAsync((ServerTestItem it) =>
{
int time = GetTcpingTime(it.address, it.port);
var output = FormatOut(time, Global.DelayUnit);
@@ -158,7 +158,7 @@ namespace v2rayN.Handler
}
DownloadHandle downloadHandle = new DownloadHandle();
//Thread.Sleep(5000);
List<Task> tasks = new();
foreach (var it in _selecteds)
{
@@ -187,7 +187,6 @@ namespace v2rayN.Handler
Utils.SaveLog(ex.Message, ex);
}
}));
//Thread.Sleep(100);
}
Task.WaitAll(tasks.ToArray());
}
@@ -312,10 +311,10 @@ namespace v2rayN.Handler
}
UpdateFunc(it.indexId, "", msg);
});
Thread.Sleep(2000);
await Task.Delay(2000);
}
Thread.Sleep((timeout + 2) * 1000);
await Task.Delay((timeout + 2) * 1000);
if (pid > 0)
{
@@ -329,7 +328,7 @@ namespace v2rayN.Handler
{
await RunRealPing();
Thread.Sleep(1000);
await Task.Delay(1000);
await RunSpeedTestMulti();
}

View File

@@ -23,7 +23,7 @@ namespace v2rayN.Handler
private async void Init()
{
Thread.Sleep(5000);
await Task.Delay(5000);
try
{
@@ -102,7 +102,7 @@ namespace v2rayN.Handler
}
finally
{
Thread.Sleep(1000);
await Task.Delay(1000);
}
}
}

View File

@@ -62,7 +62,7 @@ namespace v2rayN.Handler
}
}
var sleep = _config.guiItem.statisticsFreshRate < 1 ? 1 : _config.guiItem.statisticsFreshRate;
Thread.Sleep(1000 * sleep);
await Task.Delay(1000 * sleep);
await _channel.ConnectAsync();
}
catch

View File

@@ -462,7 +462,7 @@ namespace v2rayN.Handler
url = coreInfo.coreDownloadUrl64;
break;
}
url = string.Format(url, version);
url = string.Format(url, version.ToVersionString("v"));
break;
}
case ECoreType.sing_box:
@@ -609,6 +609,7 @@ namespace v2rayN.Handler
try
{
if (needStop) coreHandler?.CoreStop();
Task.Delay(1000);
string fileName = Utils.GetTempPath(Utils.GetDownloadFileName(url));
if (File.Exists(fileName))
{

View File

@@ -22,6 +22,13 @@
{
public List<Server4Sbox> servers { get; set; }
public List<Rule4Sbox> rules { get; set; }
public string? final { get; set; }
public string? strategy { get; set; }
public bool? disable_cache { get; set; }
public bool? disable_expire { get; set; }
public bool? independent_cache { get; set; }
public bool? reverse_mapping { get; set; }
public Fakeip4Sbox? fakeip { get; set; }
}
public class Route4Sbox
@@ -195,4 +202,11 @@
public List<string>? outbounds { get; set; }
public List<string>? users { get; set; }
}
public class Fakeip4Sbox
{
public bool enabled { get; set; }
public string inet4_range { get; set; }
public string inet6_range { get; set; }
}
}

View File

@@ -87,12 +87,20 @@ namespace v2rayN.Tool
}
}
public static bool operator ==(SemanticVersion v1, SemanticVersion v2) { return v1.Equals(v2); }
public static bool operator !=(SemanticVersion v1, SemanticVersion v2) { return !v1.Equals(v2); }
public static bool operator >=(SemanticVersion v1, SemanticVersion v2) { return v1.GreaterEquals(v2); }
public static bool operator <=(SemanticVersion v1, SemanticVersion v2) { return v1.LessEquals(v2); }
public static bool operator ==(SemanticVersion v1, SemanticVersion v2)
{ return v1.Equals(v2); }
public static bool operator !=(SemanticVersion v1, SemanticVersion v2)
{ return !v1.Equals(v2); }
public static bool operator >=(SemanticVersion v1, SemanticVersion v2)
{ return v1.GreaterEquals(v2); }
public static bool operator <=(SemanticVersion v1, SemanticVersion v2)
{ return v1.LessEquals(v2); }
#region Private
private bool GreaterEquals(SemanticVersion other)
{
if (this.major < other.major)
@@ -168,6 +176,7 @@ namespace v2rayN.Tool
}
}
}
#endregion Private
}
}
}

View File

@@ -1528,7 +1528,7 @@ namespace v2rayN.ViewModels
private void ChangeSystemProxyStatus(ESysProxyType type, bool blChange)
{
SysProxyHandle.UpdateSysProxy(_config, false);
SysProxyHandle.UpdateSysProxy(_config, _config.tunModeItem.enableTun ? true : false);
_noticeHandler?.SendMessage(ResUI.TipChangeSystemProxy, true);
Application.Current.Dispatcher.Invoke((Action)(() =>

View File

@@ -87,18 +87,15 @@ namespace v2rayN.ViewModels
SelectedSource.protocol = ProtocolItems?.ToList();
SelectedSource.inboundTag = InboundTagItems?.ToList();
bool hasRule =
SelectedSource.domain != null
&& SelectedSource.domain.Count > 0
|| SelectedSource.ip != null
&& SelectedSource.ip.Count > 0
|| SelectedSource.protocol != null
&& SelectedSource.protocol.Count > 0
bool hasRule = SelectedSource.domain?.Count > 0
|| SelectedSource.ip?.Count > 0
|| SelectedSource.protocol?.Count > 0
|| SelectedSource.process?.Count > 0
|| !Utils.IsNullOrEmpty(SelectedSource.port);
if (!hasRule)
{
UI.ShowWarning(string.Format(ResUI.RoutingRuleDetailRequiredTips, "Port/Protocol/Domain/IP"));
UI.ShowWarning(string.Format(ResUI.RoutingRuleDetailRequiredTips, "Port/Protocol/Domain/IP/Process"));
return;
}
//_noticeHandler?.Enqueue(ResUI.OperationSuccess);

View File

@@ -321,8 +321,8 @@
Grid.Row="0"
Grid.Column="1"
Margin="8"
IsEnabled="{Binding ElementName=followSystemTheme, Path=IsChecked, Converter={StaticResource InverseBooleanConverter}}"/>
IsEnabled="{Binding ElementName=followSystemTheme, Path=IsChecked, Converter={StaticResource InverseBooleanConverter}}" />
<TextBlock
Grid.Row="1"
Grid.Column="0"
@@ -574,7 +574,7 @@
<MenuItem
x:Name="menuSpeedServer"
Height="{StaticResource MenuItemHeight}"
Header="{x:Static resx:ResUI.menuSpeedServer}"/>
Header="{x:Static resx:ResUI.menuSpeedServer}" />
<MenuItem
x:Name="menuSortServerResult"
Height="{StaticResource MenuItemHeight}"

View File

@@ -10,7 +10,7 @@
<ImplicitUsings>enable</ImplicitUsings>
<ApplicationIcon>v2rayN.ico</ApplicationIcon>
<Copyright>Copyright © 2017-2023 (GPLv3)</Copyright>
<FileVersion>6.24</FileVersion>
<FileVersion>6.25</FileVersion>
</PropertyGroup>
<ItemGroup>