From 5c9d9a98b37df5665899254d9dd44f8297ba819e Mon Sep 17 00:00:00 2001 From: holger krekel Date: Fri, 1 Dec 2023 22:11:17 +0100 Subject: [PATCH] works --- chatmaild/pyproject.toml | 2 +- chatmaild/src/chatmaild/newemail.py | 28 ++++++ deploy-chatmail/pyproject.toml | 1 + .../src/deploy_chatmail/__init__.py | 45 ++++++++- .../deploy_chatmail/data/delta-chat-bw.png | Bin 0 -> 13734 bytes .../deploy_chatmail/data/delta-chat-red.png | Bin 0 -> 14642 bytes .../deploy_chatmail/data/opensans-regular.ttf | Bin 0 -> 96932 bytes deploy-chatmail/src/deploy_chatmail/genqr.py | 94 ++++++++++++++++++ .../src/deploy_chatmail/nginx/nginx.conf.j2 | 18 ++++ tests/chatmaild/test_newmail.py | 28 ++++++ www/default/index.html | 25 +++++ 11 files changed, 237 insertions(+), 4 deletions(-) create mode 100644 chatmaild/src/chatmaild/newemail.py create mode 100644 deploy-chatmail/src/deploy_chatmail/data/delta-chat-bw.png create mode 100644 deploy-chatmail/src/deploy_chatmail/data/delta-chat-red.png create mode 100644 deploy-chatmail/src/deploy_chatmail/data/opensans-regular.ttf create mode 100644 deploy-chatmail/src/deploy_chatmail/genqr.py create mode 100644 tests/chatmaild/test_newmail.py create mode 100644 www/default/index.html diff --git a/chatmaild/pyproject.toml b/chatmaild/pyproject.toml index 5e74f5c..3f1e1fc 100644 --- a/chatmaild/pyproject.toml +++ b/chatmaild/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta" name = "chatmaild" version = "0.1" dependencies = [ - "aiosmtpd" + "aiosmtpd", ] [project.scripts] diff --git a/chatmaild/src/chatmaild/newemail.py b/chatmaild/src/chatmaild/newemail.py new file mode 100644 index 0000000..4fbc0df --- /dev/null +++ b/chatmaild/src/chatmaild/newemail.py @@ -0,0 +1,28 @@ +#!/usr/bin/python3 + +""" CGI script for creating new accounts. """ + +import json +import random + +mailname_path = "/etc/mailname" + + +def create_newemail_dict(domain): + alphanumeric = "abcdefghijklmnopqrstuvwxyz1234567890" + user = "".join(random.choices(alphanumeric, k=9)) + password = "".join(random.choices(alphanumeric, k=12)) + return dict(email=f"{user}@{domain}", password=f"{password}") + + +def print_new_account(): + domain = open(mailname_path).read().strip() + creds = create_newemail_dict(domain=domain) + + print("Content-Type: application/json") + print("") + print(json.dumps(creds)) + + +if __name__ == "__main__": + print_new_account() diff --git a/deploy-chatmail/pyproject.toml b/deploy-chatmail/pyproject.toml index 3d98b8a..27ef46d 100644 --- a/deploy-chatmail/pyproject.toml +++ b/deploy-chatmail/pyproject.toml @@ -7,6 +7,7 @@ name = "deploy-chatmail" version = "0.1" dependencies = [ "pyinfra", + "qrcode", ] [tool.pytest.ini_options] diff --git a/deploy-chatmail/src/deploy_chatmail/__init__.py b/deploy-chatmail/src/deploy_chatmail/__init__.py index 7b80fb8..072d0d5 100644 --- a/deploy-chatmail/src/deploy_chatmail/__init__.py +++ b/deploy-chatmail/src/deploy_chatmail/__init__.py @@ -10,6 +10,8 @@ from pyinfra.facts.files import File from pyinfra.facts.systemd import SystemdEnabled from .acmetool import deploy_acmetool +from .genqr import gen_qr_png_data + def _install_chatmaild() -> None: chatmaild_filename = "chatmaild-0.1.tar.gz" @@ -44,6 +46,8 @@ def _install_chatmaild() -> None: enabled=False, ) + # install systemd units + for fn in ( "doveauth", "filtermail", @@ -279,6 +283,34 @@ def _configure_nginx(domain: str, debug: bool = False) -> bool: ) need_restart |= mta_sts_config.changed + # install CGI newemail script + # + cgi_dir = "/usr/lib/cgi-bin" + files.directory( + name=f"Ensure {cgi_dir} exists", + path=cgi_dir, + user="root", + group="root", + ) + + files.put( + name=f"Upload cgi newemail.py script", + src=importlib.resources.files("chatmaild").joinpath(f"newemail.py").open("rb"), + dest=f"{cgi_dir}/newemail.py", + user="root", + group="root", + mode="755", + ) + + files.put( + name=f"Upload QR code for account creation", + src=gen_qr_png_data(domain), + dest=f"/var/www/html/qrcode.png", + user="root", + group="root", + mode="644", + ) + return need_restart @@ -328,19 +360,26 @@ def deploy_chatmail(mail_domain: str, mail_server: str, dkim_selector: str) -> N packages=["nginx"], ) + apt.packages( + name="Install fcgiwrap", + packages=["fcgiwrap"], + ) + _install_chatmaild() debug = False dovecot_need_restart = _configure_dovecot(mail_server, debug=debug) postfix_need_restart = _configure_postfix(mail_domain, debug=debug) opendkim_need_restart = _configure_opendkim(mail_domain, dkim_selector) - nginx_need_restart = _configure_nginx(mail_domain) mta_sts_need_restart = _install_mta_sts_daemon() + nginx_need_restart = _configure_nginx(mail_domain) # deploy web pages and info if we have them pkg_root = importlib.resources.files(__package__) www_path = pkg_root.joinpath(f"../../../www/{mail_domain}").resolve() - if www_path.is_dir(): - files.rsync(f"{www_path}/", "/var/www/html", flags=["-avz"]) + if not www_path.is_dir(): + www_path = pkg_root.joinpath(f"../../../www/default").resolve() + + files.rsync(f"{www_path}/", "/var/www/html", flags=["-avz"]) systemd.service( name="Start and enable OpenDKIM", diff --git a/deploy-chatmail/src/deploy_chatmail/data/delta-chat-bw.png b/deploy-chatmail/src/deploy_chatmail/data/delta-chat-bw.png new file mode 100644 index 0000000000000000000000000000000000000000..26775ae2faf4bcd77361899acdb48bcfa1319008 GIT binary patch literal 13734 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%0A>M1TsgR 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 F{|}tzk=g(N literal 0 HcmV?d00001 diff --git a/deploy-chatmail/src/deploy_chatmail/data/delta-chat-red.png b/deploy-chatmail/src/deploy_chatmail/data/delta-chat-red.png new file mode 100644 index 0000000000000000000000000000000000000000..ebc1cdef0ece26d418916666149bf5350af0c203 GIT binary patch literal 14642 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

_T_kl)Xoan=RX{3lY#VQTZ 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 literal 0 HcmV?d00001 diff --git a/deploy-chatmail/src/deploy_chatmail/genqr.py b/deploy-chatmail/src/deploy_chatmail/genqr.py new file mode 100644 index 0000000..605c14e --- /dev/null +++ b/deploy-chatmail/src/deploy_chatmail/genqr.py @@ -0,0 +1,94 @@ +import importlib +import qrcode +import os +from PIL import ImageFont, ImageDraw, Image +import io + + +def gen_qr_png_data(maildomain): + url = f"DCACCOUNT:https://{maildomain}/cgi-bin/newemail.py" + image = gen_qr(maildomain, url) + temp = io.BytesIO() + image.save(temp, format="png") + temp.seek(0) + return temp + + +def gen_qr(maildomain, url): + info = f"{maildomain} invite code" + + steps = ( + "1. Install https://get.delta.chat\n" + "2. On setup screen scan above invite QR code\n" + "3. Choose nickname & avatar\n" + "+ chat with any e-mail address ...\n" + ) + + # load QR code + qr = qrcode.QRCode( + version=1, + error_correction=qrcode.constants.ERROR_CORRECT_H, + box_size=1, + border=1, + ) + qr.add_data(url) + qr.make(fit=True) + qr_img = qr.make_image(fill_color="black", back_color="white") + + # paint all elements + ttf_path = str( + importlib.resources.files(__package__).joinpath("data/opensans-regular.ttf") + ) + logo_red_path = str( + importlib.resources.files(__package__).joinpath("data/delta-chat-bw.png") + ) + + assert os.path.exists(ttf_path), ttf_path + font_size = 16 + font = ImageFont.truetype(font=ttf_path, size=font_size) + + num_lines = (info + steps).count("\n") + 3 + + size = width = 384 + qr_padding = 6 + text_margin_right = 12 + text_height = font_size * num_lines + height = size + text_height + qr_padding * 2 + + image = Image.new("RGBA", (width, height), "white") + + draw = ImageDraw.Draw(image) + + qr_final_size = width - (qr_padding * 2) + + # draw text + if hasattr(font, "getsize"): + info_pos = (width - font.getsize(info.strip())[0]) // 2 + else: + info_pos = (width - font.getbbox(info.strip())[3]) // 2 + + draw.multiline_text( + (info_pos, size - qr_padding // 2), info, font=font, fill="black", align="right" + ) + draw.multiline_text( + (text_margin_right, height - text_height + font_size * 1.0), + steps, + font=font, + fill="black", + align="left", + ) + + # paste QR code + image.paste( + qr_img.resize((qr_final_size, qr_final_size), resample=Image.NEAREST), + (qr_padding, qr_padding), + ) + + # background delta logo + logo2_img = Image.open(logo_red_path) + logo2_width = int(size / 6) + logo2 = logo2_img.resize((logo2_width, logo2_width), resample=Image.NEAREST) + pos = int((size / 2) - (logo2_width / 2)) + image.paste(logo2, (pos, pos), mask=logo2) + + return image diff --git a/deploy-chatmail/src/deploy_chatmail/nginx/nginx.conf.j2 b/deploy-chatmail/src/deploy_chatmail/nginx/nginx.conf.j2 index 7a2f826..e2a7109 100644 --- a/deploy-chatmail/src/deploy_chatmail/nginx/nginx.conf.j2 +++ b/deploy-chatmail/src/deploy_chatmail/nginx/nginx.conf.j2 @@ -40,6 +40,21 @@ http { # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } + + location /cgi-bin/ { + # Set the root to /usr/lib (inside this location this means that we are + # giving access to the files under /usr/lib/cgi-bin) + root /usr/lib; + + # Fastcgi socket + fastcgi_pass unix:/var/run/fcgiwrap.socket; + + # Fastcgi parameters, include the standard ones + include /etc/nginx/fastcgi_params; + + # Adjust non standard parameters (SCRIPT_FILENAME) + # fastcgi_param SCRIPT_FILENAME /usr/lib$fastcgi_script_name; + } } server { listen 80 default_server; @@ -48,5 +63,8 @@ http { return 301 https://$host$request_uri; } + + + } diff --git a/tests/chatmaild/test_newmail.py b/tests/chatmaild/test_newmail.py new file mode 100644 index 0000000..5b6dad1 --- /dev/null +++ b/tests/chatmaild/test_newmail.py @@ -0,0 +1,28 @@ +import json + +import chatmaild +from chatmaild.newemail import create_newemail_dict, print_new_account + +def test_create_newemail_dict(): + ac1 = create_newemail_dict(domain="example.org") + assert "@" in ac1["email"] + assert len(ac1["password"]) >= 10 + + ac2 = create_newemail_dict(domain="example.org") + + assert ac1["email"] != ac2["email"] + assert ac1["password"] != ac2["password"] + + +def test_print_new_account(capsys, monkeypatch, maildomain, tmpdir): + p = tmpdir.join("mailname") + p.write(maildomain) + monkeypatch.setattr(chatmaild.newemail, "mailname_path", str(p)) + print_new_account() + out, err = capsys.readouterr() + lines = out.split("\n") + assert lines[0] == "Content-Type: application/json" + assert not lines[1] + dic = json.loads(lines[2]) + assert dic["email"].endswith(f"@{maildomain}") + assert len(dic["password"]) >= 10 diff --git a/www/default/index.html b/www/default/index.html new file mode 100644 index 0000000..de66cbb --- /dev/null +++ b/www/default/index.html @@ -0,0 +1,25 @@ + + + + + chatmail instance + + + +

Welcome to Chatmail!

+

Scan this invite QR code from any Delta Chat app

+ + +

Properties / Constraints

+
    +
  • Un-encrypted mails can not leave the chat-mail domain.
  • +
  • Use + guaranteed end-to-end encryption via QR code scans + to setup contact with users outside of the chat-mail instance. +
  • +
  • You may send up to 60 messages per minute.
  • +
  • Messages are unconditionally removed 40 days after arrival.
  • +
  • Max storage per user is 100MB.
  • +
+ +