Replace WebRequest in AgentSocket.

This commit is contained in:
Jared Goodwin 2022-07-18 19:34:20 -07:00
parent 2437ed9c88
commit cedb8281cb
3 changed files with 13 additions and 20 deletions

View File

@ -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);
}

View File

@ -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;

View File

@ -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);
}