diff options
author | Micah Lee <micah@micahflee.com> | 2021-12-01 20:34:54 -0800 |
---|---|---|
committer | Micah Lee <micah@micahflee.com> | 2021-12-01 20:34:54 -0800 |
commit | 8ec9a24af1402b0c86b1e811b5e6925d39d3bcdb (patch) | |
tree | 87ff2a9989ce5acb278590c103746dc31e536e56 /cli/onionshare_cli/web/web.py | |
parent | 109d63a10c90c656409c6a3d66e146becc151b0b (diff) | |
download | onionshare-8ec9a24af1402b0c86b1e811b5e6925d39d3bcdb.tar.gz onionshare-8ec9a24af1402b0c86b1e811b5e6925d39d3bcdb.zip |
Explicitly cleanup temp files and dirs
Diffstat (limited to 'cli/onionshare_cli/web/web.py')
-rw-r--r-- | cli/onionshare_cli/web/web.py | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/cli/onionshare_cli/web/web.py b/cli/onionshare_cli/web/web.py index e12fccc7..fe2dee87 100644 --- a/cli/onionshare_cli/web/web.py +++ b/cli/onionshare_cli/web/web.py @@ -155,7 +155,8 @@ class Web: self.socketio.init_app(self.app) self.chat_mode = ChatModeWeb(self.common, self) - self.cleanup_filenames = [] + self.cleanup_tempfiles = [] + self.cleanup_tempdirs = [] def get_mode(self): if self.mode == "share": @@ -199,7 +200,10 @@ class Web: for header, value in self.security_headers: r.headers.set(header, value) # Set a CSP header unless in website mode and the user has disabled it - if not self.settings.get("website", "disable_csp") or self.mode != "website": + if ( + not self.settings.get("website", "disable_csp") + or self.mode != "website" + ): r.headers.set( "Content-Security-Policy", "default-src 'self'; frame-ancestors 'none'; form-action 'self'; base-uri 'self'; img-src 'self' data:;", @@ -380,14 +384,13 @@ class Web: """ self.common.log("Web", "cleanup") - # Cleanup files - try: - for filename in self.cleanup_filenames: - if os.path.isfile(filename): - os.remove(filename) - elif os.path.isdir(filename): - shutil.rmtree(filename) - except Exception: - # Don't crash if file is still in use - pass - self.cleanup_filenames = [] + # Close all of the tempfile.NamedTemporaryFile + for file in self.cleanup_tempfiles: + file.close() + + # Clean up the tempfile.NamedTemporaryDirectory objects + for dir in self.cleanup_tempdirs: + dir.cleanup() + + self.cleanup_tempfiles = [] + self.cleanup_tempdirs = [] |