diff --git a/Agent/Services/AgentSocket.cs b/Agent/Services/AgentSocket.cs index df85348d..96acb19f 100644 --- a/Agent/Services/AgentSocket.cs +++ b/Agent/Services/AgentSocket.cs @@ -10,12 +10,8 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; -using System.Net; using System.Net.Http; -using System.Net.Http.Json; using System.Text; -using System.Text.Json; -using System.Threading; using System.Threading.Tasks; using System.Timers; @@ -30,7 +26,7 @@ namespace Remotely.Agent.Services private readonly ConfigService _configService; private readonly IDeviceInformationService _deviceInfoService; - + private readonly IHttpClientFactory _httpFactory; private readonly ScriptExecutor _scriptExecutor; private readonly Uninstaller _uninstaller; @@ -49,7 +45,8 @@ namespace Remotely.Agent.Services ChatClientService chatService, IAppLauncher appLauncher, IUpdater updater, - IDeviceInformationService deviceInfoService) + IDeviceInformationService deviceInfoService, + IHttpClientFactory httpFactory) { _configService = configService; _uninstaller = uninstaller; @@ -58,6 +55,7 @@ namespace Remotely.Agent.Services _chatService = chatService; _updater = updater; _deviceInfoService = deviceInfoService; + _httpFactory = httpFactory; } public bool IsConnected => _hubConnection?.State == HubConnectionState.Connected; public async Task Connect() @@ -414,21 +412,16 @@ namespace Remotely.Agent.Services foreach (var fileID in fileIDs) { var url = $"{_connectionInfo.Host}/API/FileSharing/{fileID}"; - var wr = WebRequest.CreateHttp(url); - wr.Headers[HttpRequestHeader.Authorization] = authToken; - using var response = await wr.GetResponseAsync(); - var cd = response.Headers["Content-Disposition"]; - var filename = cd - .Split(";") - .FirstOrDefault(x => x.Trim() - .StartsWith("filename")) - .Split("=")[1]; + using var client = _httpFactory.CreateClient(); + client.DefaultRequestHeaders.Add("Authorization", authToken); + using var response = await client.GetAsync(url); + var filename = response.Content.Headers.ContentDisposition.FileName; var legalChars = filename.ToCharArray().Where(x => !Path.GetInvalidFileNameChars().Any(y => x == y)); filename = new string(legalChars.ToArray()); - using var rs = response.GetResponseStream(); + using var rs = await response.Content.ReadAsStreamAsync(); using var fs = new FileStream(Path.Combine(sharedFilePath, filename), FileMode.Create); rs.CopyTo(fs); } diff --git a/Server.Installer/Services/ServerInstaller.cs b/Server.Installer/Services/ServerInstaller.cs index 67fecf16..46c0c7b4 100644 --- a/Server.Installer/Services/ServerInstaller.cs +++ b/Server.Installer/Services/ServerInstaller.cs @@ -42,12 +42,10 @@ namespace Server.Installer.Services "https://github.com/lucent-sea/Remotely/releases/latest/download/Remotely_Server_Linux-x64.zip"; using var httpClient = new HttpClient(); - - var headMessage = new HttpRequestMessage(HttpMethod.Head, releaseFile); - var response = await httpClient.SendAsync(headMessage); + var response = await httpClient.GetAsync(releaseFile); var contentLength = (double?)response.Content.Headers.ContentLength; - using var webStream = await httpClient.GetStreamAsync(releaseFile); + using var webStream = await response.Content.ReadAsStreamAsync(); using var fileStream = new FileStream(zipPath, FileMode.Create); var progress = 0; diff --git a/Server/Services/DataService.cs b/Server/Services/DataService.cs index b7cc9fc6..1b59c0b5 100644 --- a/Server/Services/DataService.cs +++ b/Server/Services/DataService.cs @@ -525,6 +525,8 @@ namespace Remotely.Server.Services progressCallback.Invoke((double)stream.Position / stream.Length, file.Name); } + progressCallback.Invoke(1, file.Name); + return await AddSharedFileInternal(file.Name, fileContents, file.ContentType, organizationID); }