From 5e4ce142c3a5812be904195c43a202cb35d4284c Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Wed, 4 May 2016 04:13:31 +0000 Subject: [PATCH] Add simple client. Print server received messages. --- client/client.py | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ server/server.py | 3 +++ 2 files changed, 68 insertions(+) create mode 100755 client/client.py diff --git a/client/client.py b/client/client.py new file mode 100755 index 0000000..bc823dd --- /dev/null +++ b/client/client.py @@ -0,0 +1,65 @@ +#!/usr/bin/python3 + +import argparse +import json +import socket +import time +from ws4py.client import threadedclient + + +parser = argparse.ArgumentParser(description='iconograph fetcher') +parser.add_argument( + '--server', + dest='server', + action='store', + required=True) +parser.add_argument( + '--https-ca-cert', + dest='https_ca_cert', + action='store', + required=True) +parser.add_argument( + '--https-client-cert', + dest='https_client_cert', + action='store', + required=True) +parser.add_argument( + '--https-client-key', + dest='https_client_key', + action='store', + required=True) +FLAGS = parser.parse_args() + + +class Client(threadedclient.WebSocketClient): + + def Loop(self): + self.daemon = True + self.connect() + while True: + self.send(json.dumps({ + 'type': 'report', + 'data': { + 'hostname': socket.gethostname(), + 'uptime_seconds': self._Uptime(), + }, + }), False) + time.sleep(5.0) + + def _Uptime(self): + with open('/proc/uptime', 'r') as fh: + return int(float(fh.readline().split(' ', 1)[0])) + + +def main(): + ssl_options = { + 'keyfile': FLAGS.https_client_key, + 'certfile': FLAGS.https_client_cert, + 'ca_certs': FLAGS.https_ca_cert, + } + client = Client('wss://%s/ws' % FLAGS.server, protocols=['http-only', 'chat'], ssl_options=ssl_options) + client.Loop() + + +if __name__ == '__main__': + main() diff --git a/server/server.py b/server/server.py index 7ed7d83..bab9e46 100755 --- a/server/server.py +++ b/server/server.py @@ -66,6 +66,9 @@ def GetWebSocketHandler(image_types, websockets): def closed(self, code, reason=None): websockets.remove(self) + def received_message(self, msg): + print(json.loads(str(msg))) + return WebSocketHandler