mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 09:02:15 -06:00
list server ips on windows
This commit is contained in:
parent
3bfc699787
commit
e65f127571
|
@ -4,7 +4,7 @@ from __future__ import print_function, unicode_literals
|
|||
import re
|
||||
import socket
|
||||
|
||||
from .__init__ import MACOS
|
||||
from .__init__ import MACOS, ANYWIN
|
||||
from .util import chkcmd
|
||||
|
||||
|
||||
|
@ -85,7 +85,7 @@ class TcpSrv(object):
|
|||
def ips_linux(self):
|
||||
eps = {}
|
||||
try:
|
||||
txt, _ = chkcmd("ip", "addr")
|
||||
txt, _ = chkcmd(["ip", "addr"])
|
||||
except:
|
||||
return eps
|
||||
|
||||
|
@ -93,9 +93,7 @@ class TcpSrv(object):
|
|||
for ln in txt.split("\n"):
|
||||
try:
|
||||
ip, dev = r.match(ln.rstrip()).groups()
|
||||
for lip in listen_ips:
|
||||
if lip in ["0.0.0.0", ip]:
|
||||
eps[ip] = dev
|
||||
eps[ip] = dev
|
||||
except:
|
||||
pass
|
||||
|
||||
|
@ -104,7 +102,7 @@ class TcpSrv(object):
|
|||
def ips_macos(self):
|
||||
eps = {}
|
||||
try:
|
||||
txt, _ = chkcmd("ifconfig")
|
||||
txt, _ = chkcmd(["ifconfig"])
|
||||
except:
|
||||
return eps
|
||||
|
||||
|
@ -115,21 +113,69 @@ class TcpSrv(object):
|
|||
m = rdev.match(ln)
|
||||
if m:
|
||||
dev = m.group(1)
|
||||
|
||||
|
||||
m = rip.match(ln)
|
||||
if m:
|
||||
eps[m.group(1)] = dev
|
||||
|
||||
return eps
|
||||
|
||||
def detect_interfaces(self, listen_ips):
|
||||
def ips_windows_ipconfig(self):
|
||||
eps = {}
|
||||
try:
|
||||
txt, _ = chkcmd(["ipconfig"])
|
||||
except:
|
||||
return eps
|
||||
|
||||
rdev = re.compile(r"(^[^ ].*):$")
|
||||
rip = re.compile(r"^ +IPv?4? [^:]+: *([0-9\.]{7,15})$")
|
||||
dev = None
|
||||
for ln in txt.replace("\r", "").split("\n"):
|
||||
m = rdev.match(ln)
|
||||
if m:
|
||||
dev = m.group(1).split(" adapter ", 1)[-1]
|
||||
|
||||
m = rip.match(ln)
|
||||
if m and dev:
|
||||
eps[m.group(1)] = dev
|
||||
dev = None
|
||||
|
||||
return eps
|
||||
|
||||
def ips_windows_netsh(self):
|
||||
eps = {}
|
||||
try:
|
||||
txt, _ = chkcmd("netsh interface ip show address".split())
|
||||
except:
|
||||
return eps
|
||||
|
||||
rdev = re.compile(r'.* "([^"]+)"$')
|
||||
rip = re.compile(r".* IP\b.*: +([0-9\.]{7,15})$")
|
||||
dev = None
|
||||
for ln in txt.replace("\r", "").split("\n"):
|
||||
m = rdev.match(ln)
|
||||
if m:
|
||||
dev = m.group(1)
|
||||
|
||||
m = rip.match(ln)
|
||||
if m and dev:
|
||||
eps[m.group(1)] = dev
|
||||
dev = None
|
||||
|
||||
return eps
|
||||
|
||||
def detect_interfaces(self, listen_ips):
|
||||
if MACOS:
|
||||
eps = self.ips_macos()
|
||||
elif ANYWIN:
|
||||
eps = self.ips_windows_ipconfig() # sees more interfaces
|
||||
eps.update(self.ips_windows_netsh()) # has better names
|
||||
else:
|
||||
eps = self.ips_linux()
|
||||
|
||||
if "0.0.0.0" not in listen_ips:
|
||||
eps = {k: v for k, v in eps if k in listen_ips}
|
||||
|
||||
default_route = None
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
for ip in [
|
||||
|
|
|
@ -306,7 +306,7 @@ class ThumbSrv(object):
|
|||
|
||||
cmd += [fsenc(tpath)]
|
||||
|
||||
ret, sout, serr = runcmd(*cmd)
|
||||
ret, sout, serr = runcmd(cmd)
|
||||
if ret != 0:
|
||||
msg = ["ff: {}".format(x) for x in serr.split("\n")]
|
||||
self.log("FFmpeg failed:\n" + "\n".join(msg), c="1;30")
|
||||
|
|
|
@ -1125,7 +1125,7 @@ def guess_mime(url, fallback="application/octet-stream"):
|
|||
return ret
|
||||
|
||||
|
||||
def runcmd(*argv):
|
||||
def runcmd(argv):
|
||||
p = sp.Popen(argv, stdout=sp.PIPE, stderr=sp.PIPE)
|
||||
stdout, stderr = p.communicate()
|
||||
stdout = stdout.decode("utf-8", "replace")
|
||||
|
@ -1133,8 +1133,8 @@ def runcmd(*argv):
|
|||
return [p.returncode, stdout, stderr]
|
||||
|
||||
|
||||
def chkcmd(*argv):
|
||||
ok, sout, serr = runcmd(*argv)
|
||||
def chkcmd(argv):
|
||||
ok, sout, serr = runcmd(argv)
|
||||
if ok != 0:
|
||||
raise Exception(serr)
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ if MACOS:
|
|||
from copyparty.util import Unrecv
|
||||
|
||||
|
||||
def runcmd(*argv):
|
||||
def runcmd(argv):
|
||||
p = sp.Popen(argv, stdout=sp.PIPE, stderr=sp.PIPE)
|
||||
stdout, stderr = p.communicate()
|
||||
stdout = stdout.decode("utf-8")
|
||||
|
@ -39,8 +39,8 @@ def runcmd(*argv):
|
|||
return [p.returncode, stdout, stderr]
|
||||
|
||||
|
||||
def chkcmd(*argv):
|
||||
ok, sout, serr = runcmd(*argv)
|
||||
def chkcmd(argv):
|
||||
ok, sout, serr = runcmd(argv)
|
||||
if ok != 0:
|
||||
raise Exception(serr)
|
||||
|
||||
|
@ -60,12 +60,12 @@ def get_ramdisk():
|
|||
|
||||
if os.path.exists("/Volumes"):
|
||||
# hdiutil eject /Volumes/cptd/
|
||||
devname, _ = chkcmd("hdiutil", "attach", "-nomount", "ram://131072")
|
||||
devname, _ = chkcmd("hdiutil attach -nomount ram://131072".split())
|
||||
devname = devname.strip()
|
||||
print("devname: [{}]".format(devname))
|
||||
for _ in range(10):
|
||||
try:
|
||||
_, _ = chkcmd("diskutil", "eraseVolume", "HFS+", "cptd", devname)
|
||||
_, _ = chkcmd(["diskutil", "eraseVolume", "HFS+", "cptd", devname])
|
||||
with open("/Volumes/cptd/.metadata_never_index", "w") as f:
|
||||
f.write("orz")
|
||||
|
||||
|
|
Loading…
Reference in a new issue