about summary refs log tree commit diff
path: root/MatrixAntiDmSpam.Core
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2025-05-15 23:09:41 +0200
committerRory& <root@rory.gay>2025-05-15 23:10:54 +0200
commit5e13af7480fb40ff26a3e266217c0db702ee4b2f (patch)
treed00d1d104df7d3c29e3b9b8d3974d84eac4e8749 /MatrixAntiDmSpam.Core
parentFix bug removing all policies that arent user added, theoretically fix missin... (diff)
downloadMatrixAntiDmSpam-5e13af7480fb40ff26a3e266217c0db702ee4b2f.tar.xz
Some various improvements, redo configuration, clean up example config
Diffstat (limited to 'MatrixAntiDmSpam.Core')
-rw-r--r--MatrixAntiDmSpam.Core/AntiDmSpamConfiguration.cs2
-rw-r--r--MatrixAntiDmSpam.Core/PolicyExecutor.cs11
-rw-r--r--MatrixAntiDmSpam.Core/PolicyListFetcher.cs15
3 files changed, 12 insertions, 16 deletions
diff --git a/MatrixAntiDmSpam.Core/AntiDmSpamConfiguration.cs b/MatrixAntiDmSpam.Core/AntiDmSpamConfiguration.cs

index 1ce901e..ff6814f 100644 --- a/MatrixAntiDmSpam.Core/AntiDmSpamConfiguration.cs +++ b/MatrixAntiDmSpam.Core/AntiDmSpamConfiguration.cs
@@ -8,7 +8,7 @@ public class AntiDmSpamConfiguration { public bool LogInviteDataAsFile { get; set; } = true; public bool IgnoreBannedUsers { get; set; } = false; public bool ReportBlockedInvites { get; set; } = false; - public TimeSpan MinimumSyncTime { get; set; } = TimeSpan.Zero; + public TimeSpan? MinimumSyncTime { get; set; } public required List<PolicyRoomReference> PolicyLists { get; set; } diff --git a/MatrixAntiDmSpam.Core/PolicyExecutor.cs b/MatrixAntiDmSpam.Core/PolicyExecutor.cs
index 96ec344..9d6a843 100644 --- a/MatrixAntiDmSpam.Core/PolicyExecutor.cs +++ b/MatrixAntiDmSpam.Core/PolicyExecutor.cs
@@ -161,6 +161,8 @@ public class PolicyExecutor( #endregion #region Feature: Report blocked invites + + #endregion @@ -213,17 +215,18 @@ public class PolicyExecutor( } if (!policyMatches) return null; - logger.LogWarning("[{}] Rejecting invite to {}, matching {} {}", homeserver.WhoAmI.UserId, invite.RoomId, policy.GetType().GetFriendlyName(), - policy.ToJson(ignoreNull: true)); + var policyRoom = config.PolicyLists.First(x=>x.RoomId == policyEvent.RoomId); + logger.LogWarning("[{}] Rejecting invite to {}, matching {} in {}: {}", homeserver.WhoAmI.UserId, invite.RoomId, policy.GetType().GetFriendlyName(), + policyRoom.Name, policy.ToJson(ignoreNull: true)); return Task.Run(async () => { if (_logRoom is not null) { - string roomName = await invite.TryGetRoomNameAsync(); + var roomName = await invite.TryGetRoomNameAsync(); await roomInviteHandler.RejectInvite(invite, new MessageBuilder() .WithColoredBody("#FF0000", cb => cb.WithBody("Rejecting invite to ").WithMention(invite.RoomId, roomName) - .WithBody($", matching {policy.GetType().GetFriendlyName().ToLowerInvariant()}.") + .WithBody($", matching {policy.GetType().GetFriendlyName().ToLowerInvariant()} in {policyRoom.Name}.") .WithNewline()) .WithCollapsibleSection("Policy JSON", cb => cb.WithCodeBlock(policy.ToJson(ignoreNull: true), "json")) ); diff --git a/MatrixAntiDmSpam.Core/PolicyListFetcher.cs b/MatrixAntiDmSpam.Core/PolicyListFetcher.cs
index 31b8835..51db44f 100644 --- a/MatrixAntiDmSpam.Core/PolicyListFetcher.cs +++ b/MatrixAntiDmSpam.Core/PolicyListFetcher.cs
@@ -2,25 +2,17 @@ using LibMatrix.Filters; using LibMatrix.Helpers; using LibMatrix.Homeservers; using LibMatrix.RoomTypes; +using LibMatrix.Utilities.Bot; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; namespace MatrixAntiDmSpam.Core; -public class PolicyListFetcher(ILogger<PolicyListFetcher> logger, AntiDmSpamConfiguration config, AuthenticatedHomeserverGeneric homeserver, PolicyStore policyStore) +public class PolicyListFetcher(ILogger<PolicyListFetcher> logger, AntiDmSpamConfiguration config, AuthenticatedHomeserverGeneric homeserver, PolicyStore policyStore, LibMatrixBotConfiguration botConfig) : IHostedService { private CancellationTokenSource _cts = new(); public async Task StartAsync(CancellationToken cancellationToken) { - // _ = Enumerable.Range(0, 10_000_000).Select(x => { - // policyStore.AllPolicies.Add(Guid.NewGuid().ToString(), new UserPolicyRuleEventContent() { - // Entity = Guid.NewGuid().ToString() + x, - // Reason = "meow " + x, - // Recommendation = "m.ban" - // }); - // return 0; - // }).ToList(); - logger.LogInformation("Starting policy list fetcher"); await EnsurePolicyListsJoined(); _ = SyncPolicyLists().ContinueWith(x => { @@ -49,7 +41,8 @@ public class PolicyListFetcher(ILogger<PolicyListFetcher> logger, AntiDmSpamConf private async Task SyncPolicyLists() { var syncHelper = new SyncHelper(homeserver, logger) { Timeout = 30_000, - MinimumDelay = config.MinimumSyncTime, + SetPresence = botConfig.Presence, + MinimumDelay = config.MinimumSyncTime ?? TimeSpan.Zero, FilterId = (await homeserver.UploadFilterAsync(new SyncFilter { AccountData = SyncFilter.EventFilter.Empty, Presence = SyncFilter.EventFilter.Empty,