Exemple #1
0
    def testServerNoOptionsSubdir(self):
        raddress = '127.0.0.2'
        rport = 10000
        timeout = 5
        root = os.path.dirname(os.path.abspath(__file__))
        # Testing without the dyn_func_file set.
        serverstate = tftpy.TftpContextServer(raddress, rport, timeout, root)

        self.assertTrue(isinstance(serverstate, tftpy.TftpContextServer))

        rrq = tftpy.TftpPacketRRQ()
        rrq.filename = '50MBFILE'
        rrq.mode = 'octet'
        rrq.options = {}

        # Start the download.
        serverstate.start(rrq.encode().buffer)
        # At a 512 byte blocksize, this should be 201400 packets exactly.
        for block in range(1, 102401):
            # Should be in expectack state, or None
            self.assertTrue(
                isinstance(serverstate.state, tftpy.TftpStateExpectACK))
            ack = tftpy.TftpPacketACK()
            ack.blocknumber = block % 65536
            serverstate.state = serverstate.state.handle(ack, raddress, rport)

        # The last DAT packet should be empty, indicating a completed
        # transfer.
        ack = tftpy.TftpPacketACK()
        ack.blocknumber = 102401 % 65536
        finalstate = serverstate.state.handle(ack, raddress, rport)
        self.assertTrue(finalstate is None)
Exemple #2
0
    def testServerInsecurePath(self):
        raddress = '127.0.0.2'
        rport = 10000
        timeout = 5
        root = os.path.dirname(os.path.abspath(__file__))
        serverstate = tftpy.TftpContextServer(raddress, rport, timeout, root)
        rrq = tftpy.TftpPacketRRQ()
        rrq.filename = '../setup.py'
        rrq.mode = 'octet'
        rrq.options = {}

        # Start the download.
        self.assertRaises(tftpy.TftpException, serverstate.start,
                          rrq.encode().buffer)
Exemple #3
0
    def testServerSecurePath(self):
        raddress = '127.0.0.2'
        rport = 10000
        timeout = 5
        root = os.path.dirname(os.path.abspath(__file__))
        serverstate = tftpy.TftpContextServer(raddress, rport, timeout, root)
        rrq = tftpy.TftpPacketRRQ()
        rrq.filename = '50MBFILE'
        rrq.mode = 'octet'
        rrq.options = {}

        # Start the download.
        serverstate.start(rrq.encode().buffer)
        # Should be in expectack state.
        self.assertTrue(isinstance(serverstate.state,
                                   tftpy.TftpStateExpectACK))
Exemple #4
0
 def testTftpPacketRRQ(self):
     log.debug("===> Running testcase testTftpPacketRRQ")
     options = {}
     rrq = tftpy.TftpPacketRRQ()
     rrq.filename = 'myfilename'
     rrq.mode = 'octet'
     rrq.options = options
     rrq.encode()
     self.assert_(rrq.buffer != None, "Buffer populated")
     rrq.decode()
     self.assertEqual(rrq.filename, "myfilename", "Filename correct")
     self.assertEqual(rrq.mode, "octet", "Mode correct")
     self.assertEqual(rrq.options, options, "Options correct")
     # repeat test with options
     rrq.options = { 'blksize': '1024' }
     rrq.filename = 'myfilename'
     rrq.mode = 'octet'
     rrq.encode()
     self.assert_(rrq.buffer != None, "Buffer populated")
     rrq.decode()
     self.assertEqual(rrq.filename, "myfilename", "Filename correct")
     self.assertEqual(rrq.mode, "octet", "Mode correct")
     self.assertEqual(rrq.options['blksize'], '1024', "Blksize correct")