diff --git a/scripts/add-known-networks b/scripts/add-known-networks deleted file mode 100755 index bdfc7a1c..00000000 --- a/scripts/add-known-networks +++ /dev/null @@ -1,81 +0,0 @@ -#!/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', - ssid, - ) - 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 diff --git a/setup/build_linux b/setup/build_linux index e1b269f4..0724fbe5 100755 --- a/setup/build_linux +++ b/setup/build_linux @@ -227,9 +227,23 @@ function update_live_env() { fi # WiFi - # TODO - #cp "$ROOT_DIR/setup/linux/known_networks" "$PROFILE_DIR/airootfs/root/known_networks" - #echo "add-known-networks --user=$username" >> "$PROFILE_DIR/airootfs/root/customize_airootfs.sh" + IFS_BAK="${IFS}" + IFS=$'\n' + mkdir -p "$PROFILE_DIR/airootfs/var/lib/iwd" + for line in $(<"$ROOT_DIR/setup/linux/known_networks"); do + if [[ "${line:0:1}" == "#" ]]; then + # Skip comments + continue + fi + w_name="${line%%:::*}" + w_pass="${line##*:::}" + w_pass="$(wpa_passphrase "${w_name}" "${w_pass}" \ + | grep -E 'psk=[0-9a-z]+' \ + | sed -r 's/\s+psk=//')" + echo "[Security]" > "$PROFILE_DIR/airootfs/var/lib/iwd/${w_name}.psk" + echo "PreSharedKey=${w_pass}" >> "$PROFILE_DIR/airootfs/var/lib/iwd/${w_name}.psk" + done + IFS="${IFS_BAK}" } function update_repo() { diff --git a/setup/linux/known_networks b/setup/linux/known_networks index 7f110889..752cc43e 100644 --- a/setup/linux/known_networks +++ b/setup/linux/known_networks @@ -1,2 +1,3 @@ -#Put WiFi network info here -#'WiFi SSID': 'WiFi Password' +# Put known WiFi networks in the form: +#SSID-5G:::Password +#SSID-2G:::hunter2 diff --git a/setup/linux/packages/dependencies b/setup/linux/packages/dependencies index 7098de84..3f22ee50 100644 --- a/setup/linux/packages/dependencies +++ b/setup/linux/packages/dependencies @@ -31,3 +31,4 @@ startup-notification subversion syslinux tigervnc +wpa_supplicant