








#!/opt/bin/bash
MODULES_BASE="/lib/modules"
KERNEL_VERSION=`uname -r`
case "$KERNEL_VERSION" in
"2.6.24")
KERNEL_MODULES_OPENVPN="tun.ko"
;;
esac
success() {
[ -n $1 ] && echo "success" || echo "$1: success"
}
failure() {
[ -n $1 ] && echo "failed" || echo "$1: failed"
}
insmod_syno() {
local modules=$1
local mod
local err=0
for mod in $modules; do
echo -n "$mod: "
/opt/sbin/insmod ${MODULES_BASE}/${mod} > /dev/null 2>&1
ret=$?
[ $ret -eq 0 ] && success $mod || failure $mod
err=`expr $err + $ret`;
done
return $err
}
rmmod_syno() {
local modules=$1
local mod
local err=0
for mod in $modules; do
echo -n "$mod: "
/opt/sbin/rmmod ${MODULES_BASE}/${mod} > /dev/null 2>&1
ret=$?
[ $ret -eq 0 ] && success $mod || failure $mod
err=`expr $err + $ret`;
done
return $err
}
start() {
local ret=0;
echo ""
echo "Loading OpenVPN kernel modules:"
insmod_syno "$KERNEL_MODULES_OPENVPN"
# Make sure IP forwarding is enabled
echo 1 > /proc/sys/net/ipv4/ip_forward
# Make TUN device if not present (not devfs)
if ( [ ! -c /dev/net/tun ] ) then
# Make /dev/net directory if needed
if ( [ ! -d /dev/net ] ) then
mkdir -m 755 /dev/net
fi
mknod /dev/net/tun c 10 200
fi
echo ""
echo -n "Starting OpenVPN in daemon mode...."
/opt/sbin/openvpn --cd /opt/etc/openvpn --daemon --writepid /opt/var/run/openvpn.pid --config /opt/etc/openvpn/server.conf --script-security 2 > /dev/null 2>&1
ret=$?
[ $ret -eq 0 ] && success || failure
echo -n "Inserting OpenVPN IPTable rules...."
# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE > /dev/null 2>&1
ret=$?
[ $ret -eq 0 ] && success || failure
return $err
}
stop() {
echo ""
echo -n "Removing OpenVPN IPTable rules..."
iptables -F -t nat > /dev/null 2>&1
ret=$?
[ $ret -eq 0 ] && success || failure
echo -n "Killing OpenVPN processes...."
if [ -n "`pidof openvpn`" ]; then
/usr/bin/killall openvpn 2>/dev/null
fi
ret=$?
[ $ret -eq 0 ] && success || failure
sleep 1
echo ""
echo "Unloading OpenVPN kernel modules... "
rmmod_syno "$KERNEL_MODULES_OPENVPN"
return $ret
}
restart() {
stop
sleep 3
start
}
case "$1" in
start)
start
RETVAL=$?
;;
stop)
stop
RETVAL=$?
;;
restart)
restart
RETVAL=$?
;;
*)
echo $"Usage: ${0##*/} {start|stop|restart}"
RETVAL=2
;;
esac
exit $RETVAL






Users browsing this forum: No registered users and 0 guests