doveauth: integrate sqlite database

This commit is contained in:
missytake
2023-10-14 00:04:57 +02:00
committed by holger krekel
parent 7eeb777ed9
commit f940a962cc

View File

@@ -2,37 +2,40 @@
import base64 import base64
import sys import sys
from .database import Database
def get_user_data(user):
if user.startswith("link2xt@"):
return dict(
uid="vmail",
gid="vmail",
password="Ahyei6ie",
)
return {}
def create_user(user, password): def get_user_data(db, user):
with db.read_connection() as conn:
result = conn.get_user(user)
if result:
result['uid'] = "vmail"
result['gid'] = "vmail"
return result
def create_user(db, user, password):
with db.write_transaction() as conn:
conn.create_user(user, password)
return dict(home=f"/home/vmail/{user}", uid="vmail", gid="vmail", password=password) return dict(home=f"/home/vmail/{user}", uid="vmail", gid="vmail", password=password)
def verify_user(user, password): def verify_user(db, user, password):
userdata = get_user_data(user) userdata = get_user_data(db, user)
if userdata: if userdata:
if userdata.get("password") == password: if userdata.get("password") == password:
userdata["status"] = "ok" userdata["status"] = "ok"
else: else:
userdata["status"] = "fail" userdata["status"] = "fail"
else: else:
userdata = create_user(user, password) userdata = create_user(db, user, password)
userdata["status"] = "ok" userdata["status"] = "ok"
return userdata return userdata
def lookup_user(user): def lookup_user(db, user):
userdata = get_user_data(user) userdata = get_user_data(db, user)
if userdata: if userdata:
userdata["status"] = "ok" userdata["status"] = "ok"
else: else:
@@ -46,14 +49,15 @@ def dump_result(res):
def main(): def main():
db = Database("/home/vmail/passdb.sqlite")
if sys.argv[1] == "hexauth": if sys.argv[1] == "hexauth":
login = base64.b16decode(sys.argv[2]).decode() login = base64.b16decode(sys.argv[2]).decode()
password = base64.b16decode(sys.argv[3]).decode() password = base64.b16decode(sys.argv[3]).decode()
res = verify_user(login, password) res = verify_user(db, login, password)
dump_result(res) dump_result(res)
elif sys.argv[1] == "hexlookup": elif sys.argv[1] == "hexlookup":
login = base64.b16decode(sys.argv[2]).decode() login = base64.b16decode(sys.argv[2]).decode()
res = lookup_user(login) res = lookup_user(db, login)
dump_result(res) dump_result(res)