added mini python server.py
parent
02d0922143
commit
3434755e4f
@ -0,0 +1,59 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import BaseHTTPServer, CGIHTTPServer
|
||||||
|
import cgitb; cgitb.enable() ## This line enables CGI error reporting
|
||||||
|
import sys, argparse, socket
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(description='Happy to serve you')
|
||||||
|
parser.add_argument('--port', type=int, default=8000, help='the port number to listen to')
|
||||||
|
parser.add_argument('-t', '--notryports', default=True, action="store_false", help='if a port is busy, automatically try other ones')
|
||||||
|
parser.add_argument('--share', default=False, action="store_true", help='Run as server accessible via your local network')
|
||||||
|
args = parser.parse_args()
|
||||||
|
server = BaseHTTPServer.HTTPServer
|
||||||
|
handler = CGIHTTPServer.CGIHTTPRequestHandler
|
||||||
|
handler.cgi_directories = ["/cgi-bin"]
|
||||||
|
tryports = args.notryports
|
||||||
|
port = args.port
|
||||||
|
ipaddr = None
|
||||||
|
|
||||||
|
if args.share:
|
||||||
|
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
s.connect(("wikipedia.org",80))
|
||||||
|
ipaddr = s.getsockname()[0]
|
||||||
|
s.close()
|
||||||
|
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
if ipaddr:
|
||||||
|
server_address = (ipaddr, port)
|
||||||
|
servername = ipaddr
|
||||||
|
else:
|
||||||
|
server_address = ("localhost", port)
|
||||||
|
servername = "localhost"
|
||||||
|
httpd = server(server_address, handler)
|
||||||
|
print "Serving at --> http://{0}:{1}".format(servername, port)
|
||||||
|
httpd.serve_forever()
|
||||||
|
except socket.error, e:
|
||||||
|
if e.errno == 98:
|
||||||
|
if tryports:
|
||||||
|
if port < 2000:
|
||||||
|
port = 2000
|
||||||
|
else:
|
||||||
|
port += 1
|
||||||
|
sleep(.01)
|
||||||
|
else:
|
||||||
|
print """
|
||||||
|
====================================
|
||||||
|
Error: port ({0}) is already in use
|
||||||
|
====================================
|
||||||
|
|
||||||
|
You can pick another port number
|
||||||
|
(for example 9999) with:
|
||||||
|
|
||||||
|
serve --port 9999
|
||||||
|
""".format(port)
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
raise(e)
|
||||||
|
|
Loading…
Reference in New Issue