From 7f6d86d8db20e70b79047bf187de878ad3605842 Mon Sep 17 00:00:00 2001 From: Suzanne Soy Date: Sat, 9 Sep 2023 20:24:04 +0100 Subject: [PATCH] debugging stat on generated files --- fs.py | 59 +++++++++++++++++++++++++++++++++++--------- source/foo.mp3 | 2 +- source/foo.ogg | Bin 0 -> 53073 bytes source/some_dir/bbb | 2 +- 4 files changed, 49 insertions(+), 14 deletions(-) diff --git a/fs.py b/fs.py index a4cbd7e..7c7a279 100755 --- a/fs.py +++ b/fs.py @@ -2,28 +2,62 @@ import os, sys, shutil, pathlib from fuse import FUSE, FuseOSError, Operations +from collections import namedtuple + +Translator = namedtuple('Translator', ['mode', 'output_filename', 'command']) class FilterFS(Operations): def __init__(self, source, cache): self.source = source self.cache = cache - def _original(self, path): - print(path) + + def _mkparents(self, f): + pathlib.Path(os.path.dirname(f)).mkdir(parents = True, exist_ok = True) + def _parse(self, s): + if not s.startswith('/!/'): + return None + s = s[3:] + components = s.split('/') + return Translator( + mode = int(components[0], base=8), + output_filename = components[1], # TODO: forbid ../ attacks + command = '/'.join(components[2:]) + ) + def _peek(self, why, path): + print('peek', path) p = os.path.join(self.source, path.lstrip('/')) if os.path.islink(p): rl = os.readlink(p) if rl.startswith('/!/'): - cached_output = os.path.join(self.cache, path.lstrip('/')) + get = os.path.join(self.cache, 'get', path.lstrip('/')) + peek = os.path.join(self.cache, 'peek', path.lstrip('/')) + if os.path.exists(get): + p = get + else: + translator = self._parse(rl) + p = peek + self._mkparents(p) + pathlib.Path(p).touch() + os.chmod(p, translator.mode) + return p + + def _get(self, why, path): + print('get', why, path) + p = os.path.join(self.source, path.lstrip('/')) + if os.path.islink(p): + rl = os.readlink(p) + if rl.startswith('/!/'): + cached_output = os.path.join(self.cache, 'get', path.lstrip('/')) if not os.path.exists(cached_output): - rl = rl[3:] + translator = self._parse(rl) d = os.path.dirname(p) # begin hack old_cwd = os.getcwd() os.chdir(d) - os.system(rl) + os.system(translator.command) os.chdir(old_cwd) - pathlib.Path(os.path.dirname(cached_output)).mkdir(parents = True, exist_ok = True) - shutil.move(os.path.join(d, 'out'), cached_output) + self._mkparents(cached_output) + shutil.move(os.path.join(d, translator.output_filename), cached_output) # end hack p = cached_output return p @@ -32,13 +66,14 @@ class FilterFS(Operations): def readdir(self, path, fh): yield '.' yield '..' - if os.path.isdir(self._original(path)): - for d in os.listdir(self._original(path)): + orig = self._get("readdir", path) + if os.path.isdir(orig): + for d in os.listdir(orig): yield d # directory, file etc. def getattr(self, path, file_handle = None): - st = os.lstat(self._original(path)) + st = os.lstat(self._peek("getattr", path)) return { 'st_mode': st.st_mode, # 0o100775 file, 0o40775 dir #'st_ino': 42, @@ -46,7 +81,7 @@ class FilterFS(Operations): 'st_nlink': st.st_nlink, 'st_uid': st.st_uid, 'st_gid': st.st_gid, - 'st_size': st.st_size, + 'st_size': 999999999999999, #st.st_size, # TODO: max file size 'st_atime': st.st_atime, 'st_mtime': st.st_mtime, 'st_ctime': st.st_ctime, @@ -54,7 +89,7 @@ class FilterFS(Operations): # file def open(self, path, flags): - return os.open(self._original(path), flags) + return os.open(self._get("open", path), flags) def read(self, path, length, offset, file_handle): os.lseek(file_handle, offset, os.SEEK_SET) return os.read(file_handle, length) diff --git a/source/foo.mp3 b/source/foo.mp3 index f95e3b2..89a1ee0 120000 --- a/source/foo.mp3 +++ b/source/foo.mp3 @@ -1 +1 @@ -/!/lame -vbr -b 240 foo.ogg output.mp3; mv output.mp3 out \ No newline at end of file +/!/100644/out.mp3/ffmpeg -i foo.ogg -acodec libmp3lame -map_metadata 0:s:0 out.mp3 \ No newline at end of file diff --git a/source/foo.ogg b/source/foo.ogg index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a50c00768123b665a4d5714e1f8a1a19b0dcb4d5 100644 GIT binary patch literal 53073 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 out \ No newline at end of file +/!/10644/out/tr '[:lower:]' '[:upper:'] < aaa > out \ No newline at end of file