71 lines
1.6 KiB
Bash
71 lines
1.6 KiB
Bash
#!/bin/sh
|
|
. /lib/functions.sh
|
|
|
|
log() {
|
|
logger -t "Wireguard Stop" "$@"
|
|
}
|
|
|
|
chk_zone() {
|
|
local config=$1
|
|
|
|
config_get src $config src
|
|
config_get dest $config dest
|
|
if [ $src = "lan" -a $dest = "wg" ]; then
|
|
uci set firewall."$config".dest="wan"
|
|
uci commit firewall
|
|
fi
|
|
}
|
|
|
|
WG=$1
|
|
|
|
forward=$(uci -q get wireguard."$WG".forward)
|
|
if [ "$forward" != "0" ]; then
|
|
config_load firewall
|
|
config_foreach chk_zone forwarding
|
|
else
|
|
uci delete firewall.wgwforward
|
|
uci delete firewall.wwgforward
|
|
uci delete firewall.lwgforward
|
|
uci delete firewall.wglforward
|
|
uci commit firewall
|
|
fi
|
|
/etc/init.d/firewall restart
|
|
|
|
SERVE=$(uci get wireguard."$WG".client)
|
|
if [ $SERVE = "0" ]; then
|
|
ifdown wg1
|
|
uci set wireguard.settings.server="0"
|
|
uci delete network.wg1
|
|
uci set network.wg1=interface
|
|
uci set network.wg1.proto="wireguard"
|
|
uci set network.wg1.auto="0"
|
|
uci set network.wg1.private_key=""
|
|
uci set network.wg1.listen_port=""
|
|
uci add_list network.wg1.addresses=""
|
|
uci commit network
|
|
else
|
|
INTER=$(uci -q get wireguard."$WG".wginter)
|
|
if [ -z "$INTER" ]; then
|
|
INTER=0
|
|
fi
|
|
ifdown wg$INTER
|
|
uci set wireguard.settings.client="0"
|
|
uci delete network.wg$INTER
|
|
uci set network.wg$INTER=interface
|
|
uci set network.wg$INTER.proto="wireguard"
|
|
uci set network.wg$INTER.auto="0"
|
|
uci set network.wg$INTER.private_key=""
|
|
uci set network.wg$INTER.listen_port=""
|
|
uci add_list network.wg$INTER.addresses=""
|
|
uci commit network
|
|
fi
|
|
UDP=$(uci get wireguard."$WG".udptunnel)
|
|
if [ $UDP = 1 ]; then
|
|
PID=$(ps |grep "udptunnel" | grep -v grep |head -n 1 | awk '{print $1}')
|
|
kill -9 $PID
|
|
fi
|
|
|
|
uci set wireguard."$WG".active="0"
|
|
uci commit wireguard
|
|
|
|
/etc/init.d/wireguard stop |