#!/bin/bash
#
#FilterMonitorSetting ver1.0.0	
#
# usage: 
#	FilterMonitorSetting callfunc AlreadyCalib IntervalVal DayOfWeek1Val DayOfWeek2Val TimeVal #      tracelevel
#
# Description: 
#	Set date for FilterMonitor Detect
#Copyright (C) 2012 NEC Corporation.
#If you tamper with the source, the behavior of the FilterMonitor is not guaranteed.
############################################################################################################
. $PATHPREFIX/usr/bin/FilterMonitor/FilterMonitorUsage
. $PATHPREFIX/usr/bin/FilterMonitor/FilterMonitorCommonFunc

SettingPath=/etc/FilterMonitor
funcname=FilterMonitorSetting

callfunc=$1
AlreadyCalib=$2
IntervalVal=$3
DayOfWeek1Val=$4
DayOfWeek2Val=$5
TimeVal=$6
tracelevel=$7

HourVal=`echo $TimeVal | cut -b 1-2`
MinuteVal=`echo $TimeVal | cut -b 3-4`

settingtmpfile=/tmp/FilterMonitorSetting.new
settingfile=$PATHPREFIX/$SettingPath/FilterMonitorSetting
crontmpfile=/tmp/FilterMonitor
cronfile=$PATHPREFIX/etc/cron.d/FilterMonitor
cronflagfile=$PATHPREFIX/$SettingPath/FilterMonitorCronFlag

umask 077

ShowAlert()
{
    echo "Internal error occurs. Please contact to customer service for the support."
    $PATHPREFIX/usr/bin/FilterMonitor/FilterMonitorLog syslog $funcname ERR $tracelevel $callfunc "failed to access file"
    $PATHPREFIX/usr/bin/FilterMonitor/FilterMonitorLog tracelog $funcname ERR $tracelevel $callfunc "$failed to access file"
}

Finalize()
{
    rm -f $settingtmpfile 2> /dev/null
    for (( i = 0 ; i < ${#sensortmpfile[*]} ; i++ ))
    {
        rm -f ${sensortmpfile[i]} 2> /dev/null
    }

    $PATHPREFIX/usr/bin/FilterMonitor/FilterMonitorLog tracelog $funcname INFO $tracelevel $callfunc "$funcname end"

    exit $1
}

$PATHPREFIX/usr/bin/FilterMonitor/FilterMonitorLog tracelog $funcname INFO $tracelevel $callfunc "$funcname start"

if [ $# -lt 7 ]
then
    FilterMonitorUsage
    Finalize 1
fi

OLDIFS=$IFS

NUMERIC_CHECK=`expr $IntervalVal : "\([0-4]\)$"`
if [ -z $NUMERIC_CHECK ]
then
    $PATHPREFIX/usr/bin/FilterMonitor/FilterMonitorLog tracelog $funcname INFO $tracelevel $callfunc "Illegal Interval Value $IntervalVal"
    FilterMonitorUsage
    Finalize 2
fi

NUMERIC_CHECK=`expr $DayOfWeek1Val : "\([0-7]\)$"`
if [ -z $NUMERIC_CHECK ]
then
    $PATHPREFIX/usr/bin/FilterMonitor/FilterMonitorLog tracelog $funcname INFO $tracelevel $callfunc "Illegal DayOfWeek1 Value $DayOfWeek1Val"
    FilterMonitorUsage
    Finalize 2
fi

NUMERIC_CHECK=`expr $DayOfWeek2Val : "\([0-7]\)$"`
if [ -z $NUMERIC_CHECK ]
then
    $PATHPREFIX/usr/bin/FilterMonitor/FilterMonitorLog tracelog $funcname INFO $tracelevel $callfunc "Illegal DayOfWeek2 Value $DayOfWeek2Val"
    FilterMonitorUsage
    Finalize 3
fi

NOT_TIME=`expr $TimeVal : "\([0-2][0-9][0-5][0-9]\)$"`
if [ -z $NOT_TIME ]
then
    $PATHPREFIX/usr/bin/FilterMonitor/FilterMonitorLog tracelog $funcname INFO $tracelevel $callfunc "Illegal Time Value $TimeVal"
    FilterMonitorUsage
    Finalize 4
fi

IFS="," read -a Temp < $PATHPREFIX/$SettingPath/FilterMonitorSetting

Temp[8]=$HourVal
Temp[9]=$MinuteVal
Temp[10]=$IntervalVal
Temp[11]=$DayOfWeek1Val
Temp[12]=$DayOfWeek2Val

echo -n ${Temp[0]} > $settingtmpfile
for (( i = 1 ; i < ${#Temp[*]} ; i++ ))
{
    echo -n ",${Temp[i]}" >> $settingtmpfile
}
echo "" >> $settingtmpfile

if [ $AlreadyCalib == 1 ]
then
    $PATHPREFIX/usr/bin/FilterMonitor/FilterMonitorSetCron $HourVal $MinuteVal $IntervalVal $DayOfWeek1Val $DayOfWeek2Val

    if [ $? -ne 0 ]
    then
	Finalize 13
    fi
fi

mv -f $settingtmpfile $settingfile

$PATHPREFIX/usr/bin/FilterMonitor/FilterMonitorLog tracelog $funcname INFO $tracelevel $callfunc "$funcname end"

Finalize 0
