From 3a16d156b946e5a6282b8c364e406cf0b4adea44 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Mon, 25 Jan 2021 12:38:11 +0100 Subject: Added an embryo for listing wireless networks. --- archinstall/lib/networking.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'archinstall/lib/networking.py') diff --git a/archinstall/lib/networking.py b/archinstall/lib/networking.py index b69a43db..882bcff3 100644 --- a/archinstall/lib/networking.py +++ b/archinstall/lib/networking.py @@ -3,6 +3,9 @@ import fcntl import socket import struct from collections import OrderedDict +from .exceptions import * +from .general import sys_command +from .storage import storage def getHwAddr(ifname): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) @@ -37,4 +40,29 @@ def enrichIfaceTypes(interfaces :dict): return result def get_interface_from_mac(mac): - return list_interfaces().get(mac.lower(), None) \ No newline at end of file + return list_interfaces().get(mac.lower(), None) + +def wirelessScan(interface): + interfaces = enrichIfaceTypes(list_interfaces().values()) + if interfaces[interface] != 'WIRELESS': + raise HardwareIncompatibilityError(f"Interface {interface} is not a wireless interface: {interfaces}") + + sys_command(f"iwctl station {interface} scan") + + if not '_WIFI' in storage: + storage['_WIFI'] = {} + if not interface in storage['_WIFI']: + storage['_WIFI'][interface] = {} + + storage['_WIFI'][interface]['scanning'] = True + +# TOOD: Full WiFi experience might get evolved in the future, pausing for now 2021-01-25 +def getWirelessNetworks(interface): + # TODO: Make this oneliner pritter to check if the interface is scanning or not. + if not '_WIFI' in storage or interface not in storage['_WIFI'] or storage['_WIFI'][interface].get('scanning', False) is False: + import time + wirelessScan(interface) + time.sleep(5) + + for line in sys_command(f"iwctl station {interface} get-networks"): + print(line) \ No newline at end of file -- cgit v1.2.3-54-g00ecf