From ec29b59d1e57a11be2990094eb817bf0387429c2 Mon Sep 17 00:00:00 2001 From: ed Date: Fri, 7 Aug 2020 20:00:30 +0000 Subject: [PATCH] black --- bin/copyparty-fuse.py | 70 +++++++++++++++++++++++++----------------- bin/copyparty-fuseb.py | 44 +++++++++++++++----------- 2 files changed, 68 insertions(+), 46 deletions(-) diff --git a/bin/copyparty-fuse.py b/bin/copyparty-fuse.py index 91633b0a..5c149afb 100755 --- a/bin/copyparty-fuse.py +++ b/bin/copyparty-fuse.py @@ -47,21 +47,23 @@ dependencies (windows): """ -WINDOWS = sys.platform == 'win32' +WINDOWS = sys.platform == "win32" def print(*args, **kwargs): try: builtins.print(*list(args), **kwargs) except: - builtins.print(termsafe(' '.join(str(x) for x in args)), **kwargs) + builtins.print(termsafe(" ".join(str(x) for x in args)), **kwargs) def termsafe(txt): try: - return txt.encode(sys.stdout.encoding, 'backslashreplace').decode(sys.stdout.encoding) + return txt.encode(sys.stdout.encoding, "backslashreplace").decode( + sys.stdout.encoding + ) except: - return txt.encode(sys.stdout.encoding, 'replace').decode(sys.stdout.encoding) + return txt.encode(sys.stdout.encoding, "replace").decode(sys.stdout.encoding) def threadless_log(msg): @@ -100,7 +102,12 @@ def get_tid(): def html_dec(txt): - return txt.replace('<', '<').replace('>', '>').replace('"', '"').replace('&', '&') + return ( + txt.replace("<", "<") + .replace(">", ">") + .replace(""", '"') + .replace("&", "&") + ) class CacheNode(object): @@ -553,71 +560,71 @@ class CPPF(Operations): release = None releasedir = None statfs = None - + if False: # incorrect semantics but good for debugging stuff like samba and msys2 def access(self, path, mode): log("@@ access [{}] [{}]".format(path, mode)) return 1 if self.getattr(path) else 0 - + def flush(self, path, fh): log("@@ flush [{}] [{}]".format(path, fh)) return True - + def getxattr(self, *args): - log("@@ getxattr [{}]".format('] ['.join(str(x) for x in args))) + log("@@ getxattr [{}]".format("] [".join(str(x) for x in args))) return False - + def listxattr(self, *args): - log("@@ listxattr [{}]".format('] ['.join(str(x) for x in args))) + log("@@ listxattr [{}]".format("] [".join(str(x) for x in args))) return False - + def open(self, path, flags): log("@@ open [{}] [{}]".format(path, flags)) return 42 - + def opendir(self, fh): log("@@ opendir [{}]".format(fh)) return 69 - + def release(self, ino, fi): log("@@ release [{}] [{}]".format(ino, fi)) return True - + def releasedir(self, ino, fi): log("@@ releasedir [{}] [{}]".format(ino, fi)) return True - + def statfs(self, path): log("@@ statfs [{}]".format(path)) return {} - if sys.platform == 'win32': + if sys.platform == "win32": # quick compat for /mingw64/bin/python3 (msys2) def _open(self, path): try: x = self.getattr(path) if x["st_mode"] <= 0: raise Exception() - + self.junk_fh_ctr += 1 if self.junk_fh_ctr > 32000: # TODO untested self.junk_fh_ctr = 4 - + return self.junk_fh_ctr - + except Exception as ex: log("open ERR {}".format(repr(ex))) raise FuseOSError(errno.ENOENT) - + def open(self, path, flags): log("open [{}] [{}]".format(path, flags)) return self._open(path) - + def opendir(self, path): log("opendir [{}]".format(path)) return self._open(path) - + def flush(self, path, fh): log("flush [{}] [{}]".format(path, fh)) @@ -626,7 +633,7 @@ class CPPF(Operations): def releasedir(self, ino, fi): log("releasedir [{}] [{}]".format(ino, fi)) - + def access(self, path, mode): log("access [{}] [{}]".format(path, mode)) try: @@ -644,7 +651,7 @@ def main(): where = "local directory" if WINDOWS: where += " or DRIVE:" - + print("need arg 1: " + where) print("need arg 2: root url") print() @@ -652,13 +659,20 @@ def main(): print(" copyparty-fuse.py ./music http://192.168.1.69:3923/music/") if WINDOWS: print(" copyparty-fuse.py M: http://192.168.1.69:3923/music/") - + return if WINDOWS: os.system("") - - FUSE(CPPF(remote), local, foreground=True, nothreads=True, allow_other=True, nonempty=True) + + FUSE( + CPPF(remote), + local, + foreground=True, + nothreads=True, + allow_other=True, + nonempty=True, + ) if __name__ == "__main__": diff --git a/bin/copyparty-fuseb.py b/bin/copyparty-fuseb.py index 34c40ce2..11769090 100755 --- a/bin/copyparty-fuseb.py +++ b/bin/copyparty-fuseb.py @@ -23,9 +23,10 @@ from urllib.parse import quote_from_bytes as quote try: import fuse from fuse import Fuse + fuse.fuse_python_api = (0, 2) - if not hasattr(fuse, '__version__'): - raise Exception('your fuse-python is way old') + if not hasattr(fuse, "__version__"): + raise Exception("your fuse-python is way old") except: print( "\n could not import fuse; these may help:\n python3 -m pip install --user fuse-python\n apt install libfuse\n modprobe fuse\n" @@ -84,7 +85,12 @@ def get_tid(): def html_dec(txt): - return txt.replace('<', '<').replace('>', '>').replace('"', '"').replace('&', '&') + return ( + txt.replace("<", "<") + .replace(">", ">") + .replace(""", '"') + .replace("&", "&") + ) class CacheNode(object): @@ -254,7 +260,7 @@ class Gateway(object): class CPPF(Fuse): def __init__(self, *args, **kwargs): Fuse.__init__(self, *args, **kwargs) - + self.url = None self.dircache = [] @@ -265,7 +271,7 @@ class CPPF(Fuse): def init2(self): # TODO figure out how python-fuse wanted this to go - self.gw = Gateway(self.url) #.decode('utf-8')) + self.gw = Gateway(self.url) # .decode('utf-8')) info("up") def clean_dircache(self): @@ -484,28 +490,28 @@ class CPPF(Fuse): self.clean_dircache() return ret - + def readdir(self, path, offset): for e in self._readdir(path)[offset:]: - #log("yield [{}]".format(e[0])) + # log("yield [{}]".format(e[0])) yield fuse.Direntry(e[0]) def open(self, path, flags): if (flags & (os.O_RDONLY | os.O_WRONLY | os.O_RDWR)) != os.O_RDONLY: return -errno.EACCES - + st = self.getattr(path) try: if st.st_nlink > 0: return st except: return st # -int(os.errcode) - + def read(self, path, length, offset, fh=None, *args): if args: log("unexpected args [" + "] [".join(repr(x) for x in args) + "]") raise Exception() - + path = path.strip("/") ofs2 = offset + length @@ -516,7 +522,7 @@ class CPPF(Fuse): file_sz = st.st_size except: return st # -int(os.errcode) - + if ofs2 > file_sz: ofs2 = file_sz log("truncate to len {} end {}".format(ofs2 - offset, ofs2)) @@ -564,14 +570,16 @@ def main(): server = CPPF() server.parser.add_option(mountopt="url", metavar="BASE_URL", default=None) server.parse(values=server, errex=1) - if not server.url or not str(server.url).startswith('http'): - print('\nerror:') - print(' need argument: -o url=<...>') - print(' need argument: mount-path') - print('example:') - print(' ./copyparty-fuseb.py -f -o allow_other,auto_unmount,nonempty,url=http://192.168.1.69:3923 /mnt/nas') + if not server.url or not str(server.url).startswith("http"): + print("\nerror:") + print(" need argument: -o url=<...>") + print(" need argument: mount-path") + print("example:") + print( + " ./copyparty-fuseb.py -f -o allow_other,auto_unmount,nonempty,url=http://192.168.1.69:3923 /mnt/nas" + ) sys.exit(1) - + server.init2() threading.Thread(target=server.main, daemon=True).start() while True: