diff --git a/Agent/Program.cs b/Agent/Program.cs index 7573dd6c..88bcf47f 100644 --- a/Agent/Program.cs +++ b/Agent/Program.cs @@ -88,6 +88,7 @@ namespace Remotely.Agent Logger.Write($"Websocket closed. Reconnecting in {waitTime / 1000} seconds..."); await Task.Delay(waitTime); await Services.GetRequiredService().Connect(); + await Services.GetRequiredService().CheckForUpdates(); } } catch (Exception ex) diff --git a/Agent/Services/Updater.cs b/Agent/Services/Updater.cs index 87afbc34..c86bfb97 100644 --- a/Agent/Services/Updater.cs +++ b/Agent/Services/Updater.cs @@ -21,6 +21,7 @@ namespace Remotely.Agent.Services } private ConfigService ConfigService { get; } + private SemaphoreSlim UpdateLock { get; } = new SemaphoreSlim(1); private System.Timers.Timer UpdateTimer { get; } = new System.Timers.Timer(TimeSpan.FromHours(6).TotalMilliseconds); @@ -40,18 +41,13 @@ namespace Remotely.Agent.Services { try { + await UpdateLock.WaitAsync(); + var hc = new HttpClient(); var wc = new WebClient(); var connectionInfo = ConfigService.GetConnectionInfo(); - var response = await hc.GetAsync(connectionInfo.Host + $"/API/AgentUpdate/ServerVerificationToken/{connectionInfo.DeviceID}"); - if (await response.Content.ReadAsStringAsync() != connectionInfo.ServerVerificationToken) - { - Logger.Write("Server responded with incorrect verification token. Skipping update."); - return; - } - - response = await hc.GetAsync(connectionInfo.Host + $"/API/AgentUpdate/CurrentVersion"); + var response = await hc.GetAsync(connectionInfo.Host + $"/API/AgentUpdate/CurrentVersion"); var latestVersion = response.Content.ReadAsStringAsync().Result; var thisVersion = FileVersionInfo.GetVersionInfo("Remotely_Agent.dll").FileVersion.ToString().Trim(); if (thisVersion != latestVersion) @@ -97,6 +93,10 @@ namespace Remotely.Agent.Services { Logger.Write(ex); } + finally + { + UpdateLock.Release(); + } } } } diff --git a/Server/API/AgentUpdateController.cs b/Server/API/AgentUpdateController.cs index e147e80b..51c18482 100644 --- a/Server/API/AgentUpdateController.cs +++ b/Server/API/AgentUpdateController.cs @@ -32,12 +32,6 @@ namespace Remotely.Server.API return System.IO.File.ReadAllText(filePath).Trim(); } - [HttpGet("[action]/{deviceID}")] - public string ServerVerificationToken(string deviceID) - { - return DataService.GetDevice(deviceID)?.ServerVerificationToken; - } - [HttpGet("[action]")] public int UpdateWindow() {