Use the dangerzone cache dir for temporary files in all OSes, not just Linux

This commit is contained in:
Micah Lee 2021-06-22 09:43:32 -07:00
parent 9536a4db41
commit 14fe8add58
No known key found for this signature in database
GPG key ID: 403C2657CD994F73

View file

@ -2,6 +2,7 @@ import os
import stat import stat
import platform import platform
import tempfile import tempfile
import appdirs
class Common(object): class Common(object):
@ -11,18 +12,7 @@ class Common(object):
def __init__(self): def __init__(self):
# Temporary directory to store pixel data and safe PDFs # Temporary directory to store pixel data and safe PDFs
if platform.system() == "Windows": cache_dir = appdirs.user_cache_dir("dangerzone")
self.pixel_dir = tempfile.TemporaryDirectory(prefix="dangerzone-pixel-")
self.safe_dir = tempfile.TemporaryDirectory(prefix="dangerzone-safe-")
elif platform.system() == "Darwin":
# In macOS, temp dirs must be in /tmp (or a few other paths) for Docker to mount them
self.pixel_dir = tempfile.TemporaryDirectory(
prefix="/tmp/dangerzone-pixel-"
)
self.safe_dir = tempfile.TemporaryDirectory(prefix="/tmp/dangerzone-safe-")
else:
# In Linux, temp dirs must be in the homedir for the snap package version of Docker to mount them
cache_dir = os.path.expanduser("~/.cache/dangerzone")
os.makedirs(cache_dir, exist_ok=True) os.makedirs(cache_dir, exist_ok=True)
self.pixel_dir = tempfile.TemporaryDirectory( self.pixel_dir = tempfile.TemporaryDirectory(
prefix=os.path.join(cache_dir, "pixel-") prefix=os.path.join(cache_dir, "pixel-")
@ -31,6 +21,7 @@ class Common(object):
prefix=os.path.join(cache_dir, "safe-") prefix=os.path.join(cache_dir, "safe-")
) )
try:
# Make the folders world-readable to ensure that the container has permission # Make the folders world-readable to ensure that the container has permission
# to access it even if it's owned by root or someone else # to access it even if it's owned by root or someone else
permissions = ( permissions = (
@ -44,6 +35,8 @@ class Common(object):
) )
os.chmod(self.pixel_dir.name, permissions) os.chmod(self.pixel_dir.name, permissions)
os.chmod(self.safe_dir.name, permissions) os.chmod(self.safe_dir.name, permissions)
except:
pass
# Name of input and out files # Name of input and out files
self.document_filename = None self.document_filename = None