From afafc886a4a7ad621649dded745865b3ef0c1089 Mon Sep 17 00:00:00 2001 From: ed Date: Mon, 17 Aug 2020 21:53:24 +0000 Subject: [PATCH] support windows --- copyparty/httpcli.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/copyparty/httpcli.py b/copyparty/httpcli.py index 7d65926a..c2977325 100644 --- a/copyparty/httpcli.py +++ b/copyparty/httpcli.py @@ -7,6 +7,7 @@ import gzip import time import json import socket +import ctypes from datetime import datetime import calendar @@ -867,7 +868,7 @@ class HttpCli(object): if not is_compressed: self.out_headers["Cache-Control"] = "no-cache" - + self.out_headers["Accept-Ranges"] = "bytes" self.send_headers( length=upper - lower, @@ -1078,10 +1079,10 @@ class HttpCli(object): break srv_info = [] - + try: if not self.args.nih: - srv_info.append(str(socket.gethostname()).split('.')[0]) + srv_info.append(str(socket.gethostname()).split(".")[0]) except: self.log("#wow #whoa") pass @@ -1089,12 +1090,19 @@ class HttpCli(object): try: # some fuses misbehave if not self.args.nid: - sv = os.statvfs(abspath) - free = humansize(sv.f_frsize * sv.f_bfree, True) - total = humansize(sv.f_frsize * sv.f_blocks, True) - - srv_info.append(free + " free") - srv_info.append(total) + if WINDOWS: + bfree = ctypes.c_ulonglong(0) + ctypes.windll.kernel32.GetDiskFreeSpaceExW( + ctypes.c_wchar_p(abspath), None, None, ctypes.pointer(bfree) + ) + srv_info.append(humansize(bfree.value) + " free") + else: + sv = os.statvfs(abspath) + free = humansize(sv.f_frsize * sv.f_bfree, True) + total = humansize(sv.f_frsize * sv.f_blocks, True) + + srv_info.append(free + " free") + srv_info.append(total) except: pass @@ -1112,7 +1120,7 @@ class HttpCli(object): prologue=logues[0], epilogue=logues[1], title=html_escape(self.vpath, quote=False), - srv_info=' /// '.join(srv_info) + srv_info=" /// ".join(srv_info), ) self.reply(html.encode("utf-8", "replace")) return True