Added an embryo for listing wireless networks.
This commit is contained in:
parent
7358dc5a03
commit
3a16d156b9
|
|
@ -7,4 +7,6 @@ class ProfileError(BaseException):
|
|||
class SysCallError(BaseException):
|
||||
pass
|
||||
class ProfileNotFound(BaseException):
|
||||
pass
|
||||
class HardwareIncompatibilityError(BaseException):
|
||||
pass
|
||||
|
|
@ -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)
|
||||
Loading…
Reference in New Issue