aboutsummaryrefslogtreecommitdiff
path: root/cli/onionshare_cli/web/web.py
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2021-12-01 20:34:54 -0800
committerMicah Lee <micah@micahflee.com>2021-12-01 20:34:54 -0800
commit8ec9a24af1402b0c86b1e811b5e6925d39d3bcdb (patch)
tree87ff2a9989ce5acb278590c103746dc31e536e56 /cli/onionshare_cli/web/web.py
parent109d63a10c90c656409c6a3d66e146becc151b0b (diff)
downloadonionshare-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.py29
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 = []