From a5e63de0160badfd19ecb5cdc7cab13cf59c7af8 Mon Sep 17 00:00:00 2001 From: shortcutme Date: Sun, 20 Jan 2019 16:18:24 +0100 Subject: [PATCH] Check if there is ipv6 support in user's system --- src/Connection/ConnectionServer.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/Connection/ConnectionServer.py b/src/Connection/ConnectionServer.py index c7ac5ccf..f717500a 100644 --- a/src/Connection/ConnectionServer.py +++ b/src/Connection/ConnectionServer.py @@ -40,6 +40,9 @@ class ConnectionServer(object): self.broken_ssl_ips = {} # Peerids of broken ssl connections self.ips = {} # Connection by ip self.has_internet = True # Internet outage detection + self.supported_ip_types = ["ipv4"] # Outgoing ip_type support + if self.isIpv6Supported(): + self.supported_ip_types.append("ipv6") self.stream_server = None self.running = False @@ -93,6 +96,23 @@ class ConnectionServer(object): except Exception, err: self.log.info("StreamServer bind error: %s" % err) + def isIpv6Supported(self): + if helper.getIpType(self.ip) == "ipv6": + return True + + # Test if we can connect to ipv6 address + ipv6_testip = "2001:19f0:6c01:e76:5400:1ff:fed6:3eca" + try: + sock = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM) + sock.connect((ipv6_testip, 80)) + local_ipv6 = sock.getsockname()[0] + if local_ipv6 == "::1": + return False + else: + return True + except Exception as err: + return False + def listen(self): try: self.stream_server.serve_forever()