| @@ -6,15 +6,6 @@ import termios, tty | |||||
| import time | import time | ||||
| def main(): | def main(): | ||||
| def handle_open(sender, args): | |||||
| print "Connection open.\r" | |||||
| def handle_close(sender, args): | |||||
| print "Connection closed.\r" | |||||
| def handle_read(sender, args): | |||||
| print '<', args, "\r" | |||||
| if len(sys.argv) != 5: | if len(sys.argv) != 5: | ||||
| print "Syntax: sslterm.py [host:port] [ca cert] [client cert] [client key]\r" | print "Syntax: sslterm.py [host:port] [ca cert] [client cert] [client key]\r" | ||||
| return 1 | return 1 | ||||
| @@ -30,52 +21,37 @@ def main(): | |||||
| tty.setraw(sys.stdin.fileno()) | tty.setraw(sys.stdin.fileno()) | ||||
| try: | try: | ||||
| dev = pyad2usb.ad2usb.devices.SocketDevice(interface=(host, int(port)), use_ssl=True, ssl_certificate=client_cert, ssl_key=client_key, ssl_ca=ca_cert) | |||||
| a2u = pyad2usb.ad2usb.AD2USB(dev) | |||||
| a2u.on_open += handle_open | |||||
| a2u.on_close += handle_close | |||||
| a2u.on_read += handle_read | |||||
| print "Opening connection to {0}:{1}\r".format(host, port) | |||||
| a2u.open() | |||||
| #dev.open(no_reader_thread=True) | |||||
| dev = pyad2usb.ad2usb.devices.SocketDevice(interface=(host, int(port)), use_ssl=True, ssl_certificate=client_cert, ssl_key=client_key, ssl_ca=ca_cert) | |||||
| dev.open(no_reader_thread=True) | |||||
| dev.write("\r") # HACK: Prime the pump. This likely has to do with the SSL handshake | |||||
| # not being completed when we get down to the select. | |||||
| while running: | while running: | ||||
| data = None | |||||
| ifh, ofh, efh = select.select([sys.stdin, dev._device], [], [], 0) | |||||
| for h in ifh: | |||||
| ifh, ofh, efh = select.select([sys.stdin], [], [], 0) | |||||
| if ifh: | |||||
| data = sys.stdin.read(1) | |||||
| if h == sys.stdin: | |||||
| data = h.read(1) | |||||
| if data: | |||||
| # Break out if we get a CTRL-C | |||||
| if data == "\x03": | if data == "\x03": | ||||
| print "Exiting..\r" | print "Exiting..\r" | ||||
| running = False | running = False | ||||
| break | break | ||||
| else: | else: | ||||
| a2u.send(data) | |||||
| a2u.close() | |||||
| #ifh, ofh, efh = select.select([sys.stdin, dev._device], [], [], 0) | |||||
| #for h in ifh: | |||||
| # data = h.read(1) | |||||
| # | |||||
| # if h == sys.stdin: | |||||
| # if data == "\x03": | |||||
| # print "Exiting..\r" | |||||
| # running = False | |||||
| # break | |||||
| # | |||||
| # else: | |||||
| # dev.write(data) | |||||
| # | |||||
| # else: | |||||
| # sys.stdout.write(data) | |||||
| # sys.stdout.flush() | |||||
| #dev.close() | |||||
| dev.write(data) | |||||
| else: | |||||
| data = h.read(100) | |||||
| sys.stdout.write(data) | |||||
| sys.stdout.flush() | |||||
| dev.close() | |||||
| print "Connection closed.\r" | |||||
| finally: | finally: | ||||
| termios.tcsetattr(sys.stdin.fileno(), termios.TCSADRAIN, old_term_settings) | termios.tcsetattr(sys.stdin.fileno(), termios.TCSADRAIN, old_term_settings) | ||||