mirror of https://github.com/2dust/v2rayN
Remove invalid by test results
parent
f6dbfc2dac
commit
b3e9a957c4
|
@ -1051,6 +1051,27 @@ namespace ServiceLib.Handler
|
||||||
return itemSocks;
|
return itemSocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async Task<int> RemoveInvalidServerResult(Config config, string subid)
|
||||||
|
{
|
||||||
|
var lstModel = await AppHandler.Instance.ProfileItems(subid, "");
|
||||||
|
if (lstModel is { Count: <= 0 })
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
var lstProfileExs = await ProfileExHandler.Instance.GetProfileExs();
|
||||||
|
var lstProfile = (from t in lstModel
|
||||||
|
join t2 in lstProfileExs on t.IndexId equals t2.IndexId
|
||||||
|
where t2.Delay == -1
|
||||||
|
select t.IndexId).ToList();
|
||||||
|
|
||||||
|
foreach (var item in lstProfile)
|
||||||
|
{
|
||||||
|
await RemoveProfileItem(config, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
return lstProfile.Count;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion Server
|
#endregion Server
|
||||||
|
|
||||||
#region Batch add servers
|
#region Batch add servers
|
||||||
|
|
|
@ -1311,6 +1311,15 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Remove invalid by test results 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string menuRemoveInvalidServerResult {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("menuRemoveInvalidServerResult", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Remove selected servers (Delete) 的本地化字符串。
|
/// 查找类似 Remove selected servers (Delete) 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1680,6 +1689,15 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 By test result 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string menuTestServerResult {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("menuTestServerResult", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 {0} Website 的本地化字符串。
|
/// 查找类似 {0} Website 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -2004,6 +2022,15 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 Removed {0} invalid test results. 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
public static string RemoveInvalidServerResultTip {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("RemoveInvalidServerResultTip", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Are you sure to remove the rules? 的本地化字符串。
|
/// 查找类似 Are you sure to remove the rules? 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -3221,7 +3248,7 @@ namespace ServiceLib.Resx {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找类似 Number per time for auto batch during speedtest(max 1000) 的本地化字符串。
|
/// 查找类似 The number of concurrent during multi-test 的本地化字符串。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string TbSettingsMixedConcurrencyCount {
|
public static string TbSettingsMixedConcurrencyCount {
|
||||||
get {
|
get {
|
||||||
|
|
|
@ -1396,4 +1396,13 @@
|
||||||
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
||||||
<value>شروع آزمایش مجدد قطعات ناموفق، {0} باقی مانده است. برای خاتمه ESC را فشار دهید...</value>
|
<value>شروع آزمایش مجدد قطعات ناموفق، {0} باقی مانده است. برای خاتمه ESC را فشار دهید...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuTestServerResult" xml:space="preserve">
|
||||||
|
<value>By test result</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveInvalidServerResult" xml:space="preserve">
|
||||||
|
<value>Remove invalid by test results</value>
|
||||||
|
</data>
|
||||||
|
<data name="RemoveInvalidServerResultTip" xml:space="preserve">
|
||||||
|
<value>Removed {0} invalid test results.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -1396,4 +1396,13 @@
|
||||||
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
||||||
<value>Starting retesting failed parts, {0} remaining. Press ESC to terminate...</value>
|
<value>Starting retesting failed parts, {0} remaining. Press ESC to terminate...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuTestServerResult" xml:space="preserve">
|
||||||
|
<value>By test result</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveInvalidServerResult" xml:space="preserve">
|
||||||
|
<value>Remove invalid by test results</value>
|
||||||
|
</data>
|
||||||
|
<data name="RemoveInvalidServerResultTip" xml:space="preserve">
|
||||||
|
<value>Removed {0} invalid test results.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -1396,4 +1396,13 @@
|
||||||
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
||||||
<value>Starting retesting failed parts, {0} remaining. Press ESC to terminate...</value>
|
<value>Starting retesting failed parts, {0} remaining. Press ESC to terminate...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuTestServerResult" xml:space="preserve">
|
||||||
|
<value>By test result</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveInvalidServerResult" xml:space="preserve">
|
||||||
|
<value>Remove invalid by test results</value>
|
||||||
|
</data>
|
||||||
|
<data name="RemoveInvalidServerResultTip" xml:space="preserve">
|
||||||
|
<value>Removed {0} invalid test results.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -1396,4 +1396,13 @@
|
||||||
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
||||||
<value>Starting retesting failed parts, {0} remaining. Press ESC to terminate...</value>
|
<value>Starting retesting failed parts, {0} remaining. Press ESC to terminate...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuTestServerResult" xml:space="preserve">
|
||||||
|
<value>By test result</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveInvalidServerResult" xml:space="preserve">
|
||||||
|
<value>Remove invalid by test results</value>
|
||||||
|
</data>
|
||||||
|
<data name="RemoveInvalidServerResultTip" xml:space="preserve">
|
||||||
|
<value>Removed {0} invalid test results.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -1393,4 +1393,13 @@
|
||||||
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
||||||
<value>开始对失败部分进行重新测试,剩余 {0} 个。可按 ESC 终止...</value>
|
<value>开始对失败部分进行重新测试,剩余 {0} 个。可按 ESC 终止...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuTestServerResult" xml:space="preserve">
|
||||||
|
<value>按测试结果</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveInvalidServerResult" xml:space="preserve">
|
||||||
|
<value>按测试结果移除无效</value>
|
||||||
|
</data>
|
||||||
|
<data name="RemoveInvalidServerResultTip" xml:space="preserve">
|
||||||
|
<value>移除无效测试结果 {0} 个。</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -1394,4 +1394,13 @@
|
||||||
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
||||||
<value>開始對失敗部分進行重新測試,剩餘 {0} 個。可按 ESC 終止...</value>
|
<value>開始對失敗部分進行重新測試,剩餘 {0} 個。可按 ESC 終止...</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="menuTestServerResult" xml:space="preserve">
|
||||||
|
<value>按測試結果</value>
|
||||||
|
</data>
|
||||||
|
<data name="menuRemoveInvalidServerResult" xml:space="preserve">
|
||||||
|
<value>按測試結果移除無效</value>
|
||||||
|
</data>
|
||||||
|
<data name="RemoveInvalidServerResultTip" xml:space="preserve">
|
||||||
|
<value>移除無效測試結果 {0} 個。</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -79,6 +79,7 @@ namespace ServiceLib.ViewModels
|
||||||
public ReactiveCommand<Unit, Unit> RealPingServerCmd { get; }
|
public ReactiveCommand<Unit, Unit> RealPingServerCmd { get; }
|
||||||
public ReactiveCommand<Unit, Unit> SpeedServerCmd { get; }
|
public ReactiveCommand<Unit, Unit> SpeedServerCmd { get; }
|
||||||
public ReactiveCommand<Unit, Unit> SortServerResultCmd { get; }
|
public ReactiveCommand<Unit, Unit> SortServerResultCmd { get; }
|
||||||
|
public ReactiveCommand<Unit, Unit> RemoveInvalidServerResultCmd { get; }
|
||||||
|
|
||||||
//servers export
|
//servers export
|
||||||
public ReactiveCommand<Unit, Unit> Export2ClientConfigCmd { get; }
|
public ReactiveCommand<Unit, Unit> Export2ClientConfigCmd { get; }
|
||||||
|
@ -197,6 +198,10 @@ namespace ServiceLib.ViewModels
|
||||||
{
|
{
|
||||||
await SortServer(EServerColName.DelayVal.ToString());
|
await SortServer(EServerColName.DelayVal.ToString());
|
||||||
});
|
});
|
||||||
|
RemoveInvalidServerResultCmd = ReactiveCommand.CreateFromTask(async () =>
|
||||||
|
{
|
||||||
|
await RemoveInvalidServerResult();
|
||||||
|
});
|
||||||
//servers export
|
//servers export
|
||||||
Export2ClientConfigCmd = ReactiveCommand.CreateFromTask(async () =>
|
Export2ClientConfigCmd = ReactiveCommand.CreateFromTask(async () =>
|
||||||
{
|
{
|
||||||
|
@ -659,6 +664,13 @@ namespace ServiceLib.ViewModels
|
||||||
RefreshServers();
|
RefreshServers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task RemoveInvalidServerResult()
|
||||||
|
{
|
||||||
|
var count = await ConfigHandler.RemoveInvalidServerResult(_config, _config.SubIndexId);
|
||||||
|
RefreshServers();
|
||||||
|
NoticeHandler.Instance.Enqueue(string.Format(ResUI.RemoveInvalidServerResultTip, count));
|
||||||
|
}
|
||||||
|
|
||||||
//move server
|
//move server
|
||||||
private async Task MoveToGroup(bool c)
|
private async Task MoveToGroup(bool c)
|
||||||
{
|
{
|
||||||
|
|
|
@ -104,14 +104,16 @@
|
||||||
<MenuItem x:Name="menuShareServer" Header="{x:Static resx:ResUI.menuShareServer}" />
|
<MenuItem x:Name="menuShareServer" Header="{x:Static resx:ResUI.menuShareServer}" />
|
||||||
<Separator />
|
<Separator />
|
||||||
<MenuItem x:Name="menuSetDefaultMultipleServer" Header="{x:Static resx:ResUI.menuSetDefaultMultipleServer}" />
|
<MenuItem x:Name="menuSetDefaultMultipleServer" Header="{x:Static resx:ResUI.menuSetDefaultMultipleServer}" />
|
||||||
|
|
||||||
<MenuItem x:Name="menuSetDefaultLoadBalanceServer" Header="{x:Static resx:ResUI.menuSetDefaultLoadBalanceServer}" />
|
<MenuItem x:Name="menuSetDefaultLoadBalanceServer" Header="{x:Static resx:ResUI.menuSetDefaultLoadBalanceServer}" />
|
||||||
<Separator />
|
<Separator />
|
||||||
<MenuItem x:Name="menuMixedTestServer" Header="{x:Static resx:ResUI.menuMixedTestServer}" />
|
<MenuItem x:Name="menuMixedTestServer" Header="{x:Static resx:ResUI.menuMixedTestServer}" />
|
||||||
<MenuItem x:Name="menuTcpingServer" Header="{x:Static resx:ResUI.menuTcpingServer}" />
|
<MenuItem x:Name="menuTcpingServer" Header="{x:Static resx:ResUI.menuTcpingServer}" />
|
||||||
<MenuItem x:Name="menuRealPingServer" Header="{x:Static resx:ResUI.menuRealPingServer}" />
|
<MenuItem x:Name="menuRealPingServer" Header="{x:Static resx:ResUI.menuRealPingServer}" />
|
||||||
<MenuItem x:Name="menuSpeedServer" Header="{x:Static resx:ResUI.menuSpeedServer}" />
|
<MenuItem x:Name="menuSpeedServer" Header="{x:Static resx:ResUI.menuSpeedServer}" />
|
||||||
<MenuItem x:Name="menuSortServerResult" Header="{x:Static resx:ResUI.menuSortServerResult}" />
|
<MenuItem Header="{x:Static resx:ResUI.menuTestServerResult}">
|
||||||
|
<MenuItem x:Name="menuSortServerResult" Header="{x:Static resx:ResUI.menuSortServerResult}" />
|
||||||
|
<MenuItem x:Name="menuRemoveInvalidServerResult" Header="{x:Static resx:ResUI.menuRemoveInvalidServerResult}" />
|
||||||
|
</MenuItem>
|
||||||
<Separator />
|
<Separator />
|
||||||
<MenuItem x:Name="menuMoveToGroup" Header="{x:Static resx:ResUI.menuMoveToGroup}">
|
<MenuItem x:Name="menuMoveToGroup" Header="{x:Static resx:ResUI.menuMoveToGroup}">
|
||||||
<MenuItem>
|
<MenuItem>
|
||||||
|
@ -245,4 +247,4 @@
|
||||||
</DataGrid>
|
</DataGrid>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|
|
@ -85,7 +85,8 @@ namespace v2rayN.Desktop.Views
|
||||||
this.BindCommand(ViewModel, vm => vm.RealPingServerCmd, v => v.menuRealPingServer).DisposeWith(disposables);
|
this.BindCommand(ViewModel, vm => vm.RealPingServerCmd, v => v.menuRealPingServer).DisposeWith(disposables);
|
||||||
this.BindCommand(ViewModel, vm => vm.SpeedServerCmd, v => v.menuSpeedServer).DisposeWith(disposables);
|
this.BindCommand(ViewModel, vm => vm.SpeedServerCmd, v => v.menuSpeedServer).DisposeWith(disposables);
|
||||||
this.BindCommand(ViewModel, vm => vm.SortServerResultCmd, v => v.menuSortServerResult).DisposeWith(disposables);
|
this.BindCommand(ViewModel, vm => vm.SortServerResultCmd, v => v.menuSortServerResult).DisposeWith(disposables);
|
||||||
|
this.BindCommand(ViewModel, vm => vm.RemoveInvalidServerResultCmd, v => v.menuRemoveInvalidServerResult).DisposeWith(disposables);
|
||||||
|
|
||||||
//servers export
|
//servers export
|
||||||
this.BindCommand(ViewModel, vm => vm.Export2ClientConfigCmd, v => v.menuExport2ClientConfig).DisposeWith(disposables);
|
this.BindCommand(ViewModel, vm => vm.Export2ClientConfigCmd, v => v.menuExport2ClientConfig).DisposeWith(disposables);
|
||||||
this.BindCommand(ViewModel, vm => vm.Export2ClientConfigClipboardCmd, v => v.menuExport2ClientConfigClipboard).DisposeWith(disposables);
|
this.BindCommand(ViewModel, vm => vm.Export2ClientConfigClipboardCmd, v => v.menuExport2ClientConfigClipboard).DisposeWith(disposables);
|
||||||
|
|
|
@ -146,10 +146,16 @@
|
||||||
x:Name="menuSpeedServer"
|
x:Name="menuSpeedServer"
|
||||||
Height="{StaticResource MenuItemHeight}"
|
Height="{StaticResource MenuItemHeight}"
|
||||||
Header="{x:Static resx:ResUI.menuSpeedServer}" />
|
Header="{x:Static resx:ResUI.menuSpeedServer}" />
|
||||||
<MenuItem
|
<MenuItem Header="{x:Static resx:ResUI.menuTestServerResult}">
|
||||||
x:Name="menuSortServerResult"
|
<MenuItem
|
||||||
Height="{StaticResource MenuItemHeight}"
|
x:Name="menuSortServerResult"
|
||||||
Header="{x:Static resx:ResUI.menuSortServerResult}" />
|
Height="{StaticResource MenuItemHeight}"
|
||||||
|
Header="{x:Static resx:ResUI.menuSortServerResult}" />
|
||||||
|
<MenuItem
|
||||||
|
x:Name="menuRemoveInvalidServerResult"
|
||||||
|
Height="{StaticResource MenuItemHeight}"
|
||||||
|
Header="{x:Static resx:ResUI.menuRemoveInvalidServerResult}" />
|
||||||
|
</MenuItem>
|
||||||
<Separator />
|
<Separator />
|
||||||
<MenuItem
|
<MenuItem
|
||||||
x:Name="menuMoveToGroup"
|
x:Name="menuMoveToGroup"
|
||||||
|
@ -321,4 +327,4 @@
|
||||||
</DataGrid>
|
</DataGrid>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</reactiveui:ReactiveUserControl>
|
</reactiveui:ReactiveUserControl>
|
||||||
|
|
|
@ -79,6 +79,7 @@ namespace v2rayN.Views
|
||||||
this.BindCommand(ViewModel, vm => vm.RealPingServerCmd, v => v.menuRealPingServer).DisposeWith(disposables);
|
this.BindCommand(ViewModel, vm => vm.RealPingServerCmd, v => v.menuRealPingServer).DisposeWith(disposables);
|
||||||
this.BindCommand(ViewModel, vm => vm.SpeedServerCmd, v => v.menuSpeedServer).DisposeWith(disposables);
|
this.BindCommand(ViewModel, vm => vm.SpeedServerCmd, v => v.menuSpeedServer).DisposeWith(disposables);
|
||||||
this.BindCommand(ViewModel, vm => vm.SortServerResultCmd, v => v.menuSortServerResult).DisposeWith(disposables);
|
this.BindCommand(ViewModel, vm => vm.SortServerResultCmd, v => v.menuSortServerResult).DisposeWith(disposables);
|
||||||
|
this.BindCommand(ViewModel, vm => vm.RemoveInvalidServerResultCmd, v => v.menuRemoveInvalidServerResult).DisposeWith(disposables);
|
||||||
|
|
||||||
//servers export
|
//servers export
|
||||||
this.BindCommand(ViewModel, vm => vm.Export2ClientConfigCmd, v => v.menuExport2ClientConfig).DisposeWith(disposables);
|
this.BindCommand(ViewModel, vm => vm.Export2ClientConfigCmd, v => v.menuExport2ClientConfig).DisposeWith(disposables);
|
||||||
|
|
Loading…
Reference in New Issue