#!/bin/sh /etc/rc.common
EXTRA_COMMANDS='send_syslog_mail run_logread'
EXTRA_HELP='send_syslog_mail	Send mail of syslog by user selected type
			run_logread	Run logread to store syslog for mail alert'

LOGREAD_PID_FILE=/var/run/syslog_mail_logread.pid

sms_apply() {
	local temp
	local item

	item=`uci fchanges delete config_sms`
	delobj=`uci fchanges delete config_sms profile`
	[ -n "$delobj" ] && {
		for elem in $delobj; do
			temp=`uci filter config_sms_alert sms_profile $elem`
			[ -n "$temp" ] && {
				for item in $temp; do
					uci delete config_sms_alert.$item.sms_profile=$elem
				done
			}
		done
	}
}

notify_apply() {
	local temp
	local item

	item=`uci fchanges delete config_notify`
	delobj=`uci fchanges delete config_notify profile`
	[ -n "$delobj" ] && {
		for elem in $delobj; do
			temp=`uci filter config_sms_alert notify_profile $elem`
			[ -n "$temp" ] && {
				for item in $temp; do
					uci delete config_sms_alert.$item.notify_profile=$elem
				done
			}
		done
	}
}

#syslog email alert
mail_syslog_msg(){
	sh /sbin/syslog_mail $1
}

send_syslog_mail(){
	UCI_CONFIG="config_notify"
	SYSLOG_MAIL=/tmp/syslog_mail
	
	#reset time stemp
	date +%s > /tmp/syslog_mail_time_stamp
	
	#clear buffer
	cp $SYSLOG_MAIL /tmp/syslog_mail_copy
	if [ -f $LOGREAD_PID_FILE ];then
		logread_pid=$(cat $LOGREAD_PID_FILE)
		kill -9 $logread_pid
		rm -f $SYSLOG_MAIL
		run_logread
	fi
	
	config_clear
	config_load $UCI_CONFIG
	config_foreach mail_syslog_msg
	
	rm -f /tmp/syslog_mail_copy
}

run_logread(){
	syslog_st=$(uci get syslogd.syslogd.status)
	if [ "$syslog_st" == "local" ] || [ "$syslog_st" == "both" ];then
		#start copy syslog for email alert
		logread -f > /tmp/syslog_mail &
		#get logread pid and restore
		echo $! > $LOGREAD_PID_FILE
	fi
}

apply() {
	###send old setting syslog mail alert
	syslog_mail_enable=$(uci filter config_notify syslog enable)
	if [ "$syslog_mail_enable" != "" ];then
		send_syslog_mail
	fi
	####
	
	sms_apply
	notify_apply
	uci commit config_sms_alert
	uci commit config_sms
	uci commit config_notify
	
	###stop or start logread
	syslog_mail_enable=$(uci filter config_notify syslog enable)
	#if "notify syslog disable" and "running logread" close logread

	if [ "$syslog_mail_enable" == "" ] && [ -f $LOGREAD_PID_FILE ];then
		logread_pid=$(cat $LOGREAD_PID_FILE)
		kill -9 $logread_pid
		rm -f $LOGREAD_PID_FILE
	fi
	#if "notify syslog enable" and "not running logread" run logread
	if [ "$syslog_mail_enable" != "" ] && [ ! -f $LOGREAD_PID_FILE ];then
		run_logread
	fi
	####
}