From 577456ba027587bd5825b9ec9f0e157cf3180a1e Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 21 Sep 2014 00:56:08 -0400 Subject: handle option parsing --- termcast_client.py | 46 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/termcast_client.py b/termcast_client.py index 22941f8..3b79a20 100644 --- a/termcast_client.py +++ b/termcast_client.py @@ -1,16 +1,20 @@ +import argparse import os import pty import socket import sys class Client(object): - def __init__(self): - pass + def __init__(self, host, port, username, password): + self.host = host + self.port = port + self.username = username + self.password = password def run(self, argv): sock = socket.socket() - sock.connect(("tozt.net", 2201)) - sock.send(b'hello doy asdf\n\033]499;{"geometry":[80,24]}\007') + sock.connect((self.host, self.port)) + sock.send(self._build_connection_string().encode('utf-8')) pty.spawn(argv, lambda fd: self._master_read(fd, sock)) def _master_read(self, fd, sock): @@ -18,10 +22,32 @@ class Client(object): sock.send(data) return data + def _build_connection_string(self): + auth = "hello %s %s\n" % (self.username, self.password) + metadata = '\033]499;{"geometry":[80,24]}\007' # XXX + return auth + metadata + if __name__ == '__main__': - client = Client() - # XXX options - if len(sys.argv) > 1: - client.run(sys.argv[1:]) - else: - client.run(os.getenv("SHELL", default="/bin/sh")) + parser = argparse.ArgumentParser() + parser.add_argument('--host', default="noway.ratry.ru") + parser.add_argument('--port', type=int, default=31337) + parser.add_argument('--username', default=os.getenv("USER")) + parser.add_argument('--password', default="asdf") + parser.add_argument( + 'command', + nargs=argparse.REMAINDER, + ) + + args = parser.parse_args(sys.argv[1:]) + + client = Client( + host=args.host, + port=args.port, + username=args.username, + password=args.password, + ) + + command = args.command + if len(args.command) < 1: + command = os.getenv("SHELL", default="/bin/sh") + client.run(command) -- cgit v1.2.3