blob: 01195277887c7d0bab247d811126afeca35cdbf6 (
plain) (
blame)
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
|
using LibMatrix.Homeservers;
namespace MatrixAntiDmSpam;
public class PolicyListFetcher(ILogger<PolicyListFetcher> logger, AntiDmSpamConfiguration config, AuthenticatedHomeserverGeneric homeserver) : IHostedService {
public async Task StartAsync(CancellationToken cancellationToken) {
logger.LogInformation("Starting policy list fetcher");
await EnsurePolicyListsJoined();
}
public async Task StopAsync(CancellationToken cancellationToken) {
logger.LogInformation("Stopping policy list fetcher");
}
private async Task EnsurePolicyListsJoined() {
var joinedRooms = await homeserver.GetJoinedRooms();
var expectedPolicyRooms = config.PolicyLists;
var missingRooms = expectedPolicyRooms.Where(room => !joinedRooms.Any(r => r.RoomId == room.RoomId)).ToList();
foreach (var room in missingRooms) {
logger.LogInformation("Joining policy list room {}", room.RoomId);
await homeserver.GetRoom(room.RoomId).JoinAsync(room.Vias);
}
}
}
|