using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using MoonCore.Extensions; using Moonlight.ApiServer.Configuration; using Moonlight.ApiServer.Models; using Moonlight.ApiServer.Plugins; using MoonlightServers.ApiServer.Database; using MoonlightServers.ApiServer.Helpers; using MoonlightServers.ApiServer.Implementations.ServerAuthFilters; using MoonlightServers.ApiServer.Interfaces; namespace MoonlightServers.ApiServer.Startup; public class PluginStartup : IPluginStartup { public Task BuildApplication(IServiceProvider serviceProvider, IHostApplicationBuilder builder) { // Scan the current plugin assembly for di services builder.Services.AutoAddServices(); builder.Services.AddDbContext(); // Configure authentication for the remote endpoints builder.Services .AddAuthentication() .AddScheme("nodeAuthentication", null); var configuration = serviceProvider.GetRequiredService(); if (configuration.Frontend.EnableHosting) { builder.Services.AddSingleton(new FrontendConfigurationOption() { Scripts = [ "/_content/MoonlightServers.Frontend/js/XtermBlazor.min.js", "/_content/MoonlightServers.Frontend/js/addon-fit.js", "/_content/MoonlightServers.Frontend/js/moonlightServers.js" ], Styles = ["/_content/MoonlightServers.Frontend/css/XtermBlazor.min.css"] }); } // Add server auth filters builder.Services.AddSingleton(); builder.Services.AddScoped(); builder.Services.AddScoped(); return Task.CompletedTask; } public Task ConfigureApplication(IServiceProvider serviceProvider, IApplicationBuilder app) => Task.CompletedTask; public Task ConfigureEndpoints(IServiceProvider serviceProvider, IEndpointRouteBuilder routeBuilder) => Task.CompletedTask; }