2018-09-06 03:45:10 +02:00
|
|
|
#!/usr/bin/env python
|
|
|
|
from __future__ import print_function, absolute_import
|
|
|
|
import os, sys
|
|
|
|
import signal
|
|
|
|
import socket
|
2019-01-28 04:19:56 +01:00
|
|
|
import http.server
|
2019-02-12 04:17:29 +01:00
|
|
|
from os.path import dirname, abspath, join as pjoin
|
2018-09-06 03:45:10 +02:00
|
|
|
|
|
|
|
def sighandler(signum, frame):
|
|
|
|
sys.stdout.write('\n')
|
|
|
|
sys.stdout.flush()
|
|
|
|
sys.exit(1)
|
|
|
|
|
2019-01-28 04:19:56 +01:00
|
|
|
|
|
|
|
class HTTPServer(http.server.HTTPServer):
|
|
|
|
def __init__(self, addr):
|
|
|
|
http.server.HTTPServer.__init__(
|
|
|
|
self, addr, http.server.SimpleHTTPRequestHandler)
|
|
|
|
|
2018-09-06 03:45:10 +02:00
|
|
|
def server_bind(self):
|
|
|
|
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
2019-01-28 04:19:56 +01:00
|
|
|
http.server.HTTPServer.server_bind(self)
|
2018-09-06 03:45:10 +02:00
|
|
|
|
2019-01-28 04:19:56 +01:00
|
|
|
|
2019-02-12 04:17:29 +01:00
|
|
|
# make sure "./fonts" is a symlink to /build/fonts
|
|
|
|
labdir = abspath(dirname(__file__))
|
|
|
|
try:
|
|
|
|
os.symlink('../../build/fonts', pjoin(labdir, 'fonts'))
|
2019-02-22 16:51:59 +01:00
|
|
|
except OSError:
|
2019-02-12 04:17:29 +01:00
|
|
|
pass
|
|
|
|
|
|
|
|
addr = ("localhost", 3003)
|
2018-09-06 03:45:10 +02:00
|
|
|
|
2019-04-01 04:25:31 +02:00
|
|
|
if len(sys.argv) > 1:
|
|
|
|
if sys.argv[1] == '-h':
|
|
|
|
print('usage: %s [-h | --bind-any]' % sys.argv[0], file=sys.stdout)
|
|
|
|
sys.exit(0)
|
|
|
|
elif sys.argv[1] == '--bind-any':
|
|
|
|
addr = ("0.0.0.0", 3003)
|
|
|
|
|
2018-09-06 03:45:10 +02:00
|
|
|
# make ^C instantly exit program
|
|
|
|
signal.signal(signal.SIGINT, sighandler)
|
|
|
|
|
2019-01-28 04:19:56 +01:00
|
|
|
os.chdir(os.path.dirname(os.path.abspath(__file__)))
|
2018-09-06 03:45:10 +02:00
|
|
|
|
2019-01-28 04:19:56 +01:00
|
|
|
httpd = HTTPServer(addr)
|
|
|
|
print("serving at http://%s:%d/" % addr)
|
2018-09-06 03:45:10 +02:00
|
|
|
httpd.serve_forever()
|