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