12345678910111213141516171819202122232425262728293031323334353637 |
- using Microsoft.AspNetCore.Http.Extensions;
- using NetBootServerCore.Components.UI.Cui;
- using NetBootServerCore.Components.UI.Cui.Logging;
- using System.Collections.Immutable;
- namespace NetBootServerCore.Components.UI.Http
- {
- public class HttpServer : NbsComponentBase
- {
- private readonly LiveConsole _liveConsole;
- private readonly IReadOnlyCollection<IHttpRequestProcessor> _processors;
- public HttpServer(LiveConsole liveConsole, IEnumerable<IHttpRequestProcessor> processors) : base(liveConsole.CreateLogger("HTTP"))
- {
- _liveConsole = liveConsole;
- _processors = processors.ToImmutableArray();
- }
- protected override void OnStart()
- {
- var builder = WebApplication.CreateBuilder();
- var app = builder.Build();
- app.Run(async context =>
- {
- context.Response.Headers.Server = nameof(NetBootServerCore);
- if (_processors.Any(processor => processor.ProcessRequest(context))) return;
- context.Response.StatusCode = 404;
- Logger.LogWarn($"404 {context.Request.GetEncodedPathAndQuery()}");
- });
- app.RunAsync();
- }
- }
- }
|