Island: Raise StorageError in LocalStorageFileRepository.save_file()
This commit is contained in:
parent
3446dbf0aa
commit
63404c7bed
|
@ -21,6 +21,7 @@ class IFileRepository(metaclass=abc.ABCMeta):
|
||||||
:param unsafe_file_name: An unsanitized file name that will identify the file
|
:param unsafe_file_name: An unsanitized file name that will identify the file
|
||||||
:param file_contents: The data to be stored in the file
|
:param file_contents: The data to be stored in the file
|
||||||
:raises ValueError: If the file name is an attempted directory traversal
|
:raises ValueError: If the file name is an attempted directory traversal
|
||||||
|
:raises StorageError: If an error was encountered while attempting to store the file
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ from pathlib import Path
|
||||||
from typing import BinaryIO
|
from typing import BinaryIO
|
||||||
|
|
||||||
from common.utils.file_utils import get_all_regular_files_in_directory
|
from common.utils.file_utils import get_all_regular_files_in_directory
|
||||||
from monkey_island.cc.repository import RetrievalError
|
from monkey_island.cc.repository import RetrievalError, StorageError
|
||||||
from monkey_island.cc.server_utils.file_utils import create_secure_directory
|
from monkey_island.cc.server_utils.file_utils import create_secure_directory
|
||||||
|
|
||||||
from . import IFileRepository, i_file_repository
|
from . import IFileRepository, i_file_repository
|
||||||
|
@ -35,8 +35,11 @@ class LocalStorageFileRepository(IFileRepository):
|
||||||
safe_file_path = self._get_safe_file_path(unsafe_file_name)
|
safe_file_path = self._get_safe_file_path(unsafe_file_name)
|
||||||
|
|
||||||
logger.debug(f"Saving file contents to {safe_file_path}")
|
logger.debug(f"Saving file contents to {safe_file_path}")
|
||||||
with open(safe_file_path, "wb") as dest:
|
try:
|
||||||
shutil.copyfileobj(file_contents, dest)
|
with open(safe_file_path, "wb") as dest:
|
||||||
|
shutil.copyfileobj(file_contents, dest)
|
||||||
|
except Exception as err:
|
||||||
|
raise StorageError(f"Error while attempting to store {unsafe_file_name}: {err}")
|
||||||
|
|
||||||
def open_file(self, unsafe_file_name: str) -> BinaryIO:
|
def open_file(self, unsafe_file_name: str) -> BinaryIO:
|
||||||
safe_file_path = self._get_safe_file_path(unsafe_file_name)
|
safe_file_path = self._get_safe_file_path(unsafe_file_name)
|
||||||
|
|
Loading…
Reference in New Issue