53 lines
1.9 KiB
C#
53 lines
1.9 KiB
C#
using Microsoft.Extensions.Options;
|
|
using TermRemoteCtl.Agent.Api;
|
|
using TermRemoteCtl.Agent.Configuration;
|
|
using TermRemoteCtl.Agent.History;
|
|
using TermRemoteCtl.Agent.Projects;
|
|
using TermRemoteCtl.Agent.Realtime;
|
|
using TermRemoteCtl.Agent.Security;
|
|
using TermRemoteCtl.Agent.Sessions;
|
|
using TermRemoteCtl.Agent.Terminal;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
var agentOptions = builder.Services.AddAgentOptions(builder.Configuration);
|
|
builder.Services.AddSingleton<IClock, SystemClock>();
|
|
builder.Services.AddSingleton<PairingService>();
|
|
builder.Services.AddSingleton<TrustedDeviceStore>();
|
|
builder.Services.AddSingleton<AuditLog>();
|
|
builder.Services.AddSingleton(serviceProvider =>
|
|
{
|
|
var options = serviceProvider.GetRequiredService<IOptions<AgentOptions>>().Value;
|
|
return new ProjectStore(options.DataRoot);
|
|
});
|
|
builder.Services.AddSingleton<ProjectRegistry>();
|
|
builder.Services.AddSingleton<SessionRegistry>();
|
|
builder.Services.AddSingleton<IConPtySessionFactory, ConPtySessionFactory>();
|
|
builder.Services.AddSingleton<ISessionHost, PowerShellSessionHost>();
|
|
builder.Services.AddSingleton<ITerminalDiagnosticsSink, LoggingTerminalDiagnosticsSink>();
|
|
builder.Services.AddSingleton(serviceProvider =>
|
|
{
|
|
var options = serviceProvider.GetRequiredService<IOptions<AgentOptions>>().Value;
|
|
return new SessionHistoryStore(options.DataRoot);
|
|
});
|
|
// Task 2 uses ASP.NET Core's local development certificate so HttpsPort is a truthful HTTPS listener.
|
|
builder.WebHost.ConfigureKestrel(kestrel =>
|
|
{
|
|
AgentEndpointConfiguration.ConfigureHttpsEndpoint(kestrel, agentOptions);
|
|
});
|
|
|
|
var app = builder.Build();
|
|
agentOptions = app.Services.GetRequiredService<IOptions<AgentOptions>>().Value;
|
|
|
|
Directory.CreateDirectory(agentOptions.DataRoot);
|
|
|
|
app.MapGet("/health", () => Results.Json(new { status = "ok" }));
|
|
app.MapPairingEndpoints();
|
|
app.MapProjectEndpoints();
|
|
app.MapSessionEndpoints();
|
|
app.MapTerminalSocket();
|
|
|
|
app.Run();
|
|
|
|
public partial class Program;
|