Coverage for /home/antoine/projects/xpra-git/dist/python3/lib64/python/xpra/platform/netdev_query.py : 12%
Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# This file is part of Xpra.
2# Copyright (C) 2017-2020 Antoine Martin <antoine@xpra.org>
3# Xpra is released under the terms of the GNU GPL v2, or, at your option, any
4# later version. See the file COPYING for details.
7def get_interface_info(*_args):
8 return {}
10def get_tcp_info(sock): #pylint: disable=unused-argument
11 return {}
14from xpra.platform import platform_import
15platform_import(globals(), "netdev_query", False,
16 "get_tcp_info",
17 "get_interface_info",
18 )
21def main():
22 import sys
23 import socket
25 from xpra.os_util import POSIX
26 from xpra.util import print_nested_dict
27 from xpra.net.net_util import import_netifaces, get_interfaces, if_nametoindex
28 from xpra.platform import program_context
29 from xpra.log import Logger, enable_color, add_debug_category, enable_debug_for
30 log = Logger("network")
31 with program_context("Network-Device-Info", "Network Device Info"):
32 enable_color()
33 verbose = "-v" in sys.argv or "--verbose" in sys.argv
34 if verbose:
35 enable_debug_for("network")
36 add_debug_category("network")
37 log.enable_debug()
39 print("Network interfaces found:")
40 netifaces = import_netifaces()
41 for iface in get_interfaces():
42 if if_nametoindex:
43 print("* %s (index=%s)" % (iface.ljust(20), if_nametoindex(iface)))
44 else:
45 print("* %s" % iface)
46 addresses = netifaces.ifaddresses(iface) #@UndefinedVariable pylint: disable=no-member
47 for addr, defs in addresses.items():
48 if addr in (socket.AF_INET, socket.AF_INET6):
49 for d in defs:
50 ip = d.get("addr")
51 if ip:
52 stype = {
53 socket.AF_INET : "IPv4",
54 socket.AF_INET6 : "IPv6",
55 }[addr]
56 print(" * %s: %s" % (stype, ip))
57 if POSIX:
58 from xpra.net.socket_util import create_tcp_socket
59 try:
60 sock = create_tcp_socket(ip, 0)
61 sockfd = sock.fileno()
62 info = get_interface_info(sockfd, iface)
63 if info:
64 print_nested_dict(info, prefix=" ", lchar="-")
65 finally:
66 sock.close()
67 if not POSIX:
68 info = get_interface_info(0, iface)
69 if info:
70 print(" %s" % info)
73if __name__ == "__main__":
74 main()