Initial Awawawa

This commit is contained in:
mueller_minki
2026-10-04 09:08:27 +02:00
commit 8e83a98ef4
76 changed files with 8225 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
"""Outgoing mail for 2FA codes, using the Mail* settings in patchbay.conf."""
import smtplib
import ssl
import sys
from email.message import EmailMessage
class MailError(Exception):
pass
def send(conf, to, subject, body):
host = conf.get("mailhost")
if not host:
raise MailError("mail server is not configured")
if host == "log":
# Development only: MailHost = log prints mails to the server log.
print(f"[mail to {to}] {subject}\n{body}", file=sys.stderr, flush=True)
return
msg = EmailMessage()
msg["From"] = conf.get("mailfrom") or conf.get("mailuser")
msg["To"] = to
msg["Subject"] = subject
msg.set_content(body)
port = conf.getint("mailport", 587)
security = (conf.get("mailsecurity") or "starttls").lower()
ctx = ssl.create_default_context()
try:
if security == "ssl":
server = smtplib.SMTP_SSL(host, port, context=ctx, timeout=20)
else:
server = smtplib.SMTP(host, port, timeout=20)
with server:
if security == "starttls":
server.starttls(context=ctx)
if conf.get("mailuser"):
server.login(conf.get("mailuser"), conf.get("mailpassword"))
server.send_message(msg)
except (OSError, smtplib.SMTPException) as e:
raise MailError(str(e)) from e