File: //usr/local/packages/@appstore/QuickConnect/scripts/synorelayd/ovpn_loader.sh
#!/bin/sh
#
# Script for loading /unloading openvpn client kernel modules
#
IPTABLES_MODULE_LIST="/usr/syno/etc.defaults/iptables_modules_list"
SERVICE="quickconnect-ovpnc"
BIN_IPTABLESTOOL="/usr/syno/bin/iptablestool"
BIN_SYNOMODULETOOL="/usr/syno/bin/synomoduletool"
. ${IPTABLES_MODULE_LIST}
Ovpnc_Mod=""
for mod in $KERNEL_MODULES_CORE; do
if [ -e "/lib/modules/$mod" ]; then
Ovpnc_Mod="${Ovpnc_Mod} ${mod}"
fi
done
for mod in $KERNEL_MODULES_COMMON; do
if [ -e "/lib/modules/$mod" ]; then
Ovpnc_Mod="${Ovpnc_Mod} ${mod}"
fi
done
for mod in $KERNEL_MODULES_NAT; do
if [ -e "/lib/modules/$mod" ]; then
Ovpnc_Mod="${Ovpnc_Mod} ${mod}"
fi
done
for mod in $IPV6_MODULES; do
if [ -e "/lib/modules/$mod" ]; then
Ovpnc_Mod="${Ovpnc_Mod} ${mod}"
fi
done
for mod in $OPENVPN_MODULES; do
if [ -e "/lib/modules/$mod" ]; then
Ovpnc_Mod="${Ovpnc_Mod} ${mod}"
fi
done
reverse_modules() {
local modules=$1
local mod
local ret=""
for mod in $modules; do
ret="$mod $ret"
done
echo $ret
}
load_module() {
local service=$1
if [ -x ${BIN_SYNOMODULETOOL} ]; then
${BIN_SYNOMODULETOOL} --insmod ${service} ${Ovpnc_Mod}
elif [ -x ${BIN_IPTABLESTOOL} ]; then
${BIN_IPTABLESTOOL} --insmod ${service} ${Ovpnc_Mod}
fi
}
unload_module() {
local service=$1
local modules=`reverse_modules "${Ovpnc_Mod}"`
if [ -x ${BIN_SYNOMODULETOOL} ]; then
${BIN_SYNOMODULETOOL} --rmmod ${service} $modules
elif [ -x ${BIN_IPTABLESTOOL} ]; then
${BIN_IPTABLESTOOL} --rmmod ${service} $modules
fi
}
case "$1" in
unload)
service=${SERVICE}
if [ -n "$2" ]; then
service=$2
fi
unload_module ${service}
;;
load)
service=${SERVICE}
if [ -n "$2" ]; then
service=$2
fi
load_module ${service}
;;
*)
echo "Usage: $0 {load|unload}"
exit 1
esac
exit 0
# [EOF]