2020-10-26 16:20:47 +02:00
|
|
|
using System;
|
2020-10-29 16:09:56 +02:00
|
|
|
using System.Diagnostics.CodeAnalysis;
|
2020-11-01 22:25:48 +02:00
|
|
|
using MalwareMultiScan.Backends.Backends;
|
|
|
|
using MalwareMultiScan.Backends.Backends.Interfaces;
|
2020-10-29 16:09:56 +02:00
|
|
|
using MalwareMultiScan.Backends.Services.Implementations;
|
|
|
|
using MalwareMultiScan.Backends.Services.Interfaces;
|
|
|
|
using Microsoft.Extensions.Configuration;
|
2020-10-26 16:20:47 +02:00
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
|
2020-10-26 17:06:29 +02:00
|
|
|
namespace MalwareMultiScan.Backends.Extensions
|
2020-10-26 16:20:47 +02:00
|
|
|
{
|
2020-10-29 16:09:56 +02:00
|
|
|
/// <summary>
|
|
|
|
/// Extensions for IServiceCollection.
|
|
|
|
/// </summary>
|
|
|
|
[ExcludeFromCodeCoverage]
|
2020-10-26 16:20:47 +02:00
|
|
|
public static class ServiceCollectionExtensions
|
|
|
|
{
|
2020-10-29 16:09:56 +02:00
|
|
|
/// <summary>
|
|
|
|
/// Add scanning backend.
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="services">Service collection.</param>
|
|
|
|
/// <param name="configuration">Configuration.</param>
|
|
|
|
/// <exception cref="ArgumentOutOfRangeException">Unknown backend.</exception>
|
2020-11-01 22:25:48 +02:00
|
|
|
public static void AddScanBackend(this IServiceCollection services, IConfiguration configuration)
|
2020-10-29 16:09:56 +02:00
|
|
|
{
|
|
|
|
services.AddSingleton<IProcessRunner, ProcessRunner>();
|
2020-10-26 17:06:29 +02:00
|
|
|
|
2020-11-01 22:25:48 +02:00
|
|
|
switch (configuration.GetValue<string>("BACKEND_ID"))
|
2020-10-26 16:20:47 +02:00
|
|
|
{
|
2020-11-01 22:25:48 +02:00
|
|
|
case "clamav":
|
2020-10-29 16:09:56 +02:00
|
|
|
services.AddSingleton<IScanBackend, ClamavScanBackend>();
|
|
|
|
break;
|
2020-11-01 22:25:48 +02:00
|
|
|
case "drweb":
|
2020-10-29 16:09:56 +02:00
|
|
|
services.AddSingleton<IScanBackend, DrWebScanBackend>();
|
|
|
|
break;
|
2020-11-01 22:25:48 +02:00
|
|
|
case "kes":
|
2020-10-29 16:09:56 +02:00
|
|
|
services.AddSingleton<IScanBackend, KesScanBackend>();
|
|
|
|
break;
|
2020-11-01 22:25:48 +02:00
|
|
|
case "comodo":
|
2020-10-29 16:09:56 +02:00
|
|
|
services.AddSingleton<IScanBackend, ComodoScanBackend>();
|
|
|
|
break;
|
2020-11-01 22:25:48 +02:00
|
|
|
case "sophos":
|
2020-10-29 16:09:56 +02:00
|
|
|
services.AddSingleton<IScanBackend, SophosScanBackend>();
|
|
|
|
break;
|
2020-11-01 22:25:48 +02:00
|
|
|
case "mcafee":
|
2020-10-29 16:09:56 +02:00
|
|
|
services.AddSingleton<IScanBackend, McAfeeScanBackend>();
|
|
|
|
break;
|
2020-11-01 22:25:48 +02:00
|
|
|
case "windows-defender":
|
|
|
|
services.AddSingleton<IScanBackend, WindowsDefenderScanBackend>();
|
|
|
|
break;
|
2020-10-29 16:09:56 +02:00
|
|
|
default:
|
2020-11-01 22:25:48 +02:00
|
|
|
services.AddSingleton<IScanBackend, DummyScanBackend>();
|
|
|
|
break;
|
2020-10-29 16:09:56 +02:00
|
|
|
}
|
2020-10-26 16:20:47 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|