81 lines
1.5 KiB
Python
81 lines
1.5 KiB
Python
#!/bin/env python3
|
|
#
|
|
## Convert saved WiFi connections for NetworkManager
|
|
|
|
import os
|
|
import re
|
|
import sys
|
|
import uuid
|
|
|
|
KNOWN_NETWORKS = '/root/known_networks'
|
|
TEMPLATE = '''[connection]
|
|
id={ssid}
|
|
uuid={uuid}
|
|
type=wifi
|
|
permissions=user:{user}:;
|
|
|
|
[wifi]
|
|
mac-address-blacklist=
|
|
mode=infrastructure
|
|
ssid={ssid}
|
|
|
|
[wifi-security]
|
|
auth-alg=open
|
|
key-mgmt=wpa-psk
|
|
psk={password}
|
|
|
|
[ipv4]
|
|
dns-search=
|
|
method=auto
|
|
|
|
[ipv6]
|
|
addr-gen-mode=stable-privacy
|
|
dns-search=
|
|
method=auto
|
|
'''
|
|
|
|
def get_user_name():
|
|
"""Get user name, returns str."""
|
|
user = None
|
|
|
|
# Get running user
|
|
if 'SUDO_USER' in os.environ:
|
|
user = os.environ.get('SUDO_USER')
|
|
else:
|
|
user = os.environ.get('USER')
|
|
|
|
# Check if user manually specified
|
|
for a in sys.argv:
|
|
a = a.strip().lower()
|
|
if a.startswith('--user='):
|
|
user = a.replace('--user=', '')
|
|
|
|
return user
|
|
|
|
if __name__ == '__main__':
|
|
known_networks = {}
|
|
#try:
|
|
with open('/root/known_networks', 'r') as f:
|
|
for line in f.readlines():
|
|
r = re.search(r"^'(.*)':\s+'(.*)'", line.strip())
|
|
if r:
|
|
known_networks[r.group(1)] = r.group(2)
|
|
for ssid, password in known_networks.items():
|
|
out_path = '{}/{}.nmconnection'.format(
|
|
'/etc/NetworkManager/system-connections',
|
|
password,
|
|
)
|
|
if not os.path.exists(out_path):
|
|
with open(out_path, 'w') as f:
|
|
f.write(TEMPLATE.format(
|
|
user=get_user_name(),
|
|
ssid=ssid,
|
|
password=password,
|
|
uuid=uuid.uuid4(),
|
|
))
|
|
os.chmod(out_path, 0o600)
|
|
#except:
|
|
# # Meh
|
|
# pass
|
|
|
|
# vim: sts=2 sw=2 ts=2
|