#!/bin/sh
pppX="$1"
tty="$2"
speed="$3"
local_ip="$4"
remote_ip="$5"
linkname="$6"
dns1="$7"
dns2="$8"
IPTABLES_MSS_CHAIN=PPTP_TCPMSS
#TCPMSS=`uci get pptpd_config.pptpd.pptp_mss`
GAP=1000

LOCAL_SUBNET=`uci get pptp_l2l_dout.$linkname.localsubnet`

PPPD_PID=`head /var/run/ppp-$linkname.pid -n 1`
json set pptp_l2l.$linkname ppp_if=$pppX
json set pptp_l2l.$linkname pid=$PPPD_PID
json set pptp_l2l.$linkname l_subnet=$LOCAL_SUBNET
#json set pptp_l2l.$linkname mss=$TCPMSS
ROUTE_TABLE_ID=`json -f /var/pptp_rt_id get policy_rt.table_map.$linkname`
routername=`uci get syslogd.syslogd.routername`
# add tcp mss rule
#/usr/sbin/iptables -t mangle -I $IPTABLES_MSS_CHAIN -p tcp --tcp-flags SYN,RST SYN -i $pppX -j TCPMSS --set-mss $TCPMSS
#/usr/sbin/iptables -t mangle -I $IPTABLES_MSS_CHAIN -p tcp --tcp-flags SYN,RST SYN -o $pppX -j TCPMSS --set-mss $TCPMSS

# add routing rule
/usr/sbin/ip route add default dev $pppX table $ROUTE_TABLE_ID

# for NAT mode
nat_mode=`uci -q get pptp_l2l_dout.$linkname.natmode || echo 0`
if [ "$nat_mode" = "1" ]; then
	/usr/sbin/iptables -t nat -I exception_subnet -s $(uci get pptp_l2l_dout.$linkname.localsubnet) -o $pppX -j RETURN	# INSERT return to go MASQUERADE
	/usr/sbin/iptables -t nat -A nat_post_route -s $(uci get pptp_l2l_dout.$linkname.localsubnet) -o $pppX -j MASQUERADE
else
	/usr/sbin/iptables -t nat -D exception_subnet -s $(uci get pptp_l2l_dout.$linkname.localsubnet) -o $pppX -j RETURN	# remove if MASQUERADE for NAT mode found
fi

# flush route cache of remote subnet
remote_subn=`uci get pptp_l2l_dout.$linkname.remotesubnet`
[ "$remote_subn" ] && {
	for subn in $remote_subn ; do
		/usr/sbin/flush_route_cache.sh "ip-up-pptp-l2l" all $subn
	done
}

pptp_pro_idx=$(cat /etc/config/pptp_l2l_dout | grep pptp-l2l-dout | grep pptp-l2l-dout -n | grep $linkname | awk -F":" '{print $1}')
logger -p local1.notice "PPP IFACE=$1 TTY=$2 SPEED=$3 LOCAL=$4 REMOTE=$5 IPPARAM=$6"
logger -p local1.notice "[L2L][UP][PPTP][@$pptp_pro_idx:$linkname]"
pptp_alert_date=$(date +"%Y-%m-%d %H:%M:%S")
sh /sbin/SendAlert.sh "4" "[L2L][UP][PPTP][@$pptp_pro_idx:$linkname] from $routername is Up $pptp_alert_date" >/dev/console
sh /sbin/MailSendAlert.sh "4" "[L2L][UP][PPTP][@$pptp_pro_idx:$linkname] from $routername is Up $pptp_alert_date" >/dev/console
echo "$pptp_alert_date -- UpVPN() L2L PPTP : Profile Index = $pptp_pro_idx, Name = $linkname" >> /tmp/vpn_mailalert
/etc/mailtest.sh vpn &

# udp udp-broadcast-relay for netbios name
killall udp-broadcast-relay
all_ppp=$(echo $(ifconfig | grep -o ppp[0-9]))
localif=$(uci -q get pptpd_config.pptpd.localif || echo 'lan1')
nbns_off=$(uci -q get pptpd_config.pptpd.disable_nbns || echo '1')
logger -p local1.notice "PPTP client joined; Resetting UDP Broadcast Relay on port 137: lan-${localif} ${all_ppp}"
[ "$nbns_off" == "0" ] && /usr/sbin/udp-broadcast-relay -f 1 137 lan-$localif $all_ppp
