You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.3 KiB
80 lines
1.3 KiB
{% calculate chmod='755' %}
|
|
#!/sbin/openrc-run
|
|
# Copyright 1999-2007 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
VPNDIR=${VPNDIR:-/etc/wireguard}
|
|
VPN=${SVCNAME#*.}
|
|
[[ $VPN == wireguard ]] && VPN="wg0"
|
|
VPNCONF="${VPNDIR}/${VPN}.conf"
|
|
extra_commands="reload"
|
|
|
|
depend() {
|
|
need localmount net
|
|
use dns
|
|
after bootmisc
|
|
}
|
|
|
|
checkconfig() {
|
|
if [ ! -e /sys/module/wireguard ]; then
|
|
if ! modprobe wireguard ; then
|
|
eerror "WireGuard support is not available" \
|
|
"in this kernel"
|
|
return 1
|
|
fi
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
start() {
|
|
ebegin "Starting ${SVCNAME}"
|
|
|
|
checkconfig || return 1
|
|
|
|
output="$(/usr/bin/wg-quick up ${VPNCONF} 2>&1)"
|
|
res=$?
|
|
if [[ $res != 0 ]]
|
|
then
|
|
while read line;
|
|
do
|
|
eerror " ${line:4}"
|
|
done <<<$output
|
|
else
|
|
while read line;
|
|
do
|
|
einfo " ${line:4}"
|
|
done <<<$output
|
|
fi
|
|
|
|
eend $res
|
|
}
|
|
|
|
stop() {
|
|
ebegin "Stopping ${SVCNAME}"
|
|
|
|
output="$(/usr/bin/wg-quick down ${VPNCONF} 2>&1)"
|
|
if [[ $? != 0 ]]
|
|
then
|
|
while read line;
|
|
do
|
|
ewarn " ${line:4}"
|
|
done <<<$output
|
|
else
|
|
while read line;
|
|
do
|
|
einfo " ${line:4}"
|
|
done <<<$output
|
|
fi
|
|
eend 0
|
|
}
|
|
|
|
reload() {
|
|
ebegin "Reloading ${SVCNAME}"
|
|
grep -v Address ${VPNCONF} >${VPNCONF}.clear
|
|
/usr/bin/wg syncconf ${VPN} ${VPNCONF}.clear
|
|
rm ${VPNCONF}.clear
|
|
eend 0
|
|
}
|
|
|
|
# vim: set ts=4 :
|