diff --git a/setup.py b/setup.py index 9287174..e0fa020 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ setup( name="darklock", - version="0.1.5", + version="0.1.6", author="Capsize LLC", description="", long_description=open("README.md", "r", encoding="utf-8").read(), diff --git a/src/darklock/log_disc_writer.py b/src/darklock/log_disc_writer.py index b3c4145..a320f52 100644 --- a/src/darklock/log_disc_writer.py +++ b/src/darklock/log_disc_writer.py @@ -15,5 +15,8 @@ def __call__(self, *args, **kwargs): print(f"Write attempt: {self.total_write_attempts}") # show where write came from: - stack = traceback.extract_stack() - print(f"Write attempt from: {stack[-2]}") + filename = kwargs.get("filename", None) + if not filename: + stack = traceback.extract_stack() + filename = stack[-2].filename + print(f"Write attempt from: {filename}") diff --git a/src/darklock/restrict_os_access.py b/src/darklock/restrict_os_access.py index e8c6d9a..0e61346 100644 --- a/src/darklock/restrict_os_access.py +++ b/src/darklock/restrict_os_access.py @@ -22,6 +22,8 @@ def __init__(self): self.blacklisted_filenames = [] self.whitelisted_directories = [] + self.log_disc_writter = LogDiscWriter() + self.logger = logging.getLogger(__name__) self.logger.setLevel(logging.DEBUG) self.logger.addHandler(logging.StreamHandler()) @@ -33,7 +35,14 @@ def is_directory_whitelisted(self, directory: str) -> bool: return False def restrict_os_write(self, *args, **kwargs): - return self.original_os_write(*args, **kwargs) + stack = traceback.extract_stack() + filename = stack[-2].filename + if ( + self.is_directory_whitelisted(args[0]) or + 'write' in self.whitelisted_directories or self.check_stack_trace() + ): + return self.original_os_write(*args, **kwargs) + self.log_disc_writter(filename=filename) def restricted_open(self, *args, **kwargs): if ( @@ -144,7 +153,7 @@ def activate( #builtins.open = self.restricted_open - self.log_writes() + #self.log_writes() def deactivate(self): """