using System.Diagnostics.CodeAnalysis; using System.Net; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.HttpOverrides; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using MongoDB.Driver; using MongoDB.Driver.GridFS; namespace MalwareMultiScan.Api.Extensions { [ExcludeFromCodeCoverage] internal static class ServiceCollectionExtensions { internal static void AddMongoDb(this IServiceCollection services, IConfiguration configuration) { var client = new MongoClient(configuration.GetConnectionString("Mongo")); var db = client.GetDatabase(configuration.GetValue("DatabaseName")); services.AddSingleton(client); services.AddSingleton(db); services.AddSingleton(new GridFSBucket(db)); } internal static void AddDockerForwardedHeadersOptions(this IServiceCollection services) { services.Configure(options => { options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("::ffff:10.0.0.0"), 104)); options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("::ffff:192.168.0.0"), 112)); options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("::ffff:172.16.0.0"), 108)); }); } } }