#!/bin/bash
# Copyright (c) 2000-2015 Synology Inc. All rights reserved.

make install DESTDIR="${TmpInstDir}"

## Remove and move installed files
## =========================================================================
REMOVE_LIST="lib/iptables usr/lib/pkgconfig usr/include usr/share"
for i in ${REMOVE_LIST}; do
	rm -fr "${TmpInstDir}/$i"
done
find ${TmpInstDir} -type f | grep '.la' | xargs rm -fr

## Replace original iptables with iptablesRetryWrapper
install -Dm755 ./synology/iptablesRetryWrapper.sh ${TmpInstDir}/usr/bin/iptables
install -Dm755 ./synology/ip6tablesRetryWrapper.sh ${TmpInstDir}/usr/bin/ip6tables
install -Dm755 ./synology/iptables-restoreRetryWrapper.sh ${TmpInstDir}/usr/bin/iptables-restore

## Create symbolic link to /sbin
install -d "${TmpInstDir}/sbin"
cd ${TmpInstDir}/sbin
for i in `ls ${TmpInstDir}/usr/bin`; do
	ln -sf "/usr/bin/$i" .
done
cd -

## Install requried extensions libraries
## =========================================================================
SYNO_EXT_LIB_ARY="libxt_standard.so libxt_tcp.so libxt_multiport.so libxt_udp.so "`
				`"libipt_icmp.so libipt_REDIRECT.so libxt_MARK.so libxt_state.so "`
				`"libipt_DNAT.so libipt_LOG.so libxt_limit.so libxt_mac.so libxt_set.so "`
				`"libxt_iprange.so libip6t_icmp6.so libip6t_LOG.so libipt_MASQUERADE.so "`
				`"libxt_TCPMSS.so libxt_NFQUEUE.so libxt_policy.so "`
				`"libxt_conntrack.so libipt_SNAT.so"

if ! checkPlatformFunction SYNO_FEA_ROUTER_COMMON; then
	## DSM
	SYNO_EXT_LIB_ARY="${SYNO_EXT_LIB_ARY} "`
					`"libxt_recent.so libxt_addrtype.so libip6t_SNAT.so libxt_ipvs.so"
else
	## SRM
	SYNO_EXT_LIB_ARY="${SYNO_EXT_LIB_ARY} "`
					`"libxt_synomac.so libxt_SYNOCONNMAC.so libxt_synoconnmac.so "`
					`"libxt_NFLOG.so libxt_TPROXY.so "`
					`"libxt_CLASSIFY.so libxt_classify_synomatch.so libxt_SYNOCLASSIFY.so libxt_synoclassify.so "`
					`"libxt_mark.so libxt_CONNMARK.so libxt_connmark.so libxt_SET.so "`
					`"libxt_physdev.so libipt_REJECT.so libip6t_REJECT.so "`
					`"libxt_synointerface.so libipt_TTL.so libipt_ttl.so libipt_TRIGGER.so libipt_webstr.so libxt_string.so"
fi

install -d "$TmpInstDir/lib/iptables"
for lib in ${SYNO_EXT_LIB_ARY}; do
	install -c -v -m755 ./extensions/${lib} ${TmpInstDir}/lib/iptables/
done


## Install syno scripts
## =========================================================================
if ! checkPlatformFunction SYNO_FEA_ROUTER_COMMON; then
	## DSM
	## ====================================================================
	SYNO_RC_SCRIPTS="syno_iptables_common synotc_common"
	SYNO_TC_SCRIPTS="default.cmd"
	SYNO_ETC_SCRIPTS="iptables_guest_net.sh iptables_time_ctrl.sh"
	SYNO_FW_SECURITY_SCRIPTS="dos.pattern dosv6.pattern ipsec_passthrough.pattern l2tp_passthrough.pattern pptp_passthrough.pattern iptables_security.sh"
	SYNO_SDK_HOOK_SCRIPTS="iptablesTcIfUpDown.sh"

	install -d "$TmpInstDir/usr/syno/bin"
	for sh in ${SYNO_RC_SCRIPTS}; do
		install -Dm755 ./synology/${sh} ${TmpInstDir}/usr/syno/bin
	done

	install -d "$TmpInstDir/usr/syno/etc"
	for sh in ${SYNO_ETC_SCRIPTS}; do
		install -Dm755 ./synology/${sh} ${TmpInstDir}/usr/syno/etc
	done

	install -d "$TmpInstDir/etc/fw_security/sysconf"
	for sh in ${SYNO_FW_SECURITY_SCRIPTS}; do
		install -Dm755 ./synology/${sh} ${TmpInstDir}/etc/fw_security/sysconf
	done

	install -d "$TmpInstDir/etc/tc"
	for sh in ${SYNO_TC_SCRIPTS}; do
		install -Dm755 ./synology/${sh} ${TmpInstDir}/etc/tc
	done

	install -d "$TmpInstDir/usr/syno/etc/"
	install -Dm400 ./synology/chain_table_gen ${TmpInstDir}/usr/syno/etc/iptables_chain_list
	install -Dm400 ./synology/iptables_modules_list ${TmpInstDir}/usr/syno/etc/iptables_modules_list

	install -d "$TmpInstDir${SynoPluginDir}/net"
	install -d "$TmpInstDir${SynoPluginDir}/net/if_link_up"
	install -d "$TmpInstDir${SynoPluginDir}/net/if_link_down"
	for i in ${SYNO_SDK_HOOK_SCRIPTS}; do
		install -Dm755 ./sdkhook/${i} ${TmpInstDir}${SynoPluginDir}/net/$i
	done

	cd $TmpInstDir${SynoPluginDir}/net/if_link_up
	ln -sf ../${SYNO_SDK_HOOK_SCRIPTS} ${SYNO_SDK_HOOK_SCRIPTS}
	cd -
	cd $TmpInstDir${SynoPluginDir}/net/if_link_down
	ln -sf ../${SYNO_SDK_HOOK_SCRIPTS} ${SYNO_SDK_HOOK_SCRIPTS}
	cd -

	DEBUG_DAT_WHITELIST_DIR=/usr/syno/etc/logcollector/whitelist/
	[ -d ${TmpInstDir}${DEBUG_DAT_WHITELIST_DIR} ] || install -d -m 700 ${TmpInstDir}${DEBUG_DAT_WHITELIST_DIR}
	install -m 644 synology/debugdat/whitelist ${TmpInstDir}/${DEBUG_DAT_WHITELIST_DIR}/iptables-1.4.x
else
	## SRM
	## ====================================================================
	SYNO_IPTABLES_SCRIPTS="syno_iptables_common"
	SYNO_TC_SCRIPTS="default.cmd"
	SYNO_ETC_SCRIPTS="iptables_guest_net.sh"
	SYNO_FW_SECURITY_SCRIPTS="iptables_security.sh"
	SYNO_FW_SECURITY_PATTERNS="dos.pattern dosv6.pattern ipsec_passthrough.pattern l2tp_passthrough.pattern pptp_passthrough.pattern"
	SYNO_FW_RELOAD_HOOK="firewall_reload_hook.sh"

	install -Dm755 ./synology_srm/tc-module.sh ${TmpInstDir}/usr/syno/bin/tc-module.sh

	install -d "$TmpInstDir/usr/syno/bin"
	for sh in ${SYNO_IPTABLES_SCRIPTS}; do
		install -Dm755 ./synology_srm/${sh} ${TmpInstDir}/usr/syno/bin
	done

	install -d "$TmpInstDir/usr/syno/etc"
	for sh in ${SYNO_ETC_SCRIPTS}; do
		install -Dm755 ./synology_srm/${sh} ${TmpInstDir}/usr/syno/etc
	done

	install -d "$TmpInstDir/etc/fw_security/sysconf"
	for sh in ${SYNO_FW_SECURITY_SCRIPTS}; do
		install -Dm755 ./synology_srm/${sh} ${TmpInstDir}/etc/fw_security/sysconf
	done
	for pattern in ${SYNO_FW_SECURITY_PATTERNS}; do
		install -Dm644 ./synology_srm/${pattern} ${TmpInstDir}/etc/fw_security/sysconf
	done

	## Add default VPN-Passthrough for router
	install -Dm644 ./synology_srm/vpn_passthrough_allow.conf ${TmpInstDir}/etc/fw_security/global.conf

	install -d "$TmpInstDir/etc/tc"
	for sh in ${SYNO_TC_SCRIPTS}; do
		install -Dm755 ./synology_srm/${sh} ${TmpInstDir}/etc/tc
	done

	install -d "$TmpInstDir/usr/syno/etc/"
	install -Dm400 ./synology_srm/chain_table_gen ${TmpInstDir}/usr/syno/etc/iptables_chain_list
	install -Dm400 ./synology_srm/iptables_modules_list ${TmpInstDir}/usr/syno/etc/iptables_modules_list

	install -d "$TmpInstDir${SynoPluginDir}/net/topology_change"
	install -Dm755 ./sdkhook_srm/${SYNO_FW_RELOAD_HOOK} ${TmpInstDir}/${SynoPluginDir}/net/topology_change

	install -d ${TmpInstDir}/usr/lib/systemd/system
	for i in "./synology_srm/systemd/*"; do
		install -Dm644 ${i} ${TmpInstDir}/usr/lib/systemd/system/
	done

	DEBUG_DAT_WHITELIST_DIR=/usr/syno/etc/logcollector/whitelist/
	[ -d ${TmpInstDir}${DEBUG_DAT_WHITELIST_DIR} ] || install -d -m 700 ${TmpInstDir}${DEBUG_DAT_WHITELIST_DIR}
	install -m 644 synology_srm/debugdat/whitelist ${TmpInstDir}/${DEBUG_DAT_WHITELIST_DIR}/iptables-1.4.x
fi

install -d "$TmpInstDir/etc/firewall"
## =========================================================================

# install debugdat whitelist or collector.sh
if [ "x$NOSTRIP" != "xNOSTRIP" ]; then
	${STRIP} ${TmpInstDir}/{usr/bin/*,usr/lib/*,lib/iptables/*}
fi
