]> git.ipfire.org Git - thirdparty/wireguard-tools.git/commitdiff
wg-quick: save all hooks on save
authorJason A. Donenfeld <Jason@zx2c4.com>
Tue, 31 Oct 2017 18:47:39 +0000 (19:47 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Tue, 31 Oct 2017 23:55:19 +0000 (00:55 +0100)
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
src/wg-quick.bash

index 7dc8be1767e6e7bff785eb12b6f96d5218bc6e83..88e671fda11a4b2f50009aa584602d1467e517b0 100755 (executable)
@@ -177,7 +177,7 @@ set_config() {
 }
 
 save_config() {
-       local old_umask new_config current_config address
+       local old_umask new_config current_config address cmd
        [[ $(ip -all -brief address show dev "$INTERFACE") =~ ^$INTERFACE\ +\ [A-Z]+\ +(.+)$ ]] || true
        new_config=$'[Interface]\n'
        for address in ${BASH_REMATCH[1]}; do
@@ -188,10 +188,18 @@ save_config() {
        done < <(resolvconf -l "tun.$INTERFACE" 2>/dev/null)
        [[ -n $MTU && $(ip link show dev "$INTERFACE") =~ mtu\ ([0-9]+) ]] && new_config+="MTU = ${BASH_REMATCH[1]}"$'\n'
        [[ $SAVE_CONFIG -eq 0 ]] || new_config+=$'SaveConfig = true\n'
-       [[ -z $PRE_UP ]] || new_config+="PreUp = $PRE_UP"$'\n'
-       [[ -z $POST_UP ]] || new_config+="PostUp = $POST_UP"$'\n'
-       [[ -z $PRE_DOWN ]] || new_config+="PreDown = $PRE_DOWN"$'\n'
-       [[ -z $POST_DOWN ]] || new_config+="PostDown = $POST_DOWN"$'\n'
+       for cmd in "${PRE_UP[@]}"; do
+               new_config+="PreUp = $cmd"$'\n'
+       done
+       for cmd in "${POST_UP[@]}"; do
+               new_config+="PostUp = $cmd"$'\n'
+       done
+       for cmd in "${PRE_DOWN[@]}"; do
+               new_config+="PreDown = $cmd"$'\n'
+       done
+       for cmd in "${POST_DOWN[@]}"; do
+               new_config+="PostDown = $cmd"$'\n'
+       done
        old_umask="$(umask)"
        umask 077
        current_config="$(cmd wg showconf "$INTERFACE")"