2020-10-26 16:20:47 +02:00

82 lines
2.5 KiB
C#

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<ScanBackendService>();
services.AddSingleton<ScanResultService>();
services.AddSingleton(
serviceProvider =>
{
var db = new MongoClient(_configuration.GetConnectionString("Mongo"));
return db.GetDatabase(
_configuration.GetValue<string>("DatabaseName"));
});
services.AddControllers();
services.AddHttpClient();
services.AddSwaggerGen(options =>
{
options.SwaggerDoc("MalwareMultiScan",
new OpenApiInfo
{
Title = "MalwareMultiScan",
Version = "1.0.0"
});
});
services.AddHostedService<ReceiverHostedService>();
}
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);
});
}
}
}