def address(self): sockname = self.__socket.getsockname() if not self.is_ipv4: return IPv4Address(host=sockname[0], port=sockname[1]) return IPv6Address(host=sockname[0], port=sockname[1])
def test_extract_address_from_text__there_is_address_but_in_brackets__should_return_right_address( self): addr = address_parser.extract_address_from_text( 'my text what do you want?? (192,1,1,1,4,6) loool') expected = IPv4Address('192.1.1.1', 4 * 256 + 6) self.assertEqual(addr, expected)
def peer_address(self): sockname = self.__socket.getpeername() if self.is_ipv4: return IPv4Address(host=sockname[0], port=sockname[1]) return IPv6Address(host=sockname[0], port=sockname[1])
def test_ftp_address__ipv4_after_parsing__should_return_origin_address(self): origin = IPv4Address('192.168.1.1', 45321) ftp = origin.ftp_address sut = address_parser.parse_address_from_string(ftp) self.assertEqual(sut, origin)
def listen(self, backlog=1) -> Address: if self.__address: self.__socket.bind(self.__address.as_tuple) self.__socket.listen(backlog) a = self.__socket.getsockname() if self.is_ipv6: return IPv6Address(host=a[0], port=a[1]) return IPv4Address(host=a[0], port=a[1])
def parse_args(): parser = argparse.ArgumentParser(description='Simple ftp client on python') parser.add_argument('address', help='address of ftp server', type=str) parser.add_argument('--port', '-p', help='port to connect, default is 21', type=int, default=21) parser.add_argument('--ipv6', help='enable ipv6 mode', action='store_true') parser.add_argument('--script', help='script to execute', type=str, default=None) args = parser.parse_args() if args.ipv6: return IPv6Address(args.address, args.port), args.ipv6, args.script return IPv4Address(args.address, args.port), args.ipv6, args.script
def test_parse_address_from_string__string_are_correct_address__returns_right_address( self): addr = address_parser.parse_address_from_string('192,168,1,4,4,6') expected = IPv4Address('192.168.1.4', 4 * 256 + 6) self.assertEqual(addr, expected)
def parse_address_from_string(address: str): tokens = [t for t in re.split('[ \t,]', address) if t.isnumeric()] if len(tokens) != 6: return None return IPv4Address('.'.join(tokens[0:4]), int(tokens[4]) * 256 + int(tokens[5]))
def test_ftp_address__ipv4_address_withoud_high_byte__should_return_right_string(self): address = IPv4Address('123.123.56.54', 123) sut = address.ftp_address self.assertEqual(sut, '123,123,56,54,0,123')
def test_ftp_address__ipv4_address_with_high_byte__should_return_right_string(self): address = IPv4Address('192.168.1.1', 0xA566) sut = address.ftp_address self.assertEqual(sut, '192,168,1,1,' + str(0xA5) + ',' + str(0x66))
def peer_address(self): return IPv4Address('127.0.0.1', 1337)