#!/bin/sh

PRIVATE_LOCATION="/var/packages/VPNCenter/target"
SERVICETOOL="/usr/syno/bin/servicetool"

PKG_HOOK_SCRT_DIR="${PRIVATE_LOCATION}/scripts"
SDK_HOOK_DIR="/usr/local/libexec"
IFNAME_CHANGE_HOOK_DIR="${SDK_HOOK_DIR}/net/ifname_change"

# prepare default config file
PKG_USERCONF_DIR="/usr/syno/etc/packages/VPNCenter"
mkdir -p ${PKG_USERCONF_DIR}/pptp
mkdir -p ${PKG_USERCONF_DIR}/l2tp
mkdir -p ${PKG_USERCONF_DIR}/openvpn
mkdir -p ${PKG_USERCONF_DIR}/openvpn/keys
if [ ! -e ${PKG_USERCONF_DIR}/synovpn.conf ]; then
	touch ${PKG_USERCONF_DIR}/synovpn.conf
fi
if [ ! -e ${PKG_USERCONF_DIR}/privilege ]; then
        touch ${PKG_USERCONF_DIR}/privilege
fi
if [ ! -e ${PKG_USERCONF_DIR}/pptp/accel-pppd.conf ]; then
	cp ${PRIVATE_LOCATION}/etc/pptp/accel-pppd.conf ${PKG_USERCONF_DIR}/pptp/accel-pppd.conf
fi
if [ ! -e ${PKG_USERCONF_DIR}/openvpn/openvpn.conf ]; then
	cp ${PRIVATE_LOCATION}/etc/openvpn/openvpn.conf ${PKG_USERCONF_DIR}/openvpn/openvpn.conf
fi
if [ ! -e ${PKG_USERCONF_DIR}/l2tp/xl2tpd.conf ]; then
	cp ${PRIVATE_LOCATION}/etc/l2tp/xl2tpd.conf ${PKG_USERCONF_DIR}/l2tp/xl2tpd.conf
fi
if [ ! -e ${PKG_USERCONF_DIR}/l2tp/options.xl2tpd ]; then
	cp ${PRIVATE_LOCATION}/etc/l2tp/options.xl2tpd ${PKG_USERCONF_DIR}/l2tp/options.xl2tpd
fi
if [ ! -e ${PKG_USERCONF_DIR}/l2tp/ipsec.conf ]; then
	cp ${PRIVATE_LOCATION}/etc/l2tp/ipsec.conf ${PKG_USERCONF_DIR}/l2tp/ipsec.conf
fi
if [ ! -e ${PKG_USERCONF_DIR}/l2tp/ipsec.secrets.encrypt ]; then
	cp ${PRIVATE_LOCATION}/etc/l2tp/ipsec.secrets.encrypt ${PKG_USERCONF_DIR}/l2tp/ipsec.secrets.encrypt
fi

cp ${PRIVATE_LOCATION}/etc/openvpn/server.conf ${PKG_USERCONF_DIR}/openvpn/openvpn.conf.user.sample

if [ -e ${PRIVATE_LOCATION}/etc/openvpn/keys/openvpn.zip ]; then
	rm ${PRIVATE_LOCATION}/etc/openvpn/keys/openvpn.zip
fi

if [ -e ${PRIVATE_LOCATION}/etc/openvpn/keys/mobile.ovpn ]; then
	ANDROID_CONF="${PRIVATE_LOCATION}/etc/openvpn/keys/android.ovpn"
	IOS_CONF="${PRIVATE_LOCATION}/etc/openvpn/keys/iOS.ovpn"
	# Gen android.ovpn
	cat ${PRIVATE_LOCATION}/etc/openvpn/keys/mobile.ovpn > ${ANDROID_CONF}
	echo "<ca>" >> ${ANDROID_CONF}
	cat ${PKG_USERCONF_DIR}/openvpn/keys/ca.crt >> ${ANDROID_CONF}
	echo "</ca>" >> ${ANDROID_CONF}

	# Gen iOS.ovpn
	cat ${PRIVATE_LOCATION}/etc/openvpn/keys/mobile.ovpn > ${IOS_CONF}
	echo "<ca>" >> ${IOS_CONF}
	cat ${PKG_USERCONF_DIR}/openvpn/keys/ca.crt >> ${IOS_CONF}
	echo "</ca>" >> ${IOS_CONF}
	echo "" >> ${IOS_CONF}

	echo "<cert>" >> ${IOS_CONF}
	cat ${PRIVATE_LOCATION}/etc/openvpn/keys/client.crt >> ${IOS_CONF}
	echo "</cert>" >> ${IOS_CONF}
	echo "" >> ${IOS_CONF}

	echo "<key>" >> ${IOS_CONF}
	cat ${PRIVATE_LOCATION}/etc/openvpn/keys/client.key >> ${IOS_CONF}
	echo "</key>" >> ${IOS_CONF}
fi

mkdir -p ${PKG_USERCONF_DIR}/syno_conf
if [ ! -e ${PKG_USERCONF_DIR}/syno_conf/rad_site_def ]; then
	cp -f ${PRIVATE_LOCATION}/etc/syno_conf/* ${PKG_USERCONF_DIR}/syno_conf/
fi

# disable kernel mode in QorIQ and 628x platforms
PLATFORM=`uname -m`
if [ "${PLATFORM}" = "ppc" -o "`echo ${PLATFORM} | cut -c 1-5`" = "armv5" ]; then
	sed -i "s/ force userspace = no/ force userspace = yes/g" /usr/syno/etc/packages/VPNCenter/l2tp/xl2tpd.conf
fi

# copy certificate to package path
${PRIVATE_LOCATION}/hook/CertReload.sh copy_cert_only

# add port-forwarding config file
if [ ! -e ${PKG_USERCONF_DIR}/synovpn_port ]; then
	cp ${PRIVATE_LOCATION}/etc/synovpn_port ${PKG_USERCONF_DIR}/synovpn_port
fi
${SERVICETOOL} --install-configure-file --package ${PKG_USERCONF_DIR}/synovpn_port

# add mail dir infomation into config

mkdir -p ${IFNAME_CHANGE_HOOK_DIR}
ln -sf ${PKG_HOOK_SCRT_DIR}/VPNNetIfnameChange.sh ${IFNAME_CHANGE_HOOK_DIR}/

# add user data collection
src_file="${PRIVATE_LOCATION}/user_data_collector/vpnserver.config"
dest_dir="/usr/syno/etc/user.data.conf"
if [ ! -d ${dest_dir} ]; then
	mkdir -p ${dest_dir}
fi
cp -f ${src_file} ${dest_dir}

exit 0
