1
0

welcome.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. import os
  2. import socket
  3. from typing import List
  4. from . import globals # pylint: disable=redefined-builtin
  5. try:
  6. import netifaces
  7. globals.optional_features.add('netifaces')
  8. except ImportError:
  9. pass
  10. def get_all_ips() -> List[str]:
  11. if 'netifaces' not in globals.optional_features:
  12. return [info[4][0] for info in socket.getaddrinfo(socket.gethostname(), None) if len(info[4]) == 2]
  13. ips = []
  14. for interface in netifaces.interfaces():
  15. try:
  16. ips.append(netifaces.ifaddresses(interface)[netifaces.AF_INET][0]['addr'])
  17. except KeyError:
  18. pass
  19. return ips
  20. def print_message() -> None:
  21. host = os.environ['NICEGUI_HOST']
  22. port = os.environ['NICEGUI_PORT']
  23. ips = set(get_all_ips() if host == '0.0.0.0' else [])
  24. ips.discard('127.0.0.1')
  25. addresses = [(f'http://{ip}:{port}' if port != '80' else f'http://{ip}') for ip in ['localhost'] + sorted(ips)]
  26. if len(addresses) >= 2:
  27. addresses[-1] = 'and ' + addresses[-1]
  28. print(f'NiceGUI ready to go on {", ".join(addresses)}', flush=True)