Added an embryo for listing wireless networks.

This commit is contained in:
Anton Hvornum 2021-01-25 12:38:11 +01:00
parent 7358dc5a03
commit 3a16d156b9
2 changed files with 31 additions and 1 deletions

View File

@ -7,4 +7,6 @@ class ProfileError(BaseException):
class SysCallError(BaseException):
pass
class ProfileNotFound(BaseException):
pass
class HardwareIncompatibilityError(BaseException):
pass

View File

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