示例#1
0
文件: tcp.py 项目: rkhapov/ftp_client
    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])
示例#2
0
    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)
示例#3
0
文件: tcp.py 项目: rkhapov/ftp_client
    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])
示例#4
0
    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)
示例#5
0
文件: tcp.py 项目: rkhapov/ftp_client
    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])
示例#6
0
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
示例#7
0
    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)
示例#8
0
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]))
示例#9
0
    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')
示例#10
0
    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))
示例#11
0
 def peer_address(self):
     return IPv4Address('127.0.0.1', 1337)