diff --git a/src/chatmail/chatctl/chatctl.py b/src/chatmail/chatctl/chatctl.py index 276ff533..53635976 100644 --- a/src/chatmail/chatctl/chatctl.py +++ b/src/chatmail/chatctl/chatctl.py @@ -2,22 +2,47 @@ import base64 import sys + +def get_user_data(user): + if user == b"link2xt@instant2.testrun.org": + return dict( + homedir="/home/vmail/link2xt", + uid="vmail", + gid="vmail", + password=b"Ahyei6ie" + ) + return {} + + +def verify_user(user, password): + userdata = get_user_data(user) + if userdata.get("password") == password: + userdata["status"] = "ok" + return userdata + return dict(status="fail") + + +def lookup_user(user): + userdata = get_user_data(user) + if userdata: + userdata["status"] = "ok" + else: + userdata["status"] = "fail" + return userdata + + +def dump_result(res): + for key, value in res.items(): + print(f"{key}={value}") + + if sys.argv[1] == "hexauth": login = base64.b16decode(sys.argv[2]) password = base64.b16decode(sys.argv[3]) - if login == b"link2xt@instant2.testrun.org" and password == b"Ahyei6ie": - print("status=ok") - print("homedir=/home/vmail/link2xt") - print("gid=vmail") - print("uid=vmail") - else: - print("status=fail") + res = verify_user(login, password) + dump_result(res) elif sys.argv[1] == "hexlookup": login = base64.b16decode(sys.argv[2]) - if login == b"link2xt@instant2.testrun.org": - print("status=ok") - print("homedir=/home/vmail/link2xt") - print("gid=vmail") - print("uid=vmail") - else: - print("status=fail") + res = lookup_user(login) + dump_result(res) +