HEX
Server: Apache/2.4.63 (Unix)
System: Linux Synopilou92 4.4.302+ #72806 SMP Mon Jul 21 23:16:00 CST 2025 x86_64
User: pilou92 (1026)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: /volume1/@appstore/VPNCenter/scripts/accel-pppd.sh
#!/bin/sh
#
# Start the PPTP server daemon
#

PKG_USERCONF_DIR="/usr/syno/etc/packages/VPNCenter"
LOCALIP=`grep "^gw-ip-address" ${PKG_USERCONF_DIR}/pptp/accel-pppd.conf | cut -d'=' -f 2`
PKG_TARGET="/var/packages/VPNCenter/target"
IPTABLES_MODULE_LIST="/usr/syno/etc.defaults/iptables_modules_list"
SERVICE="pptp"
BIN_IPTABLESTOOL="/usr/syno/bin/iptablestool"
BIN_SYNOMODULETOOL="/usr/syno/bin/synomoduletool"
MTU=`/bin/cat ${PKG_USERCONF_DIR}/pptp/accel-pppd.conf | grep mtu | cut -d'=' -f 2`
MSS=$((MTU-44))

reverse_modules() {
	local modules=$1
	local mod
	local ret=""

	for mod in $modules; do
	    ret="$mod $ret"
	done

	echo $ret
}

PPTP_Mod=""
if [ -f "${IPTABLES_MODULE_LIST}" ]; then
	. ${IPTABLES_MODULE_LIST}

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

	for mod in $PPTP_MODULES; do
		if [ -e "/lib/modules/$mod" ]; then
			PPTP_Mod="${PPTP_Mod} ${mod}"
		fi
	done
	for mod in $KERNEL_MODULES_CORE; do
		if [ -e "/lib/modules/$mod" ]; then
			PPTP_Mod="${PPTP_Mod} ${mod}"
		fi
	done
	for mod in $KERNEL_MODULES_COMMON; do
		if [ -e "/lib/modules/$mod" ]; then
			PPTP_Mod="${PPTP_Mod} ${mod}"
		fi
	done
	for mod in $KERNEL_MODULES_NAT; do
		if [ -e "/lib/modules/$mod" ]; then
			PPTP_Mod="${PPTP_Mod} ${mod}"
		fi
	done
else
	. ${PKG_TARGET}/scripts/vpn_modules.sh

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


start() {
	Run=`/bin/get_key_value ${PKG_USERCONF_DIR}/synovpn.conf runpptpd`
	if [ "yes" != "$Run" ]; then
		exit 0;
	fi

	echo -n "Starting PPTP server: "
	if [ -x ${BIN_SYNOMODULETOOL} ]; then
		$BIN_SYNOMODULETOOL --insmod $SERVICE ${PPTP_Mod}
	elif [ -x ${BIN_IPTABLESTOOL} ]; then
		$BIN_IPTABLESTOOL --insmod $SERVICE ${PPTP_Mod}
	fi

	if [ -n "`pidof accel-pppd`" ]; then
	   echo "Already running"
	   return
	fi
	synosystemctl start pkg-VPNCenter-accel-pppd-server
	echo 1 > /proc/sys/net/ipv4/ip_forward

        /sbin/iptables -t nat -A POSTROUTING -s ${LOCALIP}/24 -j MASQUERADE
		/sbin/iptables -t mangle -A PRIMITIVE_FORWARD -i ppp2+ -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss "${MSS}"

	${PKG_TARGET}/scripts/radiusd.sh start
}
stop() {
	local modules=`reverse_modules "${PPTP_Mod}"`
	echo -n "Shutting down PPTP server: "

        /sbin/iptables -t nat -D POSTROUTING -s ${LOCALIP}/24 -j MASQUERADE
		/sbin/iptables -t mangle -D PRIMITIVE_FORWARD -i ppp2+ -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss "${MSS}"

	synosystemctl stop pkg-VPNCenter-accel-pppd-server

	PPTP_PID=`cat /var/run/accel-pppd.pid`
	time=1
	while true; do
		/bin/sleep 1
		if [ $time -ge 10 ]; then
			break
		fi
		time=$(($time + 1))
		if [ -d /proc/${PPTP_PID} ]; then
			echo "Wait for stoping accel-pppd"
		else
			break
		fi
	done

	#echo 0 > /proc/sys/net/ipv4/ip_forward

	if [ -x ${BIN_SYNOMODULETOOL} ]; then
		$BIN_SYNOMODULETOOL --rmmod $SERVICE $modules
	elif [ -x ${BIN_IPTABLESTOOL} ]; then
		$BIN_IPTABLESTOOL --rmmod $SERVICE $modules
	fi

	${PKG_TARGET}/scripts/radiusd.sh stop
}

case "$1" in
	start)
		start
	;;
	stop)
		stop
	;;
	restart|reload)
		stop
		start
	;;
	condrestart)
		if [ -r /opt/var/run/accel-pppd.pid ]; then
			stop
			start
		fi
	;;
	*)
	echo "Usage: $0 {start|stop|restart|condrestart}"
	exit 1
esac
exit $?