#!/bin/sh

wget -P /tmp/ports ftp://ftp.epygi.com/ecQX_Hosted/ports_configuration >/dev/null
if [[ $? -ne 0 ]]; then
	wget -P /tmp/ports ftp://ftp.epygi.com/ecQX_Hosted/ports_configuration >/dev/null
	if [[ $? -ne 0 ]]; then
		logger -s "Auto Configuration Failed. Problem getting ecQX ports configuration from FTP Server"
		exit 1
	fi
fi

# Apply Hosted ecQX Configuration in case when hostname is created in /mnt/factory/factorysafe directory.
# Get default ports for this instance
. /etc/fiad-conf/sysconfig/network-scripts/ifcfg-lan0
file="/tmp/ports/ports_configuration"

IP_HEX=$(printf '%.2X%.2X%.2X%.2X\n' `echo $IPADDR | sed -e 's/\./ /g'`)
NEXT_IP_HEX=$(printf %.8X `echo $(( 0x$IP_HEX + 1 ))`)
NEXT_IP=$(printf '%d.%d.%d.%d\n' `echo $NEXT_IP_HEX | sed -r 's/(..)/0x\1 /g'`)

cat ${file} | sed -n "/"$IPADDR"_/,/"$NEXT_IP"_/p" | head -n-1 >/tmp/tempports
sed 1d /tmp/tempports  > /tmp/currentports
. /tmp/currentports
if [ "$SIPUDP" = "" ]; then
	logger -s "Auto Configuration Failed. Problem parsing ecQX ports configuration"
	rm -f "file"
	exit 1
fi

. /mnt/flashfs/configs/current/sysconfig/rc.conf
PREVSIPUDP=$(cat /etc/fiad-conf/telephony/sip.cfg  | grep "udp port" | cut -d'=' -f2)
PREVSIPTCP=$(cat /etc/fiad-conf/telephony/sip.cfg  | grep "tcp port" | cut -d'=' -f2)
PREVSIPTLS=$(cat /etc/fiad-conf/telephony/sip.cfg  | grep "tls port" | cut -d'=' -f2)
PREVRTPMIN=$(cat /etc/fiad-conf/telephony/rtp.cfg  | grep "min_rtp_port" | cut -d'=' -f2)
PREVRTPMAX=$(cat /etc/fiad-conf/telephony/rtp.cfg  | grep "max_rtp_port" | cut -d'=' -f2)

PREVWEBRTCMIN=$(cat /mnt/flashfs/configs/current/janus/janus.jcfg | grep "rtp_port_range = " | cut -d'"' -f2 | cut -d'-' -f1)
PREVWEBRTCMAX=$(cat /mnt/flashfs/configs/current/janus/janus.jcfg | grep "rtp_port_range = " | cut -d'"' -f2 | cut -d'-' -f2)
PREVOPENVPN=$(cat /mnt/flashfs/configs/current/openvpn/conf/server.conf | grep port | cut -d' ' -f2)
PREVRSYNC=$(cat /mnt/flashfs/configs/current/syncd.conf | grep rsync_port | cut -d'=' -f2)

# Replace SIP UDP/TCP ports in nat.cfg
SED_CMD=$(echo "s/"self_port_range_start=$PREVSIPUDP"/"self_port_range_start=$SIPUDP"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/nat.cfg

SED_CMD=$(echo "s/"self_port_range_end=$PREVSIPUDP"/"self_port_range_end=$SIPUDP"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/nat.cfg

SED_CMD=$(echo "s/"mapped_port_range_start=$PREVSIPUDP"/"mapped_port_range_start=$SIPUDP"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/nat.cfg

SED_CMD=$(echo "s/"mapped_port_range_end=$PREVSIPUDP"/"mapped_port_range_end=$SIPUDP"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/nat.cfg

# Replace SIP TLS ports in nat.cfg
SED_CMD=$(echo "s/"self_port_range_start=$PREVSIPTLS"/"self_port_range_start=$SIPTLS"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/nat.cfg

SED_CMD=$(echo "s/"self_port_range_end=$PREVSIPTLS"/"self_port_range_end=$SIPTLS"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/nat.cfg

SED_CMD=$(echo "s/"mapped_port_range_start=$PREVSIPTLS"/"mapped_port_range_start=$SIPTLS"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/nat.cfg

SED_CMD=$(echo "s/"mapped_port_range_end=$PREVSIPTLS"/"mapped_port_range_end=$SIPTLS"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/nat.cfg

# Replace RTP ports in nat.cfg
SED_CMD=$(echo "s/"self_port_range_start=$PREVRTPMIN"/"self_port_range_start=$RTPMIN"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/nat.cfg

SED_CMD=$(echo "s/"self_port_range_end=$PREVRTPMAX"/"self_port_range_end=$RTPMAX"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/nat.cfg

SED_CMD=$(echo "s/"mapped_port_range_start=$PREVRTPMIN"/"mapped_port_range_start=$RTPMIN"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/nat.cfg

SED_CMD=$(echo "s/"mapped_port_range_end=$PREVRTPMAX"/"mapped_port_range_end=$RTPMAX"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/nat.cfg

# Replace SIP UDP/TCP/TLS ports in sip.cfg
SED_CMD=$(echo "s/"port=$PREVSIPUDP"/"port=$SIPUDP"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/sip.cfg

#SED_CMD=$(echo "s/"port=$PREVSIPTCP"/"port=$SIPTCP"/")
#/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/sip.cfg

SED_CMD=$(echo "s/"port=$PREVSIPTLS"/"port=$SIPTLS"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/sip.cfg

# Replace RTP ports in rtp.cfg
SED_CMD=$(echo "s/"min_rtp_port=$PREVRTPMIN"/"min_rtp_port=$RTPMIN"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/rtp.cfg

SED_CMD=$(echo "s/"max_rtp_port=$PREVRTPMAX"/"max_rtp_port=$RTPMAX"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/telephony/rtp.cfg

# Replace webrtc ports and mapped host address in janus.cfg
SED_CMD=$(echo "s/"$PREVWEBRTCMAX"/"$WEBRTCMAX"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/janus/janus.jcfg

SED_CMD=$(echo "s/"$PREVWEBRTCMIN"/"$WEBRTCMIN"/")
/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/janus/janus.jcfg

if [ "$START_OPENVPN" = "true" ] ; then
# Replace OpenVPN port in server.conf
	SED_CMD=$(echo "s/"$PREVOPENVPN"/"$OpenVPN"/")
	/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/openvpn/conf/server.conf

# Replace OpenVPN port in internal.cfg
	if [ -f /mnt/flashfs/configs/current/openvpn/conf/internal.cfg ] ; then
		SED_CMD=$(echo "s/"port=$PREVOPENVPN"/"port=$OpenVPN"/")
		/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/openvpn/conf/internal.cfg

		for i in `/bin/ls /mnt/flashfs/configs/current/openvpn/keys/client/*.ovpn` ; do
			SED_CMD=$(echo "s/"$PREVOPENVPN"/"$OpenVPN"/")
			/bin/sed -i $SED_CMD $i
		done
	fi
fi

# Replace rsync_port in syncd.conf
	SED_CMD=$(echo "s/"rsync_port=$PREVRSYNC"/"rsync_port=$RSYNC"/")
	/bin/sed -i $SED_CMD /mnt/flashfs/configs/current/syncd.conf

echo Done
exit 0
