#!/bin/sh
#
# insmod OpenVpn modules for Synology
# Armando Peluso <armando@domotz.com> 10/09/2019

SERVICE="domotzvpn"
BIN_IPTABLESTOOL="/usr/syno/bin/iptablestool"
BIN_SYNOMODULETOOL="/usr/syno/bin/synomoduletool"

Ovpn_Mod=""

KERNEL_VERSION=$(uname -r)

OVPN_MODULES="tun.ko x_tables.ko ip_tables.ko iptable_filter.ko nf_conntrack.ko nf_defrag_ipv4.ko nf_conntrack_ipv4.ko ipt_LOG.ko xt_multiport.ko xt_tcpudp.ko xt_state.ko xt_limit.ko xt_iprange.ko nf_nat.ko iptable_nat.ko ipt_REDIRECT.ko ipt_MASQUERADE.ko"

case "$KERNEL_VERSION" in
"3.6."*|"3.10."*)
	OVPN_MODULES="tun.ko x_tables.ko ip_tables.ko iptable_filter.ko nf_conntrack.ko nf_defrag_ipv4.ko nf_conntrack_ipv4.ko xt_LOG.ko xt_multiport.ko xt_tcpudp.ko xt_state.ko xt_limit.ko xt_iprange.ko xt_recent.ko nf_nat.ko nf_nat_ipv4.ko iptable_nat.ko xt_nat.ko xt_REDIRECT.ko ipt_MASQUERADE.ko"
	;;
*)
	OVPN_MODULES="$OVPN_MODULES"
	;;
esac


for mod in $OVPN_MODULES; do
if [ -e "/lib/modules/$mod" ]; then
Ovpn_Mod="${Ovpn_Mod} ${mod}"
fi
done

insmod() {

	if [ -x ${BIN_SYNOMODULETOOL} ]; then
		$BIN_SYNOMODULETOOL --insmod $SERVICE ${Ovpn_Mod}
	elif [ -x ${BIN_IPTABLESTOOL} ]; then
		$BIN_IPTABLESTOOL --insmod $SERVICE ${Ovpn_Mod}
	else
		for i in x_tables.ko ip_tables.ko iptable_filter.ko nf_conntrack.ko \
			nf_defrag_ipv4.ko nf_conntrack_ipv4.ko nf_nat.ko \
			iptable_nat.ko ipt_REDIRECT.ko xt_multiport.ko xt_tcpudp.ko \
			xt_state.ko ipt_MASQUERADE.ko tun.ko
		do
			/sbin/insmod /lib/modules/$i
		done
	fi
        echo "add modules ..."
}

rmmod() {
for modules in $OVPN_MODULES; do
if [ -e "/lib/modules/$mod" ]; then
/sbin/rmmod -sf "${modules}" | cut -f1 -d'.'
fi
done
}

case "$1" in
  insmod)
        insmod
        ;;
  rmmod)
        rmmod
	;;
  *)
        echo "Usage: $0 {insmod|rmmod}"
        exit 1
esac

exit 0

# [EOF]
