#!/bin/bash

set -e

WIFI_SSID="$(cat /proc/sys/kernel/hostname | sed 's/-[0-9]*$/-vpn/')"

read -e -r -p "SSID: " -i "$WIFI_SSID" WIFI_SSID

while read -e -r -p "Our WiFi MAC: " WIFI_MAC ; do
	if printf "%s\n" "$WIFI_MAC" | grep -q -E '^([0-9a-f]{2}:){5}[0-9a-f]{2}$' ; then
		break
	else
		printf "Not a valid MAC-Address, please retry.\n" >&2
	fi
done

[ -n "$WIFI_MAC" ] || exit 1

while read -e -r -s -p "WiFi Password: " WIFI_PSK ; do
	if printf "%s\n" "$WIFI_PSK" | grep -q -E '^.{8}' ; then
		break
	else
		printf "Password is too short, please retry.\n" >&2
	fi
done

[ -n "$WIFI_PSK" ] || exit 1

if nmcli c show "$WIFI_SSID" >/dev/null 2>/dev/null ; then
	echo "Connection '$WIFI_SSID' already exists, deleting it"
	nmcli c del "$WIFI_SSID"
fi

nmcli c add \
	connection.id "$WIFI_SSID" \
	type wifi \
	mtu 1500 \
	wifi.mode infrastructure \
	wifi.ssid "$WIFI_SSID" \
	wifi.cloned-mac-address "$WIFI_MAC" \
	wifi-sec.key-mgmt wpa-psk \
	wifi-sec.psk "$WIFI_PSK" \
	ipv4.method auto \
	ipv6.method disabled
