52 lines
846 B
Bash
Executable File
52 lines
846 B
Bash
Executable File
#!/bin/bash
|
|
|
|
set -eu
|
|
set -o pipefail
|
|
|
|
running_dir="$(dirname "$(readlink -f "$0")")"
|
|
wg_interface="$(grep 'tunnel_id' "$running_dir/config.ini" \
|
|
| sed -r 's/[^=]+=\s*//')"
|
|
|
|
assist() {
|
|
cat <<EOF
|
|
Usage: $0 <action> [<ip>]
|
|
|
|
Actions:
|
|
add <ip> Add a route to the tunnel for this ip
|
|
del <ip> Remove a route to the tunnel for this ip
|
|
reload Sync running tunnel config with configuration on disk
|
|
EOF
|
|
exit "$1"
|
|
}
|
|
|
|
add() {
|
|
ip route add "$1" dev "$wg_interface" scope link
|
|
}
|
|
|
|
del() {
|
|
ip route del "$1" dev "$wg_interface" scope link
|
|
}
|
|
|
|
reload() {
|
|
systemctl reload "wg-quick@$wg_interface.service"
|
|
}
|
|
|
|
if [ "$#" = 0 ]; then
|
|
assist 0
|
|
fi
|
|
|
|
action="$1"
|
|
shift
|
|
|
|
case "$action" in
|
|
add )
|
|
add "$1"
|
|
;;
|
|
del )
|
|
del "$1"
|
|
;;
|
|
reload )
|
|
reload
|
|
;;
|
|
esac
|