Skip to content

Commit

Permalink
track whether last updated succeeded
Browse files Browse the repository at this point in the history
  • Loading branch information
drittich committed Aug 16, 2024
1 parent 51161a7 commit 4d128de
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions DnsTube.Service/Worker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public class WorkerService : BackgroundService
private readonly IConfiguration _configuration;
private readonly IServerSentEventsService _serverSentEventsService;
private static bool isManualUpdate = false;
private static bool lastUpdateSuccessful = false;

public static DateTimeOffset LastRun;
public static DateTimeOffset NextRun;
Expand Down Expand Up @@ -116,14 +117,14 @@ await _serverSentEventsService.SendEventAsync(new ServerSentEvent
}
else
{
if (ipAddressChanged || isManualUpdate)
if (ipAddressChanged || isManualUpdate || !lastUpdateSuccessful)
{
if (isManualUpdate)
isManualUpdate = false;

var selectedDomainsValid = await _cloudflareService.ValidateSelectedDomainsAsync();
if (selectedDomainsValid)
await DoUpdateAsync(currentPublicIpv4Address, currentPublicIpv6Address);
lastUpdateSuccessful = await DoUpdateAsync(currentPublicIpv4Address, currentPublicIpv6Address);

await _serverSentEventsService.SendEventAsync(new ServerSentEvent
{
Expand Down Expand Up @@ -183,17 +184,20 @@ private async Task<string> GetIpAddressAsync(IpSupport ipSupport, string? previo
return currentPublicAddress;
}

private async Task DoUpdateAsync(string? publicIpv4Address, string? publicIpv6Address)
private async Task<bool> DoUpdateAsync(string? publicIpv4Address, string? publicIpv6Address)
{
var settings = await _settingsService.GetAsync();
var updateSuccessful = false;

// if IPv6-only support was not specified, do the IPv4 update
if (settings.ProtocolSupport != IpSupport.IPv6)
await _cloudflareService.UpdateDnsRecordsAsync(IpSupport.IPv4, publicIpv4Address);
updateSuccessful = await _cloudflareService.UpdateDnsRecordsAsync(IpSupport.IPv4, publicIpv4Address);

// if IPv4-only support was not specified, do the IPv6 update
if (settings.ProtocolSupport != IpSupport.IPv4)
await _cloudflareService.UpdateDnsRecordsAsync(IpSupport.IPv6, publicIpv6Address);
updateSuccessful = await _cloudflareService.UpdateDnsRecordsAsync(IpSupport.IPv6, publicIpv6Address);

return updateSuccessful;
}

public static async Task RequestManualUpdateAsync(ILogService logService)
Expand Down

0 comments on commit 4d128de

Please sign in to comment.