import http.server import urllib.parse import ssl import os class ReseedHandler(http.server.SimpleHTTPRequestHandler): """Handles reseeding requests""" i2pseeds_file = "" server_version = "Pyseeder Server" sys_version = "" def do_GET(self): path = urllib.parse.urlparse(self.path).path if path == "/i2pseeds.su3": self.send_response(200) self.send_header("Content-Type", "application/octet-stream") self.send_header("Content-Length", os.path.getsize(self.i2pseeds_file)) self.end_headers() with open(self.i2pseeds_file, 'rb') as f: self.wfile.write(f.read()) else: self.send_error(404, "Not found") def run_server(host, port, priv_key, cert, i2pseeds_file): """Start HTTPS server""" Handler = ReseedHandler Handler.i2pseeds_file = i2pseeds_file httpd = http.server.HTTPServer((host, int(port)), Handler) httpd.socket = ssl.wrap_socket(httpd.socket, server_side=True, keyfile=priv_key, certfile=cert, ssl_version=ssl.PROTOCOL_TLSv1) try: httpd.serve_forever() except KeyboardInterrupt: exit()