#!/bin/bash # shellcheck disable=SC2034 PIPE="/var/run/vpnd.sock" [ -p $PIPE ] && exit 1 [ "$(id -u)" != "0" ] && exit 1 trap 'die' SIGTERM SIGQUIT SIGINT declare -a CONFIGS for config in /etc/amnezia/amneziawg/*; do config="$(basename "$config")" CONFIGS+=("${config%.conf}") done COMMANDS=("up" "down") die() { rm $PIPE exit 0 } in_arr() { declare -n arr="$2" for value in "${arr[@]}"; do [ "$value" = "$1" ] && return 0 done return 1 } main() { mkfifo $PIPE -m666 while :; do read -r cmd ifname < $PIPE if ! in_arr "$ifname" "CONFIGS"; then echo "ERROR: Invalid interface $ifname" > $PIPE elif ! in_arr "$cmd" "COMMANDS"; then echo "ERROR: Invalid command $cmd" > $PIPE else awg-quick "$cmd" "$ifname" > $PIPE 2>&1 fi done } main