mirror of
https://github.com/9001/copyparty.git
synced 2026-06-18 20:22:27 -06:00
list-nics / list-ips
This commit is contained in:
parent
8b986888a9
commit
8d4363d147
|
|
@ -70,6 +70,8 @@ from .util import (
|
||||||
expand_osenv_noop,
|
expand_osenv_noop,
|
||||||
expand_osenv_s,
|
expand_osenv_s,
|
||||||
has_resource,
|
has_resource,
|
||||||
|
list_ips,
|
||||||
|
list_nics,
|
||||||
load_resource,
|
load_resource,
|
||||||
lprint,
|
lprint,
|
||||||
min_ex,
|
min_ex,
|
||||||
|
|
@ -634,6 +636,9 @@ def get_sects():
|
||||||
\033[32m-i fd:\033[33m3\033[0m uses the socket passed to copyparty on file descriptor 3
|
\033[32m-i fd:\033[33m3\033[0m uses the socket passed to copyparty on file descriptor 3
|
||||||
|
|
||||||
\033[33m-p\033[0m (tcp ports) is ignored for unix-sockets and FDs
|
\033[33m-p\033[0m (tcp ports) is ignored for unix-sockets and FDs
|
||||||
|
|
||||||
|
\033[33m--list-nics\033[0m shows all network adapters (also offline ones);
|
||||||
|
\033[33m--list-ips\033[0m shows all LAN IPs
|
||||||
"""
|
"""
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
@ -1358,6 +1363,8 @@ def add_network(ap):
|
||||||
ap2.add_argument("--s-wr-slp", metavar="SEC", type=float, default=0.0, help="debug: socket write delay in seconds")
|
ap2.add_argument("--s-wr-slp", metavar="SEC", type=float, default=0.0, help="debug: socket write delay in seconds")
|
||||||
ap2.add_argument("--rsp-slp", metavar="SEC", type=float, default=0.0, help="debug: response delay in seconds")
|
ap2.add_argument("--rsp-slp", metavar="SEC", type=float, default=0.0, help="debug: response delay in seconds")
|
||||||
ap2.add_argument("--rsp-jtr", metavar="SEC", type=float, default=0.0, help="debug: response delay, random duration 0..\033[33mSEC\033[0m")
|
ap2.add_argument("--rsp-jtr", metavar="SEC", type=float, default=0.0, help="debug: response delay, random duration 0..\033[33mSEC\033[0m")
|
||||||
|
ap2.add_argument("--list-nics", action="store_true", help="debug: list detected network adapters")
|
||||||
|
ap2.add_argument("--list-ips", action="store_true", help="debug: list detected LAN IPs")
|
||||||
|
|
||||||
|
|
||||||
def add_tls(ap, cert_path):
|
def add_tls(ap, cert_path):
|
||||||
|
|
@ -2124,6 +2131,14 @@ def main(argv: Optional[list[str]] = None) -> None:
|
||||||
print("\n".join("%8s %s" % (k, v) for k, v in sorted(MIMES.items())))
|
print("\n".join("%8s %s" % (k, v) for k, v in sorted(MIMES.items())))
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
if "--list-ips" in argv:
|
||||||
|
print("\n".join(str(x) for x in sorted(list_ips())))
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
if "--list-nics" in argv:
|
||||||
|
print("\n".join(str(x) for x in sorted(list_nics(True).items())))
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
if EXE:
|
if EXE:
|
||||||
print("pybin: {}\n".format(pybin), end="")
|
print("pybin: {}\n".format(pybin), end="")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ from .util import (
|
||||||
atomic_move,
|
atomic_move,
|
||||||
chkcmd,
|
chkcmd,
|
||||||
get_adapters,
|
get_adapters,
|
||||||
|
list_nics,
|
||||||
min_ex,
|
min_ex,
|
||||||
sunpack,
|
sunpack,
|
||||||
termsize,
|
termsize,
|
||||||
|
|
@ -461,23 +462,7 @@ class TcpSrv(object):
|
||||||
def detect_interfaces(self, listen_ips: list[str]) -> dict[str, Netdev]:
|
def detect_interfaces(self, listen_ips: list[str]) -> dict[str, Netdev]:
|
||||||
listen_ips = [x for x in listen_ips if not x.startswith(("unix:", "fd:"))]
|
listen_ips = [x for x in listen_ips if not x.startswith(("unix:", "fd:"))]
|
||||||
|
|
||||||
nics = get_adapters(True)
|
eps = list_nics()
|
||||||
eps: dict[str, Netdev] = {}
|
|
||||||
for nic in nics:
|
|
||||||
for nip in nic.ips:
|
|
||||||
ipa = nip.ip[0] if ":" in str(nip.ip) else nip.ip
|
|
||||||
sip = "{}/{}".format(ipa, nip.network_prefix)
|
|
||||||
nd = Netdev(sip, nic.index or 0, nic.nice_name, "")
|
|
||||||
eps[sip] = nd
|
|
||||||
try:
|
|
||||||
idx = socket.if_nametoindex(nd.name)
|
|
||||||
if idx and idx != nd.idx:
|
|
||||||
t = "netdev idx mismatch; ifaddr={} cpython={}"
|
|
||||||
self.log("tcpsrv", t.format(nd.idx, idx), 3)
|
|
||||||
nd.idx = idx
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
netlist = str(sorted(eps.items()))
|
netlist = str(sorted(eps.items()))
|
||||||
if netlist == self.netlist and self.netdevs:
|
if netlist == self.netlist and self.netdevs:
|
||||||
return {}
|
return {}
|
||||||
|
|
|
||||||
|
|
@ -3176,6 +3176,31 @@ def list_ips() -> list[str]:
|
||||||
return list(ret)
|
return list(ret)
|
||||||
|
|
||||||
|
|
||||||
|
def list_nics(alll: bool = False) -> dict[str, Netdev]:
|
||||||
|
nics = get_adapters(alll)
|
||||||
|
eps: dict[str, Netdev] = {}
|
||||||
|
for nic in nics:
|
||||||
|
name = nic.nice_name
|
||||||
|
try:
|
||||||
|
idx = socket.if_nametoindex(name)
|
||||||
|
if idx and idx != nic.index:
|
||||||
|
LOG[0]("#", "nic-idx mismatch; ifaddr=%r libc=%r" % (nic.index, idx), 3)
|
||||||
|
except:
|
||||||
|
idx = nic.index
|
||||||
|
|
||||||
|
for nip in nic.ips:
|
||||||
|
ipa = nip.ip[0] if ":" in str(nip.ip) else nip.ip
|
||||||
|
sip = "%s/%s" % (ipa, nip.network_prefix)
|
||||||
|
nd = Netdev(sip, idx or 0, name, "")
|
||||||
|
eps[sip] = nd
|
||||||
|
|
||||||
|
if alll and not nic.ips:
|
||||||
|
zs = "no-ip-%s" % (idx,)
|
||||||
|
eps[zs] = Netdev(zs, idx or 0, name, "")
|
||||||
|
|
||||||
|
return eps
|
||||||
|
|
||||||
|
|
||||||
def build_netmap(csv: str, defer_mutex: bool = False):
|
def build_netmap(csv: str, defer_mutex: bool = False):
|
||||||
csv = csv.lower().strip()
|
csv = csv.lower().strip()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue