Move configuration data classes to handlers

Rename the database and text configuration managers as handlers, move configuration data classes into Handler.Data, and relocate ProfileExManager. Update references across applications and tests.
This commit is contained in:
2dust
2026-11-14 20:35:50 +08:00
parent 5292568150
commit 2c90ed1a94
88 changed files with 251 additions and 251 deletions
+1 -1
View File
@@ -21,9 +21,9 @@ global using ServiceLib.Handler;
global using ServiceLib.Handler.Builder;
global using ServiceLib.Handler.Fmt;
global using ServiceLib.Handler.SysProxy;
global using ServiceLib.Handler.Data;
global using ServiceLib.Helper;
global using ServiceLib.Manager;
global using ServiceLib.Manager.Data;
global using ServiceLib.Models.CoreConfigs;
global using ServiceLib.Models.Configs;
global using ServiceLib.Models.Dto;
@@ -32,7 +32,7 @@ public class ConfigHandlerCustomSubscriptionTests
oldProfile.IsSub = true;
await SQLiteHelper.Instance.InsertAsync(oldProfile);
var count = await ConfigDbManager.AddBatchServers(config, FullXrayConfigs, subId, true);
var count = await ConfigDbHandler.AddBatchServers(config, FullXrayConfigs, subId, true);
var profiles = await ConfigDbQuery.ProfileItems(subId) ?? [];
await count.Should().BeEqualTo(2);
@@ -66,7 +66,7 @@ public class ConfigHandlerCustomSubscriptionTests
await SQLiteHelper.Instance.InsertAsync(existing);
var invalidSubscription = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("not a valid profile"));
var count = await ConfigDbManager.AddBatchServers(config, invalidSubscription, subId, true);
var count = await ConfigDbHandler.AddBatchServers(config, invalidSubscription, subId, true);
var profiles = await ConfigDbQuery.ProfileItems(subId) ?? [];
await (count < 1).Should().BeTrue();
+1 -1
View File
@@ -31,9 +31,9 @@ global using ServiceLib.Handler;
global using ServiceLib.Handler.Builder;
global using ServiceLib.Handler.Fmt;
global using ServiceLib.Handler.SysProxy;
global using ServiceLib.Handler.Data;
global using ServiceLib.Helper;
global using ServiceLib.Manager;
global using ServiceLib.Manager.Data;
global using ServiceLib.Models.Configs;
global using ServiceLib.Models.CoreConfigs;
global using ServiceLib.Models.Dto;
@@ -46,7 +46,7 @@ public class CoreConfigContextBuilder
SimpleDnsItem = config.SimpleDNSItem,
ProtectDomainList = [],
RawDnsItem = await ConfigDbQuery.GetDNSItem(coreType),
RoutingItem = await ConfigDbManager.GetDefaultRouting(config),
RoutingItem = await ConfigDbHandler.GetDefaultRouting(config),
IsWindows = Utils.IsWindows(),
IsMacOS = Utils.IsMacOS(),
IsLinux = Utils.IsLinux(),
@@ -204,7 +204,7 @@ public class CoreConfigContextBuilder
var node = nodeContext.Node;
var coreType = AppManager.Instance.GetCoreType(node, node.ConfigType);
var preSocksItem = ConfigDbManager.GetPreSocksItem(config, node, coreType);
var preSocksItem = ConfigDbHandler.GetPreSocksItem(config, node, coreType);
if (preSocksItem != null)
{
var preSocksResult = await Build(nodeContext.AppConfig, preSocksItem);
@@ -79,7 +79,7 @@ public static class ConnectionHandler
public static async Task<int> GetRealPingTime(HttpClient client, CancellationToken cancellationToken = default)
{
var url = ConfigTextManager.Config.SpeedTestItem.SpeedPingTestUrl;
var url = ConfigTextHandler.Config.SpeedTestItem.SpeedPingTestUrl;
var responseTime = -1;
try
{
@@ -114,7 +114,7 @@ public static class ConnectionHandler
{
try
{
var url = ConfigTextManager.Config.SpeedTestItem.IPAPIUrl;
var url = ConfigTextHandler.Config.SpeedTestItem.IPAPIUrl;
if (url.IsNullOrEmpty())
{
return null;
@@ -9,7 +9,7 @@ public static class CoreConfigHandler
public static async Task<RetResult> GenerateClientConfig(CoreConfigContext context, string? fileName)
{
var config = ConfigTextManager.Config;
var config = ConfigTextHandler.Config;
var result = new RetResult();
var node = context.Node;
@@ -1,14 +1,14 @@
namespace ServiceLib.Manager.Data;
namespace ServiceLib.Handler.Data;
public static class ConfigDbManager
public static class ConfigDbHandler
{
private static readonly string _tag = "ConfigDbManager";
private static readonly string _tag = "ConfigDbHandler";
private static Config CurrentConfig => ConfigState.Instance.Current;
private static async Task<int> SaveConfig()
{
return await ConfigTextManager.SaveConfig();
return await ConfigTextHandler.SaveConfig();
}
#region Server
@@ -2011,7 +2011,7 @@ public static class ConfigDbManager
var existItem = FindMatchedProfileItem(lstSub, activeProfile);
if (existItem != null)
{
await ConfigDbManager.SetDefaultServerIndex(config, existItem.IndexId);
await ConfigDbHandler.SetDefaultServerIndex(config, existItem.IndexId);
}
}
@@ -2504,7 +2504,7 @@ public static class ConfigDbManager
var lockItem = items?.FirstOrDefault(t => t.Locked == true);
if (lockItem != null)
{
await ConfigDbManager.RemoveRoutingItem(lockItem);
await ConfigDbHandler.RemoveRoutingItem(lockItem);
items = await ConfigDbQuery.RoutingItems();
}
@@ -3009,7 +3009,7 @@ public static class ConfigDbManager
private static async Task<int> MigrateProfileExtraV2ToV3Sub(List<ProfileItem> batch)
{
var updateProfileItems = new List<ProfileItem>();
var config = ConfigTextManager.Config;
var config = ConfigTextHandler.Config;
foreach (var item in batch)
{
@@ -1,4 +1,4 @@
namespace ServiceLib.Manager.Data;
namespace ServiceLib.Handler.Data;
public class ConfigDbQuery
{
@@ -1,4 +1,4 @@
namespace ServiceLib.Manager.Data;
namespace ServiceLib.Handler.Data;
public sealed class ConfigState
{
@@ -1,9 +1,9 @@
namespace ServiceLib.Manager.Data;
namespace ServiceLib.Handler.Data;
public static class ConfigTextManager
public static class ConfigTextHandler
{
private static readonly string _configRes = Global.ConfigFileName;
private static readonly string _tag = "ConfigTextManager";
private static readonly string _tag = "ConfigTextHandler";
public static Config Config
{
@@ -145,7 +145,7 @@ public static class ConfigTextManager
config.ConstItem ??= new ConstItem();
config.SimpleDNSItem ??= ConfigDbManager.InitBuiltinSimpleDNS();
config.SimpleDNSItem ??= ConfigDbHandler.InitBuiltinSimpleDNS();
config.SimpleDNSItem.BlockAAAAQuery ??= false;
config.SimpleDNSItem.FakeIPRange ??= Global.FakeIPRanges.FirstOrDefault();
config.SimpleDNSItem.FakeIPv6 ??= false;
@@ -106,7 +106,7 @@ public class SubscriptionHandler(
await updateFunc?.Invoke(false, $"{hashCode}{ResUI.MsgStartParsingSubscription}");
// Add servers to configuration
var ret = await ConfigDbManager.AddBatchServers(_config, result, id, true);
var ret = await ConfigDbHandler.AddBatchServers(_config, result, id, true);
if (ret <= 0)
{
Logging.SaveLog("FailedImportSubscription");
@@ -19,7 +19,7 @@ public static class ProxySettingLinux
private static async Task ExecCmd(List<string> args)
{
var customSystemProxyScriptPath = ConfigTextManager.Config.SystemProxyItem?.CustomSystemProxyScriptPath;
var customSystemProxyScriptPath = ConfigTextHandler.Config.SystemProxyItem?.CustomSystemProxyScriptPath;
var fileName = (customSystemProxyScriptPath.IsNotEmpty() && File.Exists(customSystemProxyScriptPath))
? customSystemProxyScriptPath
: await FileUtils.CreateLinuxShellFile(_proxySetFileName, EmbedUtils.GetEmbedText(Global.ProxySetLinuxShellFileName), false);
@@ -24,7 +24,7 @@ public static class ProxySettingOSX
private static async Task ExecCmd(List<string> args)
{
var customSystemProxyScriptPath = ConfigTextManager.Config.SystemProxyItem?.CustomSystemProxyScriptPath;
var customSystemProxyScriptPath = ConfigTextHandler.Config.SystemProxyItem?.CustomSystemProxyScriptPath;
var fileName = (customSystemProxyScriptPath.IsNotEmpty() && File.Exists(customSystemProxyScriptPath))
? customSystemProxyScriptPath
: await FileUtils.CreateLinuxShellFile(_proxySetFileName, EmbedUtils.GetEmbedText(Global.ProxySetOSXShellFileName), false);
+3 -3
View File
@@ -67,7 +67,7 @@ public sealed class AppManager
}
Logging.Setup();
_config = ConfigTextManager.Init();
_config = ConfigTextHandler.Init();
if (_config == null)
{
return false;
@@ -104,7 +104,7 @@ public sealed class AppManager
Task.Run(async () =>
{
await ConfigDbManager.MigrateProfileExtra();
await ConfigDbHandler.MigrateProfileExtra();
}).Wait();
return true;
@@ -127,7 +127,7 @@ public sealed class AppManager
AppEvents.AppExitRequested.Publish();
await Task.Delay(50); //Wait for AppExitRequested to be processed
await ConfigTextManager.SaveConfig();
await ConfigTextHandler.SaveConfig();
await ProfileExManager.Instance.SaveTo();
await StatisticsManager.Instance.SaveTo();
await CoreManager.Instance.CoreStop();
+2 -2
View File
@@ -82,7 +82,7 @@ public sealed class ClashApiManager
private async Task<int> TestProxyDelay(string name)
{
var url = $"{ApiUrl}/proxies/{Utils.UrlEncode(name)}/delay?timeout=10000&url=" +
Utils.UrlEncode(ConfigTextManager.Config.SpeedTestItem.SpeedPingTestUrl);
Utils.UrlEncode(ConfigTextHandler.Config.SpeedTestItem.SpeedPingTestUrl);
return await SendTestRequest(url);
}
@@ -90,7 +90,7 @@ public sealed class ClashApiManager
{
var url =
$"{ApiUrl}/providers/proxies/{Utils.UrlEncode(providerName)}/{Utils.UrlEncode(name)}/healthcheck?timeout=10000&url=" +
Utils.UrlEncode(ConfigTextManager.Config.SpeedTestItem.SpeedPingTestUrl);
Utils.UrlEncode(ConfigTextHandler.Config.SpeedTestItem.SpeedPingTestUrl);
return await SendTestRequest(url);
}
+1 -1
View File
@@ -31,7 +31,7 @@ public class PacManager
private async Task<byte[]> InitText(int httpPort)
{
var customSystemProxyPacPath = ConfigTextManager.Config.SystemProxyItem.CustomSystemProxyPacPath;
var customSystemProxyPacPath = ConfigTextHandler.Config.SystemProxyItem.CustomSystemProxyPacPath;
var fileName = customSystemProxyPacPath.IsNotEmpty() && File.Exists(customSystemProxyPacPath)
? customSystemProxyPacPath
: Path.Combine(Utils.GetConfigPath(), "pac.txt");
@@ -1,4 +1,4 @@
namespace ServiceLib.Manager.Data;
namespace ServiceLib.Manager;
public class ProfileExManager
{
+2 -2
View File
@@ -42,7 +42,7 @@ public class TaskManager
try
{
await ConfigTextManager.SaveConfig();
await ConfigTextHandler.SaveConfig();
await ProfileExManager.Instance.SaveTo();
}
catch (Exception ex)
@@ -113,7 +113,7 @@ public class TaskManager
});
await handler.UpdateProcess(item.Id);
item.UpdateTime = updateTime;
await ConfigDbManager.AddSubItem(_config, item);
await ConfigDbHandler.AddSubItem(_config, item);
await Task.Delay(1000);
}
}
+1 -1
View File
@@ -16,7 +16,7 @@ public sealed class WebDavManager
public WebDavManager()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
}
private async Task<bool> GetClient()
@@ -47,7 +47,7 @@ public partial class CoreConfigV2rayService
subjectSelector = [baseTagName],
pingConfig = new()
{
destination = ConfigTextManager.Config.SpeedTestItem.SpeedPingTestUrl,
destination = ConfigTextHandler.Config.SpeedTestItem.SpeedPingTestUrl,
interval = "5m",
timeout = "30s",
sampling = 2,
@@ -68,7 +68,7 @@ public partial class CoreConfigV2rayService
_coreConfig.observatory = new Observatory4Ray
{
subjectSelector = [baseTagName],
probeUrl = ConfigTextManager.Config.SpeedTestItem.SpeedPingTestUrl,
probeUrl = ConfigTextHandler.Config.SpeedTestItem.SpeedPingTestUrl,
probeInterval = "3m",
enableConcurrency = true,
};
@@ -43,7 +43,7 @@ public partial class AddGroupServerViewModel : MyReactiveObject, ICloseable
public AddGroupServerViewModel(ProfileItem profileItem)
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
var canEditRemove = this.WhenAnyValue(
x => x.SelectedChild,
@@ -245,7 +245,7 @@ public partial class AddGroupServerViewModel : MyReactiveObject, ICloseable
SelectedSource.SetProtocolExtra(protocolExtra);
if (await ConfigDbManager.AddServerCommon(_config, SelectedSource) == 0)
if (await ConfigDbHandler.AddServerCommon(_config, SelectedSource) == 0)
{
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
RequestClose?.Invoke(this, EventArgs.Empty);
@@ -24,7 +24,7 @@ public partial class AddServer2ViewModel : MyReactiveObject, ICloseable
public AddServer2ViewModel(ProfileItem profileItem)
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
BrowseServerCmd = ReactiveCommand.CreateFromTask(async () =>
{
@@ -71,7 +71,7 @@ public partial class AddServer2ViewModel : MyReactiveObject, ICloseable
IsSingboxEndpoint = IsSingboxEndpoint ? true : null,
});
if (await ConfigDbManager.EditCustomServer(_config, SelectedSource) == 0)
if (await ConfigDbHandler.EditCustomServer(_config, SelectedSource) == 0)
{
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
RequestClose?.Invoke(this, EventArgs.Empty);
@@ -92,7 +92,7 @@ public partial class AddServer2ViewModel : MyReactiveObject, ICloseable
var item = await ConfigDbQuery.GetProfileItem(SelectedSource.IndexId);
item ??= SelectedSource;
item.Address = fileName;
var result = item.ConfigType == EConfigType.Outbound ? await ConfigDbManager.AddCustomOutboundServer(_config, item, false) : await ConfigDbManager.AddCustomServer(_config, item, false);
var result = item.ConfigType == EConfigType.Outbound ? await ConfigDbHandler.AddCustomOutboundServer(_config, item, false) : await ConfigDbHandler.AddCustomServer(_config, item, false);
if (result == 0)
{
NoticeManager.Instance.Enqueue(ResUI.SuccessfullyImportedCustomServer);
@@ -319,7 +319,7 @@ public partial class AddServerViewModel : MyReactiveObject, ICloseable
public AddServerViewModel(ProfileItem profileItem)
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
FetchCertCmd = ReactiveCommand.CreateFromTask(async () =>
{
@@ -594,7 +594,7 @@ public partial class AddServerViewModel : MyReactiveObject, ICloseable
});
SelectedSource.SetTransportExtra(transport);
if (await ConfigDbManager.AddServer(_config, SelectedSource) == 0)
if (await ConfigDbHandler.AddServer(_config, SelectedSource) == 0)
{
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
RequestClose?.Invoke(this, EventArgs.Empty);
@@ -19,7 +19,7 @@ public partial class BackupAndRestoreViewModel : MyReactiveObject
public BackupAndRestoreViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
WebDavCheckCmd = ReactiveCommand.CreateFromTask(async () =>
{
@@ -46,7 +46,7 @@ public partial class BackupAndRestoreViewModel : MyReactiveObject
{
DisplayOperationMsg();
_config.WebDavItem = SelectedSource;
_ = await ConfigTextManager.SaveConfig();
_ = await ConfigTextHandler.SaveConfig();
var result = await WebDavManager.Instance.CheckConnection();
if (result)
@@ -19,7 +19,7 @@ public partial class CheckUpdateViewModel : MyReactiveObject
public CheckUpdateViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
CheckUpdateCmd = ReactiveCommand.CreateFromTask(CheckUpdate);
CheckUpdateCmd.ThrownExceptions.Subscribe(ex =>
@@ -126,7 +126,7 @@ public partial class CheckUpdateViewModel : MyReactiveObject
.Select(t => t.CoreTypeForStorage)
.ToList();
await ConfigTextManager.SaveConfig();
await ConfigTextHandler.SaveConfig();
}
private async Task CheckOnly()
@@ -4,7 +4,7 @@ public partial class ClashConnectionsViewModel : MyReactiveObject
{
public ClashConnectionsViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
AutoRefresh = _config.ClashUIItem.ConnectionsAutoRefresh;
var canEditRemove = this.WhenAnyValue(
@@ -7,7 +7,7 @@ public partial class ClashProxiesViewModel : MyReactiveObject
public ClashProxiesViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
ProxiesReloadCmd = ReactiveCommand.CreateFromTask(async () =>
{
@@ -48,7 +48,7 @@ public partial class DNSSettingViewModel : MyReactiveObject, ICloseable
public DNSSettingViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
SaveCmd = ReactiveCommand.CreateFromTask(SaveSettingAsync);
ImportDefConfig4V2rayCompatibleCmd = ReactiveCommand.CreateFromTask(async () =>
@@ -82,7 +82,7 @@ public partial class DNSSettingViewModel : MyReactiveObject, ICloseable
private async Task Init()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
var item = _config.SimpleDNSItem;
UseSystemHosts = item.UseSystemHosts ?? false;
AddCommonHosts = item.AddCommonHosts ?? false;
@@ -207,7 +207,7 @@ public partial class DNSSettingViewModel : MyReactiveObject, ICloseable
item1.UseSystemHosts = UseSystemHostsCompatible;
item1.NormalDNS = NormalDNSCompatible;
item1.TunDNS = TunDNSCompatible;
await ConfigDbManager.SaveDNSItems(_config, item1);
await ConfigDbHandler.SaveDNSItems(_config, item1);
var item2 = await ConfigDbQuery.GetDNSItem(ECoreType.sing_box);
item2.Enabled = SBCustomDNSEnableCompatible;
@@ -215,9 +215,9 @@ public partial class DNSSettingViewModel : MyReactiveObject, ICloseable
item2.DomainDNSAddress = DomainDNSAddress2Compatible;
item2.NormalDNS = JsonUtils.Serialize(JsonUtils.Deserialize<Dns4Sbox>(NormalDNS2Compatible));
item2.TunDNS = JsonUtils.Serialize(JsonUtils.Deserialize<Dns4Sbox>(TunDNS2Compatible));
await ConfigDbManager.SaveDNSItems(_config, item2);
await ConfigDbHandler.SaveDNSItems(_config, item2);
await ConfigTextManager.SaveConfig();
await ConfigTextHandler.SaveConfig();
RequestClose?.Invoke(this, EventArgs.Empty);
}
}
@@ -44,7 +44,7 @@ public partial class FullConfigTemplateViewModel : MyReactiveObject, ICloseable
public FullConfigTemplateViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
SaveCmd = ReactiveCommand.CreateFromTask(async () =>
{
await SaveSettingAsync();
@@ -104,7 +104,7 @@ public partial class FullConfigTemplateViewModel : MyReactiveObject, ICloseable
item.AddProxyOnly = AddProxyOnly4Ray;
item.ProxyDetour = ProxyDetour4Ray;
await ConfigDbManager.SaveFullConfigTemplate(_config, item);
await ConfigDbHandler.SaveFullConfigTemplate(_config, item);
return true;
}
@@ -122,7 +122,7 @@ public partial class FullConfigTemplateViewModel : MyReactiveObject, ICloseable
item.AddProxyOnly = AddProxyOnly4Singbox;
item.ProxyDetour = ProxyDetour4Singbox;
await ConfigDbManager.SaveFullConfigTemplate(_config, item);
await ConfigDbHandler.SaveFullConfigTemplate(_config, item);
return true;
}
}
@@ -12,7 +12,7 @@ public class GlobalHotkeySettingViewModel : MyReactiveObject, ICloseable
public GlobalHotkeySettingViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
_globalHotkeys = JsonUtils.DeepCopy(_config.GlobalHotkeys);
@@ -52,7 +52,7 @@ public class GlobalHotkeySettingViewModel : MyReactiveObject, ICloseable
{
_config.GlobalHotkeys = _globalHotkeys;
if (await ConfigTextManager.SaveConfig() == 0)
if (await ConfigTextHandler.SaveConfig() == 0)
{
RequestClose?.Invoke(this, EventArgs.Empty);
}
@@ -90,7 +90,7 @@ public partial class MainWindowViewModel : MyReactiveObject
public MainWindowViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
BlIsWindows = Utils.IsWindows();
MainGirdOrientation = _config.UiItem.MainGirdOrientation;
@@ -331,8 +331,8 @@ public partial class MainWindowViewModel : MyReactiveObject
}
//await ConfigHandler.InitBuiltinRouting(_config);
await ConfigDbManager.InitBuiltinDNS(_config);
await ConfigDbManager.InitBuiltinFullConfigTemplate(_config);
await ConfigDbHandler.InitBuiltinDNS(_config);
await ConfigDbHandler.InitBuiltinFullConfigTemplate(_config);
await ProfileExManager.Instance.Init();
await CoreManager.Instance.Init(_config, UpdateHandler);
await CertPemManager.Instance.Init(_config);
@@ -499,7 +499,7 @@ public partial class MainWindowViewModel : MyReactiveObject
}
stringData = result;
}
var ret = await ConfigDbManager.AddBatchServers(_config, stringData, _config.SubIndexId, false);
var ret = await ConfigDbHandler.AddBatchServers(_config, stringData, _config.SubIndexId, false);
if (ret > 0)
{
await RefreshSubscriptions();
@@ -549,7 +549,7 @@ public partial class MainWindowViewModel : MyReactiveObject
}
else
{
var ret = await ConfigDbManager.AddBatchServers(_config, result, _config.SubIndexId, false);
var ret = await ConfigDbHandler.AddBatchServers(_config, result, _config.SubIndexId, false);
if (ret > 0)
{
await RefreshSubscriptions();
@@ -610,7 +610,7 @@ public partial class MainWindowViewModel : MyReactiveObject
var ret = await AppManager.Instance.WindowDialog.ShowDialogAsync(routingSettingViewModel);
if (ret == true)
{
await ConfigDbManager.InitBuiltinRouting(_config);
await ConfigDbHandler.InitBuiltinRouting(_config);
RxSchedulers.MainThreadScheduler.Schedule(async () =>
{
await StatusBarViewModel.RefreshRoutingsMenu();
@@ -696,7 +696,7 @@ public partial class MainWindowViewModel : MyReactiveObject
TabMainSelectedIndex = 0;
}
});
var profileItem = await ConfigDbManager.GetDefaultServer(_config);
var profileItem = await ConfigDbHandler.GetDefaultServer(_config);
if (profileItem == null)
{
NoticeManager.Instance.Enqueue(ResUI.CheckServerSettings);
@@ -788,14 +788,14 @@ public partial class MainWindowViewModel : MyReactiveObject
public async Task ApplyRegionalPreset(EPresetType type)
{
await ConfigDbManager.ApplyRegionalPreset(_config, type);
await ConfigDbManager.InitRouting(_config);
await ConfigDbHandler.ApplyRegionalPreset(_config, type);
await ConfigDbHandler.InitRouting(_config);
RxSchedulers.MainThreadScheduler.Schedule(async () =>
{
await StatusBarViewModel.RefreshRoutingsMenu();
});
await ConfigTextManager.SaveConfig();
await ConfigTextHandler.SaveConfig();
using var downloadService = await DownloadService.CreateDownloadServiceWithCheck();
await new UpdateService(downloadService, _config, UpdateTaskHandler).UpdateGeoFileAll();
await Reload();
+1 -1
View File
@@ -16,7 +16,7 @@ public partial class MsgViewModel : MyReactiveObject
public MsgViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
MsgFilter = _config.MsgUIItem.MainMsgFilter ?? string.Empty;
AutoRefresh = _config.MsgUIItem.AutoRefresh ?? true;
@@ -124,7 +124,7 @@ public partial class OptionSettingViewModel : MyReactiveObject, ICloseable
public OptionSettingViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
BlIsWindows = Utils.IsWindows();
BlIsLinux = Utils.IsLinux();
BlIsIsMacOS = Utils.IsMacOS();
@@ -407,7 +407,7 @@ public partial class OptionSettingViewModel : MyReactiveObject, ICloseable
//coreType
await SaveCoreType();
if (await ConfigTextManager.SaveConfig() == 0)
if (await ConfigTextHandler.SaveConfig() == 0)
{
await AutoStartupHandler.UpdateTask(_config);
AppManager.Instance.Reset();
@@ -51,7 +51,7 @@ public partial class ProfilesSelectViewModel : MyReactiveObject, ICloseable
public ProfilesSelectViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
_subIndexId = _config.SubIndexId ?? string.Empty;
#region WhenAnyValue && ReactiveCommand
@@ -96,7 +96,7 @@ public partial class ProfilesViewModel : MyReactiveObject
public ProfilesViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
#region WhenAnyValue && ReactiveCommand
@@ -401,7 +401,7 @@ public partial class ProfilesViewModel : MyReactiveObject
{
var lstModel = await ConfigDbQuery.ProfileModels(_config.SubIndexId, filter);
await ConfigDbManager.SetDefaultServer(_config, lstModel);
await ConfigDbHandler.SetDefaultServer(_config, lstModel);
var lstServerStat = (_config.GuiItem.EnableStatistics ? StatisticsManager.Instance.ServerStat : null) ?? [];
var lstProfileExs = await ProfileExManager.Instance.GetProfileExs();
@@ -516,7 +516,7 @@ public partial class ProfilesViewModel : MyReactiveObject
}
var exists = lstSelected.Exists(t => t.IndexId == _config.IndexId);
await ConfigDbManager.RemoveServers(_config, lstSelected);
await ConfigDbHandler.RemoveServers(_config, lstSelected);
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
if (lstSelected.Count == ProfileItems.Count)
{
@@ -536,7 +536,7 @@ public partial class ProfilesViewModel : MyReactiveObject
return;
}
var tuple = await ConfigDbManager.DedupServerList(_config, _config.SubIndexId);
var tuple = await ConfigDbHandler.DedupServerList(_config, _config.SubIndexId);
if (tuple.Item1 > 0 || tuple.Item2 > 0)
{
await RefreshServers();
@@ -552,7 +552,7 @@ public partial class ProfilesViewModel : MyReactiveObject
{
return;
}
if (await ConfigDbManager.CopyServer(_config, lstSelected) == 0)
if (await ConfigDbHandler.CopyServer(_config, lstSelected) == 0)
{
await RefreshServers();
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
@@ -585,7 +585,7 @@ public partial class ProfilesViewModel : MyReactiveObject
return;
}
if (await ConfigDbManager.SetDefaultServerIndex(_config, indexId) == 0)
if (await ConfigDbHandler.SetDefaultServerIndex(_config, indexId) == 0)
{
await RefreshServers();
Reload();
@@ -611,7 +611,7 @@ public partial class ProfilesViewModel : MyReactiveObject
private async Task GenGroupAllServer()
{
var ret = await ConfigDbManager.AddGroupAllServer(_config, SelectedSub);
var ret = await ConfigDbHandler.AddGroupAllServer(_config, SelectedSub);
if (ret.Success != true)
{
NoticeManager.Instance.Enqueue(ResUI.OperationFailed);
@@ -623,7 +623,7 @@ public partial class ProfilesViewModel : MyReactiveObject
private async Task GenGroupRegionServer()
{
var ret = await ConfigDbManager.AddGroupRegionServer(_config, SelectedSub);
var ret = await ConfigDbHandler.AddGroupRegionServer(_config, SelectedSub);
if (ret.Success != true)
{
NoticeManager.Instance.Enqueue(ResUI.OperationFailed);
@@ -643,7 +643,7 @@ public partial class ProfilesViewModel : MyReactiveObject
_dicHeaderSort.TryAdd(colName, true);
_dicHeaderSort.TryGetValue(colName, out var asc);
if (await ConfigDbManager.SortServers(_config, _config.SubIndexId, colName, asc) != 0)
if (await ConfigDbHandler.SortServers(_config, _config.SubIndexId, colName, asc) != 0)
{
return;
}
@@ -653,7 +653,7 @@ public partial class ProfilesViewModel : MyReactiveObject
public async Task RemoveInvalidServerResult()
{
var count = await ConfigDbManager.RemoveInvalidServerResult(_config, _config.SubIndexId);
var count = await ConfigDbHandler.RemoveInvalidServerResult(_config, _config.SubIndexId);
await RefreshServers();
NoticeManager.Instance.Enqueue(string.Format(ResUI.RemoveInvalidServerResultTip, count));
}
@@ -667,7 +667,7 @@ public partial class ProfilesViewModel : MyReactiveObject
return;
}
await ConfigDbManager.MoveToGroup(_config, lstSelected, SelectedMoveToGroup.Id);
await ConfigDbHandler.MoveToGroup(_config, lstSelected, SelectedMoveToGroup.Id);
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
await RefreshServers();
@@ -685,7 +685,7 @@ public partial class ProfilesViewModel : MyReactiveObject
return;
}
if (await ConfigDbManager.MoveServer(_config, lstProfile, index, eMove) == 0)
if (await ConfigDbHandler.MoveServer(_config, lstProfile, index, eMove) == 0)
{
await RefreshServers();
}
@@ -697,7 +697,7 @@ public partial class ProfilesViewModel : MyReactiveObject
if (startIndex >= 0 && targetIndex >= 0 && startIndex != targetIndex)
{
var lstProfile = ProfileItems?.Select(t => t.IndexId).ToList() ?? [];
if (await ConfigDbManager.MoveServer(_config, lstProfile, startIndex, EMove.Position, targetIndex) == 0)
if (await ConfigDbHandler.MoveServer(_config, lstProfile, startIndex, EMove.Position, targetIndex) == 0)
{
await RefreshServers();
}
@@ -719,7 +719,7 @@ public partial class ProfilesViewModel : MyReactiveObject
.Select(item => item.IndexId)
.ToList();
var result = await ConfigDbManager.MoveServersTo(
var result = await ConfigDbHandler.MoveServersTo(
_config,
orderedProfileIds,
sourceIndices,
@@ -923,7 +923,7 @@ public partial class ProfilesViewModel : MyReactiveObject
{
return;
}
await ConfigDbManager.DeleteSubItem(_config, item.Id);
await ConfigDbHandler.DeleteSubItem(_config, item.Id);
await RefreshSubscriptions();
await SubSelectedChangedAsync();
@@ -45,7 +45,7 @@ public partial class RoutingRuleDetailsViewModel : MyReactiveObject, ICloseable
public RoutingRuleDetailsViewModel(RulesItem rulesItem)
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
SelectProfileCmd = ReactiveCommand.CreateFromTask(async () =>
{
@@ -38,7 +38,7 @@ public partial class RoutingRuleSettingViewModel : MyReactiveObject, ICloseable
public RoutingRuleSettingViewModel(RoutingItem routingItem)
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
var canEditRemove = this.WhenAnyValue(
x => x.SelectedSource,
@@ -211,7 +211,7 @@ public partial class RoutingRuleSettingViewModel : MyReactiveObject, ICloseable
return;
}
var index = _rules.IndexOf(item);
if (await ConfigDbManager.MoveRoutingRule(_rules, index, eMove) == 0)
if (await ConfigDbHandler.MoveRoutingRule(_rules, index, eMove) == 0)
{
RefreshRulesItems();
}
@@ -233,7 +233,7 @@ public partial class RoutingRuleSettingViewModel : MyReactiveObject, ICloseable
item.RuleNum = _rules.Count;
item.RuleSet = JsonUtils.Serialize(_rules, false);
if (await ConfigDbManager.SaveRoutingItem(_config, item) == 0)
if (await ConfigDbHandler.SaveRoutingItem(_config, item) == 0)
{
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
RequestClose?.Invoke(this, EventArgs.Empty);
@@ -32,7 +32,7 @@ public partial class RoutingSettingViewModel : MyReactiveObject
public RoutingSettingViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
var canEditRemove = this.WhenAnyValue(
x => x.SelectedSource,
@@ -77,7 +77,7 @@ public partial class RoutingSettingViewModel : MyReactiveObject
DomainStrategy = _config.RoutingBasicItem.DomainStrategy;
DomainStrategy4Singbox = _config.RoutingBasicItem.DomainStrategy4Singbox;
await ConfigDbManager.InitBuiltinRouting(_config);
await ConfigDbHandler.InitBuiltinRouting(_config);
await RefreshRoutingItems();
}
@@ -113,7 +113,7 @@ public partial class RoutingSettingViewModel : MyReactiveObject
{
_config.RoutingBasicItem.DomainStrategy = DomainStrategy;
_config.RoutingBasicItem.DomainStrategy4Singbox = DomainStrategy4Singbox;
await ConfigTextManager.SaveConfig();
await ConfigTextHandler.SaveConfig();
}
#endregion Refresh Save
@@ -157,7 +157,7 @@ public partial class RoutingSettingViewModel : MyReactiveObject
var item = await ConfigDbQuery.GetRoutingItem(it?.Id);
if (item != null)
{
await ConfigDbManager.RemoveRoutingItem(item);
await ConfigDbHandler.RemoveRoutingItem(item);
}
}
@@ -174,7 +174,7 @@ public partial class RoutingSettingViewModel : MyReactiveObject
return;
}
if (await ConfigDbManager.SetDefaultRouting(_config, item) == 0)
if (await ConfigDbHandler.SetDefaultRouting(_config, item) == 0)
{
await RefreshRoutingItems();
IsModified = true;
@@ -183,7 +183,7 @@ public partial class RoutingSettingViewModel : MyReactiveObject
private async Task RoutingAdvancedImportRules()
{
if (await ConfigDbManager.InitRouting(_config, true) == 0)
if (await ConfigDbHandler.InitRouting(_config, true) == 0)
{
await RefreshRoutingItems();
IsModified = true;
@@ -107,7 +107,7 @@ public partial class StatusBarViewModel : MyReactiveObject
public StatusBarViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
SelectedRouting = new();
SelectedServer = new();
RunningServerToolTipText = GetRunningServerToolTipText("-");
@@ -218,7 +218,7 @@ public partial class StatusBarViewModel : MyReactiveObject
private async Task Init()
{
await ConfigDbManager.InitBuiltinRouting(_config);
await ConfigDbHandler.InitBuiltinRouting(_config);
await RefreshRoutingsMenu();
await InboundDisplayStatus();
// The view refreshes its icon on initialization; interaction handlers are not registered yet.
@@ -267,7 +267,7 @@ public partial class StatusBarViewModel : MyReactiveObject
await RefreshServersMenu();
//display running server
var running = await ConfigDbManager.GetDefaultServer(_config);
var running = await ConfigDbHandler.GetDefaultServer(_config);
if (running != null)
{
RunningServerDisplay = running.GetSummary();
@@ -319,7 +319,7 @@ public partial class StatusBarViewModel : MyReactiveObject
public async Task<AvailabilityCheckResult?> TestServerAvailability()
{
var item = await ConfigDbManager.GetDefaultServer(_config);
var item = await ConfigDbHandler.GetDefaultServer(_config);
if (item == null)
{
return null;
@@ -373,7 +373,7 @@ public partial class StatusBarViewModel : MyReactiveObject
NoticeManager.Instance.SendMessageEx($"{ResUI.TipChangeSystemProxy} - {_config.SystemProxyItem.SysProxyType}");
SystemProxySelected = (int)_config.SystemProxyItem.SysProxyType;
await ConfigTextManager.SaveConfig();
await ConfigTextHandler.SaveConfig();
}
public async Task ChangeSystemProxyAsync(ESysProxyType type, bool blChange)
@@ -413,7 +413,7 @@ public partial class StatusBarViewModel : MyReactiveObject
return;
}
if (await ConfigDbManager.SetDefaultRouting(_config, item) == 0)
if (await ConfigDbHandler.SetDefaultRouting(_config, item) == 0)
{
NoticeManager.Instance.SendMessageEx(ResUI.TipChangeRouting);
ReloadRequested.Publish();
@@ -459,7 +459,7 @@ public partial class StatusBarViewModel : MyReactiveObject
}
}
await ConfigTextManager.SaveConfig();
await ConfigTextHandler.SaveConfig();
ReloadRequested.Publish();
}
@@ -24,7 +24,7 @@ public partial class SubEditViewModel : MyReactiveObject, ICloseable
public SubEditViewModel(SubItem subItem)
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
SelectPrevProfileCmd = ReactiveCommand.CreateFromTask(async () =>
{
@@ -89,7 +89,7 @@ public partial class SubEditViewModel : MyReactiveObject, ICloseable
SelectedSource.PrevProfile = PrevProfile;
SelectedSource.NextProfile = NextProfile;
if (await ConfigDbManager.AddSubItem(_config, SelectedSource) == 0)
if (await ConfigDbHandler.AddSubItem(_config, SelectedSource) == 0)
{
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
RequestClose?.Invoke(this, EventArgs.Empty);
@@ -22,7 +22,7 @@ public partial class SubSettingViewModel : MyReactiveObject
public SubSettingViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
var canEditRemove = this.WhenAnyValue(
x => x.SelectedSource,
@@ -92,7 +92,7 @@ public partial class SubSettingViewModel : MyReactiveObject
foreach (var it in SelectedSources ?? [SelectedSource])
{
await ConfigDbManager.DeleteSubItem(_config, it.Id);
await ConfigDbHandler.DeleteSubItem(_config, it.Id);
}
await RefreshSubItems();
NoticeManager.Instance.Enqueue(ResUI.OperationSuccess);
+3 -3
View File
@@ -65,7 +65,7 @@ public partial class App : Application
return;
}
if (!ConfigTextManager.Config.UiItem.MacOSShowInDock)
if (!ConfigTextHandler.Config.UiItem.MacOSShowInDock)
{
MacAppUtils.SetActivationPolicyAccessory();
}
@@ -76,7 +76,7 @@ public partial class App : Application
private static void RestoreMacOSAccessoryPolicyAfterMiniaturize(MainWindow mainWindow)
{
if (ConfigTextManager.Config.UiItem.MacOSShowInDock)
if (ConfigTextHandler.Config.UiItem.MacOSShowInDock)
{
return;
}
@@ -98,7 +98,7 @@ public partial class App : Application
private static void RestoreMacOSAccessoryPolicy(MainWindow mainWindow)
{
if (ConfigTextManager.Config.UiItem.MacOSShowInDock || MacAppUtils.IsWindowMiniaturized(mainWindow))
if (ConfigTextHandler.Config.UiItem.MacOSShowInDock || MacAppUtils.IsWindowMiniaturized(mainWindow))
{
return;
}
+2 -2
View File
@@ -23,7 +23,7 @@ public class WindowBase<TViewModel> : ReactiveWindow<TViewModel> where TViewMode
{
try
{
var sizeItem = ConfigTextManager.GetWindowSizeItem(GetType().Name);
var sizeItem = ConfigTextHandler.GetWindowSizeItem(GetType().Name);
if (sizeItem is null)
{
return;
@@ -55,7 +55,7 @@ public class WindowBase<TViewModel> : ReactiveWindow<TViewModel> where TViewMode
base.OnClosed(e);
try
{
ConfigTextManager.SaveWindowSizeItem(GetType().Name, Width, Height);
ConfigTextHandler.SaveWindowSizeItem(GetType().Name, Width, Height);
}
catch { }
}
+1 -1
View File
@@ -30,8 +30,8 @@ global using ServiceLib.Common;
global using ServiceLib.Enums;
global using ServiceLib.Events;
global using ServiceLib.Handler;
global using ServiceLib.Handler.Data;
global using ServiceLib.Manager;
global using ServiceLib.Manager.Data;
global using ServiceLib.Models.CoreConfigs;
global using ServiceLib.Models.Configs;
global using ServiceLib.Models.Dto;
+1 -1
View File
@@ -69,7 +69,7 @@ internal class Program
if (OperatingSystem.IsMacOS())
{
var showInDock = Design.IsDesignMode || ConfigTextManager.Config.UiItem.MacOSShowInDock;
var showInDock = Design.IsDesignMode || ConfigTextHandler.Config.UiItem.MacOSShowInDock;
builder = builder.With(new MacOSPlatformOptions { ShowInDock = showInDock });
}
@@ -13,7 +13,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
public ThemeSettingViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
BindingUI();
RestoreUI();
@@ -43,7 +43,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
{
_config.UiItem.CurrentTheme = CurrentTheme;
ModifyTheme();
await ConfigTextManager.SaveConfig();
await ConfigTextHandler.SaveConfig();
}
});
@@ -55,7 +55,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
{
_config.UiItem.CurrentFontSize = CurrentFontSize;
ModifyFontSize();
await ConfigTextManager.SaveConfig();
await ConfigTextHandler.SaveConfig();
}
});
@@ -67,7 +67,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
{
_config.UiItem.CurrentLanguage = CurrentLanguage;
Thread.CurrentThread.CurrentUICulture = new(CurrentLanguage);
await ConfigTextManager.SaveConfig();
await ConfigTextHandler.SaveConfig();
NoticeManager.Instance.Enqueue(ResUI.NeedRebootTips);
}
});
@@ -9,7 +9,7 @@ public partial class ClashConnectionsView : ReactiveUserControl<ClashConnections
{
InitializeComponent();
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
btnAutofitColumnWidth.Click += BtnAutofitColumnWidth_Click;
@@ -10,7 +10,7 @@ public partial class DNSSettingWindow : WindowBase<DNSSettingViewModel>
{
InitializeComponent();
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
Loaded += Window_Loaded;
btnCancel.Click += (s, e) => Close();
@@ -10,7 +10,7 @@ public partial class FullConfigTemplateWindow : WindowBase<FullConfigTemplateVie
{
InitializeComponent();
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
Loaded += Window_Loaded;
btnCancel.Click += (_, _) => Close();
@@ -25,7 +25,7 @@ public partial class MainWindow : WindowBase<MainWindowViewModel>
{
InitializeComponent();
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
_manager = new WindowNotificationManager(TopLevel.GetTopLevel(this)) { MaxItems = 3, Position = NotificationPosition.TopRight };
KeyDown += MainWindow_KeyDown;
@@ -396,15 +396,15 @@ public partial class MainWindow : WindowBase<MainWindowViewModel>
private void StorageUI()
{
ConfigTextManager.SaveWindowSizeItem(GetType().Name, Width, Height);
ConfigTextHandler.SaveWindowSizeItem(GetType().Name, Width, Height);
if (_config.UiItem.MainGirdOrientation == EGirdOrientation.Horizontal)
{
ConfigTextManager.SaveMainGirdHeight(gridMain.ColumnDefinitions[0].ActualWidth, gridMain.ColumnDefinitions[2].ActualWidth);
ConfigTextHandler.SaveMainGirdHeight(gridMain.ColumnDefinitions[0].ActualWidth, gridMain.ColumnDefinitions[2].ActualWidth);
}
else if (_config.UiItem.MainGirdOrientation == EGirdOrientation.Vertical)
{
ConfigTextManager.SaveMainGirdHeight(gridMain.RowDefinitions[0].ActualHeight, gridMain.RowDefinitions[2].ActualHeight);
ConfigTextHandler.SaveMainGirdHeight(gridMain.RowDefinitions[0].ActualHeight, gridMain.RowDefinitions[2].ActualHeight);
}
}
@@ -13,7 +13,7 @@ public partial class OptionSettingWindow : WindowBase<OptionSettingViewModel>
Loaded += Window_Loaded;
btnCancel.Click += (s, e) => Close();
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
clbdestOverride.SelectionChanged += ClbdestOverride_SelectionChanged;
btnBrowseCustomSystemProxyPacPath.Click += BtnBrowseCustomSystemProxyPacPath_Click;
@@ -15,7 +15,7 @@ public partial class ProfilesView : ReactiveUserControl<ProfilesViewModel>
{
InitializeComponent();
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
menuSelectAll.Click += menuSelectAll_Click;
btnAutofitColumnWidth.Click += BtnAutofitColumnWidth_Click;
@@ -11,7 +11,7 @@ public partial class StatusBarView : ReactiveUserControl<StatusBarViewModel>
{
InitializeComponent();
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
txtRunningServerDisplay.Tapped += TxtRunningServerDisplay_Tapped;
txtRunningInfoDisplay.Tapped += TxtRunningServerDisplay_Tapped;
+1 -1
View File
@@ -3,8 +3,8 @@ global using ServiceLib.Base;
global using ServiceLib.Common;
global using ServiceLib.Enums;
global using ServiceLib.Handler;
global using ServiceLib.Handler.Data;
global using ServiceLib.Manager;
global using ServiceLib.Manager.Data;
global using ServiceLib.Models.Configs;
global using ServiceLib.Models.CoreConfigs;
global using ServiceLib.Models.Dto;
@@ -42,7 +42,7 @@ internal sealed class RegionalPresetStager(
string.Empty,
string.Empty,
string.Empty,
ConfigDbManager.InitBuiltinSimpleDNS(),
ConfigDbHandler.InitBuiltinSimpleDNS(),
[CreateDefaultDns(ECoreType.Xray, "V2ray"), CreateDefaultDns(ECoreType.sing_box, "sing-box")],
new(null, []));
}
@@ -136,7 +136,7 @@ internal sealed class RegionalPresetStager(
var content = await TryDownloadAsync(url, proxy, cancellationToken);
var template = content is null ? null : JsonUtils.Deserialize<SimpleDNSItem>(content);
return template is null
? (ConfigDbManager.InitBuiltinSimpleDNS(), true)
? (ConfigDbHandler.InitBuiltinSimpleDNS(), true)
: (template, false);
}
@@ -36,7 +36,7 @@ public sealed partial class V2rayRuntime
Config.WebDavItem.Password = input.Password;
}
Config.WebDavItem.DirName = input.DirName?.Trim();
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
});
return OperationView.Ok(ApiMessageKeys.WebDavSettingsSaved);
}
@@ -57,7 +57,7 @@ public sealed partial class V2rayRuntime
{
await _mutations.RunAsync(async () =>
{
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
await ProfileExManager.Instance.SaveTo();
await StatisticsManager.Instance.SaveTo();
});
@@ -211,7 +211,7 @@ public sealed partial class V2rayRuntime
await ProfileExManager.Instance.SaveTo();
await StatisticsManager.Instance.SaveTo();
StatisticsManager.Instance.Close();
await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()), cancellationToken);
await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig()), cancellationToken);
await SQLiteHelper.Instance.DisposeDbConnectionAsync();
databaseClosed = true;
@@ -113,7 +113,7 @@ public sealed partial class V2rayRuntime
.Distinct(StringComparer.Ordinal)
.ToList();
Config.CheckUpdateItem.UpdateViaProxy = input.UseProxy;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
});
return OperationView.Ok(ApiMessageKeys.CoreUpdateSettingsSaved);
@@ -39,7 +39,7 @@ public sealed partial class V2rayRuntime
await _mutations.RunAsync(async () =>
{
Config.SubIndexId = subscriptionId ?? string.Empty;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
});
_events.Publish("profiles-changed", new { subscriptionId = Config.SubIndexId });
return OperationView.Ok(ApiMessageKeys.CommonCompleted, new { subscriptionId = Config.SubIndexId });
@@ -60,10 +60,10 @@ public sealed partial class V2rayRuntime
var count = await _mutations.RunAsync(async () =>
{
var imported = await ConfigDbManager.AddBatchServers(Config, request.Content, groupId, request.IsSubscription);
var imported = await ConfigDbHandler.AddBatchServers(Config, request.Content, groupId, request.IsSubscription);
if (imported > 0)
{
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}
return imported;
});
@@ -160,13 +160,13 @@ public sealed partial class V2rayRuntime
try
{
result = await _mutations.RunAsync(() => profile.ConfigType.IsGroupType()
? ConfigDbManager.AddServerCommon(Config, profile)
? ConfigDbHandler.AddServerCommon(Config, profile)
: profile.ConfigType switch
{
EConfigType.Custom when isNew => ConfigDbManager.AddCustomServer(Config, profile, blDelete: false),
EConfigType.Outbound when isNew => ConfigDbManager.AddCustomOutboundServer(Config, profile, blDelete: false, toFile: true),
EConfigType.Custom or EConfigType.Outbound => ConfigDbManager.EditCustomServer(Config, profile),
_ => ConfigDbManager.AddServer(Config, profile),
EConfigType.Custom when isNew => ConfigDbHandler.AddCustomServer(Config, profile, blDelete: false),
EConfigType.Outbound when isNew => ConfigDbHandler.AddCustomOutboundServer(Config, profile, blDelete: false, toFile: true),
EConfigType.Custom or EConfigType.Outbound => ConfigDbHandler.EditCustomServer(Config, profile),
_ => ConfigDbHandler.AddServer(Config, profile),
});
}
catch (Exception exception)
@@ -263,14 +263,14 @@ public sealed partial class V2rayRuntime
await _mutations.RunAsync(async () =>
{
if (await ConfigDbManager.RemoveServers(Config, selected) != 0)
if (await ConfigDbHandler.RemoveServers(Config, selected) != 0)
{
throw new IOException("ServiceLib could not remove the selected profiles.");
}
if (removesCurrent)
{
_ = await ConfigDbManager.GetDefaultServer(Config);
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
_ = await ConfigDbHandler.GetDefaultServer(Config);
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}
});
@@ -297,7 +297,7 @@ public sealed partial class V2rayRuntime
return OperationView.Fail("profile_not_found", ApiMessageKeys.ProfileNotFound);
}
if (await _mutations.RunAsync(() => ConfigDbManager.CopyServer(Config, items)) != 0)
if (await _mutations.RunAsync(() => ConfigDbHandler.CopyServer(Config, items)) != 0)
{
return OperationView.Fail("profile_copy_failed", ApiMessageKeys.CommonInvalidInput);
}
@@ -319,7 +319,7 @@ public sealed partial class V2rayRuntime
return OperationView.Fail("profile_not_found", ApiMessageKeys.ProfileNotFound);
}
if (await _mutations.RunAsync(() => ConfigDbManager.MoveToGroup(Config, items, request.SubscriptionId ?? string.Empty)) != 0)
if (await _mutations.RunAsync(() => ConfigDbHandler.MoveToGroup(Config, items, request.SubscriptionId ?? string.Empty)) != 0)
{
return OperationView.Fail("profile_move_failed", ApiMessageKeys.CommonInvalidInput);
}
@@ -338,7 +338,7 @@ public sealed partial class V2rayRuntime
return OperationView.Fail("profile_not_in_group", ApiMessageKeys.ProfileNotInGroup);
}
var result = await _mutations.RunAsync(() => ConfigDbManager.MoveServer(Config, orderedIds, index, request.Direction, request.Position));
var result = await _mutations.RunAsync(() => ConfigDbHandler.MoveServer(Config, orderedIds, index, request.Direction, request.Position));
_events.Publish("profiles-changed", new { subscriptionId = groupId });
return result == 0
? OperationView.Ok(ApiMessageKeys.ProfileOrderSaved)
@@ -353,7 +353,7 @@ public sealed partial class V2rayRuntime
return OperationView.Fail("profile_sort_column_invalid", ApiMessageKeys.CommonInvalidInput);
}
var result = await _mutations.RunAsync(() => ConfigDbManager.SortServers(Config, groupId, request.Column, request.Ascending));
var result = await _mutations.RunAsync(() => ConfigDbHandler.SortServers(Config, groupId, request.Column, request.Ascending));
_events.Publish("profiles-changed", new { subscriptionId = groupId });
return result == 0
? OperationView.Ok(ApiMessageKeys.ProfileOrderSaved)
@@ -362,14 +362,14 @@ public sealed partial class V2rayRuntime
public async Task<OperationView> RemoveDuplicateProfilesAsync(string? subscriptionId)
{
var result = await _mutations.RunAsync(() => ConfigDbManager.DedupServerList(Config, subscriptionId ?? Config.SubIndexId ?? string.Empty));
var result = await _mutations.RunAsync(() => ConfigDbHandler.DedupServerList(Config, subscriptionId ?? Config.SubIndexId ?? string.Empty));
_events.Publish("profiles-changed", new { subscriptionId = subscriptionId ?? Config.SubIndexId });
return OperationView.Ok(ApiMessageKeys.ProfileDeduplicated, new { removed = result.Item1 - result.Item2 });
}
public async Task<OperationView> RemoveInvalidProfilesAsync(string? subscriptionId)
{
var count = await _mutations.RunAsync(() => ConfigDbManager.RemoveInvalidServerResult(Config, subscriptionId ?? Config.SubIndexId ?? string.Empty));
var count = await _mutations.RunAsync(() => ConfigDbHandler.RemoveInvalidServerResult(Config, subscriptionId ?? Config.SubIndexId ?? string.Empty));
_events.Publish("profiles-changed", new { subscriptionId = subscriptionId ?? Config.SubIndexId });
return count < 0
? OperationView.Ok(ApiMessageKeys.CommonCompleted, new { removed = 0 })
@@ -389,8 +389,8 @@ public sealed partial class V2rayRuntime
}
var result = await _mutations.RunAsync(() => byRegion
? ConfigDbManager.AddGroupRegionServer(Config, subscription)
: ConfigDbManager.AddGroupAllServer(Config, subscription));
? ConfigDbHandler.AddGroupRegionServer(Config, subscription)
: ConfigDbHandler.AddGroupAllServer(Config, subscription));
if (!result.Success)
{
return OperationView.Fail("profile_group_empty", ApiMessageKeys.ProfileGrouped, result.Data);
@@ -61,7 +61,7 @@ public sealed partial class V2rayRuntime
await using var operation = await _operations.EnterOperationAsync(token);
await _mutations.RunAsync(async () =>
{
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
await ProfileExManager.Instance.SaveTo();
}, operation.Token);
}, cancellationToken);
@@ -252,7 +252,7 @@ public sealed partial class V2rayRuntime
}
Config.RoutingBasicItem.DomainStrategy = input.DomainStrategy!;
Config.RoutingBasicItem.DomainStrategy4Singbox = input.DomainStrategy4Singbox!;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
});
}
catch (Exception exception)
@@ -260,7 +260,7 @@ public sealed partial class V2rayRuntime
RestoreConfigValues(Config, oldConfig);
try
{
await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()));
await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig()));
}
catch (Exception rollbackException)
{
@@ -314,7 +314,7 @@ public sealed partial class V2rayRuntime
await _mutations.RunAsync(async () =>
{
ApplyInboundSettings(Config.Inbound[0], input);
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
});
return await CompleteCoreAffectingChangeAsync("inbound", fingerprint != GetCoreConfigurationFingerprint(), applyContext);
@@ -375,7 +375,7 @@ public sealed partial class V2rayRuntime
Config.Fragment4RayItem.Lengths = fragmentLengths.ToList();
Config.Fragment4RayItem.Delays = fragmentDelays.ToList();
Config.Fragment4RayItem.MaxSplit = input.FragmentMaxSplit;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
});
return await CompleteCoreAffectingChangeAsync("core", fingerprint != GetCoreConfigurationFingerprint(), applyContext);
@@ -402,7 +402,7 @@ public sealed partial class V2rayRuntime
Config.ConstItem.SrsSourceUrl = input.SrsSourceUrl;
Config.ConstItem.RouteRulesTemplateSourceUrl = input.RouteRulesTemplateSourceUrl;
Config.ConstItem.SubConvertUrl = input.SubConvertUrl;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
});
if (statisticsChanged)
@@ -435,7 +435,7 @@ public sealed partial class V2rayRuntime
Config.SpeedTestItem.MixedConcurrencyCount = Math.Max(input.MixedConcurrencyCount, Global.SpeedTestConcurrencyCountMin);
Config.SpeedTestItem.IPAPIUrl = input.IPAPIUrl;
Config.SpeedTestItem.UdpTestTarget = input.UdpTestTarget;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
});
_events.Publish("settings-changed", new { section = "speedtest", restartRequired = false });
return OperationView.Ok(ApiMessageKeys.SpeedTestSettingsSaved);
@@ -467,7 +467,7 @@ public sealed partial class V2rayRuntime
item.CoreType = mapping.CoreType;
}
}
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
});
return await CompleteCoreAffectingChangeAsync("core-types", fingerprint != GetCoreConfigurationFingerprint(), applyContext);
}
@@ -503,7 +503,7 @@ public sealed partial class V2rayRuntime
{
Config.RoutingBasicItem.DomainStrategy = input.DomainStrategy!;
Config.RoutingBasicItem.DomainStrategy4Singbox = input.DomainStrategy4Singbox!;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
});
return await CompleteCoreAffectingChangeAsync("routing", fingerprint != GetCoreConfigurationFingerprint(), applyContext);
}
@@ -522,7 +522,7 @@ public sealed partial class V2rayRuntime
await _mutations.RunAsync(async () =>
{
Config.SimpleDNSItem = input;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
});
return await CompleteCoreAffectingChangeAsync("dns", fingerprint != GetCoreConfigurationFingerprint(), applyContext);
}
@@ -563,7 +563,7 @@ public sealed partial class V2rayRuntime
|| current.DomainDNSAddress != input.DomainDNSAddress
|| current.Remarks != (input.Remarks ?? current.Remarks);
var item = ApplyDnsProfileInput(current, coreType, input);
return (Result: await ConfigDbManager.SaveDNSItems(Config, item), Changed: changed);
return (Result: await ConfigDbHandler.SaveDNSItems(Config, item), Changed: changed);
});
if (result.Result == -2)
{
@@ -696,8 +696,8 @@ public sealed partial class V2rayRuntime
item.RuleNum = parsedRules.Count;
}
var result = parsedRules.Count == 0
? await ConfigDbManager.SaveRoutingItem(Config, item)
: await ConfigDbManager.AddBatchRoutingRules(item, JsonUtils.Serialize(parsedRules, false));
? await ConfigDbHandler.SaveRoutingItem(Config, item)
: await ConfigDbHandler.AddBatchRoutingRules(item, JsonUtils.Serialize(parsedRules, false));
return (Result: result, Item: (RoutingItem?)item, Changed: changed);
});
if (save.Result == -2)
@@ -728,14 +728,14 @@ public sealed partial class V2rayRuntime
{
return (Removed: false, AffectsCore: false);
}
await ConfigDbManager.RemoveRoutingItem(item);
await ConfigDbHandler.RemoveRoutingItem(item);
if (item.IsActive)
{
var remaining = await ConfigDbQuery.RoutingItems() ?? [];
var fallback = remaining.FirstOrDefault();
if (fallback is not null)
{
if (await ConfigDbManager.SetDefaultRouting(Config, fallback) != 0)
if (await ConfigDbHandler.SetDefaultRouting(Config, fallback) != 0)
{
throw new IOException("ServiceLib could not select the fallback routing profile.");
}
@@ -743,7 +743,7 @@ public sealed partial class V2rayRuntime
else
{
Config.RoutingBasicItem.RoutingIndexId = string.Empty;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}
}
return (Removed: true, AffectsCore: item.IsActive);
@@ -772,7 +772,7 @@ public sealed partial class V2rayRuntime
return (Result: -2, Changed: false);
}
var changed = !item.IsActive;
return (Result: changed ? await ConfigDbManager.SetDefaultRouting(Config, item) : 0, Changed: changed);
return (Result: changed ? await ConfigDbHandler.SetDefaultRouting(Config, item) : 0, Changed: changed);
});
if (result.Result == -2)
{
@@ -823,7 +823,7 @@ public sealed partial class V2rayRuntime
{
return -2;
}
return await ConfigDbManager.AddBatchRoutingRules(item, JsonUtils.Serialize(rules, false));
return await ConfigDbHandler.AddBatchRoutingRules(item, JsonUtils.Serialize(rules, false));
}
private async Task<string> GetActiveRoutingSignatureAsync()
@@ -930,7 +930,7 @@ public sealed partial class V2rayRuntime
{
return -3;
}
if (await ConfigDbManager.MoveRoutingRule(rules, index, direction, position) != 0)
if (await ConfigDbHandler.MoveRoutingRule(rules, index, direction, position) != 0)
{
return -4;
}
@@ -993,7 +993,7 @@ public sealed partial class V2rayRuntime
}
var before = await GetActiveRoutingSignatureAsync();
var result = await _mutations.RunAsync(() => ConfigDbManager.InitRouting(Config, true));
var result = await _mutations.RunAsync(() => ConfigDbHandler.InitRouting(Config, true));
if (result != 0)
{
return OperationView.Fail("routing_import_failed", ApiMessageKeys.RoutingSaveFailed);
@@ -1048,7 +1048,7 @@ public sealed partial class V2rayRuntime
return -2;
}
var item = ApplyCoreConfigTemplateInput(current, coreType, input);
return await ConfigDbManager.SaveFullConfigTemplate(Config, item);
return await ConfigDbHandler.SaveFullConfigTemplate(Config, item);
});
if (result == -2)
{
@@ -1160,7 +1160,7 @@ public sealed partial class V2rayRuntime
await SQLiteHelper.Instance.DeleteAllAsync<DNSItem>();
foreach (var item in stage.DnsItems)
{
if (await ConfigDbManager.SaveDNSItems(Config, item) != 0)
if (await ConfigDbHandler.SaveDNSItems(Config, item) != 0)
{
throw new IOException($"The {item.CoreType} DNS profile could not be saved.");
}
@@ -1168,7 +1168,7 @@ public sealed partial class V2rayRuntime
// Default routing uses embedded data only; this call performs no network I/O
// because the route template source was cleared in the staged plan.
if (await ConfigDbManager.InitRouting(Config, false) != 0)
if (await ConfigDbHandler.InitRouting(Config, false) != 0)
{
throw new IOException("The built-in routing profiles could not be initialized.");
}
@@ -1177,7 +1177,7 @@ public sealed partial class V2rayRuntime
{
foreach (var item in stage.DnsItems)
{
if (await ConfigDbManager.SaveDNSItems(Config, item) != 0)
if (await ConfigDbHandler.SaveDNSItems(Config, item) != 0)
{
throw new IOException($"The {item.CoreType} DNS profile could not be saved.");
}
@@ -1188,7 +1188,7 @@ public sealed partial class V2rayRuntime
var item = await ConfigDbQuery.GetRoutingItem(itemId);
if (item is not null)
{
await ConfigDbManager.RemoveRoutingItem(item);
await ConfigDbHandler.RemoveRoutingItem(item);
}
}
@@ -1207,7 +1207,7 @@ public sealed partial class V2rayRuntime
foreach (var item in stage.Routing.Items)
{
item.Sort = ++nextSort;
if (await ConfigDbManager.AddBatchRoutingRules(item, item.RuleSet ?? "[]") != 0)
if (await ConfigDbHandler.AddBatchRoutingRules(item, item.RuleSet ?? "[]") != 0)
{
throw new IOException($"The routing profile '{item.Remarks}' could not be saved.");
}
@@ -1216,7 +1216,7 @@ public sealed partial class V2rayRuntime
var defaultItem = stage.Routing.DefaultRemarks is { } remarks
? stage.Routing.Items.FirstOrDefault(item => item.Remarks == remarks)
: null;
if (defaultItem is not null && await ConfigDbManager.SetDefaultRouting(Config, defaultItem) != 0)
if (defaultItem is not null && await ConfigDbHandler.SetDefaultRouting(Config, defaultItem) != 0)
{
throw new IOException("The first staged routing profile could not be activated.");
}
@@ -1226,7 +1226,7 @@ public sealed partial class V2rayRuntime
{
var existingDefault = currentRoutes.FirstOrDefault(item => item.Id == existingDefaultId);
if (existingDefault is not null && !existingDefault.IsActive
&& await ConfigDbManager.SetDefaultRouting(Config, existingDefault) != 0)
&& await ConfigDbHandler.SetDefaultRouting(Config, existingDefault) != 0)
{
throw new IOException("The migrated default routing profile could not be activated.");
}
@@ -1234,7 +1234,7 @@ public sealed partial class V2rayRuntime
}
token.ThrowIfCancellationRequested();
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
token.ThrowIfCancellationRequested();
}, token),
() => RestoreRegionalPresetSnapshotAsync(applyContext));
@@ -1349,7 +1349,7 @@ public sealed partial class V2rayRuntime
await _mutations.RunAsync(async () =>
{
RestoreConfigValues(Config, context.OldConfig);
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
await SQLiteHelper.Instance.DeleteAllAsync<RoutingItem>();
if (context.OldRoutingItems.Length > 0
@@ -1625,7 +1625,7 @@ public sealed partial class V2rayRuntime
try
{
RestoreConfigValues(Config, context.OldConfig);
await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()));
await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig()));
configRestored = true;
await _mutations.RunAsync(async () =>
{
+21 -21
View File
@@ -44,7 +44,7 @@ public sealed partial class V2rayRuntime(
private bool _restoring;
private int _restoreAndRestartRequested;
private Config Config => ConfigTextManager.Config;
private Config Config => ConfigTextHandler.Config;
private CoreRuntimeSnapshot CurrentCoreRuntime => Volatile.Read(ref _coreRuntime);
public bool RestoreAndRestartRequested => Volatile.Read(ref _restoreAndRestartRequested) != 0;
@@ -245,19 +245,19 @@ public sealed partial class V2rayRuntime(
{
Config.Inbound[0].AllowLANConn = allowProxyFromLan;
}
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
});
await ConfigDbManager.InitBuiltinDNS(Config);
await ConfigDbHandler.InitBuiltinDNS(Config);
await BuiltinDnsProfileBootstrap.EnsureAsync(
Config,
async () => await ConfigDbQuery.DNSItems() ?? [],
ConfigDbManager.SaveDNSItems);
await ConfigDbManager.InitBuiltinFullConfigTemplate(Config);
ConfigDbHandler.SaveDNSItems);
await ConfigDbHandler.InitBuiltinFullConfigTemplate(Config);
// Keep startup aligned with Desktop's StatusBarViewModel. In particular,
// InitBuiltinRouting owns the RoutingIndexId -> IsActive migration and must
// run even when a restored Desktop database already has routing rows.
await ConfigDbManager.InitBuiltinRouting(Config);
_ = await ConfigDbManager.GetDefaultRouting(Config);
await ConfigDbHandler.InitBuiltinRouting(Config);
_ = await ConfigDbHandler.GetDefaultRouting(Config);
var restoredSubscriptions = await ConfigDbQuery.SubItems() ?? [];
var normalizedSubIndexId = NormalizeSelectedSubscriptionId(
Config.SubIndexId,
@@ -268,8 +268,8 @@ public sealed partial class V2rayRuntime(
Config.SubIndexId = normalizedSubIndexId;
}
var selectedProfileId = Config.IndexId;
var defaultProfile = await ConfigDbManager.GetDefaultServer(Config);
await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()));
var defaultProfile = await ConfigDbHandler.GetDefaultServer(Config);
await _mutations.RunAsync(() => EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig()));
await ProfileExManager.Instance.Init();
await CertPemManager.Instance.Init(Config);
// The Web frontend owns its runtime and rejects generated launch contexts that enable TUN.
@@ -392,7 +392,7 @@ public sealed partial class V2rayRuntime(
steps.Add(new("configuration save", async deadline =>
{
await _mutations.RunAsync(
() => EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig()),
() => EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig()),
deadline.Token);
return true;
}));
@@ -437,7 +437,7 @@ public sealed partial class V2rayRuntime(
}
var item = ToSubItem(input, null);
var result = await _mutations.RunAsync(() => ConfigDbManager.AddSubItem(Config, item));
var result = await _mutations.RunAsync(() => ConfigDbHandler.AddSubItem(Config, item));
if (result != 0)
{
return new(false, "subscription_save_failed", ApiMessageKeys.SubscriptionSaveFailed, null);
@@ -466,7 +466,7 @@ public sealed partial class V2rayRuntime(
var item = ToSubItem(input, existing);
item.Id = id;
var result = await ConfigDbManager.AddSubItem(Config, item);
var result = await ConfigDbHandler.AddSubItem(Config, item);
if (result != 0)
{
return new SubscriptionMutationResult(false, "subscription_save_failed", ApiMessageKeys.SubscriptionSaveFailed, null);
@@ -496,14 +496,14 @@ public sealed partial class V2rayRuntime(
await _mutations.RunAsync(async () =>
{
if (await ConfigDbManager.DeleteSubItem(Config, id) != 0)
if (await ConfigDbHandler.DeleteSubItem(Config, id) != 0)
{
throw new IOException("ServiceLib could not delete the subscription.");
}
if (removesCurrentProfile)
{
_ = await ConfigDbManager.GetDefaultServer(Config);
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
_ = await ConfigDbHandler.GetDefaultServer(Config);
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}
});
@@ -552,7 +552,7 @@ public sealed partial class V2rayRuntime(
await handler.UpdateProcess(id);
operation.Token.ThrowIfCancellationRequested();
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
await UpdateSubscriptionTimestampLockedAsync(id);
}, operation.Token);
_events.Publish("profiles-changed", new { subscriptionId = id });
@@ -780,7 +780,7 @@ public sealed partial class V2rayRuntime(
await _mutations.RunAsync(async () =>
{
Config.IndexId = profile.IndexId;
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
});
}
@@ -789,10 +789,10 @@ public sealed partial class V2rayRuntime(
private async Task<ProfileItem?> GetDefaultProfileAsync() => await _mutations.RunAsync(async () =>
{
var selected = await ConfigDbManager.GetDefaultServer(Config);
var selected = await ConfigDbHandler.GetDefaultServer(Config);
if (selected is not null)
{
await EnsureConfigSaveSucceededAsync(() => ConfigTextManager.SaveConfig());
await EnsureConfigSaveSucceededAsync(() => ConfigTextHandler.SaveConfig());
}
return selected;
});
@@ -1178,7 +1178,7 @@ public sealed partial class V2rayRuntime(
if (item is not null)
{
item.UpdateTime = updateTime;
if (await ConfigDbManager.AddSubItem(Config, item) != 0)
if (await ConfigDbHandler.AddSubItem(Config, item) != 0)
{
throw new IOException("ServiceLib could not save the subscription timestamp.");
}
@@ -1191,7 +1191,7 @@ public sealed partial class V2rayRuntime(
if (item.Enabled)
{
item.UpdateTime = updateTime;
if (await ConfigDbManager.AddSubItem(Config, item) != 0)
if (await ConfigDbHandler.AddSubItem(Config, item) != 0)
{
throw new IOException("ServiceLib could not save the subscription timestamp.");
}
+1 -1
View File
@@ -1,8 +1,8 @@
global using ServiceLib;
global using ServiceLib.Common;
global using ServiceLib.Enums;
global using ServiceLib.Handler.Data;
global using ServiceLib.Manager;
global using ServiceLib.Manager.Data;
global using ServiceLib.Models.Configs;
global using ServiceLib.Models.CoreConfigs;
global using ServiceLib.Models.Dto;
@@ -24,7 +24,7 @@ public class ParityValidationTests
await code.Should().BeEqualTo("ok");
await profile.IsValid().Should().BeFalse();
var result = await ConfigDbManager.AddShadowsocksServer(new Config(), profile, toFile: false);
var result = await ConfigDbHandler.AddShadowsocksServer(new Config(), profile, toFile: false);
await result.Should().BeEqualTo(0);
await profile.ConfigVersion.Should().BeEqualTo(4);
@@ -41,7 +41,7 @@ public class ParityValidationTests
await code.Should().BeEqualTo("ok");
await profile.IsValid().Should().BeTrue();
var result = await ConfigDbManager.AddShadowsocksServer(new Config(), profile, toFile: false);
var result = await ConfigDbHandler.AddShadowsocksServer(new Config(), profile, toFile: false);
await result.Should().BeEqualTo(0);
}
@@ -54,7 +54,7 @@ public class ParityValidationTests
var valid = V2rayRuntime.TryValidateProfile(profile, out _, out _);
await valid.Should().BeTrue();
var result = await ConfigDbManager.AddShadowsocksServer(new Config(), profile, toFile: false);
var result = await ConfigDbHandler.AddShadowsocksServer(new Config(), profile, toFile: false);
await result.Should().BeEqualTo(-1);
}
@@ -104,7 +104,7 @@ public class RegionalPresetStagingTests
await applyCalled.Should().BeTrue();
await capturedStage.Should().NotBeNull();
await capturedStage!.DnsItems[0].NormalDNS.Should().BeEqualTo("existing-xray-data");
await capturedStage.SimpleDnsItem.RemoteDNS.Should().BeEqualTo(ConfigDbManager.InitBuiltinSimpleDNS().RemoteDNS);
await capturedStage.SimpleDnsItem.RemoteDNS.Should().BeEqualTo(ConfigDbHandler.InitBuiltinSimpleDNS().RemoteDNS);
await capturedStage.Routing.IsBuiltinFallback.Should().BeTrue();
await capturedStage.Routing.Items.Count.Should().BeEqualTo(3);
await config.ConstItem.GeoSourceUrl.Should().BeEqualTo("original-geo-source");
@@ -562,7 +562,7 @@ public class RegionalPresetStagingTests
var staged = await stager.StageAsync(EPresetType.Russia, CreateDnsRows(), [], null, CancellationToken.None);
var builtin = ConfigDbManager.InitBuiltinSimpleDNS();
var builtin = ConfigDbHandler.InitBuiltinSimpleDNS();
await staged.SimpleDnsItem.RemoteDNS.Should().BeEqualTo(builtin.RemoteDNS);
await staged.SimpleDnsItem.DirectDNS.Should().BeEqualTo(builtin.DirectDNS);
await staged.DnsItems.All(item => item.Enabled).Should().BeTrue();
@@ -667,7 +667,7 @@ public class RegionalPresetStagingTests
var staged = await stager.StageAsync(EPresetType.Russia, CreateDnsRows(), [], null, CancellationToken.None);
await staged.DnsItems[0].NormalDNS.Should().BeEqualTo("existing-xray-data");
await staged.SimpleDnsItem.RemoteDNS.Should().BeEqualTo(ConfigDbManager.InitBuiltinSimpleDNS().RemoteDNS);
await staged.SimpleDnsItem.RemoteDNS.Should().BeEqualTo(ConfigDbHandler.InitBuiltinSimpleDNS().RemoteDNS);
await staged.Routing.IsBuiltinFallback.Should().BeTrue();
await staged.Routing.Items.Count.Should().BeEqualTo(3);
}
@@ -221,7 +221,7 @@ public class SniffingSettingsIntegrationTests
],
GlobalHotkeys = [],
CoreTypeItem = [new CoreTypeItem { ConfigType = EConfigType.VMess, CoreType = ECoreType.Xray }],
SimpleDNSItem = ConfigDbManager.InitBuiltinSimpleDNS(),
SimpleDNSItem = ConfigDbHandler.InitBuiltinSimpleDNS(),
HappyEyeballs4RayItem = new HappyEyeballs4RayItem(),
IndexId = string.Empty,
SubIndexId = string.Empty,
+2 -2
View File
@@ -11,7 +11,7 @@ public class WindowBase<TViewModel> : ReactiveWindow<TViewModel> where TViewMode
{
try
{
var sizeItem = ConfigTextManager.GetWindowSizeItem(GetType().Name);
var sizeItem = ConfigTextHandler.GetWindowSizeItem(GetType().Name);
if (sizeItem == null)
{
return;
@@ -32,7 +32,7 @@ public class WindowBase<TViewModel> : ReactiveWindow<TViewModel> where TViewMode
try
{
ConfigTextManager.SaveWindowSizeItem(GetType().Name, Width, Height);
ConfigTextHandler.SaveWindowSizeItem(GetType().Name, Width, Height);
}
catch { }
}
@@ -10,7 +10,7 @@ public class MaterialDesignFonts
{
try
{
var fontFamily = ConfigTextManager.Config.UiItem.CurrentFontFamily;
var fontFamily = ConfigTextHandler.Config.UiItem.CurrentFontFamily;
if (fontFamily.IsNotEmpty())
{
var fontPath = Utils.GetFontsPath();
+1 -1
View File
@@ -27,8 +27,8 @@ global using ServiceLib.Common;
global using ServiceLib.Enums;
global using ServiceLib.Events;
global using ServiceLib.Handler;
global using ServiceLib.Handler.Data;
global using ServiceLib.Manager;
global using ServiceLib.Manager.Data;
global using ServiceLib.Models.CoreConfigs;
global using ServiceLib.Models.Configs;
global using ServiceLib.Models.Dto;
+1 -1
View File
@@ -22,7 +22,7 @@ public sealed partial class HotkeyManager
private void Init()
{
_hotkeyTriggerDic.Clear();
foreach (var item in ConfigTextManager.Config.GlobalHotkeys)
foreach (var item in ConfigTextHandler.Config.GlobalHotkeys)
{
if (item.KeyCode != null && (Key)item.KeyCode != Key.None)
{
+1 -1
View File
@@ -55,7 +55,7 @@ public sealed class WindowsManager
{
try
{
var item = await ConfigDbManager.GetDefaultRouting(config);
var item = await ConfigDbHandler.GetDefaultRouting(config);
if (item == null || item.CustomIcon.IsNullOrEmpty() || !File.Exists(item.CustomIcon))
{
return null;
@@ -23,7 +23,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
public ThemeSettingViewModel()
{
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
RegisterSystemColorSet(_config, ModifyTheme);
@@ -64,7 +64,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
{
_config.UiItem.CurrentTheme = CurrentTheme;
ModifyTheme();
await ConfigTextManager.SaveConfig();
await ConfigTextHandler.SaveConfig();
}
});
@@ -83,7 +83,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
{
_config.UiItem.ColorPrimaryName = SelectedSwatch?.Name;
ChangePrimaryColor(SelectedSwatch.ExemplarHue.Color);
await ConfigTextManager.SaveConfig();
await ConfigTextHandler.SaveConfig();
}
});
@@ -95,7 +95,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
{
_config.UiItem.CurrentFontSize = CurrentFontSize;
ModifyFontSize();
await ConfigTextManager.SaveConfig();
await ConfigTextHandler.SaveConfig();
}
});
@@ -107,7 +107,7 @@ public partial class ThemeSettingViewModel : MyReactiveObject
{
_config.UiItem.CurrentLanguage = CurrentLanguage;
Thread.CurrentThread.CurrentUICulture = new(CurrentLanguage);
await ConfigTextManager.SaveConfig();
await ConfigTextHandler.SaveConfig();
NoticeManager.Instance.Enqueue(ResUI.NeedRebootTips);
}
});
@@ -51,7 +51,7 @@ public partial class AddGroupServerWindow
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
});
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme);
WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
}
private void InitializeData(ProfileItem profileItem)
+1 -1
View File
@@ -38,7 +38,7 @@ public partial class AddServer2Window
interaction.SetOutput(fileName);
}).DisposeWith(disposables);
});
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme);
WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
}
private void InitializeData(ProfileItem profileItem)
+1 -1
View File
@@ -204,7 +204,7 @@ public partial class AddServerWindow
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
});
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme);
WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
}
private void InitializeData(ProfileItem profileItem)
@@ -14,7 +14,7 @@ public partial class ClashConnectionsView
public ClashConnectionsView()
{
InitializeComponent();
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
btnAutofitColumnWidth.Click += BtnAutofitColumnWidth_Click;
+2 -2
View File
@@ -8,7 +8,7 @@ public partial class DNSSettingWindow
{
InitializeComponent();
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
cmbDirectDNSStrategy.ItemsSource = Global.DomainStrategy;
cmbRemoteDNSStrategy.ItemsSource = Global.DomainStrategy;
@@ -72,7 +72,7 @@ public partial class DNSSettingWindow
this.OneWayBind(ViewModel, vm => vm.IsSimpleDNSEnabled, v => v.gridBasicDNSSettings.IsEnabled).DisposeWith(disposables);
this.OneWayBind(ViewModel, vm => vm.IsSimpleDNSEnabled, v => v.gridAdvancedDNSSettings.IsEnabled).DisposeWith(disposables);
});
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme);
WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
}
private void linkDnsObjectDoc_Click(object sender, RoutedEventArgs e)
@@ -8,7 +8,7 @@ public partial class FullConfigTemplateWindow
{
InitializeComponent();
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
this.WhenActivated(disposables =>
{
@@ -25,7 +25,7 @@ public partial class FullConfigTemplateWindow
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
});
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme);
WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
}
private void linkFullConfigTemplateDoc_Click(object sender, RoutedEventArgs e)
@@ -21,7 +21,7 @@ public partial class GlobalHotkeySettingWindow
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
BindingData();
});
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme);
WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
Init();
}
+4 -4
View File
@@ -17,7 +17,7 @@ public partial class MainWindow
{
InitializeComponent();
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
ThreadPool.RegisterWaitForSingleObject(App.ProgramStarted, OnProgramStarted, null, -1, false);
App.Current.SessionEnding += Current_SessionEnding;
@@ -345,15 +345,15 @@ public partial class MainWindow
private void StorageUI()
{
ConfigTextManager.SaveWindowSizeItem(GetType().Name, Width, Height);
ConfigTextHandler.SaveWindowSizeItem(GetType().Name, Width, Height);
if (_config.UiItem.MainGirdOrientation == EGirdOrientation.Horizontal)
{
ConfigTextManager.SaveMainGirdHeight(gridMain.ColumnDefinitions[0].ActualWidth, gridMain.ColumnDefinitions[2].ActualWidth);
ConfigTextHandler.SaveMainGirdHeight(gridMain.ColumnDefinitions[0].ActualWidth, gridMain.ColumnDefinitions[2].ActualWidth);
}
else if (_config.UiItem.MainGirdOrientation == EGirdOrientation.Vertical)
{
ConfigTextManager.SaveMainGirdHeight(gridMain1.RowDefinitions[0].ActualHeight, gridMain1.RowDefinitions[2].ActualHeight);
ConfigTextHandler.SaveMainGirdHeight(gridMain1.RowDefinitions[0].ActualHeight, gridMain1.RowDefinitions[2].ActualHeight);
}
}
@@ -10,7 +10,7 @@ public partial class OptionSettingWindow
{
InitializeComponent();
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
clbdestOverride.SelectionChanged += ClbdestOverride_SelectionChanged;
btnBrowseCustomSystemProxyPacPath.Click += BtnBrowseCustomSystemProxyPacPath_Click;
@@ -149,7 +149,7 @@ public partial class OptionSettingWindow
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
});
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme);
WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
}
private async Task InitSettingFont()
@@ -39,7 +39,7 @@ public partial class ProfilesSelectWindow
}).DisposeWith(disposables);
});
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme);
WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
}
private void AllowMultiSelect(bool allow)
+1 -1
View File
@@ -17,7 +17,7 @@ public partial class ProfilesView
InitializeComponent();
lstGroup.MaxHeight = Math.Floor(SystemParameters.WorkArea.Height * 0.20 / 40) * 40;
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
btnAutofitColumnWidth.Click += BtnAutofitColumnWidth_Click;
txtServerFilter.PreviewKeyDown += TxtServerFilter_PreviewKeyDown;
@@ -37,7 +37,7 @@ public partial class RoutingRuleDetailsWindow
this.BindCommand(ViewModel, vm => vm.SelectProfileCmd, v => v.btnSelectProfile).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
});
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme);
WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
}
private void InitializeData(RulesItem rulesItem)
@@ -76,7 +76,7 @@ public partial class RoutingRuleSettingWindow
interaction.SetOutput(fileName);
}).DisposeWith(disposables);
});
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme);
WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
}
private void Window_Loaded(object sender, RoutedEventArgs e)
@@ -37,7 +37,7 @@ public partial class RoutingSettingWindow
interaction.SetOutput(result);
}).DisposeWith(disposables);
});
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme);
WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
}
private void RoutingSettingWindow_Closing(object? sender, System.ComponentModel.CancelEventArgs e)
+1 -1
View File
@@ -9,7 +9,7 @@ public partial class StatusBarView
public StatusBarView()
{
InitializeComponent();
_config = ConfigTextManager.Config;
_config = ConfigTextHandler.Config;
menuExit.Click += menuExit_Click;
txtRunningServerDisplay.PreviewMouseDown += txtRunningInfoDisplay_MouseDoubleClick;
+1 -1
View File
@@ -35,7 +35,7 @@ public partial class SubEditWindow
this.BindCommand(ViewModel, vm => vm.SelectNextProfileCmd, v => v.btnSelectNextProfile).DisposeWith(disposables);
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
});
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme);
WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
}
private void Window_Loaded(object sender, RoutedEventArgs e)
+1 -1
View File
@@ -47,7 +47,7 @@ public partial class SubSettingWindow
interaction.SetOutput(RxVoid.Default);
}).DisposeWith(disposables);
});
WindowsUtils.SetDarkBorder(this, ConfigTextManager.Config.UiItem.CurrentTheme);
WindowsUtils.SetDarkBorder(this, ConfigTextHandler.Config.UiItem.CurrentTheme);
}
private async Task ShareSub(string url)