mirror of
				https://github.com/9001/copyparty.git
				synced 2025-11-04 05:43:17 +00:00 
			
		
		
		
	fix xbu/xau reloc collision-handling;
if a hook relocates a file into a folder where that same file exists with the same filename, the filename-collision-avoidance would kick in, generating a new filename and another copy
This commit is contained in:
		@@ -71,6 +71,9 @@ def main():
 | 
			
		||||
    ## selecting it inside the print at the end:
 | 
			
		||||
    ##
 | 
			
		||||
 | 
			
		||||
    # move all uploads to one specific folder
 | 
			
		||||
    into_junk = {"vp": "/junk"}
 | 
			
		||||
 | 
			
		||||
    # create a subfolder named after the filetype and move it into there
 | 
			
		||||
    into_subfolder = {"vp": ext}
 | 
			
		||||
 | 
			
		||||
@@ -92,8 +95,8 @@ def main():
 | 
			
		||||
        by_category = {}  # no action
 | 
			
		||||
 | 
			
		||||
    # now choose the default effect to apply; can be any of these:
 | 
			
		||||
    # into_subfolder  into_toplevel  into_sibling  by_category
 | 
			
		||||
    effect = {"vp": "/junk"}
 | 
			
		||||
    # into_junk  into_subfolder  into_toplevel  into_sibling  by_category
 | 
			
		||||
    effect = into_sibling
 | 
			
		||||
 | 
			
		||||
    ##
 | 
			
		||||
    ## but we can keep going, adding more speicifc rules
 | 
			
		||||
 
 | 
			
		||||
@@ -3236,7 +3236,7 @@ class Up2k(object):
 | 
			
		||||
                            if hr.get("reloc"):
 | 
			
		||||
                                x = pathmod(self.vfs, dst, vp, hr["reloc"])
 | 
			
		||||
                                if x:
 | 
			
		||||
                                    zvfs = vfs
 | 
			
		||||
                                    ud1 = (vfs.vpath, job["prel"], job["name"])
 | 
			
		||||
                                    pdir, _, job["name"], (vfs, rem) = x
 | 
			
		||||
                                    dst = os.path.join(pdir, job["name"])
 | 
			
		||||
                                    job["vcfg"] = vfs.flags
 | 
			
		||||
@@ -3244,7 +3244,8 @@ class Up2k(object):
 | 
			
		||||
                                    job["vtop"] = vfs.vpath
 | 
			
		||||
                                    job["prel"] = rem
 | 
			
		||||
                                    job["name"] = sanitize_fn(job["name"], "")
 | 
			
		||||
                                    if zvfs.vpath != vfs.vpath:
 | 
			
		||||
                                    ud2 = (vfs.vpath, job["prel"], job["name"])
 | 
			
		||||
                                    if ud1 != ud2:
 | 
			
		||||
                                        # print(json.dumps(job, sort_keys=True, indent=4))
 | 
			
		||||
                                        job["hash"] = cj["hash"]
 | 
			
		||||
                                        self.log("xbu reloc1:%d..." % (depth,), 6)
 | 
			
		||||
@@ -4999,14 +5000,15 @@ class Up2k(object):
 | 
			
		||||
            if hr.get("reloc"):
 | 
			
		||||
                x = pathmod(self.vfs, ap_chk, vp_chk, hr["reloc"])
 | 
			
		||||
                if x:
 | 
			
		||||
                    zvfs = vfs
 | 
			
		||||
                    ud1 = (vfs.vpath, job["prel"], job["name"])
 | 
			
		||||
                    pdir, _, job["name"], (vfs, rem) = x
 | 
			
		||||
                    job["vcfg"] = vf = vfs.flags
 | 
			
		||||
                    job["ptop"] = vfs.realpath
 | 
			
		||||
                    job["vtop"] = vfs.vpath
 | 
			
		||||
                    job["prel"] = rem
 | 
			
		||||
                    job["name"] = sanitize_fn(job["name"], "")
 | 
			
		||||
                    if zvfs.vpath != vfs.vpath:
 | 
			
		||||
                    ud2 = (vfs.vpath, job["prel"], job["name"])
 | 
			
		||||
                    if ud1 != ud2:
 | 
			
		||||
                        self.log("xbu reloc2:%d..." % (depth,), 6)
 | 
			
		||||
                        return self._handle_json(job, depth + 1)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user