using EasyNetQ; using MalwareMultiScan.Api.Services; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.HttpOverrides; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.OpenApi.Models; using MongoDB.Driver; namespace MalwareMultiScan.Api { public class Startup { private readonly IConfiguration _configuration; public Startup(IConfiguration configuration) { _configuration = configuration; } public void ConfigureServices(IServiceCollection services) { services.AddSingleton(x => RabbitHutch.CreateBus(_configuration.GetConnectionString("RabbitMQ"))); services.AddSingleton(); services.AddSingleton(); services.AddSingleton( serviceProvider => { var db = new MongoClient(_configuration.GetConnectionString("Mongo")); return db.GetDatabase( _configuration.GetValue("DatabaseName")); }); services.AddControllers(); services.AddHttpClient(); services.AddSwaggerGen(options => { options.SwaggerDoc("MalwareMultiScan", new OpenApiInfo { Title = "MalwareMultiScan", Version = "1.0.0" }); }); services.AddHostedService(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseRouting(); var forwardingOptions = new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto }; forwardingOptions.KnownNetworks.Clear(); forwardingOptions.KnownProxies.Clear(); app.UseForwardedHeaders(forwardingOptions); app.UseEndpoints(endpoints => endpoints.MapControllers()); app.UseSwagger(); app.UseSwaggerUI(options => { options.DocumentTitle = "MalwareMultiScan"; options.SwaggerEndpoint( $"/swagger/{options.DocumentTitle}/swagger.json", options.DocumentTitle); }); } } }