45 lines
1.8 KiB
Bash
Executable File
45 lines
1.8 KiB
Bash
Executable File
#!/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"
|