import http.server
import socketserver
import ssl

# Server hostname and port to bind to
HOSTNAME = "0.0.0.0"
PORT = 8000

# SSL certificate and key files
CERT_FILE = "server.pem"
KEY_FILE = "key.pem"

# IP address of allowed client
ALLOWED_CLIENT_IP = None

# Custom HTTP request handler
class CustomHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
        # Check if request is from allowed client
        if ALLOWED_CLIENT_IP and self.client_address[0] != ALLOWED_CLIENT_IP:
            # Send "Forbidden" error if request is from different client
            self.send_error(403, "Forbidden", "You are not authorized to access this resource")
            return

        # Check if request is for download endpoint
        if self.path.endswith("/download"):
            # Update allowed client IP
            ALLOWED_CLIENT_IP = self.client_address[0]
            # Serve file to allowed client
            super().do_GET()
        else:
            # Send "Not Found" error if request is for other resource
            self.send_error(404, "Not Found", "The requested resource was not found on this server.")

# Start HTTPS server
with socketserver.TCPServer((HOSTNAME, PORT), CustomHandler) as httpd:
    # Wrap socket with SSL
    httpd.socket = ssl.wrap_socket(httpd.socket, certfile=CERT_FILE, keyfile=KEY_FILE, server_side=True)
    print(f"Serving HTTPS on {HOSTNAME}:{PORT}")
    httpd.serve_forever()
import http.server นำเข้า socketserver นำเข้า ssl # ชื่อโฮสต์เซิร์ฟเวอร์และพอร์ตที่จะผูกกับ HOSTNAME = "0.0.0.0" PORT = 8000 # ใบรับรอง SSL และไฟล์คีย์ CERT_FILE = "server.pem" KEY_FILE = "key.pem" # ที่อยู่ IP ของ ไคลเอ็นต์ที่อนุญาต ALLOWED_CLIENT_IP = ไม่มี # ตัวจัดการคำขอ HTTP แบบกำหนดเอง คลาส CustomHandler(http.server.SimpleHTTPRequestHandler): def do_GET(self): # ตรวจสอบว่าคำขอมาจากไคลเอ็นต์ที่ได้รับอนุญาตหรือไม่ถ้า ALLOWED_CLIENT_IP และ self.client_address[0] != ALLOWED_CLIENT_IP: # ส่ง " ข้อผิดพลาด Forbidden" หากคำขอมาจากไคลเอนต์อื่น self.send_error (403, "Forbidden", "คุณไม่ได้รับอนุญาตให้เข้าถึงทรัพยากรนี้") return # ตรวจสอบว่าคำขอนั้นใช้สำหรับปลายทางการดาวน์โหลดหรือไม่ถ้า self.path.endswith ("/download" ): # อัปเดต IP ไคลเอ็นต์ที่อนุญาต ALLOWED_CLIENT_IP = self.client_address[0] # ให้บริการไฟล์ไปยังไคลเอ็นต์ที่อนุญาต super().do_GET() else: # ส่งข้อผิดพลาด "ไม่พบ" หากคำขอนั้นใช้สำหรับทรัพยากรอื่น self.send_error(404, " ไม่พบ", "ไม่พบทรัพยากรที่ร้องขอบนเซิร์ฟเวอร์นี้") # เริ่มเซิร์ฟเวอร์ HTTPS ด้วย socketserver.TCPServer((HOSTNAME, PORT), CustomHandler) เป็น httpd: # Wrap socket ด้วย SSL httpd.socket = ssl.wrap_socket( httpd.socket, certfile=CERT_FILE, keyfile=KEY_FILE, server_side=True) print(f"การให้บริการ HTTPS บน {HOSTNAME}:{PORT}") httpd.serve_forever()
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence