Loading app/main.py +11 −7 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ from requests.auth import HTTPBasicAuth import os import logging import sys import json ch = logging.StreamHandler(sys.stdout) ch.setLevel(logging.DEBUG) Loading Loading @@ -42,7 +43,8 @@ class MyHandler(BaseHTTPRequestHandler): target_username = target_email.split('@')[0] with open('forbidden_usernames') as f: if target_username in f.read().splitlines(): self.respond(403, 'this username is not allowed') data = json.dumps({'success': False, 'message': 'username_forbidden'}) self.respond(403, data) return # create account via postfixadmin ssh with paramiko.SSHClient() as ssh: Loading @@ -50,8 +52,9 @@ class MyHandler(BaseHTTPRequestHandler): ssh.connect(hostname='postfixadmin', username='pfexec', password=os.environ['POSTFIXADMIN_SSH_PASSWORD']) stdin, stdout, stderr = ssh.exec_command(f'/postfixadmin/scripts/postfixadmin-cli mailbox view "{target_email}"') if b"error: the email is not valid!" in stderr.read().lower(): self.respond(403, 'this username is already used') if b"error: the email is not valid!" not in stderr.read().lower(): data = json.dumps({'success': True, 'message': 'username_taken'}) self.respond(403, data) return ssh.exec_command(f'/postfixadmin/scripts/postfixadmin-cli mailbox add "{target_email}" ' + Loading @@ -75,9 +78,10 @@ class MyHandler(BaseHTTPRequestHandler): print(f'status code: {r.status_code}') # TODO: check status code self.respond(200, "account created") self.respond(200, json.dumps({'success', True})) def respond(self, status: int, message: str): print(f'sending response status {status}, message {message}') self.send_response(status) self.end_headers() self.wfile.write(message.encode()) Loading Loading
app/main.py +11 −7 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ from requests.auth import HTTPBasicAuth import os import logging import sys import json ch = logging.StreamHandler(sys.stdout) ch.setLevel(logging.DEBUG) Loading Loading @@ -42,7 +43,8 @@ class MyHandler(BaseHTTPRequestHandler): target_username = target_email.split('@')[0] with open('forbidden_usernames') as f: if target_username in f.read().splitlines(): self.respond(403, 'this username is not allowed') data = json.dumps({'success': False, 'message': 'username_forbidden'}) self.respond(403, data) return # create account via postfixadmin ssh with paramiko.SSHClient() as ssh: Loading @@ -50,8 +52,9 @@ class MyHandler(BaseHTTPRequestHandler): ssh.connect(hostname='postfixadmin', username='pfexec', password=os.environ['POSTFIXADMIN_SSH_PASSWORD']) stdin, stdout, stderr = ssh.exec_command(f'/postfixadmin/scripts/postfixadmin-cli mailbox view "{target_email}"') if b"error: the email is not valid!" in stderr.read().lower(): self.respond(403, 'this username is already used') if b"error: the email is not valid!" not in stderr.read().lower(): data = json.dumps({'success': True, 'message': 'username_taken'}) self.respond(403, data) return ssh.exec_command(f'/postfixadmin/scripts/postfixadmin-cli mailbox add "{target_email}" ' + Loading @@ -75,9 +78,10 @@ class MyHandler(BaseHTTPRequestHandler): print(f'status code: {r.status_code}') # TODO: check status code self.respond(200, "account created") self.respond(200, json.dumps({'success', True})) def respond(self, status: int, message: str): print(f'sending response status {status}, message {message}') self.send_response(status) self.end_headers() self.wfile.write(message.encode()) Loading