| import http.server |
| import socketserver |
| import random |
| import urllib.parse |
| import html |
|
|
| |
| PIN = str(random.randint(1000, 9999)) |
| PORT = 8080 |
|
|
| class Handler(http.server.BaseHTTPRequestHandler): |
| def do_GET(self): |
| |
| parsed = urllib.parse.urlparse(self.path) |
| params = urllib.parse.parse_qs(parsed.query) |
| user_pin = params.get("pin", [""])[0] |
|
|
| self.send_response(200) |
| self.send_header("Content-type", "text/html") |
| self.end_headers() |
|
|
| |
| safe_pin = html.escape(user_pin) |
|
|
| if user_pin == PIN: |
| response = f""" |
| <h1>β
Access Granted</h1> |
| <p>Your PIN: {safe_pin}</p> |
| """ |
| else: |
| response = f""" |
| <h1>π Enter PIN</h1> |
| <form method="GET"> |
| <input type="text" name="pin" maxlength="4" placeholder="Enter 4-digit PIN"/> |
| <button type="submit">Submit</button> |
| </form> |
| """ |
|
|
| if user_pin: |
| response += f"<p style='color:red;'>β Wrong PIN: {safe_pin}</p>" |
|
|
| self.wfile.write(response.encode()) |
|
|
| print(f"π Generated PIN: {PIN}") |
| print(f"π Server running at http://127.0.0.1:{PORT}") |
|
|
| with socketserver.TCPServer(("127.0.0.1", PORT), Handler) as httpd: |
| httpd.serve_forever() |