49 lines
1.8 KiB
Python
49 lines
1.8 KiB
Python
import http.server
|
|
import socketserver
|
|
import ssl
|
|
import threading
|
|
import sys
|
|
import os
|
|
|
|
os.chdir(os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
class NoCacheHandler(http.server.SimpleHTTPRequestHandler):
|
|
def end_headers(self):
|
|
self.send_header('Cache-Control', 'no-cache, no-store, must-revalidate')
|
|
self.send_header('Pragma', 'no-cache')
|
|
self.send_header('Expires', '0')
|
|
self.send_header('Access-Control-Allow-Origin', '*')
|
|
super().end_headers()
|
|
|
|
def run_http(port=8085):
|
|
try:
|
|
class ReusableServer(socketserver.TCPServer):
|
|
allow_reuse_address = True
|
|
with ReusableServer(('', port), NoCacheHandler) as httpd:
|
|
print(f'Serving HTTP on port {port} (http://localhost:{port} and http://192.168.1.249:{port})')
|
|
sys.stdout.flush()
|
|
httpd.serve_forever()
|
|
except Exception as e:
|
|
print(f'HTTP Server on {port} notice: {e}')
|
|
sys.stdout.flush()
|
|
|
|
def run_https(port=8443):
|
|
try:
|
|
class ReusableServer(socketserver.TCPServer):
|
|
allow_reuse_address = True
|
|
with ReusableServer(('', port), NoCacheHandler) as httpd:
|
|
ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
|
|
ctx.load_cert_chain(certfile='cert.pem', keyfile='key.pem')
|
|
httpd.socket = ctx.wrap_socket(httpd.socket, server_side=True)
|
|
print(f'Serving HTTPS on port {port} (https://localhost:{port} and https://192.168.1.249:{port})')
|
|
sys.stdout.flush()
|
|
httpd.serve_forever()
|
|
except Exception as e:
|
|
print(f'HTTPS Server on {port} notice: {e}')
|
|
sys.stdout.flush()
|
|
|
|
if __name__ == '__main__':
|
|
t_https = threading.Thread(target=run_https, args=(8443,), daemon=True)
|
|
t_https.start()
|
|
run_http(8085)
|