from http.server import BaseHTTPRequestHandler, HTTPServer from socket import * import requests from sendmail import mail from verification import otp class MyRequestHandler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header("Content-type", "text/html") if self.path == '/': self.path = '/pages/index.html' try: file_to_open = open(self.path[1:]).read() self.send_response(200) except: file_to_open = "File Not Found" self.send_response(404) self.end_headers() self.wfile.write(bytes(file_to_open, 'utf-8')) def do_POST(self): # getting the content length from the header information and then rfile is the POST request, with content_length being the number of bytes it needs to grab (optional for if you want to grab less bytes for whatever reason) content_length = int(self.headers['Content-Length']) data_input = bytes.decode(self.rfile.read(content_length)) if (data_input.startswith("email=")): data_str = str(data_input.replace('%40', '@')) formatted = data_str.replace('email=', '') mail.send(formatted, mail.gen_code(formatted)) self.path = '/pages/otp.html' try: file_to_open = open(self.path[1:]).read() self.send_response(200) except: file_to_open = "File Not Found" self.send_response(404) self.end_headers() self.wfile.write(bytes(file_to_open, 'utf-8')) if (data_input.startswith("verifEmail=")): data_str = str(data_input.replace('%40', '@')) # get email formatted_verifemail = data_str.replace('verifEmail=', '') formatted_verifnums = formatted_verifemail.replace('&verifOtp=', '') email = formatted_verifnums[:-4] #get otp code otp_code = data_str[-4:] print(email) print(otp) if (otp.authenticate(email, otp_code)): print("OK!") else: print("BAD!") Handler = MyRequestHandler hostName = "localhost" serverPort = 8080 server = HTTPServer((hostName, serverPort), Handler) server.serve_forever()