Check for invalid local links in incoming posts

merge-requests/30/head
Bob Mottram 2021-10-26 17:06:22 +01:00
parent 2d232b321b
commit f7dddc7408
2 changed files with 28 additions and 0 deletions

View File

@ -1184,3 +1184,25 @@ def wordsSimilarity(content1: str, content2: str, minWords: int) -> int:
else:
diff += abs(histogram2[combinedWords] - histogram1[combinedWords])
return 100 - int(diff * 100 / len(histogram1.items()))
def containsInvalidLocalLinks(content: str) -> bool:
"""Returns true if the given content has invalid links
"""
invalidStrings = (
'mute', 'unmute', 'editeventpost', 'notifypost',
'delete', 'options', 'page', 'repeat',
'bm', 'tl', 'actor', 'unrepeat',
'unannounce', 'like', 'unlike', 'bookmark',
'unbookmark', 'likedBy', 'id', 'time',
'year', 'month', 'day', 'editnewpost',
'graph', 'showshare', 'category', 'showwanted',
'rmshare', 'rmwanted', 'repeatprivate',
'unrepeatprivate', 'replyto',
'replyfollowers', 'replydm', 'editblogpost',
'handle', 'blockdomain'
)
for invStr in invalidStrings:
if '/?' + invStr + '=' in content:
return True
return False

View File

@ -299,6 +299,7 @@ from utils import hasGroupType
from manualapprove import manualDenyFollowRequestThread
from manualapprove import manualApproveFollowRequestThread
from announce import createAnnounce
from content import containsInvalidLocalLinks
from content import getPriceFromString
from content import replaceEmojiFromTags
from content import addHtmlTags
@ -1489,6 +1490,11 @@ class PubServer(BaseHTTPRequestHandler):
# save the json for later queue processing
messageBytesDecoded = messageBytes.decode('utf-8')
if containsInvalidLocalLinks(messageBytesDecoded):
print('WARN: post contains invalid local links ' +
str(originalMessageJson))
return 4
self.server.blockedCacheLastUpdated = \
updateBlockedCache(self.server.baseDir,
self.server.blockedCache,