You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

116 lines
3.9 KiB

#!/bin/sh /etc/rc.common
# Copyright (C) 2015 OpenWrt.org
START=90
STOP=10
USE_PROCD=1
PROG=/usr/sbin/clamd
CLAMD_CONFIGFILE="/tmp/clamav/clamd.conf"
validate_clamav_section() {
uci_validate_section clamav clamav "${1}" \
'clamd_config_file:string' \
'LogFile:string' \
'LogFileMaxSize:string' \
'LogVerbose:string' \
'ExtendedDetectionInfo:string' \
'LogTime:string' \
'OfficialDatabaseOnly:string' \
'StreamMinPort:uinteger' \
'StreamMaxPort:uinteger' \
'MaxThreads:uinteger' \
'ReadTimeout:uinteger' \
'CommandReadTimeout:uinteger' \
'MaxDirectoryRecursion:uinteger' \
'FollowDirectorySymlinks:string' \
'FollowFileSymlinks:string' \
'SelfCheck:uinteger' \
'DetectPUA:string' \
'ScanPE:string' \
'DisableCertCheck:string' \
'ScanELF:string' \
'DetectBrokenExecutables:string' \
'ScanOLE2:string' \
'ScanPDF:string' \
'ScanSWF:string' \
'ScanMail:string' \
'ScanPartialMessages:string' \
'ScanArchive:string' \
'TemporaryDirectory:string' \
'ArchiveBlockEncrypted:string' \
'MaxFileSize:string' \
'LocalSocket:string' \
'User:string' \
'ExitOnOOM:string'
}
start_service() {
local clamd_config_file LogFile LogTime StreamMinPort \
StreamMaxPort MaxThreads ReadTimeout CommandReadTimeout MaxDirectoryRecursion \
FollowFileSymlinks FollowDirectorySymlinks SelfCheck DetectPUA ScanPE DisableCertCheck \
ScanELF DetectBrokenExecutables ScanOLE2 ScanPDF ScanSWF ScanMail ScanPartialMessages \
ScanArchive TemporaryDirectory ArchiveBlockEncrypted MaxFileSize LocalSocket User
validate_clamav_section clamav || {
echo "validation failed"
return 1
}
mkdir -p /usr/share/clamav
mkdir -p /etc/clamav/
mkdir -p /var/run/clamav/
chmod a+rw /var/run/clamav
mkdir -p $(dirname $CLAMD_CONFIGFILE)
ln -sf $clamd_config_file $CLAMD_CONFIGFILE
echo "LogFile " $LogFile > $CLAMD_CONFIGFILE
echo "LogFileMaxSize " $LogFileMaxSize >> $CLAMD_CONFIGFILE
echo "LogVerbose " $LogVerbose >> $CLAMD_CONFIGFILE
echo "ExtendedDetectionInfo " $ExtendedDetectionInfo >> $CLAMD_CONFIGFILE
echo "LogTime " $LogTime >> $CLAMD_CONFIGFILE
echo "OfficialDatabaseOnly " $OfficialDatabaseOnly >> $CLAMD_CONFIGFILE
echo "StreamMinPort " $StreamMinPort >> $CLAMD_CONFIGFILE
echo "StreamMaxPort " $StreamMaxPort >> $CLAMD_CONFIGFILE
echo "MaxThreads " $MaxThreads >> $CLAMD_CONFIGFILE
echo "ReadTimeout " $ReadTimeout >> $CLAMD_CONFIGFILE
echo "CommandReadTimeout " $CommandReadTimeout >> $CLAMD_CONFIGFILE
echo "MaxDirectoryRecursion " $MaxDirectoryRecursion >> $CLAMD_CONFIGFILE
echo "FollowDirectorySymlinks " $FollowDirectorySymlinks >> $CLAMD_CONFIGFILE
echo "FollowFileSymlinks " $FollowFileSymlinks >> $CLAMD_CONFIGFILE
echo "SelfCheck " $SelfCheck >> $CLAMD_CONFIGFILE
echo "DetectPUA " $DetectPUA >> $CLAMD_CONFIGFILE
echo "ScanPE " $ScanPE >> $CLAMD_CONFIGFILE
echo "DisableCertCheck " $DisableCertCheck >> $CLAMD_CONFIGFILE
echo "ScanELF " $ScanELF >> $CLAMD_CONFIGFILE
echo "DetectBrokenExecutables " $DetectBrokenExecutables >> $CLAMD_CONFIGFILE
echo "ScanOLE2 " $ScanOLE2 >> $CLAMD_CONFIGFILE
echo "ScanPDF " $ScanPDF >> $CLAMD_CONFIGFILE
echo "ScanSWF " $ScanSWF >> $CLAMD_CONFIGFILE
echo "ScanMail " $ScanMail >> $CLAMD_CONFIGFILE
echo "ScanPartialMessages " $ScanPartialMessages >> $CLAMD_CONFIGFILE
echo "ScanArchive " $ScanArchive >> $CLAMD_CONFIGFILE
echo "TemporaryDirectory " $TemporaryDirectory >> $CLAMD_CONFIGFILE
echo "ArchiveBlockEncrypted " $ArchiveBlockEncrypted >> $CLAMD_CONFIGFILE
echo "MaxFileSize " $MaxFileSize >> $CLAMD_CONFIGFILE
echo "LocalSocket " $LocalSocket >> $CLAMD_CONFIGFILE
echo "User " $User >> $CLAMD_CONFIGFILE
echo "ExitOnOOM " $ExitOnOOM >> $CLAMD_CONFIGFILE
procd_open_instance
procd_set_param command $PROG -c $CLAMD_CONFIGFILE
procd_set_param file $CLAMD_CONFIGFILE
procd_close_instance
}
stop_service()
{
service_stop ${PROG}
}
service_triggers()
{
procd_add_reload_trigger "clamav"
procd_add_validation validate_clamav_section
}