Catch broken macOS wifi plist. Fixes #270 (#301)

This commit is contained in:
Manuel Riel 2019-06-17 16:06:43 +08:00 committed by GitHub
parent 642ce58225
commit 4cdc76680c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 2 deletions

View File

@ -26,6 +26,7 @@ parser.add_argument('--output',
help='Specify output file name') help='Specify output file name')
opts = parser.parse_args() opts = parser.parse_args()
def get_pypi_url(name: str, filename: str) -> str: def get_pypi_url(name: str, filename: str) -> str:
url = 'https://pypi.python.org/pypi/{}/json'.format(name) url = 'https://pypi.python.org/pypi/{}/json'.format(name)
print('Extracting download url for', name) print('Extracting download url for', name)

View File

@ -13,6 +13,7 @@ from collections import defaultdict
from functools import reduce from functools import reduce
import operator import operator
import psutil import psutil
import xml
from paramiko.rsakey import RSAKey from paramiko.rsakey import RSAKey
from paramiko.ecdsakey import ECDSAKey from paramiko.ecdsakey import ECDSAKey
@ -120,8 +121,14 @@ def get_sorted_wifis(profile):
if sys.platform == 'darwin': if sys.platform == 'darwin':
plist_path = '/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist' plist_path = '/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist'
plist_file = open(plist_path, 'rb')
wifis = plistlib.load(plist_file).get('KnownNetworks') try:
plist_file = open(plist_path, 'rb')
wifis = plistlib.load(plist_file).get('KnownNetworks')
except xml.parsers.expat.ExpatError:
logger.error('Unable to parse list of Wifi networks.')
return
if wifis is not None: if wifis is not None:
for wifi in wifis.values(): for wifi in wifis.values():
timestamp = wifi.get('LastConnected', None) timestamp = wifi.get('LastConnected', None)