From 5e13af7480fb40ff26a3e266217c0db702ee4b2f Mon Sep 17 00:00:00 2001 From: Rory& Date: Thu, 15 May 2025 23:09:41 +0200 Subject: Some various improvements, redo configuration, clean up example config --- MatrixAntiDmSpam.Core/AntiDmSpamConfiguration.cs | 2 +- MatrixAntiDmSpam.Core/PolicyExecutor.cs | 11 +++++++---- MatrixAntiDmSpam.Core/PolicyListFetcher.cs | 15 ++++----------- 3 files changed, 12 insertions(+), 16 deletions(-) (limited to 'MatrixAntiDmSpam.Core') 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 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 logger, AntiDmSpamConfiguration config, AuthenticatedHomeserverGeneric homeserver, PolicyStore policyStore) +public class PolicyListFetcher(ILogger 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 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, -- cgit 1.5.1