import socket
import time
from spylunking.log.setup_logging import console_logger
log = console_logger(
name='connect_forwarder')
[docs]def connect_forwarder(forward_host=None,
forward_port=None,
max_retries=-1,
sleep_interval=1.0):
"""connect_forwarder
:param forward_host: host for receiving forwarded packets
:param forward_port: port for the forwarded packets
:param max_retries: retries, -1 = infinite
:param sleep_interval: how often to retry in this loop
"""
forward_skt = None
retry_count = 0
if max_retries == -1:
retry_count = -2
if forward_host and forward_port:
while not forward_skt and \
retry_count < max_retries:
try:
forward_skt = socket.socket()
log.info(("connecting to forward={}:{}")
.format(forward_host,
forward_port))
forward_skt.connect((forward_host,
forward_port))
log.debug(("connected to forward={}:{}")
.format(forward_host,
forward_port))
except Exception as s:
forward_skt = None
log.error(("Failed to connect forward address={}:{} "
"with ex={}")
.format(forward_host,
forward_port,
s))
if max_retries == -1:
retry_count = -2
else:
retry_count += 1
# end of try/ex
time.sleep(sleep_interval)
# end of setting up forward
# end forward_host and forward_port
return forward_skt
# end of connect_forwarder