Hide keyboard shortcuts

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. 

5 

6 

7def get_interface_info(*_args): 

8 return {} 

9 

10def get_tcp_info(sock): #pylint: disable=unused-argument 

11 return {} 

12 

13 

14from xpra.platform import platform_import 

15platform_import(globals(), "netdev_query", False, 

16 "get_tcp_info", 

17 "get_interface_info", 

18 ) 

19 

20 

21def main(): 

22 import sys 

23 import socket 

24 

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() 

38 

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) 

71 

72 

73if __name__ == "__main__": 

74 main()