#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org

START=60
BIN=pptpd
DEFAULT=/etc/default/$BIN
RUN_D=/var/run
PID_F=$RUN_D/$BIN.pid


. /lib/functions.sh
pptp_user_get(){
 config_get enable $1 enable
 config_get USERNAME $1 USERNAME
 config_get PASSWORD $1 PASSWORD
 config_get IPADDRESS $1 IPADDRESS

echo $enable
echo $USERNAME
echo $PASSWORD
echo $IPADDRESS

 [ "$enable" == "1" ]&&echo "$USERNAME  *  $PASSWORD  $IPADDRESS" >>/etc/ppp/chap-secrets
}

start() {
if [ $(uci show vpnserver|grep vpnserver.vpn.enable=1) ] ;
then
       echo "#USERNAME  PROVIDER  PASSWORD  IPADDRESS" >/etc/ppp/chap-secrets
	config_load vpnserver
	config_foreach pptp_user_get user

	serverip=$(uci get vpnserver.vpn.serverip)
	clientip=$(uci get vpnserver.vpn.clientip)
	echo option /etc/ppp/options.pptpd>/etc/pptpd.conf
	#Eecho speed 115200>>/etc/pptpd.conf
	echo "stimeout 10">>/etc/pptpd.conf
	echo "localip $serverip">>/etc/pptpd.conf
	echo "remoteip $clientip">>/etc/pptpd.conf

	echo auth>/etc/ppp/options.pptpd
	echo name "pptp-server">>/etc/ppp/options.pptpd
	echo "lcp-echo-failure 3">>/etc/ppp/options.pptpd
	echo "lcp-echo-interval 60">>/etc/ppp/options.pptpd
	echo default-asyncmap>>/etc/ppp/options.pptpd
	echo "mtu 1482">>/etc/ppp/options.pptpd
	echo "mru 1482">>/etc/ppp/options.pptpd

	echo "nobsdcomp">>/etc/ppp/options.pptpd
	echo "nodeflate">>/etc/ppp/options.pptpd

	[ $(uci show vpnserver|grep vpnserver.vpn.mppe=1) ] && echo "mppe required,no40,no56,stateless">>/etc/ppp/options.pptpd
	echo require-mschap-v2>>/etc/ppp/options.pptpd
	echo refuse-chap>>/etc/ppp/options.pptpd
	echo refuse-mschap>>/etc/ppp/options.pptpd
	echo refuse-eap>>/etc/ppp/options.pptpd
	echo refuse-pap>>/etc/ppp/options.pptpd
	echo proxyarp>>/etc/ppp/options.pptpd

	[ $(uci show vpnserver|grep vpnserver.vpn.dns1) ] && echo "ms-dns $(uci get vpnserver.vpn.dns1)">>/etc/ppp/options.pptpd
	[ $(uci show vpnserver|grep vpnserver.vpn.dns2) ] && echo "ms-dns $(uci get vpnserver.vpn.dns2)">>/etc/ppp/options.pptpd

	[ -f $DEFAULT ] && . $DEFAULT
	mkdir -p $RUN_D
	for m in arc4 sha1 slhc crc-ccitt ppp_generic ppp_async ppp_mppe_mppc; do
		insmod $m >/dev/null 2>&1
	done
	$BIN $OPTIONS

	iptables -A zone_wan -p tcp -m tcp --dport 1723 -j ACCEPT 
	iptables -A zone_wan -p tcp --dport 47 -j ACCEPT
	iptables -A zone_wan -p gre -j ACCEPT

	[ ! $(uci show firewall|grep _name=pptpvpn) ] && {
	  node=$(uci add firewall rule)
	  uci set firewall.$node._name=pptpvpn
	  uci set firewall.$node.src=wan
	  uci set firewall.$node.proto=tcpudp
	  uci set firewall.$node.dest_port=1723
	  uci set firewall.$node.target=ACCEPT
	  uci commit firewall
	}

	[ $(uci show vpnserver|grep vpnserver.vpn.nat=1) ] &&  {
		[ ! $(uci show firewall|grep firewall.@defaults|grep .forward=ACCEPT) ] && {
	  
	 	 uci set firewall.@defaults[0].output=ACCEPT
		  uci set firewall.@defaults[0].forward=ACCEPT
		  uci commit firewall
		  /etc/init.d/firewall restart
		}
	  iptables -t nat -A POSTROUTING -s ${clientip%.*}.0/24 -j MASQUERADE
	  echo pptp vpn server is runing.
	}

else
	echo pptp vpn server is disable.
fi	
}

stop() {
	[ -f $PID_F ] && kill $(cat $PID_F)
}
