mirror of
https://github.com/matrix-org/mjolnir.git
synced 2024-10-01 01:36:06 -04:00
Compare commits
7 Commits
4ec3f30069
...
768947529b
Author | SHA1 | Date | |
---|---|---|---|
|
768947529b | ||
|
0c75c17920 | ||
|
a51cd63dde | ||
|
f66ac77a79 | ||
|
d3f8c033b1 | ||
|
4f73da38b8 | ||
|
35f59771a9 |
@ -20,7 +20,6 @@ import { LogLevel, Permalinks, UserID } from "@vector-im/matrix-bot-sdk";
|
||||
import { NumberProtectionSetting } from "./ProtectionSettings";
|
||||
|
||||
export const DEFAULT_MAX_MENTIONS = 10;
|
||||
const USER_ID_SIGIL_REGEX = /(@|%40)/;
|
||||
|
||||
export class MentionSpam extends Protection {
|
||||
|
||||
@ -41,31 +40,14 @@ export class MentionSpam extends Protection {
|
||||
|
||||
public checkMentions(body: unknown|undefined, htmlBody: unknown|undefined, mentionArray: unknown|undefined): boolean {
|
||||
const max = this.settings.maxMentions.value;
|
||||
const minMessageLength = max * 3; // "@:a"
|
||||
if (Array.isArray(mentionArray)) {
|
||||
if (mentionArray.length > this.settings.maxMentions.value) {
|
||||
return true;
|
||||
}
|
||||
if (Array.isArray(mentionArray) && mentionArray.length > max) {
|
||||
return true;
|
||||
}
|
||||
if (typeof body === "string" && body.length > minMessageLength) {
|
||||
let found = 0;
|
||||
for (const word of body.split(/\s/)) {
|
||||
if (USER_ID_SIGIL_REGEX.test(word.trim())) {
|
||||
if (++found > max) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (typeof body === "string" && body.split('@').length - 1 > max) {
|
||||
return true;
|
||||
}
|
||||
if (typeof htmlBody === "string" && htmlBody.length > minMessageLength) {
|
||||
let found = 0;
|
||||
for (const word of htmlBody.split(/\s/)) {
|
||||
if (USER_ID_SIGIL_REGEX.test(word.trim())) {
|
||||
if (++found > max) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (typeof htmlBody === "string" && htmlBody.split('%40').length - 1 > max) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -60,10 +60,9 @@ export class NsfwProtection extends Protection {
|
||||
if (prediction["probability"] > mjolnir.config.nsfwSensitivity) {
|
||||
await mjolnir.managementRoomOutput.logMessage(LogLevel.INFO, "NSFWProtection", `Redacting ${event["event_id"]} for inappropriate content.`);
|
||||
try {
|
||||
mjolnir.client.redactEvent(roomId, event["event_id"])
|
||||
await mjolnir.client.redactEvent(roomId, event["event_id"]);
|
||||
} catch (err) {
|
||||
await mjolnir.managementRoomOutput.logMessage(LogLevel.ERROR, "NSFWProtection", `There was an error redacting ${event["event_id"]}: ${err}`);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -310,7 +310,7 @@ export class ProtectionManager {
|
||||
LogService.error("ProtectionManager", "Error handling protection: " + protection.name);
|
||||
LogService.error("ProtectionManager", "Failed event: " + eventPermalink);
|
||||
LogService.error("ProtectionManager", extractRequestError(e));
|
||||
await this.mjolnir.client.sendNotice(this.mjolnir.managementRoomId, "There was an error processing an event through a protection - see log for details. Event: " + eventPermalink);
|
||||
await this.mjolnir.client.sendNotice(this.mjolnir.managementRoomId, `There was an error processing an event through a protection (${protection.name}) - see log for details. Event: ${eventPermalink}`);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user