Add config option for old tripcode algorithm
このコミットが含まれているのは:
コミット
5153f5d112
|
@ -25,6 +25,7 @@ def create_app(config_file):
|
||||||
'lstrip_blocks': True,
|
'lstrip_blocks': True,
|
||||||
})
|
})
|
||||||
app.config.update({
|
app.config.update({
|
||||||
|
'SECRET_KEY_STRING': config['secret_key'],
|
||||||
'SECRET_KEY': config['secret_key'].encode(),
|
'SECRET_KEY': config['secret_key'].encode(),
|
||||||
'AUTH_USERNAME': config['auth']['username'],
|
'AUTH_USERNAME': config['auth']['username'],
|
||||||
'AUTH_PWHASH': auth_pwhash,
|
'AUTH_PWHASH': auth_pwhash,
|
||||||
|
@ -56,6 +57,7 @@ def create_app(config_file):
|
||||||
'CHAT_NAME_MAX_LENGTH': config['chat']['max_name_length'],
|
'CHAT_NAME_MAX_LENGTH': config['chat']['max_name_length'],
|
||||||
'CHAT_NAME_MIN_CONTRAST': config['chat']['min_name_contrast'],
|
'CHAT_NAME_MIN_CONTRAST': config['chat']['min_name_contrast'],
|
||||||
'CHAT_BACKGROUND_COLOUR': color_to_colour(config['chat']['background_color']),
|
'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_DURATION': config['flood']['duration'],
|
||||||
'FLOOD_THRESHOLD': config['flood']['threshold'],
|
'FLOOD_THRESHOLD': config['flood']['threshold'],
|
||||||
'CAPTCHA_LIFETIME': config['captcha']['lifetime'],
|
'CAPTCHA_LIFETIME': config['captcha']['lifetime'],
|
||||||
|
|
|
@ -11,19 +11,27 @@ CONFIG = current_app.config
|
||||||
def _generate_tripcode_digest_legacy(password):
|
def _generate_tripcode_digest_legacy(password):
|
||||||
hexdigest, _ = werkzeug.security._hash_internal(
|
hexdigest, _ = werkzeug.security._hash_internal(
|
||||||
'pbkdf2:sha256:150000',
|
'pbkdf2:sha256:150000',
|
||||||
CONFIG['SECRET_KEY'],
|
CONFIG['SECRET_KEY_STRING'],
|
||||||
password,
|
password,
|
||||||
)
|
)
|
||||||
digest = bytes.fromhex(hexdigest)
|
digest = bytes.fromhex(hexdigest)
|
||||||
return base64.b64encode(digest)[:8].decode()
|
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()
|
parts = CONFIG['SECRET_KEY'] + b'tripcode\0' + password.encode()
|
||||||
digest = hashlib.sha256(parts).digest()
|
digest = hashlib.sha256(parts).digest()
|
||||||
return base64.b64encode(digest)[:8].decode()
|
return base64.b64encode(digest)[:8].decode()
|
||||||
|
|
||||||
def generate_tripcode(password, generate_digest=generate_tripcode_digest):
|
def generate_tripcode_digest(password):
|
||||||
digest = generate_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(
|
background_colour = generate_colour(
|
||||||
seed='tripcode-background\0' + digest,
|
seed='tripcode-background\0' + digest,
|
||||||
bg=CONFIG['CHAT_BACKGROUND_COLOUR'],
|
bg=CONFIG['CHAT_BACKGROUND_COLOUR'],
|
||||||
|
|
|
@ -45,6 +45,7 @@ max_comment_length = 512
|
||||||
max_name_length = 24
|
max_name_length = 24
|
||||||
min_name_contrast = 3.0
|
min_name_contrast = 3.0
|
||||||
background_color = "#232327"
|
background_color = "#232327"
|
||||||
|
legacy_tripcode_algorithm = false
|
||||||
|
|
||||||
[flood]
|
[flood]
|
||||||
duration = 20.0
|
duration = 20.0
|
||||||
|
|
読み込み中…
新しいイシューから参照