#!/bin/sh
#--------------------
# PSMT 2.3
# 2013.03.01 update
# 2013.08.07 /tmpgȂB$CONFIGt@CȂꍇ̓ftHggpB
# 2013.11.11 proscanfs̖߂lύXɍ킹CiG[=0菬A=0AA[g=1ȏj
# 2014.01.20 proscanfs߂l̔igtgejC
# 2014.01.21 proscanfs̖߂l0ȏ̏ꍇ̔וAreportɃOL^
# 2020.11.13 LIBPATHݒiAIXpj
# 2020.12.14 scañbZ[WύX
# 2023.05.24 LIBPATHXLɐݒ,psmt_agent.confg悤ɕύX
# 2023.06.27 alertlstderrǂݎ悤ɏC
# 2023.07.07 TIMEOUT,UPTIMEϐꂼSCAN_TIMEOUT,SCAN_UPTIMEɏC
# 2024.12.16 G[ĨOc悤ɏC
#-------------------
# scan
#-------------------
MANAGER=$1
PARAM=$2
SCAN_TIMEOUT=$3
CONFIG=/opt/proscan/agent/conf/scan.conf
SCAN=/opt/proscan/bin/proscanfs
LOG=/var/opt/proscan/tmp/scan.log
REPORT=/var/opt/proscan/report/scan.log
ACONFIG=/opt/proscan/agent/conf/psmt_agent.conf
if [ -f $ACONFIG ]
then
    . $ACONFIG
fi

if [ ! -d /var/opt/proscan/report ]
then
    mkdir /var/opt/proscan/report
fi

START=`date +%s`
rm -f $LOG
if [ -f $CONFIG ]
then
    LIBPATH=/usr/lib/clamav $SCAN -c $CONFIG -o $LOG $PARAM 2> /var/opt/proscan/tmp/alert.txt
else
    LIBPATH=/usr/lib/clamav $SCAN -o $LOG $PARAM 2> /var/opt/proscan/tmp/alert.txt
fi
RES=$?
END=`date +%s`
ALERT=`cat /var/opt/proscan/tmp/alert.txt`
if [ $RES -ge 10 ]
then
    echo $ALERT > $LOG
fi

echo "$START -----------" >> $REPORT
cat $LOG >> $REPORT

RC=0
SCAN_UPTIME=`expr $END - $START`
if [ "$SCAN_TIMEOUT" = "" ]
then
    SCAN_TIMEOUT=1800
fi
if [ $RES -eq 0 ]
then
    logger -i -t scan -p local6.notice "Successfully: scan complete"
    if [ $RES -eq 0 ]
    then
	if [ $SCAN_UPTIME -ge $SCAN_TIMEOUT ]
	then
            logger -i -t scan -p local6.notice "Warnnig: scan time over ($SCAN_UPTIME>$SCAN_TIMEOUT)"
            RC=255
	fi
    else
	logger -i -t scan -p local6.notice "Warnnig: scan alert ($ALERT)"
    fi
else
    logger -i -t scan -p local6.notice "Failed: proscanfs error ($RES)"
    RC=$RES
fi

/opt/proscan/agent/script/poststatus $MANAGER
exit $RC
