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;
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
#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>
|
||||
/// 查找类似 Remove selected servers (Delete) 的本地化字符串。
|
||||
/// </summary>
|
||||
|
@ -1680,6 +1689,15 @@ namespace ServiceLib.Resx {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 By test result 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string menuTestServerResult {
|
||||
get {
|
||||
return ResourceManager.GetString("menuTestServerResult", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 {0} Website 的本地化字符串。
|
||||
/// </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>
|
||||
/// 查找类似 Are you sure to remove the rules? 的本地化字符串。
|
||||
/// </summary>
|
||||
|
@ -3221,7 +3248,7 @@ namespace ServiceLib.Resx {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Number per time for auto batch during speedtest(max 1000) 的本地化字符串。
|
||||
/// 查找类似 The number of concurrent during multi-test 的本地化字符串。
|
||||
/// </summary>
|
||||
public static string TbSettingsMixedConcurrencyCount {
|
||||
get {
|
||||
|
|
|
@ -1396,4 +1396,13 @@
|
|||
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
||||
<value>شروع آزمایش مجدد قطعات ناموفق، {0} باقی مانده است. برای خاتمه ESC را فشار دهید...</value>
|
||||
</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>
|
|
@ -1396,4 +1396,13 @@
|
|||
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
||||
<value>Starting retesting failed parts, {0} remaining. Press ESC to terminate...</value>
|
||||
</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>
|
|
@ -1396,4 +1396,13 @@
|
|||
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
||||
<value>Starting retesting failed parts, {0} remaining. Press ESC to terminate...</value>
|
||||
</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>
|
|
@ -1396,4 +1396,13 @@
|
|||
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
||||
<value>Starting retesting failed parts, {0} remaining. Press ESC to terminate...</value>
|
||||
</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>
|
|
@ -1393,4 +1393,13 @@
|
|||
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
||||
<value>开始对失败部分进行重新测试,剩余 {0} 个。可按 ESC 终止...</value>
|
||||
</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>
|
|
@ -1394,4 +1394,13 @@
|
|||
<data name="SpeedtestingTestFailedPart" xml:space="preserve">
|
||||
<value>開始對失敗部分進行重新測試,剩餘 {0} 個。可按 ESC 終止...</value>
|
||||
</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>
|
|
@ -79,6 +79,7 @@ namespace ServiceLib.ViewModels
|
|||
public ReactiveCommand<Unit, Unit> RealPingServerCmd { get; }
|
||||
public ReactiveCommand<Unit, Unit> SpeedServerCmd { get; }
|
||||
public ReactiveCommand<Unit, Unit> SortServerResultCmd { get; }
|
||||
public ReactiveCommand<Unit, Unit> RemoveInvalidServerResultCmd { get; }
|
||||
|
||||
//servers export
|
||||
public ReactiveCommand<Unit, Unit> Export2ClientConfigCmd { get; }
|
||||
|
@ -197,6 +198,10 @@ namespace ServiceLib.ViewModels
|
|||
{
|
||||
await SortServer(EServerColName.DelayVal.ToString());
|
||||
});
|
||||
RemoveInvalidServerResultCmd = ReactiveCommand.CreateFromTask(async () =>
|
||||
{
|
||||
await RemoveInvalidServerResult();
|
||||
});
|
||||
//servers export
|
||||
Export2ClientConfigCmd = ReactiveCommand.CreateFromTask(async () =>
|
||||
{
|
||||
|
@ -659,6 +664,13 @@ namespace ServiceLib.ViewModels
|
|||
RefreshServers();
|
||||
}
|
||||
|
||||
public async Task RemoveInvalidServerResult()
|
||||
{
|
||||
var count = await ConfigHandler.RemoveInvalidServerResult(_config, _config.SubIndexId);
|
||||
RefreshServers();
|
||||
NoticeHandler.Instance.Enqueue(string.Format(ResUI.RemoveInvalidServerResultTip, count));
|
||||
}
|
||||
|
||||
//move server
|
||||
private async Task MoveToGroup(bool c)
|
||||
{
|
||||
|
|
|
@ -104,14 +104,16 @@
|
|||
<MenuItem x:Name="menuShareServer" Header="{x:Static resx:ResUI.menuShareServer}" />
|
||||
<Separator />
|
||||
<MenuItem x:Name="menuSetDefaultMultipleServer" Header="{x:Static resx:ResUI.menuSetDefaultMultipleServer}" />
|
||||
|
||||
<MenuItem x:Name="menuSetDefaultLoadBalanceServer" Header="{x:Static resx:ResUI.menuSetDefaultLoadBalanceServer}" />
|
||||
<Separator />
|
||||
<MenuItem x:Name="menuMixedTestServer" Header="{x:Static resx:ResUI.menuMixedTestServer}" />
|
||||
<MenuItem x:Name="menuTcpingServer" Header="{x:Static resx:ResUI.menuTcpingServer}" />
|
||||
<MenuItem x:Name="menuRealPingServer" Header="{x:Static resx:ResUI.menuRealPingServer}" />
|
||||
<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 />
|
||||
<MenuItem x:Name="menuMoveToGroup" Header="{x:Static resx:ResUI.menuMoveToGroup}">
|
||||
<MenuItem>
|
||||
|
@ -245,4 +247,4 @@
|
|||
</DataGrid>
|
||||
</DockPanel>
|
||||
</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.SpeedServerCmd, v => v.menuSpeedServer).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
|
||||
this.BindCommand(ViewModel, vm => vm.Export2ClientConfigCmd, v => v.menuExport2ClientConfig).DisposeWith(disposables);
|
||||
this.BindCommand(ViewModel, vm => vm.Export2ClientConfigClipboardCmd, v => v.menuExport2ClientConfigClipboard).DisposeWith(disposables);
|
||||
|
|
|
@ -146,10 +146,16 @@
|
|||
x:Name="menuSpeedServer"
|
||||
Height="{StaticResource MenuItemHeight}"
|
||||
Header="{x:Static resx:ResUI.menuSpeedServer}" />
|
||||
<MenuItem
|
||||
x:Name="menuSortServerResult"
|
||||
Height="{StaticResource MenuItemHeight}"
|
||||
Header="{x:Static resx:ResUI.menuSortServerResult}" />
|
||||
<MenuItem Header="{x:Static resx:ResUI.menuTestServerResult}">
|
||||
<MenuItem
|
||||
x:Name="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 />
|
||||
<MenuItem
|
||||
x:Name="menuMoveToGroup"
|
||||
|
@ -321,4 +327,4 @@
|
|||
</DataGrid>
|
||||
</DockPanel>
|
||||
</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.SpeedServerCmd, v => v.menuSpeedServer).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
|
||||
this.BindCommand(ViewModel, vm => vm.Export2ClientConfigCmd, v => v.menuExport2ClientConfig).DisposeWith(disposables);
|
||||
|
|
Loading…
Reference in New Issue