2023-06-01 21:45:16 -03:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
import sys
|
2023-08-21 15:08:31 +00:00
|
|
|
|
2023-06-01 21:45:16 -03:00
|
|
|
if sys.version_info[0] < 3:
|
|
|
|
|
raise Exception("Must be using Python 3")
|
|
|
|
|
|
|
|
|
|
import http.server
|
|
|
|
|
import socketserver
|
|
|
|
|
import socket
|
|
|
|
|
import os
|
|
|
|
|
import sys
|
|
|
|
|
|
2023-08-21 15:08:31 +00:00
|
|
|
|
2023-06-01 21:45:16 -03:00
|
|
|
class NoCacheHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
|
|
|
|
|
def end_headers(self):
|
|
|
|
|
self.send_my_headers()
|
|
|
|
|
http.server.SimpleHTTPRequestHandler.end_headers(self)
|
|
|
|
|
|
|
|
|
|
def send_my_headers(self):
|
|
|
|
|
self.send_header("Cache-Control", "no-cache, no-store, must-revalidate")
|
|
|
|
|
self.send_header("Pragma", "no-cache")
|
|
|
|
|
self.send_header("Expires", "0")
|
|
|
|
|
|
|
|
|
|
def do_GET(self):
|
2023-08-21 15:08:31 +00:00
|
|
|
if ".png?" in self.path:
|
|
|
|
|
self.path = self.path.split(".png?")[0] + ".png"
|
2023-06-01 21:45:16 -03:00
|
|
|
|
|
|
|
|
http.server.SimpleHTTPRequestHandler.do_GET(self)
|
|
|
|
|
|
2023-08-21 15:08:31 +00:00
|
|
|
|
2023-06-01 21:45:16 -03:00
|
|
|
class RocTCPServer(socketserver.TCPServer):
|
|
|
|
|
def server_bind(self):
|
|
|
|
|
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
|
|
|
|
self.socket.bind(self.server_address)
|
|
|
|
|
|
2023-08-21 15:08:31 +00:00
|
|
|
|
2023-06-01 21:45:16 -03:00
|
|
|
def run_server():
|
|
|
|
|
Handler = NoCacheHTTPRequestHandler
|
2023-08-21 15:08:31 +00:00
|
|
|
os.chdir(os.path.join(os.path.dirname(os.path.abspath(__file__)), "."))
|
2023-06-01 21:45:16 -03:00
|
|
|
try:
|
|
|
|
|
with RocTCPServer((IPAddr, PORT), Handler) as httpd:
|
|
|
|
|
httpd.serve_forever()
|
|
|
|
|
except KeyboardInterrupt:
|
|
|
|
|
pass
|
|
|
|
|
|
2023-08-21 15:08:31 +00:00
|
|
|
|
2023-06-01 21:45:16 -03:00
|
|
|
def get_ip():
|
|
|
|
|
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
|
|
|
s.settimeout(0)
|
|
|
|
|
try:
|
|
|
|
|
hostname = socket.gethostname()
|
|
|
|
|
IPAddr = socket.gethostbyname(hostname)
|
|
|
|
|
s.connect(({IPAddr}, 1))
|
|
|
|
|
except Exception:
|
2023-08-21 15:08:31 +00:00
|
|
|
IPAddr = "127.0.0.1"
|
2023-06-01 21:45:16 -03:00
|
|
|
finally:
|
|
|
|
|
return IPAddr
|
|
|
|
|
|
2023-08-21 15:08:31 +00:00
|
|
|
|
2023-06-01 21:45:16 -03:00
|
|
|
IPAddr = get_ip()
|
|
|
|
|
PORT = 8000
|
|
|
|
|
|
|
|
|
|
if len(sys.argv) > 1:
|
|
|
|
|
PORT = int(sys.argv[1])
|
2023-08-21 15:08:31 +00:00
|
|
|
print("serving at port: {0}".format(PORT))
|
2023-06-01 21:45:16 -03:00
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
run_server()
|
|
|
|
|
except KeyboardInterrupt:
|
|
|
|
|
print("Exitting.")
|