aboutsummaryrefslogtreecommitdiffstats
path: root/termcast_server
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-09-23 18:39:29 -0400
committerJesse Luehrs <doy@tozt.net>2014-09-23 18:39:29 -0400
commit1525c33ba5fceeb5558b98c9f6e197d28aaa8770 (patch)
tree8929ab7f0e7782c4a15ec43da59fda224fd227c1 /termcast_server
parenta9197023946c36a406405338adb36102c179a3da (diff)
downloadpython-termcast-server-1525c33ba5fceeb5558b98c9f6e197d28aaa8770.tar.gz
python-termcast-server-1525c33ba5fceeb5558b98c9f6e197d28aaa8770.zip
stub out websockets code for the web viewer
Diffstat (limited to 'termcast_server')
-rw-r--r--termcast_server/__init__.py10
-rw-r--r--termcast_server/index.html21
-rw-r--r--termcast_server/web.py34
3 files changed, 65 insertions, 0 deletions
diff --git a/termcast_server/__init__.py b/termcast_server/__init__.py
index 6896b04..98cf7d9 100644
--- a/termcast_server/__init__.py
+++ b/termcast_server/__init__.py
@@ -7,6 +7,7 @@ import uuid
from . import pubsub
from . import ssh
from . import termcast
+from . import web
class Server(object):
def __init__(self, keyfile):
@@ -16,6 +17,7 @@ class Server(object):
def listen(self):
ssh_sock = self._open_socket(2200)
termcast_sock = self._open_socket(2201)
+ web_sock = self._open_socket(2202)
threading.Thread(
target=lambda: self.wait_for_ssh_connection(ssh_sock)
@@ -23,6 +25,9 @@ class Server(object):
threading.Thread(
target=lambda: self.wait_for_termcast_connection(termcast_sock)
).start()
+ threading.Thread(
+ target=lambda: self.wait_for_web_connection(web_sock)
+ ).start()
def wait_for_ssh_connection(self, sock):
self._wait_for_connection(
@@ -36,6 +41,11 @@ class Server(object):
lambda client: self.handle_termcast_connection(client)
)
+ def wait_for_web_connection(self, sock):
+ sock.setblocking(0)
+ sock.listen(100)
+ web.start_server(sock)
+
def handle_ssh_connection(self, client):
self._handle_connection(
client,
diff --git a/termcast_server/index.html b/termcast_server/index.html
new file mode 100644
index 0000000..e7cd8dd
--- /dev/null
+++ b/termcast_server/index.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <script>
+var url = location.origin.replace(/^http/, 'ws') + "/-/";
+var socket = new WebSocket(url);
+socket.onopen = function (e) {
+ // XXX
+};
+socket.onmessage = function (e) {
+ // XXX
+};
+socket.onclose = function (e) {
+ // XXX
+};
+ </script>
+</head>
+<body>
+ <h1>Hello World</h1>
+</body>
+</html>
diff --git a/termcast_server/web.py b/termcast_server/web.py
new file mode 100644
index 0000000..6b45632
--- /dev/null
+++ b/termcast_server/web.py
@@ -0,0 +1,34 @@
+from pkg_resources import resource_string
+import tornado
+import tornado.httpserver
+import tornado.ioloop
+import tornado.web
+import tornado.websocket
+
+class RootHandler(tornado.web.RequestHandler):
+ def get(self):
+ self.write(resource_string(__name__, "index.html"))
+
+class WebSocketHandler(tornado.websocket.WebSocketHandler):
+ def open(self):
+ # XXX
+ pass
+
+ def on_message(self, message):
+ # XXX
+ pass
+
+ def close(self):
+ # XXX
+ pass
+
+def make_app():
+ return tornado.web.Application([
+ ('/', RootHandler),
+ ('/-/', WebSocketHandler),
+ ])
+
+def start_server(sock):
+ server = tornado.httpserver.HTTPServer(make_app())
+ server.add_socket(sock)
+ tornado.ioloop.IOLoop.instance().start()