Got at least one data fetching method working; turns out, we can't use a patched LogicStack to get the data

This commit is contained in:
2026-01-14 22:11:11 +01:00
parent 40a8431464
commit 3f7122d30a
350 changed files with 41444 additions and 119 deletions

View File

@@ -0,0 +1,31 @@
using System;
using System.Collections.Concurrent;
using System.Threading.Tasks;
using Swan.Threading;
namespace EmbedIO.Security.Internal
{
internal static class IPBanningExecutor
{
private static readonly ConcurrentDictionary<string, IPBanningConfiguration> Configurations = new ConcurrentDictionary<string, IPBanningConfiguration>();
private static readonly PeriodicTask Purger = new PeriodicTask(TimeSpan.FromMinutes(1), ct => {
foreach (var conf in Configurations.Keys)
{
if (Configurations.TryGetValue(conf, out var instance))
instance.Purge();
}
return Task.CompletedTask;
});
public static IPBanningConfiguration RetrieveInstance(string baseRoute, int banMinutes) =>
Configurations.GetOrAdd(baseRoute, x => new IPBanningConfiguration(banMinutes));
public static bool TryGetInstance(string baseRoute, out IPBanningConfiguration configuration) =>
Configurations.TryGetValue(baseRoute, out configuration);
public static bool TryRemoveInstance(string baseRoute) =>
Configurations.TryRemove(baseRoute, out _);
}
}