Here's a simple implementation of an HTTPS file server in Python3 using the http.server module and the ssl module to handle the HTTPS connection:

python

import http.server
import ssl

allowed_ips = []

class SingleDownloadHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
        if self.client_address[0] not in allowed_ips:
            self.send_error(403)
            return
        if self.headers.get("Range"):
            self.send_error(400)
            return
        allowed_ips.remove(self.client_address[0])
        return http.server.SimpleHTTPRequestHandler.do_GET(self)

with socketserver.TCPServer(("", 443), SingleDownloadHandler) as httpd:
    httpd.socket = ssl.wrap_socket(httpd.socket, keyfile="server.key", certfile="server.crt", server_side=True)
    allowed_ips.append(httpd.socket.getsockname()[0])
    httpd.serve_forever()
This code creates a SingleDownloadHandler class that inherits from http.server.SimpleHTTPRequestHandler and overrides the do_GET method to check if the client's IP address is in the allowed_ips list. If it is not, the server sends a 403 Forbidden error. If the client's IP address is in the allowed_ips list, the code checks if the client is trying to download a range of the file (indicated by the presence of a "Range" header in the request). If so, the server sends a 400 Bad Request error, since partial downloads are not supported. Otherwise, the code removes the client's IP address from the allowed_ips list so that it can only download the file once, and calls the parent class's do_GET method to serve the file.

Finally, the code creates a TCPServer instance on port 443 (the default port for HTTPS), sets the socket attribute to a wrapped version of the server's socket created using an SSL certificate and key, adds the server's IP address to the allowed_ips list, and starts serving requests with serve_forever().
ต่อไปนี้เป็นการใช้งานเซิร์ฟเวอร์ไฟล์ HTTPS อย่างง่ายใน Python3 โดยใช้โมดูล http.server และโมดูล ssl เพื่อจัดการการเชื่อมต่อ HTTPS: python import http.server import ssl allowance_ips = [] class SingleDownloadHandler(http.server.SimpleHTTPRequestHandler): def do_GET (ตนเอง): ถ้า self.client_address[0] ไม่ได้อยู่ใน Allow_ips: self.send_error(403) ส่งคืนถ้า self.headers.get("Range"): self.send_error(400) ส่งคืน allowance_ips.remove(self.client_address[0) ]) ส่งคืน http.server.SimpleHTTPRequestHandler.do_GET(self) ด้วย socketserver.TCPServer(("", 443), SingleDownloadHandler) เป็น httpd: httpd.socket = ssl.wrap_socket(httpd.socket, keyfile="server.key", certfile="server.crt", server_side=True) allowance_ips.append(httpd.socket.getsockname()[0]) httpd.serve_forever() รหัสนี้สร้างคลาส SingleDownloadHandler ที่สืบทอดมาจาก http.server.SimpleHTTPRequestHandler และแทนที่ do_GET วิธีการตรวจสอบว่าที่อยู่ IP ของลูกค้าอยู่ในรายการ Allow_ips หรือไม่ หากไม่เป็นเช่นนั้น เซิร์ฟเวอร์จะส่งข้อผิดพลาด 403 Forbidden หากที่อยู่ IP ของไคลเอนต์อยู่ในรายการ Allow_ips รหัสจะตรวจสอบว่าไคลเอนต์พยายามดาวน์โหลดช่วงของไฟล์หรือไม่ (ระบุได้จากส่วนหัว "Range" ในคำขอ) หากเป็นเช่นนั้น เซิร์ฟเวอร์จะส่งข้อผิดพลาด 400 Bad Request เนื่องจากไม่รองรับการดาวน์โหลดบางส่วน มิฉะนั้น โค้ดจะลบที่อยู่ IP ของลูกค้าออกจากรายการ Allow_ips เพื่อให้สามารถดาวน์โหลดไฟล์ได้เพียงครั้งเดียว และเรียกใช้เมธอด do_GET ของคลาสพาเรนต์เพื่อให้บริการไฟล์ ในที่สุด รหัสจะสร้างอินสแตนซ์ TCPServer บนพอร์ต 443 (พอร์ตเริ่มต้นสำหรับ HTTPS) ตั้งค่าแอตทริบิวต์ซ็อกเก็ตเป็นเวอร์ชันที่รวมของซ็อกเก็ตของเซิร์ฟเวอร์ที่สร้างขึ้นโดยใช้ใบรับรอง SSL และคีย์ เพิ่มที่อยู่ IP ของเซิร์ฟเวอร์ในรายการ Allow_ips และ เริ่มให้บริการคำขอด้วย service_forever()
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence