mirror of https://github.com/PurpleI2P/pyseeder
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.2 KiB
37 lines
1.2 KiB
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()
|
|
|