| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #!/bin/env python3
- import os
- import sys
- import argparse
- import random
- import http.server
- import socket
- if __name__ == '__main__':
- parser = argparse.ArgumentParser(description="Open http server on selected directory")
- parser.add_argument('--directory', '-d', default=os.getcwd(),
- help='specify alternate directory (default: current directory)')
- parser.add_argument('--port', help="port to listen to, default random port")
- args = parser.parse_args()
- lisport = random.randint(10000, 65000)
- httpdirectory = args.directory
- if os.path.isdir(args.directory) == False:
- print("ERROR: Directory %s not exist, please check!" % (args.directory))
- sys.exit(1)
- print("HTTP Served for directory %s" % (httpdirectory))
- if args.port:
- lisport = int(args.port)
- print("Listen to port %d(specified by --port)" % (lisport))
- else:
- print("Listen to port %d(random generated)" % (lisport))
- # changed based on https://docs.python.org/3/library/http.server.html
- class myHandler(http.server.SimpleHTTPRequestHandler):
- # https://gist.github.com/scottj/a510d6bd96941901fb99554566ee226d
- extensions_map = {
- '': 'application/octet-stream',
- '.manifest': 'text/cache-manifest',
- '.html': 'text/html',
- '.txt': 'text/plain',
- '.rst': 'text/plain',
- '.md': 'text/plain',
- '.map': 'text/plain',
- ".mk": 'text/plain',
- ".yaml": 'text/plain',
- ".yml": 'text/plain',
- '.text': 'text/plain',
- '.log': 'text/plain',
- '.csv': 'text/plain',
- '.png': 'image/png',
- '.jpg': 'image/jpg',
- '.svg': 'image/svg+xml',
- '.css': 'text/css',
- '.pdf': 'application/pdf',
- '.js':'application/x-javascript',
- '.wasm': 'application/wasm',
- '.json': 'application/json',
- '.xml': 'application/xml',
- '.xls': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
- '.xlsx': 'application/vnd.ms-excel'
- }
- def __init__(self, *args, **kwargs):
- super().__init__(*args, directory=httpdirectory, **kwargs)
- httpd = http.server.HTTPServer(("", lisport), myHandler)
- try:
- print("Please open http://%s:%d" % (socket.gethostname(), lisport))
- httpd.serve_forever()
- except:
- print("http server closed!")
- pass
- sys.exit(0)
|