mirror of
https://github.com/markqvist/Reticulum.git
synced 2024-11-21 21:20:17 +00:00
Internal interface config handling for TCPClientInterface
This commit is contained in:
parent
c9d744f88a
commit
5de63d5bf2
@ -63,6 +63,7 @@ class ThreadingTCP6Server(socketserver.ThreadingMixIn, socketserver.TCPServer):
|
|||||||
|
|
||||||
class TCPClientInterface(Interface):
|
class TCPClientInterface(Interface):
|
||||||
BITRATE_GUESS = 10*1000*1000
|
BITRATE_GUESS = 10*1000*1000
|
||||||
|
DEFAULT_IFAC_SIZE = 16
|
||||||
|
|
||||||
RECONNECT_WAIT = 5
|
RECONNECT_WAIT = 5
|
||||||
RECONNECT_MAX_TRIES = None
|
RECONNECT_MAX_TRIES = None
|
||||||
@ -81,8 +82,19 @@ class TCPClientInterface(Interface):
|
|||||||
I2P_PROBE_INTERVAL = 9
|
I2P_PROBE_INTERVAL = 9
|
||||||
I2P_PROBES = 5
|
I2P_PROBES = 5
|
||||||
|
|
||||||
def __init__(self, owner, name, target_ip=None, target_port=None, connected_socket=None, max_reconnect_tries=None, kiss_framing=False, i2p_tunneled = False, connect_timeout = None):
|
def __init__(self, owner, configuration, connected_socket=None):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
|
c = configuration
|
||||||
|
name = c["name"]
|
||||||
|
target_ip = c["target_host"]
|
||||||
|
target_port = int(c["target_port"])
|
||||||
|
kiss_framing = False
|
||||||
|
if "kiss_framing" in c and c.as_bool("kiss_framing") == True:
|
||||||
|
kiss_framing = True
|
||||||
|
i2p_tunneled = c.as_bool("i2p_tunneled") if "i2p_tunneled" in c else False
|
||||||
|
connect_timeout = c.as_int("connect_timeout") if "connect_timeout" in c else None
|
||||||
|
max_reconnect_tries = c.as_int("max_reconnect_tries") if "max_reconnect_tries" in c else None
|
||||||
|
|
||||||
self.HW_MTU = 1064
|
self.HW_MTU = 1064
|
||||||
|
|
||||||
@ -454,6 +466,8 @@ class TCPServerInterface(Interface):
|
|||||||
|
|
||||||
# def __init__(self, owner, name, device=None, bindip=None, bindport=None, i2p_tunneled=False, prefer_ipv6=False):
|
# def __init__(self, owner, name, device=None, bindip=None, bindport=None, i2p_tunneled=False, prefer_ipv6=False):
|
||||||
def __init__(self, owner, configuration):
|
def __init__(self, owner, configuration):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
c = configuration
|
c = configuration
|
||||||
name = c["name"]
|
name = c["name"]
|
||||||
device = c["device"] if "device" in c else None
|
device = c["device"] if "device" in c else None
|
||||||
@ -466,8 +480,6 @@ class TCPServerInterface(Interface):
|
|||||||
if port != None:
|
if port != None:
|
||||||
bindport = port
|
bindport = port
|
||||||
|
|
||||||
super().__init__()
|
|
||||||
|
|
||||||
self.HW_MTU = 1064
|
self.HW_MTU = 1064
|
||||||
|
|
||||||
self.online = False
|
self.online = False
|
||||||
@ -529,8 +541,8 @@ class TCPServerInterface(Interface):
|
|||||||
|
|
||||||
def incoming_connection(self, handler):
|
def incoming_connection(self, handler):
|
||||||
RNS.log("Accepting incoming TCP connection", RNS.LOG_VERBOSE)
|
RNS.log("Accepting incoming TCP connection", RNS.LOG_VERBOSE)
|
||||||
interface_name = "Client on "+self.name
|
spawned_configuration = {"name": "Client on "+self.name, "target_host": None, "target_port": None, "i2p_tunneled": self.i2p_tunneled}
|
||||||
spawned_interface = TCPClientInterface(self.owner, interface_name, target_ip=None, target_port=None, connected_socket=handler.request, i2p_tunneled=self.i2p_tunneled)
|
spawned_interface = TCPClientInterface(self.owner, spawned_configuration, connected_socket=handler.request)
|
||||||
spawned_interface.OUT = self.OUT
|
spawned_interface.OUT = self.OUT
|
||||||
spawned_interface.IN = self.IN
|
spawned_interface.IN = self.IN
|
||||||
spawned_interface.target_ip = handler.client_address[0]
|
spawned_interface.target_ip = handler.client_address[0]
|
||||||
|
@ -594,41 +594,12 @@ class Reticulum:
|
|||||||
interface_post_init(interface)
|
interface_post_init(interface)
|
||||||
|
|
||||||
if c["type"] == "TCPClientInterface":
|
if c["type"] == "TCPClientInterface":
|
||||||
kiss_framing = False
|
|
||||||
if "kiss_framing" in c and c.as_bool("kiss_framing") == True:
|
|
||||||
kiss_framing = True
|
|
||||||
i2p_tunneled = c.as_bool("i2p_tunneled") if "i2p_tunneled" in c else False
|
|
||||||
tcp_connect_timeout = c.as_int("connect_timeout") if "connect_timeout" in c else None
|
|
||||||
|
|
||||||
|
|
||||||
interface = TCPInterface.TCPClientInterface(
|
|
||||||
RNS.Transport,
|
|
||||||
name,
|
|
||||||
c["target_host"],
|
|
||||||
int(c["target_port"]),
|
|
||||||
kiss_framing = kiss_framing,
|
|
||||||
i2p_tunneled = i2p_tunneled,
|
|
||||||
connect_timeout = tcp_connect_timeout,
|
|
||||||
)
|
|
||||||
|
|
||||||
if "outgoing" in c and c.as_bool("outgoing") == False:
|
|
||||||
interface.OUT = False
|
|
||||||
else:
|
|
||||||
interface.OUT = True
|
|
||||||
|
|
||||||
if interface_mode == Interface.Interface.MODE_ACCESS_POINT:
|
if interface_mode == Interface.Interface.MODE_ACCESS_POINT:
|
||||||
RNS.log(str(interface)+" does not support Access Point mode, reverting to default mode: Full", RNS.LOG_WARNING)
|
RNS.log(str(interface)+" does not support Access Point mode, reverting to default mode: Full", RNS.LOG_WARNING)
|
||||||
interface_mode = Interface.Interface.MODE_FULL
|
interface_mode = Interface.Interface.MODE_FULL
|
||||||
|
|
||||||
interface.mode = interface_mode
|
interface = TCPInterface.TCPClientInterface(RNS.Transport, interface_config)
|
||||||
|
interface_post_init(interface)
|
||||||
interface.announce_cap = announce_cap
|
|
||||||
if configured_bitrate:
|
|
||||||
interface.bitrate = configured_bitrate
|
|
||||||
if ifac_size != None:
|
|
||||||
interface.ifac_size = ifac_size
|
|
||||||
else:
|
|
||||||
interface.ifac_size = 16
|
|
||||||
|
|
||||||
if c["type"] == "I2PInterface":
|
if c["type"] == "I2PInterface":
|
||||||
i2p_peers = c.as_list("peers") if "peers" in c else None
|
i2p_peers = c.as_list("peers") if "peers" in c else None
|
||||||
|
Loading…
Reference in New Issue
Block a user