#!/bin/sh

# read current date for dirstructure
TMP_YR=`date +%Y`
TMP_MO=`date +%m`
TMP_DY=`date +%d`
TMP_DATE=`date +%Y/%m/%d`

APPCOUNT=0
# read how many application servers there are
for APPNAME in `ls /web_logs/`
do
	#echo $APPNAME
	APPNAMES[$APPCOUNT]=$APPNAME
	APPCOUNT=$((APPCOUNT+1))
done

# now loop through the application server log dirs to build list of files to process
for (( APP=0; APP < $APPCOUNT; APP++ ))
do
#	echo -n "${APPNAMES[APP]}: "
	if [ -d "/web_logs/${APPNAMES[APP]}/${TMP_DATE}/" ]; then
		for ILOG in `ls /web_logs/${APPNAMES[APP]}/${TMP_DATE}/ | grep -i access`
		do
#			echo -n "${ILOG}, "
			ADDLOG=1
			for (( FINDL=0; FINDL < ${#LOGS[@]}; FINDL++ ))
			do
				if [ "${LOGS[$FINDL]}" == "${ILOG}" ]; then
					#echo "EQUIV"
					ADDLOG=0
				fi
			done
			if [ $ADDLOG == 1 ]; then
				LOGS[${#LOGS[@]}]=${ILOG}
			fi
			#LOGS[${LOGFCOUNT}]=${ILOG}
			#LOGFCOUNT=$((LOGFCOUNT+1))
		done
	fi
#	echo ""
done

for (( TT=0; TT < ${#LOGS[@]}; TT++ ))
do
	LOGNAME=`echo -n "${LOGS[$TT]}" | sed -e 's/-access_log.1.gz//g'`
	CONFFILE="/etc/webalizer/${LOGNAME}.conf"
	
	# only proceed if there is a conf file for this profile
	if [ -f ${CONFFILE} ]; then
		echo -n "${LOGS[$TT]} - ${LOGNAME} "

		# create the web output directories
		ODIRNAME="/web/htdocs/webalizer/${LOGNAME}"
		# set the webalizer command-line args
#		WCOMM="/usr/bin/webalizer -p -c ${CONFFILE} -n ${LOGNAME} -o ${ODIRNAME}"
		WCOMM="/usr/bin/webalizer -p -c ${CONFFILE} -o ${ODIRNAME}"

		if [ -d ${ODIRNAME} ]; then
			echo -n ""
		else
			mkdir ${ODIRNAME}
			chown apache:apache ${ODIRNAME}
		fi
		
		# make sure to clear the current logfile to process array
		unset LOGS2PROC
		# now build array of files to process
		for (( APP=0; APP < $APPCOUNT; APP++ ))
		do
			if [ -f "/web_logs/${APPNAMES[APP]}/${TMP_DATE}/${LOGS[$TT]}" ]; then
				LOGS2PROC[${#LOGS2PROC[@]}]="/web_logs/${APPNAMES[APP]}/${TMP_DATE}/${LOGS[$TT]}"
			fi
		done

		# simply pipe gunzip to webalizer if only 1 weblog file found
		if [ ${#LOGS2PROC[@]} -lt 2 ]; then
			echo ":: only 1 log file to process. "
			for (( LOG=0; LOG < ${#LOGS2PROC[@]}; LOG++ ))
			do
				echo "processing ${LOGS2PROC[$LOG]}:"
				nice gunzip -c ${LOGS2PROC[$LOG]} | ${WCOMM}
			done
		else
			echo ":: multiple log files to process. "
			# clear previous runs logs
			unset MERGECOMM
			# first, uncompress
			for (( LOG=0; LOG < ${#LOGS2PROC[@]}; LOG++ ))
			do
				MERGECOMM="${MERGECOMM} ${LOGS2PROC[$LOG]}"
			done
			echo "processing logs: ${MERGECOMM} | ${WCOMM}"
			nice /usr/local/bin/zmergelog ${MERGECOMM} | ${WCOMM}
		fi

	fi
done
