Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 14 additions & 8 deletions src/telnetlib_proxy/__init__.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@

import argparse
import os
import sys
import socks
import socket
import termios
import argparse
import sys
import telnetlib
from urllib.parse import urlparse

import socks
import termios

__all__ = ["Telnet"]

Expand Down Expand Up @@ -40,6 +39,10 @@ def wait_key(echo=False):
class Telnet(telnetlib.Telnet):

def __init__(self, *args, **kwargs):
telnet_proxy = kwargs.pop('telnet_proxy', os.environ.get('telnet_proxy'))
if not telnet_proxy:
telnet_proxy = os.environ.get('telnet_proxy')
self.telnet_proxy = telnet_proxy
super().__init__(*args, **kwargs)
self.echo = False

Expand Down Expand Up @@ -67,7 +70,7 @@ def open(self, host, port=0, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, **kwargs):
self.timeout = timeout
sys.audit("telnetlib.Telnet.open", self, host, port)

proxy_url = os.environ.get('telnet_proxy')
proxy_url = self.telnet_proxy

if proxy_url:
url_info = urlparse(proxy_url)
Expand All @@ -89,8 +92,11 @@ def open(self, host, port=0, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, **kwargs):

if proxy_args.get('proxy_addr'):
self.sock = socks.create_connection((host, port), timeout, **proxy_args)
socks_hostname = socket.gethostbyaddr(proxy_args.get('proxy_addr'))[0]
print('Connected to {} via {}.'.format(target_hostname, socks_hostname))
try:
socks_hostname = socket.gethostbyaddr(proxy_args.get('proxy_addr'))[0]
print('Connected to {} via {}.'.format(target_hostname, socks_hostname))
except socket.herror as e:
print('Connected to {} via {}.'.format(target_hostname, proxy_args.get('proxy_addr')))
else:
self.sock = socket.create_connection((host, port), timeout)
print('Connected to {}.'.format(target_hostname))
Expand Down