2022-03-07 13:38:28 +00:00
|
|
|
|
using nClam;
|
|
|
|
|
using VoidCat.Model;
|
|
|
|
|
using VoidCat.Services.Abstractions;
|
|
|
|
|
|
|
|
|
|
namespace VoidCat.Services.VirusScanner;
|
|
|
|
|
|
|
|
|
|
public static class VirusScannerStartup
|
|
|
|
|
{
|
|
|
|
|
public static void AddVirusScanner(this IServiceCollection services, VoidSettings settings)
|
|
|
|
|
{
|
2022-06-13 10:29:16 +00:00
|
|
|
|
if (settings.Postgres != default)
|
|
|
|
|
{
|
|
|
|
|
services.AddTransient<IVirusScanStore, PostgresVirusScanStore>();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
services.AddTransient<IVirusScanStore, CacheVirusScanStore>();
|
|
|
|
|
}
|
2022-03-07 14:43:19 +00:00
|
|
|
|
|
2022-03-07 13:38:28 +00:00
|
|
|
|
var avSettings = settings.VirusScanner;
|
|
|
|
|
if (avSettings != default)
|
|
|
|
|
{
|
|
|
|
|
// load ClamAV scanner
|
|
|
|
|
if (avSettings.ClamAV != default)
|
|
|
|
|
{
|
|
|
|
|
services.AddTransient<IClamClient>((_) =>
|
2022-03-07 14:43:19 +00:00
|
|
|
|
new ClamClient(avSettings.ClamAV.Endpoint.Host, avSettings.ClamAV.Endpoint.Port)
|
|
|
|
|
{
|
|
|
|
|
MaxStreamSize = avSettings.ClamAV.MaxStreamSize ?? 26240000
|
|
|
|
|
});
|
2022-03-07 13:38:28 +00:00
|
|
|
|
services.AddTransient<IVirusScanner, ClamAvScanner>();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|