From 15a9b4a2ef5892cc082b66a470e50a0d124b532a Mon Sep 17 00:00:00 2001 From: link2xt Date: Fri, 20 Oct 2023 08:16:14 +0000 Subject: [PATCH] dictproxy: use `crypt` instead of `doveadm pw` --- chatmaild/src/chatmaild/dictproxy.py | 14 +++----------- scripts/init.sh | 1 - 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/chatmaild/src/chatmaild/dictproxy.py b/chatmaild/src/chatmaild/dictproxy.py index 4250c6e9..068c3703 100644 --- a/chatmaild/src/chatmaild/dictproxy.py +++ b/chatmaild/src/chatmaild/dictproxy.py @@ -2,13 +2,13 @@ import logging import os import sys import json +import crypt from socketserver import ( UnixStreamServer, StreamRequestHandler, ThreadingMixIn, ) import pwd -import subprocess from .database import Database @@ -16,17 +16,9 @@ NOCREATE_FILE = "/etc/chatmail-nocreate" def encrypt_password(password: str): - password = password.encode("ascii") # https://doc.dovecot.org/configuration_manual/authentication/password_schemes/ - process = subprocess.Popen( - ["doveadm", "pw", "-s", "SHA512-CRYPT"], - stdin=subprocess.PIPE, - stdout=subprocess.PIPE, - ) - stdout_data, _stderr_data = process.communicate( - input=password + b"\n" + password + b"\n" - ) - return stdout_data.decode("ascii").strip() + passhash = crypt.crypt(password, crypt.METHOD_SHA512) + return "{SHA512-CRYPT}" + passhash def create_user(db, user, password): diff --git a/scripts/init.sh b/scripts/init.sh index c171aaa2..37d5e240 100755 --- a/scripts/init.sh +++ b/scripts/init.sh @@ -6,7 +6,6 @@ deploy-chatmail/venv/bin/pip install -e deploy-chatmail deploy-chatmail/venv/bin/pip install -e chatmaild python3 -m venv chatmaild/venv -sudo apt install -y dovecot-core && sudo systemctl disable --now dovecot chatmaild/venv/bin/pip install --upgrade pytest build 'setuptools>=68' chatmaild/venv/bin/pip install -e chatmaild