#!/bin/sh

. /etc/PG.conf

#dir
SYNC_DIR=${DATAPATH}/cfgsync
TMP_DIR=/usr/ramdisk/tmp
#exec file
CFG_GET=${PGPATH}/bin/cfg_get
FLOWEYE=/usr/ramdisk/bin/floweye
MD5=/sbin/md5
#file for write
RECV_CONF=${SYNC_DIR}/recv.conf
RECV_BKUP_CONF=${SYNC_DIR}/recv_bkup.conf
LOCAL_BKUP_CONF=${SYNC_DIR}/local_bkup.conf
ERROR_TMP=${TMP_DIR}/autosync_error.tmp
FILE_SYSINFO=${TMP_DIR}/sysinfo.tmp
#file for read
CUR_CONF=${PGETC}/panabit.conf
EVENTFILE=${PGETC}/log/pending_events
AUTOSYNC_BKUP_CONF=${PGETC}/autosync_bkup.conf
AUTOSYNC_CONF=${TMP_DIR}/autosync.conf
PANABIT_INF=/usr/ramdisk/etc/panabit.inf

#mkdir
#SYNC_DIR:
#for local_backup_conf
#and received_backup_conf
[ ! -d ${SYNC_DIR} ] && mkdir -p ${SYNC_DIR}
[ ! -d ${TMP_DIR} ] && mkdir -p ${TMP_DIR}

#touch file
#TMP_DIR
[ ! -e ${ERROR_TMP} ] && touch ${ERROR_TMP}
#SYNC_DIR
[ ! -e ${LOCAL_BKUP_CONF} -a -s ${CUR_CONF} ] && cp -f ${CUR_CONF} ${LOCAL_BKUP_CONF}

while true;
do
	sleep 1
	if [ -s ${AUTOSYNC_CONF} -o -s ${AUTOSYNC_BKUP_CONF} ]; then
		#read primary information from autosync.conf
		if [ ! -s ${AUTOSYNC_CONF} ]; then
			cp -f ${AUTOSYNC_BKUP_CONF} ${AUTOSYNC_CONF}
		fi
		. ${AUTOSYNC_CONF}
		if [ "${sync_switch}" = "open" ]; then
			if [ "${pridev_ip}" != "" -a "${pridev_admin}" != "" -a \
				"${pridev_pwd}" != "" -a "${sync_inter}" != "" ]; then

				#write dynamic system info into sysinfo.tmp file
				cat ${PANABIT_INF} | grep BUILDREL > ${FILE_SYSINFO}
				cat ${PANABIT_INF} | grep BUILDDATE >> ${FILE_SYSINFO}
				echo "BSDVER=`uname -r | cut -d '-' -f1`" >> ${FILE_SYSINFO}
				${FLOWEYE} jflow stat | grep "jflow_ipe_version" >> ${FILE_SYSINFO}
				echo -n "DATA_PORTS=" >> ${FILE_SYSINFO}
				${FLOWEYE} if list | awk '{print $1}' | \
				while read ifname;
				do 
					echo -n "${ifname} " >> ${FILE_SYSINFO} 
				done

				echo "" >> ${FILE_SYSINFO}
				echo "MD5=`cat ${CUR_CONF} | ${MD5}`" >> ${FILE_SYSINFO}

				datetime=`date +"%Y.%m.%d %X"`
				echo "${datetime}" > ${ERROR_TMP}
				#download conf 
				msg=`${CFG_GET} ${pridev_ip} ${pridev_admin} ${pridev_pwd} ${FILE_SYSINFO} ${RECV_CONF} 2>>${ERROR_TMP}`
				downmsg=`echo ${msg} | grep -s "download success"`
				if [ "${downmsg}" != "" ]; then
					if [ -s ${RECV_CONF} ]; then
						endcfg=`cat ${RECV_CONF} | grep -s "ENDCONFIG"`
						if [ "${endcfg}" != "" ]; then
							#backup local conf 
							cp -f ${CUR_CONF} ${LOCAL_BKUP_CONF}

							#backup download conf
							cp -f ${RECV_CONF} ${RECV_BKUP_CONF}

							#import conf
							cp -f ${RECV_CONF} ${DATAPATH}/config/panabit.conf
							echo "import_config yes" >> ${EVENTFILE}
							#detect import success or not
							for loop in 1 2 3 4 5 6 7 8 9 10;
							do
								sleep ${loop}
								if [ ! -e ${DATAPATH}/config/panabit.conf ]; then
									echo "import config succeessfully" >> ${ERROR_TMP};
									break;
								fi
							done
							[ "${loop}" -eq "10" ] && echo "import config failed" >> ${ERROR_TMP};
						else
							echo "configuration file error:not found 'ENDCONFIG'" >> ${ERROR_TMP};
						fi
					fi
				else
					[ "${msg}" != "" ] && echo ${msg} >> ${ERROR_TMP}
				fi

				sleep ${sync_inter}
			fi
		fi
	fi
done
