Could someone suggest some introductory reading material that will allow me to use 'telnetlib' with 'ssl' or 'ssltelnet'. (currently using Pan since Knode is dropped on Debian)
I'm trying to write something that will download the NNTP headers over TLS. The idea is to 1. telnet to port 119, send 'CAPABILITIES\r\n' using telnetlib 2. then switch to TLS using STARTTLS 3. I tried just connecting to port 119 using a new TLS connection NOT OVER telnet and it didn't work. Apparently you need to pass the TLS context to telnetlib or vice versa. Codes crap i've used bl_varname (bytes list) inconsistently - till I figure out what to do with TLS. import ssl, socket import sys, time from telnetlib import Telnet from ssltelnet import SslTelnet port = 119 server = 'news.eternal-september.org' user = 'v' passwd = 'b' class Response(object): def __init__(self, tn, cmds = '', wmsg = ''): self.tn = tn; self.total_data = []; self.wmsg = wmsg d = { 'r': self.read_server, 'w': self.write_server, 'p': self.bl_print } for c in cmds: d[c]() def read_server(self): tn = self.tn; total_data = []; count = 0 while True: data = tn.read_very_eager() if len(data): count = 0 total_data.append(data) else: time.sleep(1) count += 1 if count > 4: self.total_data = total_data return def write_server(self): tn = self.tn; txt = self.wmsg for line in txt.split('\n'): b_line = bytes(line + '\r\n', encoding='ascii') tn.write(b_line) def bl_print(self): data = self.total_data if len(data): for line in data: print(line.decode()) else: print('no data') def tls(): sock = socket.socket(family=AF_INET, type=SOCK_STREAM) ssl_sock = ssl.wrap_socket(sock) class Server(object): def __init__(self, server = server, port = port): with Telnet(server, port, timeout = 10) as tn: Response(tn = tn, cmds = 'rp') Response(tn = tn, cmds = 'wrp', wmsg='CAPABILITIES') Response(tn = tn, cmds = 'wrp', wmsg='STARTTLS') s = SslTelnet(force_ssl = False, telnet_tls = True, host = server, port = port) print(s.read_very_eager()) time.sleep(2) print(s.read_very_eager()) s = Server() -- https://mail.python.org/mailman/listinfo/python-list