diff options
author | Jesse Luehrs <doy@tozt.net> | 2014-09-15 01:39:23 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2014-09-15 01:44:51 -0400 |
commit | 070da900a4bdda26ee4ee00ad6e3d9fcb6aa262a (patch) | |
tree | 9e2e19f22bf4c0690521222cb453ec058bfd7c46 /ssh.py | |
parent | f5c3448d15e1e9e1f51d4c9f2b0d1b8a4e0e4b10 (diff) | |
download | python-termcast-server-070da900a4bdda26ee4ee00ad6e3d9fcb6aa262a.tar.gz python-termcast-server-070da900a4bdda26ee4ee00ad6e3d9fcb6aa262a.zip |
start working on a watcher menu for the ssh side
Diffstat (limited to 'ssh.py')
-rw-r--r-- | ssh.py | 34 |
1 files changed, 24 insertions, 10 deletions
@@ -1,15 +1,6 @@ import paramiko import time -class Handler(object): - def __init__(self, sock, connections): - self.sock = sock - self.connections = connections - self.which - - def show(self): - pass - class Connection(object): def __init__(self, client, connection_id, publisher): self.transport = paramiko.Transport(client) @@ -22,9 +13,11 @@ class Connection(object): self.transport.start_server(server=Server()) self.chan = self.transport.accept(None) + self.watching_id = self.select_stream() + # XXX need to have the user select a stream, and then pass the stream's # id in here - self.publisher.notify("new_viewer", "some-stream") + self.publisher.notify("new_viewer", self.watching_id) while True: c = self.chan.recv(1) @@ -32,6 +25,27 @@ class Connection(object): break self.chan.close() + def select_stream(self): + self.chan.send("\033[2J\033[HTermcast") + row = 3 + key_code = ord('a') + keymap = {} + for streamer in self.publisher.request_all("get_streamers"): + key = chr(key_code) + keymap[key] = streamer["id"] + self.chan.send("\033[%dH%s) %s" % (row, key, streamer["name"].decode('utf-8'))) + row += 1 + key_code += 1 + + self.chan.send("\033[%dHChoose a stream: " % (row + 1)) + + c = self.chan.recv(1).decode('utf-8') + if c in keymap: + self.chan.send("\033[2J\033[H") + return keymap[c] + else: + return self.select_stream() + def msg_new_data(self, connection_id, prev_buf, data): # XXX uncomment this once we implement stream selection # if self.watching_id != connection_id: |