Browse Source

Good enough for now. Need to convert everything to non-blocking eventually.

pyserial_fix
Scott Petersen 11 years ago
parent
commit
902011fd5a
1 changed files with 85 additions and 0 deletions
  1. +85
    -0
      sslterm.py

+ 85
- 0
sslterm.py View File

@@ -0,0 +1,85 @@
#!/usr/bin/env python

import pyad2usb.ad2usb
import sys, select
import termios, tty
import time

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:
print "Syntax: sslterm.py [host:port] [ca cert] [client cert] [client key]\r"
return 1

host, port = sys.argv[1].split(':')
ca_cert = sys.argv[2]
client_cert = sys.argv[3]
client_key = sys.argv[4]

running = True

old_term_settings = termios.tcgetattr(sys.stdin.fileno())
tty.setraw(sys.stdin.fileno())

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

a2u.open()
#dev.open(no_reader_thread=True)

while running:
data = None

ifh, ofh, efh = select.select([sys.stdin], [], [], 0)
if ifh:
data = sys.stdin.read(1)

if data:
if data == "\x03":
print "Exiting..\r"
running = False
break

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()

finally:
termios.tcsetattr(sys.stdin.fileno(), termios.TCSADRAIN, old_term_settings)


if __name__ == '__main__':
main()

Loading…
Cancel
Save