gateway: Improve get_remote_file_size and get_md5_for_remote_file

pull/92/head
remittor 7 months ago
parent dd8d30e6f8
commit 0f59245473

@ -1118,36 +1118,27 @@ class Gateway():
return True return True
def get_remote_file_size(self, fn_remote): def get_remote_file_size(self, fn_remote):
size = self.run_cmd(f"wc -c '{fn_remote}' 2>/dev/null" + " | awk '{print $1}'") size = self.run_cmd(f"wc -c '{fn_remote}' 2>&1")
if not size: if not size:
return -1 return -1
size = size.strip()
if size.startswith('wc:'):
return -2 # file not found
if len(size) < 3 or ' ' not in size:
return -3
size = size.split(' ')[0]
return int(size, 10) return int(size, 10)
def get_md5_for_remote_file(self, fn_remote, timeout = 8): def get_md5_for_remote_file(self, fn_remote, timeout = 8):
fname = os.path.basename(fn_remote) md5 = self.run_cmd(f"md5sum '{fn_remote}' 2>&1", timeout = timeout)
num = str(random.randint(10000, 1000000))
md5_local_fn = f"tmp/{fname}.{num}.md5"
md5_remote_fn = f"/tmp/{fname}.{num}.md5"
cmd = f'md5sum "{fn_remote}" > "{md5_remote_fn}" 2>&1'
rc = self.run_cmd(cmd, timeout = timeout)
if rc is None:
return -5
os.remove(md5_local_fn) if os.path.exists(md5_local_fn) else None
self.download(md5_remote_fn, md5_local_fn, verbose = 0)
self.run_cmd(f'rm -f "{md5_remote_fn}"', timeout = 3)
if not os.path.exists(md5_local_fn):
return -4
with open(md5_local_fn, 'r', encoding = 'latin1') as file:
md5 = file.read()
os.remove(md5_local_fn)
if not md5: if not md5:
return -3
if md5.startswith('md5sum:'):
return -2
md5 = md5.split(' ')[0]
md5 = md5.strip()
if len(md5) != 32:
return -1 return -1
md5 = md5.strip()
if md5.startswith('md5sum:'):
return -2 # file not found
if len(md5) < 32:
return -3
md5 = md5[:32]
return md5.lower() return md5.lower()
def get_md5_for_local_file(self, fn_local, size = None): def get_md5_for_local_file(self, fn_local, size = None):

Loading…
Cancel
Save