fix: harden admin system fallback and benchmark review
This commit is contained in:
@@ -65,6 +65,50 @@ public sealed class AdminSystemController : ControllerBase
|
||||
return trimmed;
|
||||
}
|
||||
|
||||
private EmailSettingsSnapshot BuildFallbackEmailSettingsSnapshot()
|
||||
{
|
||||
var host = (_cfg["Email:SmtpHost"] ?? string.Empty).Trim();
|
||||
var user = (_cfg["Email:SmtpUser"] ?? string.Empty).Trim();
|
||||
var password = (_cfg["Email:SmtpPassword"] ?? string.Empty).Trim();
|
||||
var from = (_cfg["Email:From"] ?? user).Trim();
|
||||
var fromName = (_cfg["Email:FromName"] ?? "Jobbjakt").Trim();
|
||||
var port = _cfg.GetValue("Email:SmtpPort", 587);
|
||||
if (port <= 0) port = 587;
|
||||
var enableSsl = _cfg.GetValue("Email:SmtpEnableSsl", true);
|
||||
var timeoutMs = _cfg.GetValue("Email:SmtpTimeoutMs", 15000);
|
||||
if (timeoutMs <= 0) timeoutMs = 15000;
|
||||
var enabled = _cfg.GetValue("Email:Enabled", false);
|
||||
|
||||
return new EmailSettingsSnapshot(
|
||||
Enabled: enabled,
|
||||
Host: host,
|
||||
Port: port,
|
||||
User: user,
|
||||
Password: password,
|
||||
From: from,
|
||||
FromName: fromName,
|
||||
EnableSsl: enableSsl,
|
||||
TimeoutMs: timeoutMs,
|
||||
UsesOverrides: false,
|
||||
HasPassword: !string.IsNullOrWhiteSpace(password));
|
||||
}
|
||||
|
||||
private EmailSettingsAdminDto BuildFallbackEmailSettings(string? reason = null)
|
||||
{
|
||||
var snapshot = BuildFallbackEmailSettingsSnapshot();
|
||||
return new EmailSettingsAdminDto(
|
||||
Enabled: snapshot.Enabled,
|
||||
Host: snapshot.Host,
|
||||
Port: snapshot.Port,
|
||||
User: snapshot.User,
|
||||
From: snapshot.From,
|
||||
FromName: string.IsNullOrWhiteSpace(reason) ? snapshot.FromName : $"{snapshot.FromName} (fallback)",
|
||||
EnableSsl: snapshot.EnableSsl,
|
||||
TimeoutMs: snapshot.TimeoutMs,
|
||||
UsesOverrides: snapshot.UsesOverrides,
|
||||
HasPassword: snapshot.HasPassword);
|
||||
}
|
||||
|
||||
[HttpPost("ai/probe")]
|
||||
[HttpPost("summarizer/probe")]
|
||||
public async Task<IActionResult> RunSummarizerProbe(CancellationToken cancellationToken)
|
||||
@@ -76,7 +120,14 @@ public sealed class AdminSystemController : ControllerBase
|
||||
[HttpGet("email-settings")]
|
||||
public async Task<ActionResult<EmailSettingsAdminDto>> GetEmailSettings(CancellationToken cancellationToken)
|
||||
{
|
||||
return Ok(await _emailSettings.GetAdminDtoAsync(cancellationToken));
|
||||
try
|
||||
{
|
||||
return Ok(await _emailSettings.GetAdminDtoAsync(cancellationToken));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return Ok(BuildFallbackEmailSettings(ex.Message));
|
||||
}
|
||||
}
|
||||
|
||||
[HttpPut("email-settings")]
|
||||
@@ -232,7 +283,15 @@ public sealed class AdminSystemController : ControllerBase
|
||||
|
||||
var gmailConfigured = !string.IsNullOrWhiteSpace((_cfg["Google:GmailClientSecret"] ?? string.Empty).Trim())
|
||||
&& !string.IsNullOrWhiteSpace((_cfg["Google:GmailRedirectUri"] ?? string.Empty).Trim());
|
||||
var emailSettings = await _emailSettings.GetSnapshotAsync(cancellationToken);
|
||||
EmailSettingsSnapshot emailSettings;
|
||||
try
|
||||
{
|
||||
emailSettings = await _emailSettings.GetSnapshotAsync(cancellationToken);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
emailSettings = BuildFallbackEmailSettingsSnapshot();
|
||||
}
|
||||
|
||||
return Ok(new SystemStatusDto(
|
||||
Environment: _env.EnvironmentName,
|
||||
|
||||
Reference in New Issue
Block a user