Example #1
0
 def is_content_available(self, icnname: Name) -> bool:
     if not icnname.components_to_string().startswith(self._prefix.value.components_to_string()):
         return False
     filename = icnname.string_components[-1]
     filename_abs = self._foldername + "/" + filename
     filepath = os.path.abspath(filename_abs)
     if os.path.commonprefix([filepath, self._safepath]) != self._safepath:  # prevent directory traversal
         return False
     if os.path.isfile(filename_abs):
         return True
     return False
Example #2
0
 def get_content(self, icnname: Name) -> Content:
     if not icnname.components_to_string().startswith(self._prefix.value.components_to_string()):
         return None
     try:
         filename = icnname.string_components[-1]
         filename_abs = self._foldername + "/" + filename
         filepath = os.path.abspath(filename_abs)
         if os.path.commonprefix([filepath, self._safepath]) != self._safepath: #prevent directory traversal
             return None
         with open(filename_abs, 'r') as content_file:
             content = content_file.read()
         return Content(icnname, content)
     except:
         return None
Example #3
0
 def test_add_inplace(self):
     n = Name('/test')
     n += 'data'
     self.assertEqual([b'test', b'data'], n._components)
     self.assertEqual('/test/data', n.components_to_string())
Example #4
0
 def test_constructor_byteslist(self):
     n = Name([b'test', b'data'])
     self.assertEqual([b'test', b'data'], n._components)
     self.assertEqual('/test/data', n.components_to_string())