summaryrefslogtreecommitdiff
path: root/utils/web.py
diff options
context:
space:
mode:
authorJoel Martin <jmartin@sentryds.com>2011-08-25 12:24:52 -0500
committerJoel Martin <jmartin@sentryds.com>2011-08-25 12:24:52 -0500
commit65edee7696dc40dbc3e1a068c7767257be1f6bd1 (patch)
treeb7e54cd8a149b4ad3ceaeacc41987e51aeee2d5f /utils/web.py
parent1d7af907209f3f1e3a7bad40ff9413b358d2c206 (diff)
downloadnovnc-html5-test.tar.gz
Fix menu. Add web-socket-js and websockify.html5-test
Diffstat (limited to 'utils/web.py')
-rwxr-xr-xutils/web.py55
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()