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("SOCKS4TunnelOutputProtocol.connection_made")

        self.transport = transport

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

        request = struct.pack("!BB", 0x04, 0x01)

        port = self.factory.port

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

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

        request = request + struct.pack("!I", address)

        name = self.factory.configuration["PROXY_SERVER"]["ACCOUNT"][
            "NAME"].encode()
        name = name + b"\x00"
        name_length = len(name)

        request = request + struct.pack("!%ds" % name_length, name)

        if address_type == 0x03:
            address = self.factory.address.encode()
            address = address + b"\x00"
            address_length = len(address)

            request = request + struct.pack("!%ds" % address_length, address)

        self.transport.write(request)

        self.data_state = 0
 def connection_made(self, transport):
     twunnel3.logger.trace("SOCKS4TunnelOutputProtocol.connection_made")
     
     self.transport = transport
     
     address_type = 0x03
     if is_ipv4_address(self.factory.address) == True:
         address_type = 0x01
     
     request = struct.pack("!BB", 0x04, 0x01)
     
     port = self.factory.port
     
     request = request + struct.pack("!H", port)
     
     address = 0
     if address_type == 0x01:
         address = self.factory.address
         address = socket.inet_pton(socket.AF_INET, address)
         address, = struct.unpack("!I", address)
     else:
         if address_type == 0x03:
             address = 1
     
     request = request + struct.pack("!I", address)
     
     name = self.factory.configuration["PROXY_SERVER"]["ACCOUNT"]["NAME"].encode()
     name = name + b"\x00"
     name_length = len(name)
     
     request = request + struct.pack("!%ds" % name_length, name)
     
     if address_type == 0x03:
         address = self.factory.address.encode()
         address = address + b"\x00"
         address_length = len(address)
         
         request = request + struct.pack("!%ds" % address_length, address)
     
     self.transport.write(request)
     
     self.data_state = 0
 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