From 62b07305027716e22903194713ccf6c1b6918618 Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Mon, 11 Nov 2024 15:56:44 +0100 Subject: [PATCH] use claims instead of ip --- .../Controllers/SpeedTestController.cs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/MareSynchronosServer/MareSynchronosStaticFilesServer/Controllers/SpeedTestController.cs b/MareSynchronosServer/MareSynchronosStaticFilesServer/Controllers/SpeedTestController.cs index 7af1663..b27602f 100644 --- a/MareSynchronosServer/MareSynchronosStaticFilesServer/Controllers/SpeedTestController.cs +++ b/MareSynchronosServer/MareSynchronosStaticFilesServer/Controllers/SpeedTestController.cs @@ -1,6 +1,6 @@ using MareSynchronos.API.Routes; -using MareSynchronosShared; using MareSynchronosShared.Services; +using MareSynchronosShared.Utils; using MareSynchronosShared.Utils.Configuration; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; @@ -11,26 +11,23 @@ namespace MareSynchronosStaticFilesServer.Controllers; public class SpeedTestController : ControllerBase { private readonly IMemoryCache _memoryCache; - private readonly IHttpContextAccessor _httpContextAccessor; private readonly IConfigurationService _configurationService; private const string RandomByteDataName = "SpeedTestRandomByteData"; private static readonly SemaphoreSlim _speedtestSemaphore = new(10, 10); - public SpeedTestController(ILogger logger, - IMemoryCache memoryCache, IHttpContextAccessor httpContextAccessor, + public SpeedTestController(ILogger logger, IMemoryCache memoryCache, IConfigurationService configurationService) : base(logger) { _memoryCache = memoryCache; - _httpContextAccessor = httpContextAccessor; _configurationService = configurationService; } [HttpGet(MareFiles.Speedtest_Run)] public async Task DownloadTest(CancellationToken cancellationToken) { - var ip = _httpContextAccessor.GetIpAddress(); + var user = HttpContext.User.Claims.First(f => string.Equals(f.Type, MareClaimTypes.Uid, StringComparison.Ordinal)).Value; var speedtestLimit = _configurationService.GetValueOrDefault(nameof(StaticFilesServerConfiguration.SpeedTestHoursRateLimit), 6); - if (_memoryCache.TryGetValue(ip, out var value)) + if (_memoryCache.TryGetValue(user, out var value)) { var hoursRemaining = value.Subtract(DateTime.UtcNow).TotalHours; return StatusCode(429, $"Can perform speedtest every {speedtestLimit} hours. {hoursRemaining:F2} hours remain."); @@ -41,7 +38,7 @@ public class SpeedTestController : ControllerBase try { var expiry = DateTime.UtcNow.Add(TimeSpan.FromHours(speedtestLimit)); - _memoryCache.Set(ip, expiry, TimeSpan.FromHours(speedtestLimit)); + _memoryCache.Set(user, expiry, TimeSpan.FromHours(speedtestLimit)); var randomByteData = _memoryCache.GetOrCreate(RandomByteDataName, (entry) => {