feat: 目前完成了订阅功能和 Xray-Core 的更新管理.

This commit is contained in:
2025-01-07 09:50:02 +08:00
parent 78c7db692a
commit 99cb0a03a5
22 changed files with 1153 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
using System.Runtime.Loader;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Proxd_man.Config;
using Proxd_man.Subscribe;
namespace Proxd_man;
internal class Program
{
public static async Task Main(string[] args)
{
Console.WriteLine($"Base Directory: {AppContext.BaseDirectory}");
var configurationBuilder = new ConfigurationBuilder()
.SetBasePath(AppContext.BaseDirectory)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: false)
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.AddCommandLine(args);
var configuration = configurationBuilder.Build();
var serviceProvider = new ServiceCollection()
.AddLogging(configure =>
{
configure.AddConfiguration(configuration);
configure.AddConsole();
})
.Configure<ProxdConfig>(configuration.GetSection("Proxd"))
.AddSingleton<XrayCoreManager>()
.AddSingleton<SubscribeManager>()
.BuildServiceProvider();
var logger = serviceProvider.GetRequiredService<ILogger<Program>>();
var xrayCoreManager = serviceProvider.GetRequiredService<XrayCoreManager>();
await xrayCoreManager.InitialXrayCoreProgram();
var subscribeManager = serviceProvider.GetRequiredService<SubscribeManager>();
subscribeManager.StartUpdateSubscribes();
// 监听 SIGTERM 和 SIGINT 信号, 以优雅退出
var cts = new CancellationTokenSource();
AppDomain.CurrentDomain.ProcessExit += (_, _) => cts.Cancel();
Console.CancelKeyPress += (_, _) => cts.Cancel();
AssemblyLoadContext.Default.Unloading += _ => cts.Cancel();
try
{
await Task.Delay(-1, cts.Token);
}
catch (TaskCanceledException)
{
logger.LogInformation("正在退出...");
}
logger.LogInformation("Good Bye!");
}
}