blob: c15f5a633221998ee583b116204cdd61cc53044c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
namespace VPNAuth.Server.Database;
public static class GarbageCollector
{
private static void CollectAuthRequests(Database db)
{
foreach (var authRequest in db.AuthRequests)
{
if ((DateTime.Now - authRequest.InitTime).TotalMinutes >= 5)
db.AuthRequests.Remove(authRequest);
}
}
private static void CollectTokens(Database db)
{
foreach (var accessToken in db.AccessTokens)
{
if ((DateTime.Now - accessToken.CreationTime).TotalDays >= 7)
db.AccessTokens.Remove(accessToken);
}
}
private static void CollectUserInformation(Database db)
{
Config config = Config.Read();
foreach (var dbUser in db.UserInformation)
{
if (config.Users!.All(configUser => configUser.Username != dbUser.Sub))
db.UserInformation.Remove(dbUser);
}
}
public static void StartLoop()
{
while (true)
{
using (var db = new Database())
{
CollectAuthRequests(db);
CollectTokens(db);
CollectUserInformation(db);
db.SaveChanges();
}
Task.Delay(60000).Wait(); // Wait 1 minute
}
}
public static void StartLoopAsync()
=> new Task(StartLoop).Start();
}
|