.net update, implemented base session, added test client

This commit is contained in:
Kevin Kai Berthold 2025-12-03 18:05:41 +01:00
parent e0b732267b
commit 7b147569e0
11 changed files with 371 additions and 41 deletions

View file

@ -5,16 +5,17 @@ using System.Net.Sockets;
namespace SmtpRelay;
public class SmtpServer(IServiceScopeFactory scopeFactory, ILogger<SmtpServer> logger)
public class SmtpServer<TSession>(IServiceScopeFactory scopeFactory, ILogger<SmtpServer<TSession>> logger)
where TSession : SmtpSessionBase
{
private readonly ILogger<SmtpServer> _logger = logger;
private readonly IServiceScopeFactory _scopeFactory = scopeFactory;
protected readonly IServiceScopeFactory _scopeFactory = scopeFactory;
protected readonly ILogger<SmtpServer<TSession>> _logger = logger;
public bool IsRunning { get; private set; } = false;
public async Task RunAsync(SmtpConfig config, CancellationToken cancellationToken)
{
if (IsRunning)
if (IsRunning)
return;
var ep = new IPEndPoint(IPAddress.Parse(config.Host), config.Port);
@ -48,7 +49,7 @@ public class SmtpServer(IServiceScopeFactory scopeFactory, ILogger<SmtpServer> l
_logger.LogError(ex.ToString());
}
}
// set listener state
IsRunning = false;
}
@ -57,7 +58,7 @@ public class SmtpServer(IServiceScopeFactory scopeFactory, ILogger<SmtpServer> l
{
// create session
using var scope = _scopeFactory.CreateScope();
var session = scope.ServiceProvider.GetRequiredService<SmtpSession>();
var session = scope.ServiceProvider.GetRequiredService<TSession>();
try
{