This commit is contained in:
2026-01-18 17:59:01 +08:00
parent ef2e821611
commit b9daa46b0a
22 changed files with 1048 additions and 0 deletions

49
Program.cs Normal file
View File

@@ -0,0 +1,49 @@
using CatLink.Relay;
var builder = WebApplication.CreateBuilder(args);
// Add services
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// Configure middleware
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
// Get configuration
var httpPort = builder.Configuration.GetValue<int>("HttpPort", 20100);
var relayPort = builder.Configuration.GetValue<int>("RelayPort", 20101);
var logger = app.Services.GetRequiredService<ILogger<Program>>();
// Start TCP relay server
var cts = new CancellationTokenSource();
var relayTask = Task.Run(async () =>
{
var relay = new FutariRelay(relayPort, cts.Token, app.Services.GetRequiredService<ILogger<FutariRelay>>(), app.Services);
await relay.StartAsync();
}, cts.Token);
logger.LogInformation("CatLink Relay Server starting...");
logger.LogInformation("HTTP API listening on port {HttpPort}", httpPort);
logger.LogInformation("TCP Relay listening on port {RelayPort}", relayPort);
// Handle shutdown
AppDomain.CurrentDomain.ProcessExit += (sender, e) =>
{
logger.LogInformation("Shutting down...");
cts.Cancel();
};
// Run the web server
app.Run($"http://0.0.0.0:{httpPort}");