def test_unsupported(self): b = FilesystemSynchronousBackend(self.temp_dir, can_read=False) self.assertRaises(Unsupported, b.get_reader, "foo") self.assert_(b.get_writer("bar"), "A writer should be dispatched") b = FilesystemSynchronousBackend(self.temp_dir, can_write=False) self.assertRaises(Unsupported, b.get_writer, "bar") self.assert_(b.get_reader("foo"), "A reader should be dispatched")
def setUp(self): self.temp_dir = FilePath(tempfile.mkdtemp()).asBytesMode() with self.temp_dir.child(b'nonempty').open('w') as fd: fd.write(b'Something uninteresting') self.backend = FilesystemSynchronousBackend(self.temp_dir) self.tftp = TFTPWrapper(self.backend) self.client = DummyClient() reactor.listenUDP(0, self.client) self.server_port = reactor.listenUDP(1069, self.tftp)
def main(): from tftp.backend import FilesystemSynchronousBackend from tftp.protocol import TFTP from twisted.internet import reactor from twisted.python import log random.seed() log.startLogging(sys.stdout) #reactor.listenUDP(1069, TFTP(FilesystemSynchronousBackend('output'))) cwd = os.getcwd() reactor.listenUDP(69, TFTP(FilesystemSynchronousBackend(cwd))) reactor.run()
def test_write_supported_by_default(self): b = FilesystemSynchronousBackend(self.temp_dir.path) writer = yield b.get_writer(b'dir/bar') self.assertTrue(IWriter.providedBy(writer))
def test_read_supported_by_default(self): b = FilesystemSynchronousBackend(self.temp_dir.path) reader = yield b.get_reader(b'dir/foo') self.assertTrue(IReader.providedBy(reader))
def test_read_ignores_leading_and_trailing_slashes(self): b = FilesystemSynchronousBackend(self.temp_dir.path) reader = yield b.get_reader('/dir/foo/') segments_from_root = reader.file_path.segmentsFrom(self.temp_dir) self.assertEqual(["dir", "foo"], segments_from_root)
def test_write_ignores_leading_and_trailing_slashes(self): b = FilesystemSynchronousBackend(self.temp_dir.path) writer = yield b.get_writer('/dir/bar/') segments_from_root = writer.file_path.segmentsFrom(self.temp_dir) self.assertEqual(["dir", "bar"], segments_from_root)
def test_insecure_writer(self): b = FilesystemSynchronousBackend(self.temp_dir.path) return self.assertFailure( b.get_writer('../foo'), AccessViolation)
def test_insecure_writer(self): b = FilesystemSynchronousBackend(self.temp_dir.path) return self.assertFailure(b.get_writer(b'../foo'), AccessViolation)
def test_write_supported_by_default(self): b = FilesystemSynchronousBackend(self.temp_dir.path) writer = yield b.get_writer('dir/bar') self.assertTrue(IWriter.providedBy(writer))
def test_read_supported_by_default(self): b = FilesystemSynchronousBackend(self.temp_dir.path) reader = yield b.get_reader('dir/foo') self.assertTrue(IReader.providedBy(reader))
def test_insecure_reader(self): b = FilesystemSynchronousBackend(self.temp_dir) return self.assertFailure(b.get_reader("../foo"), AccessViolation)
def main(): random.seed() log.startLogging(sys.stdout) reactor.listenUDP(1069, TFTP(FilesystemSynchronousBackend('output'))) reactor.run()
def test_read_ignores_leading_and_trailing_slashes(self): b = FilesystemSynchronousBackend(self.temp_dir.path) reader = yield b.get_reader(b'/dir/foo/') segments_from_root = reader.file_path.segmentsFrom(self.temp_dir) self.assertEqual([b"dir", b"foo"], segments_from_root)
def makeService(self, options): backend = FilesystemSynchronousBackend( options["root-directory"], can_read=options['enable-reading'], can_write=options['enable-writing']) return internet.UDPServer(options['port'], TFTP(backend))
def test_read_unsupported(self): b = FilesystemSynchronousBackend(self.temp_dir.path, can_read=False) return self.assertFailure(b.get_reader(b'dir/foo'), Unsupported)
def test_write_unsupported(self): b = FilesystemSynchronousBackend(self.temp_dir.path, can_write=False) return self.assertFailure(b.get_writer(b'dir/bar'), Unsupported)
def test_read_unsupported(self): b = FilesystemSynchronousBackend(self.temp_dir.path, can_read=False) return self.assertFailure(b.get_reader('dir/foo'), Unsupported)
def test_write_ignores_leading_and_trailing_slashes(self): b = FilesystemSynchronousBackend(self.temp_dir.path) writer = yield b.get_writer(b'/dir/bar/') segments_from_root = writer.file_path.segmentsFrom(self.temp_dir) self.assertEqual([b"dir", b"bar"], segments_from_root)
def test_write_unsupported(self): b = FilesystemSynchronousBackend(self.temp_dir.path, can_write=False) return self.assertFailure(b.get_writer('dir/bar'), Unsupported)