diff --git a/boards/forms/__init__.py b/boards/forms/__init__.py --- a/boards/forms/__init__.py +++ b/boards/forms/__init__.py @@ -28,7 +28,7 @@ from boards.models.attachment import Sti from boards.models.attachment.downloaders import download, REGEX_MAGNET from boards.models.post import TITLE_MAX_LENGTH from boards.utils import validate_file_size, get_file_mimetype, \ - FILE_EXTENSION_DELIMITER + FILE_EXTENSION_DELIMITER, get_tripcode_from_text from boards.models.attachment.viewers import FILE_TYPES_IMAGE from neboard import settings @@ -286,8 +286,7 @@ class PostForm(NeboardForm): def get_tripcode(self): title = self.cleaned_data['title'] if title is not None and TRIPCODE_DELIM in title: - code = title.split(TRIPCODE_DELIM, maxsplit=1)[1] + neboard.settings.SECRET_KEY - tripcode = hashlib.md5(code.encode()).hexdigest() + tripcode = get_tripcode_from_text(title.split(TRIPCODE_DELIM, maxsplit=1)[1]) else: tripcode = '' return tripcode diff --git a/boards/models/source.py b/boards/models/source.py --- a/boards/models/source.py +++ b/boards/models/source.py @@ -9,8 +9,11 @@ from django.db import models, transactio from django.utils.dateparse import parse_datetime from django.utils.timezone import utc from django.utils import timezone + from boards.models import Post from boards.models.post import TITLE_MAX_LENGTH +from boards.utils import get_tripcode_from_text +from boards import settings SOURCE_TYPE_MAX_LENGTH = 100 @@ -42,6 +45,8 @@ class ThreadSource(models.Model): if self.thread.is_archived(): logger.error('The thread {} is archived, please try another one'.format(self.thread)) else: + tripcode = get_tripcode_from_text( + settings.get('External', 'SourceFetcherTripcode')) start_timestamp = self.timestamp last_timestamp = start_timestamp logger.info('Start timestamp is {}'.format(start_timestamp)) @@ -59,7 +64,8 @@ class ThreadSource(models.Model): if timestamp > last_timestamp: last_timestamp = timestamp if timestamp > start_timestamp: - Post.objects.create_post(title=title, text=item.description, thread=self.thread, file_urls=[item.link]) + Post.objects.create_post(title=title, text=item.description, + thread=self.thread, file_urls=[item.link], tripcode=tripcode) logger.info('Fetched item {} from {} into thread {}'.format( title, self.name, self.thread)) logger.info('New timestamp is {}'.format(last_timestamp)) diff --git a/boards/utils.py b/boards/utils.py --- a/boards/utils.py +++ b/boards/utils.py @@ -15,6 +15,7 @@ from django.utils import timezone from django.utils.translation import ugettext_lazy as _ import boards +from neboard import settings from boards.abstracts.constants import FILE_DIRECTORY from boards.settings import get_bool @@ -141,3 +142,11 @@ def get_domain(url: str) -> str: return full_domain + +def get_tripcode_from_text(text: str) -> str: + tripcode = '' + if text: + code = text + settings.SECRET_KEY + tripcode = hashlib.md5(code.encode()).hexdigest() + return tripcode +