#!/bin/bash

INTERFACE=$1
NETWORK=$2
MASK=$3
SERVERADDRESS=$4
SERVERPORT=$5
NETWORKS=$6
FILE=$7
NUMBER=$8

function help {
	echo "Adds a list of clients to wireguard server. User list file must have a name per line"
        echo "Usage: $0 <interface> <network> <mask> <server address> <server port> <networks> <users list file> <ip address number start>"
        echo "Example: $0 tun0 10.0.0.0 24 1.2.3.4 1194 192.168.2.0/24,192.168.3.0/24 users.txt 2"
        exit 1
}

if [ -z "$1" ] || [ -n "$9" ]
then
        help
fi

IFS=. read -r i1 i2 i3 i4 <<< "${NETWORK}"

for i in $(cat ${FILE})
do
	if [ -e clients/$i.conf ]
	then
		echo "Not doing $i as it currently exists!"
	else

		IP=$i1.$i2.$i3.${NUMBER}
		echo "Doing $i with IP address ${IP}..."
		wireguard-add-client ${INTERFACE} $i ${IP} ${MASK} ${SERVERADDRESS} ${SERVERPORT} ${NETWORKS} dontapply
		let NUMBER=NUMBER+1
		if [ "${NUMBER}" == "255" ]
		then
			let i3=i3+1
			NUMBER=1
		fi
		echo "Done."
	fi
done

wg-quick down ${INTERFACE}

sleep 1

wg-quick up ${INTERFACE}
