#!/usr/bin/env bash set -euo pipefail config=${PRODUCT_VAMP_CONFIG:-/etc/product-vamp/vamp.json} ssid=${PRODUCT_VAMP_AP_SSID:-Vamp Control} passphrase=${PRODUCT_VAMP_AP_PASSPHRASE:-vamp-control} interface=${PRODUCT_VAMP_AP_INTERFACE:-wlan0} cidr=${PRODUCT_VAMP_ZERO_CIDR:-192.168.42.1/24} connection=${PRODUCT_VAMP_AP_CONNECTION:-product-vamp-control} configure_connection() { nmcli connection modify "$connection" \ connection.interface-name "$interface" \ 802-11-wireless.mode ap \ 802-11-wireless.band bg \ 802-11-wireless.channel 6 \ 802-11-wireless.ssid "$ssid" \ 802-11-wireless-security.key-mgmt wpa-psk \ 802-11-wireless-security.proto rsn \ 802-11-wireless-security.pairwise ccmp \ 802-11-wireless-security.group ccmp \ 802-11-wireless-security.pmf 1 \ 802-11-wireless-security.psk "$passphrase" \ ipv4.method shared \ ipv4.addresses "$cidr" \ ipv6.method ignore \ connection.autoconnect yes } if [ -r "$config" ]; then ssid=$(python3 -c 'import json,sys; data=json.load(open(sys.argv[1])); print(data.get("control",{}).get("ap_ssid","Vamp Control"))' "$config") passphrase=$(python3 -c 'import json,sys; data=json.load(open(sys.argv[1])); print(data.get("control",{}).get("ap_passphrase","vamp-control"))' "$config") interface=$(python3 -c 'import json,sys; data=json.load(open(sys.argv[1])); print(data.get("control",{}).get("ap_interface","wlan0"))' "$config") cidr=$(python3 -c 'import json,sys; data=json.load(open(sys.argv[1])); print(data.get("control",{}).get("zero_cidr","192.168.42.1/24"))' "$config") fi if nmcli -t -f NAME connection show | grep -Fxq "$connection"; then configure_connection else nmcli connection add type wifi ifname "$interface" con-name "$connection" autoconnect yes ssid "$ssid" configure_connection fi nmcli connection up "$connection"