summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Schlosser <christoph@linux.com>2025-09-18 20:56:26 +0200
committerChristoph Schlosser <christoph@linux.com>2025-09-18 20:56:26 +0200
commitf2056d0a59cd7234610dd7da1ea2c3e2a4be0f00 (patch)
tree4331dcad7f91cd9e038c8872977eb421f6aa08b0
parent639b739a3fc69e8ae4476d8eca5393d221d3a0b8 (diff)
downloadgit2hugo-f2056d0a59cd7234610dd7da1ea2c3e2a4be0f00.tar.gz
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.
-rw-r--r--g2h/commit_page.py14
-rw-r--r--tests/commit_page_test.py30
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')