Initial commit: IMAP Mail Filter Service

This commit is contained in:
Stefan Hacker
2026-03-19 13:02:44 +01:00
parent 44fb27801d
commit 61c4384111
34 changed files with 2345 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
import logging
from cryptography.fernet import Fernet, InvalidToken
from app.config import settings
logger = logging.getLogger(__name__)
_fernet: Fernet | None = None
def _get_fernet() -> Fernet | None:
global _fernet
if _fernet is not None:
return _fernet
if not settings.encryption_key:
logger.warning("ENCRYPTION_KEY nicht gesetzt — Passwörter werden im Klartext gespeichert!")
return None
_fernet = Fernet(settings.encryption_key.encode())
return _fernet
def encrypt(plaintext: str) -> str:
f = _get_fernet()
if f is None:
return plaintext
return f.encrypt(plaintext.encode()).decode()
def decrypt(ciphertext: str) -> str:
f = _get_fernet()
if f is None:
return ciphertext
try:
return f.decrypt(ciphertext.encode()).decode()
except InvalidToken:
# Might be unencrypted (e.g. from YAML import before encryption was set up)
return ciphertext