#!/bin/bash

if [ -f /etc/fidonms ]; then
    . /etc/fidonms
fi

if [ -z "$NMSBASE" ]; then
    NMSBASE=/opt/fidonms
fi

if [ -z "$FIDOBASE" ]; then
    FIDOBASE=/var/spool/ftn
fi

ANDIR=$FIDOBASE/announce/
TMPDIR=$FIDOBASE/.tmp/

declare -a anflist=()
readarray -t anflist < <(find $ANDIR -type f -print)

anfcnt=${#anflist[@]}

# FileActions is a configfile of form <AREA-ID> <FILENAME> <ACTIONSCRIPT>
# AREA-ID is area name for which action is performed
# FILENAME (Can be * for any of files updated) - Exact file name
# Actionscript is a script called when file or area is updated

declare -a fa_areas=()
declare -a fa_filenames=()
declare -a fa_actions=()

if [ -f $NMSBASE/etc/ticactions ]; then
	while read -r line; do
		if [[ ! "$line" =~ ^# ]] && [[ -n "$line" ]]; then
			fa_areas+=( "$(echo -ne "$line" | awk '{ print $1 }')" )
			fa_filenames+=( "$(echo -ne "$line" | awk '{ print $2 }')" )
			fa_actions+=( "$(echo -ne "$line" | awk '{ print $3 }')" )
		fi
	done < $NMSBASE/etc/ticactions
	#echo "Have read ${#fa_areas[@]} areas, ${#fa_filenames[@]} names and ${#fa_actions[@]} actions"
	#for i in ${!fa_areas[@]}; do
	#    echo "elem $i: area: ${fa_areas[$i]}, name: ${fa_filenames[$i]}, action: ${fa_actions[$i]}"
	#done
fi

if [ "$anfcnt" -gt "0" ]; then
    for item in "${anflist[@]}"; do
	# echo -ne "ANFILE: $item "
	ticarea="$( cat $item | grep -e "^Area" | sed -e 's/[\r\t]/ /' | awk '{ print $2 }' )"
	ticfile="$( cat $item | grep -e "^File" | sed -e 's/[\r\t]/ /' | awk '{ print $2 }' )"
	# echo -e ", A: ${ticarea}, F: ${ticfile}"
	for i in ${!fa_areas[@]}; do
	    if [[ "${fa_areas[$i]}" == "${ticarea}" ]]; then
		#echo "Area equiv ${ticarea}"
		if [[ "${fa_filenames[$i]}" == "*" ]] || [[ "${fa_filenames[$i]}" == "${ticfile}" ]]; then
		    #echo "Filename equiv ${ticfile}"
		    . ${fa_actions[$i]}
		fi
	    fi
	done
    done
fi