diff options
author | Joel Martin <jmartin@sentryds.com> | 2011-08-25 12:24:52 -0500 |
---|---|---|
committer | Joel Martin <jmartin@sentryds.com> | 2011-08-25 12:24:52 -0500 |
commit | 65edee7696dc40dbc3e1a068c7767257be1f6bd1 (patch) | |
tree | b7e54cd8a149b4ad3ceaeacc41987e51aeee2d5f /utils/web.py | |
parent | 1d7af907209f3f1e3a7bad40ff9413b358d2c206 (diff) | |
download | novnc-html5-test.tar.gz |
Fix menu. Add web-socket-js and websockify.html5-test
Diffstat (limited to 'utils/web.py')
-rwxr-xr-x | utils/web.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/utils/web.py b/utils/web.py new file mode 100755 index 0000000..23afca0 --- /dev/null +++ b/utils/web.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python +''' +A super simple HTTP/HTTPS webserver for python. Automatically detect + +You can make a cert/key with openssl using: +openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem +as taken from http://docs.python.org/dev/library/ssl.html#certificates + +''' + +import traceback, sys +import socket +import ssl +#import http.server as server # python 3.X +import SimpleHTTPServer as server # python 2.X + +def do_request(connstream, from_addr): + x = object() + server.SimpleHTTPRequestHandler(connstream, from_addr, x) + connstream.close() + +def serve(): + bindsocket = socket.socket() + bindsocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + #bindsocket.bind(('localhost', PORT)) + bindsocket.bind(('', PORT)) + bindsocket.listen(5) + + print("serving on port", PORT) + + while True: + try: + newsocket, from_addr = bindsocket.accept() + peek = newsocket.recv(1024, socket.MSG_PEEK) + if peek.startswith("\x16"): + connstream = ssl.wrap_socket( + newsocket, + server_side=True, + certfile='self.pem', + ssl_version=ssl.PROTOCOL_TLSv1) + else: + connstream = newsocket + + do_request(connstream, from_addr) + + except Exception: + traceback.print_exc() + +try: + PORT = int(sys.argv[1]) +except: + print "%s port" % sys.argv[0] + sys.exit(2) + +serve() |