Files
rocm-systems/projects/rocprofiler/plugin/att/ui/httpserver.py
T

71 lines
1.7 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
import sys
2023-08-21 15:08:31 +00: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
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"
http.server.SimpleHTTPRequestHandler.do_GET(self)
2023-08-21 15:08:31 +00: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
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__)), "."))
try:
with RocTCPServer((IPAddr, PORT), Handler) as httpd:
httpd.serve_forever()
except KeyboardInterrupt:
pass
2023-08-21 15:08:31 +00: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"
finally:
return IPAddr
2023-08-21 15:08:31 +00: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))
try:
run_server()
except KeyboardInterrupt:
print("Exitting.")