mirror of
https://github.com/immense/Remotely.git
synced 2025-10-26 11:27:15 +00:00
53 lines
2.2 KiB
C#
53 lines
2.2 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using Remotely.Server.Services;
|
|
using Remotely.Shared.Models;
|
|
using Remotely.Shared.Services;
|
|
|
|
namespace Remotely.Server.API;
|
|
|
|
[Route("api/custom-binaries")]
|
|
[ApiController]
|
|
public class CustomBinariesController(
|
|
IDataService _dataService,
|
|
IWebHostEnvironment _hostingEnvironment,
|
|
IEmbeddedServerDataProvider _embeddedData) : ControllerBase
|
|
{
|
|
[HttpGet("win-x86/desktop/{organizationId}")]
|
|
public async Task<IActionResult> GetWinX86Desktop(string organizationId)
|
|
{
|
|
var embeddedData = await GetEmbeddedData(organizationId);
|
|
var filePath = Path.Combine(_hostingEnvironment.ContentRootPath, "AppData", "Win-x86", "Remotely_Desktop.exe");
|
|
var fileName = _embeddedData.GetEncodedFileName(filePath, embeddedData);
|
|
var rs = System.IO.File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
|
|
return File(rs, "application/octet-stream", fileName);
|
|
}
|
|
|
|
[HttpGet("win-x64/desktop/{organizationId}")]
|
|
public async Task<IActionResult> GetWinX64Desktop(string organizationId)
|
|
{
|
|
var embeddedData = await GetEmbeddedData(organizationId);
|
|
var filePath = Path.Combine(_hostingEnvironment.ContentRootPath, "AppData", "Win-x64", "Remotely_Desktop.exe");
|
|
var fileName = _embeddedData.GetEncodedFileName(filePath, embeddedData);
|
|
var rs = System.IO.File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
|
|
return File(rs, "application/octet-stream", fileName);
|
|
}
|
|
|
|
private async Task<EmbeddedServerData> GetEmbeddedData(string? organizationId)
|
|
{
|
|
var defaultOrg = await _dataService.GetDefaultOrganization();
|
|
|
|
// The default org will be used if unspecified, so might as well save the
|
|
// space in the file name.
|
|
if (defaultOrg.IsSuccess &&
|
|
defaultOrg.Value.ID.Equals(organizationId, StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
organizationId = null;
|
|
}
|
|
|
|
var settings = await _dataService.GetSettings();
|
|
var effectiveScheme = settings.ForceClientHttps ? "https" : Request.Scheme;
|
|
var serverUrl = $"{effectiveScheme}://{Request.Host}";
|
|
return new EmbeddedServerData(new Uri(serverUrl), organizationId);
|
|
}
|
|
}
|