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 re
|
||||||
import socket
|
import socket
|
||||||
|
|
||||||
from .__init__ import MACOS
|
from .__init__ import MACOS, ANYWIN
|
||||||
from .util import chkcmd
|
from .util import chkcmd
|
||||||
|
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ class TcpSrv(object):
|
||||||
def ips_linux(self):
|
def ips_linux(self):
|
||||||
eps = {}
|
eps = {}
|
||||||
try:
|
try:
|
||||||
txt, _ = chkcmd("ip", "addr")
|
txt, _ = chkcmd(["ip", "addr"])
|
||||||
except:
|
except:
|
||||||
return eps
|
return eps
|
||||||
|
|
||||||
|
@ -93,9 +93,7 @@ class TcpSrv(object):
|
||||||
for ln in txt.split("\n"):
|
for ln in txt.split("\n"):
|
||||||
try:
|
try:
|
||||||
ip, dev = r.match(ln.rstrip()).groups()
|
ip, dev = r.match(ln.rstrip()).groups()
|
||||||
for lip in listen_ips:
|
eps[ip] = dev
|
||||||
if lip in ["0.0.0.0", ip]:
|
|
||||||
eps[ip] = dev
|
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -104,7 +102,7 @@ class TcpSrv(object):
|
||||||
def ips_macos(self):
|
def ips_macos(self):
|
||||||
eps = {}
|
eps = {}
|
||||||
try:
|
try:
|
||||||
txt, _ = chkcmd("ifconfig")
|
txt, _ = chkcmd(["ifconfig"])
|
||||||
except:
|
except:
|
||||||
return eps
|
return eps
|
||||||
|
|
||||||
|
@ -122,14 +120,62 @@ class TcpSrv(object):
|
||||||
|
|
||||||
return eps
|
return eps
|
||||||
|
|
||||||
def detect_interfaces(self, listen_ips):
|
def ips_windows_ipconfig(self):
|
||||||
eps = {}
|
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:
|
if MACOS:
|
||||||
eps = self.ips_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:
|
else:
|
||||||
eps = self.ips_linux()
|
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
|
default_route = None
|
||||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
for ip in [
|
for ip in [
|
||||||
|
|
|
@ -306,7 +306,7 @@ class ThumbSrv(object):
|
||||||
|
|
||||||
cmd += [fsenc(tpath)]
|
cmd += [fsenc(tpath)]
|
||||||
|
|
||||||
ret, sout, serr = runcmd(*cmd)
|
ret, sout, serr = runcmd(cmd)
|
||||||
if ret != 0:
|
if ret != 0:
|
||||||
msg = ["ff: {}".format(x) for x in serr.split("\n")]
|
msg = ["ff: {}".format(x) for x in serr.split("\n")]
|
||||||
self.log("FFmpeg failed:\n" + "\n".join(msg), c="1;30")
|
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
|
return ret
|
||||||
|
|
||||||
|
|
||||||
def runcmd(*argv):
|
def runcmd(argv):
|
||||||
p = sp.Popen(argv, stdout=sp.PIPE, stderr=sp.PIPE)
|
p = sp.Popen(argv, stdout=sp.PIPE, stderr=sp.PIPE)
|
||||||
stdout, stderr = p.communicate()
|
stdout, stderr = p.communicate()
|
||||||
stdout = stdout.decode("utf-8", "replace")
|
stdout = stdout.decode("utf-8", "replace")
|
||||||
|
@ -1133,8 +1133,8 @@ def runcmd(*argv):
|
||||||
return [p.returncode, stdout, stderr]
|
return [p.returncode, stdout, stderr]
|
||||||
|
|
||||||
|
|
||||||
def chkcmd(*argv):
|
def chkcmd(argv):
|
||||||
ok, sout, serr = runcmd(*argv)
|
ok, sout, serr = runcmd(argv)
|
||||||
if ok != 0:
|
if ok != 0:
|
||||||
raise Exception(serr)
|
raise Exception(serr)
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ if MACOS:
|
||||||
from copyparty.util import Unrecv
|
from copyparty.util import Unrecv
|
||||||
|
|
||||||
|
|
||||||
def runcmd(*argv):
|
def runcmd(argv):
|
||||||
p = sp.Popen(argv, stdout=sp.PIPE, stderr=sp.PIPE)
|
p = sp.Popen(argv, stdout=sp.PIPE, stderr=sp.PIPE)
|
||||||
stdout, stderr = p.communicate()
|
stdout, stderr = p.communicate()
|
||||||
stdout = stdout.decode("utf-8")
|
stdout = stdout.decode("utf-8")
|
||||||
|
@ -39,8 +39,8 @@ def runcmd(*argv):
|
||||||
return [p.returncode, stdout, stderr]
|
return [p.returncode, stdout, stderr]
|
||||||
|
|
||||||
|
|
||||||
def chkcmd(*argv):
|
def chkcmd(argv):
|
||||||
ok, sout, serr = runcmd(*argv)
|
ok, sout, serr = runcmd(argv)
|
||||||
if ok != 0:
|
if ok != 0:
|
||||||
raise Exception(serr)
|
raise Exception(serr)
|
||||||
|
|
||||||
|
@ -60,12 +60,12 @@ def get_ramdisk():
|
||||||
|
|
||||||
if os.path.exists("/Volumes"):
|
if os.path.exists("/Volumes"):
|
||||||
# hdiutil eject /Volumes/cptd/
|
# hdiutil eject /Volumes/cptd/
|
||||||
devname, _ = chkcmd("hdiutil", "attach", "-nomount", "ram://131072")
|
devname, _ = chkcmd("hdiutil attach -nomount ram://131072".split())
|
||||||
devname = devname.strip()
|
devname = devname.strip()
|
||||||
print("devname: [{}]".format(devname))
|
print("devname: [{}]".format(devname))
|
||||||
for _ in range(10):
|
for _ in range(10):
|
||||||
try:
|
try:
|
||||||
_, _ = chkcmd("diskutil", "eraseVolume", "HFS+", "cptd", devname)
|
_, _ = chkcmd(["diskutil", "eraseVolume", "HFS+", "cptd", devname])
|
||||||
with open("/Volumes/cptd/.metadata_never_index", "w") as f:
|
with open("/Volumes/cptd/.metadata_never_index", "w") as f:
|
||||||
f.write("orz")
|
f.write("orz")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue