def process_data_state2(self):
        twunnel3.logger.trace("SOCKS5TunnelOutputProtocol.process_data_state2")

        address_type = 0x03
        if is_ipv4_address(self.factory.address) == True:
            address_type = 0x01
        else:
            if is_ipv6_address(self.factory.address) == True:
                address_type = 0x04

        request = struct.pack("!BBB", 0x05, 0x01, 0x00)

        if address_type == 0x01:
            address = self.factory.address
            address = socket.inet_pton(socket.AF_INET, address)
            address, = struct.unpack("!I", address)

            request = request + struct.pack("!BI", 0x01, address)
        else:
            if address_type == 0x03:
                address = self.factory.address.encode()
                address_length = len(address)

                request = request + struct.pack("!BB%ds" % address_length,
                                                0x03, address_length, address)
            else:
                if address_type == 0x04:
                    address = self.factory.address
                    address = socket.inet_pton(socket.AF_INET6, address)
                    address1, address2, address3, address4 = struct.unpack(
                        "!IIII", address)

                    request = request + struct.pack(
                        "!BIIII", 0x04, address1, address2, address3, address4)

        port = self.factory.port

        request = request + struct.pack("!H", port)

        self.transport.write(request)

        self.data_state = 3

        return True
 def connection_made(self, transport):
     twunnel3.logger.trace("HTTPSTunnelOutputProtocol.connection_made")
     
     self.transport = transport
     
     request = b"CONNECT "
     
     if is_ipv6_address(self.factory.address) == True:
         request = request + b"[" + self.factory.address.encode() + b"]:" + str(self.factory.port).encode()
     else:
         request = request + self.factory.address.encode() + b":" + str(self.factory.port).encode()
     
     request = request + b" HTTP/1.1\r\n"
     
     if self.factory.configuration["PROXY_SERVER"]["ACCOUNT"]["NAME"].encode() != b"":
         request = request + b"Proxy-Authorization: Basic " + base64.standard_b64encode(self.factory.configuration["PROXY_SERVER"]["ACCOUNT"]["NAME"].encode() + b":" + self.factory.configuration["PROXY_SERVER"]["ACCOUNT"]["PASSWORD"].encode()) + b"\r\n"
     
     request = request + b"\r\n"
     
     self.transport.write(request)
 def process_data_state2(self):
     twunnel3.logger.trace("SOCKS5TunnelOutputProtocol.process_data_state2")
     
     address_type = 0x03
     if is_ipv4_address(self.factory.address) == True:
         address_type = 0x01
     else:
         if is_ipv6_address(self.factory.address) == True:
             address_type = 0x04
     
     request = struct.pack("!BBB", 0x05, 0x01, 0x00)
     
     if address_type == 0x01:
         address = self.factory.address
         address = socket.inet_pton(socket.AF_INET, address)
         address, = struct.unpack("!I", address)
         
         request = request + struct.pack("!BI", 0x01, address)
     else:
         if address_type == 0x03:
             address = self.factory.address.encode()
             address_length = len(address)
             
             request = request + struct.pack("!BB%ds" % address_length, 0x03, address_length, address)
         else:
             if address_type == 0x04:
                 address = self.factory.address
                 address = socket.inet_pton(socket.AF_INET6, address)
                 address1, address2, address3, address4 = struct.unpack("!IIII", address)
                 
                 request = request + struct.pack("!BIIII", 0x04, address1, address2, address3, address4)
     
     port = self.factory.port
     
     request = request + struct.pack("!H", port)
     
     self.transport.write(request)
     
     self.data_state = 3
     
     return True