From f2056d0a59cd7234610dd7da1ea2c3e2a4be0f00 Mon Sep 17 00:00:00 2001 From: Christoph Schlosser Date: Thu, 18 Sep 2025 20:56:26 +0200 Subject: g2h: Use a different kind of email redaction A bug in hugo, or it's markdown renderer shouldn't prevent using a more typical pattern. --- g2h/commit_page.py | 14 ++++++++++---- tests/commit_page_test.py | 30 ++++++++++++++++++------------ 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/g2h/commit_page.py b/g2h/commit_page.py index a998417..03d74ab 100644 --- a/g2h/commit_page.py +++ b/g2h/commit_page.py @@ -2,18 +2,24 @@ import os from .page import Page +def _redact_local_segment(local_segment): + if len(local_segment) == 0: + return '' + if len(local_segment) < 6: + return local_segment[0] + '...' + return local_segment[:2] + '...' + def redact_email(email): if email is None or len(email) == 0: return '' if '@' not in email: - return email[0] + '...' + email[-1] + return _redact_local_segment(email) local, domain = email.split('@') - redacted_local = local[0] + '...' + local[-1] if len(local) > 0 else '' - redacted_domain = domain.replace('.', '...') + redacted_local = _redact_local_segment(local) - return redacted_local + '@' + redacted_domain + return redacted_local + '@' + domain class CommitPage(Page): def __init__(self, out_dir, name, commit, content_subdir): diff --git a/tests/commit_page_test.py b/tests/commit_page_test.py index 839d493..bfff3c4 100644 --- a/tests/commit_page_test.py +++ b/tests/commit_page_test.py @@ -17,21 +17,27 @@ def test_context(): context = page.context() assert(context['title'] == 'commit test: 123') assert(context['commit'] == commit) - assert(context['redacted_email'] == 'u...t@te...st') + assert(context['redacted_email'] == 'u...@te.st') assert(context['content_subdir'] == 'commit/content') def test_redacting_email(): assert(redact_email(None) == '') assert(redact_email('') == '') - assert(redact_email('a') == 'a...a') - assert(redact_email('az') == 'a...z') - assert(redact_email('root') == 'r...t') - assert(redact_email('root@localhost') == 'r...t@localhost') - assert(redact_email('test@example.com') == 't...t@example...com') - assert(redact_email('test@sub.example.com') == 't...t@sub...example...com') - assert(redact_email('az@example.com') == 'a...z@example...com') - assert(redact_email('a@example.com') == 'a...a@example...com') - assert(redact_email('@example.com') == '@example...com') - assert(redact_email('test@') == 't...t@') - assert(redact_email('az@') == 'a...z@') + assert(redact_email('a') == 'a...') + assert(redact_email('az') == 'a...') + assert(redact_email('root') == 'r...') + assert(redact_email('root@localhost') == 'r...@localhost') + assert(redact_email('test@example.com') == 't...@example.com') + assert(redact_email('test@sub.example.com') == 't...@sub.example.com') + assert(redact_email('az@example.com') == 'a...@example.com') + assert(redact_email('a@example.com') == 'a...@example.com') + assert(redact_email('@example.com') == '@example.com') + assert(redact_email('test@') == 't...@') + assert(redact_email('az@') == 'a...@') assert(redact_email('@') == '@') + assert(redact_email('rootuser') == 'ro...') + assert(redact_email('username@localhost') == 'us...@localhost') + assert(redact_email('mailbox@example.com') == 'ma...@example.com') + assert(redact_email('testuser@sub.example.com') == 'te...@sub.example.com') + assert(redact_email('abcde@example.com') == 'a...@example.com') + assert(redact_email('abcdef@example.com') == 'ab...@example.com') -- cgit v1.2.3