aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-12-11 05:27:49 -0500
committerJesse Luehrs <doy@tozt.net>2014-12-11 05:27:49 -0500
commitc19a99ce1ec89f6ad7029344d7ef2c1e1d9216fc (patch)
treeb1fd5b74275a3e3042d75c31cc2267fbe4e6f1df
parent524e5f4fa0603e565eed95a5eff58c0ddebb19a0 (diff)
downloadpython-termcast-server-master.tar.gz
python-termcast-server-master.zip
pass idle time and creation time to websocketHEADmaster
-rw-r--r--termcast_server/ssh.py35
-rw-r--r--termcast_server/termcast.py37
-rw-r--r--termcast_server/web.py9
3 files changed, 42 insertions, 39 deletions
diff --git a/termcast_server/ssh.py b/termcast_server/ssh.py
index 0b03f28..c1d5a81 100644
--- a/termcast_server/ssh.py
+++ b/termcast_server/ssh.py
@@ -147,8 +147,8 @@ class Connection(object):
rows = streamer["rows"]
cols = streamer["cols"]
viewers = streamer["viewers"]
- idle = streamer["idle_time"]
- total = streamer["total_time"]
+ idle = time.time() - streamer["idle_since"]
+ total = time.time() - streamer["created_at"]
size = "(%dx%d)" % (cols, rows)
size_pre = ""
size_post = ""
@@ -158,12 +158,41 @@ class Connection(object):
self._send_all(
"\033[%dH%s) %-20s %s%-15s%s %-10s %-12s %-15s" % (
row, key, name, size_pre, size, size_post,
- viewers, idle, total
+ viewers,
+ self._human_readable_duration(idle),
+ self._human_readable_duration(total)
)
)
row += 1
self._send_all("\033[%dHChoose a stream: " % (row + 1))
+ def _human_readable_duration(self, duration):
+ days = 0
+ hours = 0
+ minutes = 0
+ seconds = 0
+
+ if duration > 60*60*24:
+ days = duration // (60*60*24)
+ duration -= days * 60*60*24
+ if duration > 60*60:
+ hours = duration // (60*60)
+ duration -= hours * 60*60
+ if duration > 60:
+ minutes = duration // 60
+ duration -= minutes * 60
+ seconds = duration
+
+ ret = "%02ds" % seconds
+ if minutes > 0 or hours > 0 or days > 0:
+ ret = ("%02dm" % minutes) + ret
+ if hours > 0 or days > 0:
+ ret = ("%02dh" % hours) + ret
+ if days > 0:
+ ret = ("%dd" % days) + ret
+
+ return ret
+
def _cleanup_watcher(self):
self.publisher.notify(
"viewer_disconnect", self.watching_id
diff --git a/termcast_server/termcast.py b/termcast_server/termcast.py
index 1a6c279..aaa4284 100644
--- a/termcast_server/termcast.py
+++ b/termcast_server/termcast.py
@@ -138,39 +138,6 @@ class Handler(object):
return cell_changes
- def total_time(self):
- return self._human_readable_duration(time.time() - self.created_at)
-
- def idle_time(self):
- return self._human_readable_duration(time.time() - self.idle_since)
-
- def _human_readable_duration(self, duration):
- days = 0
- hours = 0
- minutes = 0
- seconds = 0
-
- if duration > 60*60*24:
- days = duration // (60*60*24)
- duration -= days * 60*60*24
- if duration > 60*60:
- hours = duration // (60*60)
- duration -= hours * 60*60
- if duration > 60:
- minutes = duration // 60
- duration -= minutes * 60
- seconds = duration
-
- ret = "%02ds" % seconds
- if minutes > 0 or hours > 0 or days > 0:
- ret = ("%02dm" % minutes) + ret
- if hours > 0 or days > 0:
- ret = ("%02dh" % hours) + ret
- if days > 0:
- ret = ("%dd" % days) + ret
-
- return ret
-
class Connection(object):
def __init__(self, client, connection_id, publisher, pemfile):
self.client = client
@@ -267,8 +234,8 @@ class Connection(object):
"id": self.connection_id,
"rows": self.handler.rows,
"cols": self.handler.cols,
- "idle_time": self.handler.idle_time(),
- "total_time": self.handler.total_time(),
+ "idle_since": self.handler.idle_since,
+ "created_at": self.handler.created_at,
"viewers": self.viewers,
}
diff --git a/termcast_server/web.py b/termcast_server/web.py
index 26514e2..b3048fa 100644
--- a/termcast_server/web.py
+++ b/termcast_server/web.py
@@ -24,7 +24,14 @@ class WebSocketHandler(tornado.websocket.WebSocketHandler):
streamers = self.publisher.request_all("get_streamers")
reply = {
"type": "streamer_list",
- "streamers": [ { "id": s["id"], "name": s["name"].decode('utf-8', 'replace') } for s in streamers ],
+ "streamers": [
+ {
+ "id": s["id"],
+ "name": s["name"].decode('utf-8', 'replace'),
+ "idle_since": s["idle_since"],
+ "created_at": s["created_at"],
+ } for s in streamers
+ ],
}
self.write_message(json.dumps(reply))
elif data["type"] == "start_watching":