Add config option for old tripcode algorithm

このコミットが含まれているのは:
n9k 2022-03-05 09:36:57 +00:00
コミット 5153f5d112
3個のファイルの変更15行の追加4行の削除

ファイルの表示

@ -25,6 +25,7 @@ def create_app(config_file):
'lstrip_blocks': True,
})
app.config.update({
'SECRET_KEY_STRING': config['secret_key'],
'SECRET_KEY': config['secret_key'].encode(),
'AUTH_USERNAME': config['auth']['username'],
'AUTH_PWHASH': auth_pwhash,
@ -56,6 +57,7 @@ def create_app(config_file):
'CHAT_NAME_MAX_LENGTH': config['chat']['max_name_length'],
'CHAT_NAME_MIN_CONTRAST': config['chat']['min_name_contrast'],
'CHAT_BACKGROUND_COLOUR': color_to_colour(config['chat']['background_color']),
'CHAT_LEGACY_TRIPCODE_ALGORITHM': config['chat']['legacy_tripcode_algorithm'],
'FLOOD_DURATION': config['flood']['duration'],
'FLOOD_THRESHOLD': config['flood']['threshold'],
'CAPTCHA_LIFETIME': config['captcha']['lifetime'],

ファイルの表示

@ -11,19 +11,27 @@ CONFIG = current_app.config
def _generate_tripcode_digest_legacy(password):
hexdigest, _ = werkzeug.security._hash_internal(
'pbkdf2:sha256:150000',
CONFIG['SECRET_KEY'],
CONFIG['SECRET_KEY_STRING'],
password,
)
digest = bytes.fromhex(hexdigest)
return base64.b64encode(digest)[:8].decode()
def generate_tripcode_digest(password):
def _generate_tripcode_digest(password):
parts = CONFIG['SECRET_KEY'] + b'tripcode\0' + password.encode()
digest = hashlib.sha256(parts).digest()
return base64.b64encode(digest)[:8].decode()
def generate_tripcode(password, generate_digest=generate_tripcode_digest):
digest = generate_digest(password)
def generate_tripcode_digest(password):
algorithm = (
_generate_tripcode_digest_legacy
if CONFIG['CHAT_LEGACY_TRIPCODE_ALGORITHM'] else
_generate_tripcode_digest
)
return algorithm(password)
def generate_tripcode(password):
digest = generate_tripcode_digest(password)
background_colour = generate_colour(
seed='tripcode-background\0' + digest,
bg=CONFIG['CHAT_BACKGROUND_COLOUR'],

ファイルの表示

@ -45,6 +45,7 @@ max_comment_length = 512
max_name_length = 24
min_name_contrast = 3.0
background_color = "#232327"
legacy_tripcode_algorithm = false
[flood]
duration = 20.0