From 1525c33ba5fceeb5558b98c9f6e197d28aaa8770 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 23 Sep 2014 18:39:29 -0400 Subject: stub out websockets code for the web viewer --- README.md | 1 + setup.py | 4 ++++ termcast_server/__init__.py | 10 ++++++++++ termcast_server/index.html | 21 +++++++++++++++++++++ termcast_server/web.py | 34 ++++++++++++++++++++++++++++++++++ 5 files changed, 70 insertions(+) create mode 100644 termcast_server/index.html create mode 100644 termcast_server/web.py diff --git a/README.md b/README.md index efc9b93..c95ea65 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ goal of adding features like a web viewer and better authentication options. # Dependencies * [paramiko](https://pypi.python.org/pypi/paramiko/) +* [tornado](https://pypi.python.org/pypi/tornado) * [vt100](https://pypi.python.org/pypi/vt100) # Client diff --git a/setup.py b/setup.py index 3f59bfc..09b8b0b 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,11 @@ setup( install_requires=[ "vt100", "paramiko", + "tornado", ], + package_data={ + '': ["*.html"], + }, classifiers=[ "Development Status :: 3 - Alpha", "Environment :: Console", 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 @@ + + + + + + +

Hello World

+ + 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() -- cgit v1.2.3