Skip to content

Commit

Permalink
Add parse under hostapd
Browse files Browse the repository at this point in the history
  • Loading branch information
isapozhkov committed Sep 29, 2016
1 parent b8f1cee commit 8aed22a
Showing 1 changed file with 48 additions and 15 deletions.
63 changes: 48 additions & 15 deletions wificontrol.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,8 +216,7 @@ def get_scan_results(self):
return result

def get_added_networks(self):
if self.wpa_supplicant_start:
self.network_list = self.parse_network_list()
self.network_list = self.parse_network_list()
return self.network_list

def get_known_networks(self):
Expand Down Expand Up @@ -375,8 +374,8 @@ def remove_under_hostapd_mode(self, mac_ssid):
info = wpa_supplicant_file.read()
ssid_symbol_num = info.find('{}'.format(mac_ssid['ssid'].encode('utf-8').decode('string_escape')))
last = info.find('}', ssid_symbol_num) + 2
first = info.rfind('network', 0, ssid_symbol_num)
info = info.replace(info[first:last])
first = info.rfind('network', 0, ssid_symbol_num) - 1
info = info.replace(info[first:last], '')
wpa_supplicant_file.close()

wpa_supplicant_file = open(self.wpa_supplicant_path, 'w')
Expand Down Expand Up @@ -504,20 +503,54 @@ def launch(self, args):
return out_return

def parse_network_list(self):
result = list()
if self.wpa_supplicant_start:
while True:
try:
list_of_networks = self.launch(
"wpa_cli list_network").split("\n")[2:-1]
break
except subprocess.CalledProcessError:
pass
for network in list_of_networks:
result.append({"mac address": network.split("\t")[2],
"ssid": network.split("\t")[1].decode('string_escape')})
result = self.parse_under_wpa_supplicant()
else:
result = self.parse_under_hostapd()
return result

def parse_under_wpa_supplicant(self):
result = list()
while True:
try:
list_of_networks = self.launch(
"wpa_cli list_network").split("\n")[2:-1]
break
except subprocess.CalledProcessError:
pass
for network in list_of_networks:
result.append({"mac address": network.split("\t")[2],
"ssid": network.split("\t")[1].decode('string_escape')})
return result

def parse_under_hostapd(self):
result = list()
try:
wpa_supplicant_file = open(self.wpa_supplicant_path, 'r')
info = wpa_supplicant_file.read()
except (IOError, ValueError):
return []
else:
first = info.find('network')
info = info[first:].strip()
list_of_networks = info.split('}\n')
network_to_add = dict()
for network in list_of_networks:
ssid = network.find('ssid')
if ssid != -1:
ssid_last = network.find('\n', ssid)
network_to_add['ssid'] = network[ssid + 5:ssid_last]
else:
network_to_add['ssid'] = 'Unknown'
bssid = network.find('bssid')
if bssid != -1:
bssid_last = network.find('\n', bssid)
network_to_add['mac address'] = network[bssid + 6:bssid_last]
else:
network_to_add['mac address'] = 'any'
resuls.append(network_to_add)
return result

def get_network_parameter(self, parameter):
try:
network_status = self.launch("wpa_cli status").split("\n")[1:-1]
Expand Down

0 comments on commit 8aed22a

Please sign in to comment.