OTPSystem/codelistener.py
2025-01-19 18:32:43 -05:00

73 lines
2.3 KiB
Python

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()