5
# Source debconf library
6
. /usr/share/debconf/confmodule
8
# This conf script is capable of backing up
14
CLAMAVCONF='/etc/clamav/clamd.conf'
16
# Read the configuration file
17
slurp_config "$CLAMAVCONF"
19
# Store conf file values as debconf answers - make sure user changes made
20
# outside of debconf are preserved
22
# This hack is needed due to the switch from clamav-base.templates to clamav-daemon.templates,
23
# because the clamav-daemon/debconf value is not saved directly in the clamd.conf file.
24
if [ -e "$CLAMAVCONF" ]; then
25
if dpkg --compare-versions "$2" lt 0.98.3; then
26
# Test for '##' at the beginning of the configuration file.
27
# These are present in the example configuration file presented for manual editing,
28
# but not in the automatically created one, when using debconf to manage clamd.conf.
29
if [ -z `cat /etc/clamav/clamd.conf | sed -n 1p | grep '##'` ]; then
30
db_set clamav-daemon/debconf true
32
db_set clamav-daemon/debconf false
37
# Store the settings loaded from the configuration file in debconf.
38
if [ -n "$TCPSocket" ]; then
39
db_set clamav-daemon/TcpOrLocal TCP || true
40
elif [ -n "$LocalSocket" ]; then
41
db_set clamav-daemon/TcpOrLocal UNIX || true
43
set_debconf_value daemon LocalSocket
44
set_debconf_value daemon FixStaleSocket
45
set_debconf_value daemon LocalSocketGroup
46
set_debconf_value daemon LocalSocketMode
47
set_debconf_value daemon TCPSocket
48
set_debconf_value daemon TCPAddr
49
set_debconf_value daemon ScanMail
50
set_debconf_value daemon ScanArchive
51
if [ -n "$StreamMaxLength" ]; then
52
StreamMaxLength="`echo $StreamMaxLength | sed -e s/M//`"
53
if [ "$StreamMaxLength" = "0" ]; then
56
db_set clamav-daemon/StreamMaxLength "$StreamMaxLength" || true
58
set_debconf_value daemon MaxDirectoryRecursion
59
set_debconf_value daemon FollowDirectorySymlinks
60
set_debconf_value daemon FollowFileSymlinks
61
if [ -n "$ReadTimeout" ] && [ -z "$ThreadTimeout" ]; then
62
db_set clamav-daemon/ReadTimeout "$ReadTimeout" || true
63
elif [ -z "$ReadTimeout" ] && [ -n "$ThreadTimeout" ]; then
64
ReadTimeout="$ThreadTimeout"
65
db_set clamav-daemon/ReadTimeout "$ReadTimeout" || true
66
elif [ -n "$ReadTimeout" ]; then
67
db_set clamav-daemon/ReadTimeout "$ReadTimeout" || true
69
set_debconf_value daemon MaxThreads
70
set_debconf_value daemon MaxConnectionQueueLength
71
set_debconf_value daemon LogSyslog
72
set_debconf_value daemon LogFile
73
set_debconf_value daemon LogTime
74
set_debconf_value daemon LogRotate
75
set_debconf_value daemon ScanOnAccess
76
set_debconf_value daemon OnAccessMaxFileSize
77
set_debconf_value daemon AllowAllMatchScan
78
set_debconf_value daemon ForceToDisk
79
set_debconf_value daemon DisableCertCheck
80
set_debconf_value daemon ScanSWF
81
set_debconf_value daemon MaxEmbeddedPE
82
set_debconf_value daemon MaxHTMLNormalize
83
set_debconf_value daemon MaxHTMLNoTags
84
set_debconf_value daemon MaxScriptNormalize
85
set_debconf_value daemon MaxZipTypeRcg
86
set_debconf_value daemon SelfCheck
87
set_debconf_value daemon StatsEnabled
88
set_debconf_value daemon StatsPEDisabled
89
set_debconf_value daemon StatsHostID
90
set_debconf_value daemon StatsTimeout
91
if [ -n "$User" ]; then
92
db_set clamav-daemon/User "$User" || true
93
if ! [ "$User" = 'root' ]; then
94
AddGroups=`groups "$User" | awk -F ':' '{print $2}' | sed -e s/"$User"//`
96
if [ -n "$AddGroups" ]; then
97
db_set clamav-daemon/AddGroups "$AddGroups" || true
100
set_debconf_value daemon Bytecode
101
set_debconf_value daemon BytecodeSecurity
102
set_debconf_value daemon BytecodeTimeout
109
db_input medium clamav-daemon/debconf || true
113
db_get clamav-daemon/debconf || true
114
if [ "$RET" = "false" ]; then
124
db_input medium clamav-daemon/TcpOrLocal || true
128
db_metaget clamav-daemon/TcpOrLocal value
133
StateLocalSocketGroup()
135
db_input low clamav-daemon/LocalSocketGroup || true
137
db_metaget clamav-daemon/LocalSocketGroup value
138
if [ "$RET" = "" ]; then
139
db_set clamav-daemon/LocalSocketGroup "clamav" || true
141
STATE="LocalSocketMode"
149
db_input medium clamav-daemon/ScanMail || true
153
db_metaget clamav-daemon/TcpOrLocal value
154
if [ "$RET" = "TCP" ]; then
164
db_input low clamav-daemon/ScanArchive || true
166
db_metaget clamav-daemon/ScanArchive value
167
if [ "$RET" = "true" ]; then
168
STATE="StreamMaxLength"
170
STATE="MaxDirectoryRecursion"
177
StateMaxDirectoryRecursion()
179
if inputdigit low clamav-daemon/MaxDirectoryRecursion; then
180
db_metaget clamav-daemon/MaxDirectoryRecursion value
181
if [ "$RET" = "0" ]; then
182
STATE="FollowDirectorySymlinks"
184
STATE="FollowFileSymlinks"
191
StateFollowFileSymlinks()
193
db_input low clamav-daemon/FollowFileSymlinks || true
197
db_metaget clamav-daemon/MaxDirectoryRecursion value;
198
if [ "$RET" = "0" ]; then
199
STATE="FollowDirectorySymlinks"
201
STATE="MaxDirectoryRecursion"
208
db_input low clamav-daemon/LogFile || true
210
db_metaget clamav-daemon/LogFile value
211
if [ "$RET" = "" ]; then
212
db_set clamav-daemon/LogFile "/var/log/clamav/clamav.log" || true
214
elif [ "$RET" = 'none' ]; then
215
db_set clamav-daemon/LogFile "" || true
227
db_input medium clamav-daemon/User || true
229
db_metaget clamav-daemon/User value
230
if [ "$RET" = "" ]; then
231
db_set clamav-daemon/User "clamav" || true
241
db_input low clamav-daemon/Bytecode || true
243
db_metaget clamav-daemon/Bytecode value
244
if [ "$RET" = "true" ]; then
245
STATE="BytecodeSecurity"
254
# Too many options to configure at configure.
255
if [ "$1" = "reconfigure" ]; then
257
elif [ -n "$2" ]; then
258
# On fresh installation, ask for the User clamav should use.
259
if [ -z "$User" ]; then
266
[ -z "$STATE" ] && STATE='End'
268
# This is the statemachine that controls execution. All the 'real' work is
269
# performed by subfunctions above.
271
while [ "$STATE" != "End" ]; do
280
StateGenericDigit low clamav-daemon/TCPSocket TCPAddr Socket
283
StateGeneric low clamav-daemon/TCPAddr ScanMail TCP
286
StateGeneric low clamav-daemon/LocalSocket LocalSocketGroup Socket
289
StateLocalSocketGroup
292
StateGenericDigit low clamav-daemon/LocalSocketMode FixStale LocalSocketGroup
295
StateGeneric low clamav-daemon/FixStaleSocket ScanMail LocalSocketMode
304
StateGenericDigit low clamav-daemon/StreamMaxLength MaxDirectoryRecursion ScanArchive
306
"MaxDirectoryRecursion")
307
StateMaxDirectoryRecursion
309
"FollowDirectorySymlinks")
310
StateGeneric low clamav-daemon/FollowDirectorySymlinks FollowFileSymlinks MaxDirectoryRecursion
312
"FollowFileSymlinks")
313
StateFollowFileSymlinks
316
StateGenericDigit low clamav-daemon/ReadTimeout MaxThreads FollowFileSymlinks
319
StateGenericDigit low clamav-daemon/MaxThreads MaxConnectionQueueLength ReadTimeout
321
"MaxConnectionQueueLength")
322
StateGenericDigit low clamav-daemon/MaxConnectionQueueLength LogSyslog MaxThreads
325
StateGeneric medium clamav-daemon/LogSyslog LogFile MaxConnectionQueueLength
331
StateGeneric low clamav-daemon/LogTime LogRotate LogFile
334
StateGeneric low clamav-daemon/LogRotate ScanOnAccess LogFile
337
StateGeneric low clamav-daemon/ScanOnAccess OnAccessMaxFileSize LogFile
339
"OnAccessMaxFileSize")
340
StateGeneric low clamav-daemon/OnAccessMaxFileSize AllowAllMatchScan ScanOnAccess
343
StateGeneric low clamav-daemon/AllowAllMatchScan ForceToDisk OnAccessMaxFileSize
346
StateGeneric low clamav-daemon/ForceToDisk DisableCertCheck AllowAllMatchScan
349
StateGeneric low clamav-daemon/DisableCertCheck ScanSWF ForceToDisk
352
StateGeneric low clamav-daemon/ScanSWF MaxEmbeddedPE DisableCertCheck
355
StateGeneric low clamav-daemon/MaxEmbeddedPE MaxHTMLNormalize ScanSWF
358
StateGeneric low clamav-daemon/MaxHTMLNormalize MaxHTMLNoTags MaxEmbeddedPE
361
StateGeneric low clamav-daemon/MaxHTMLNoTags MaxScriptNormalize MaxHTMLNormalize
363
"MaxScriptNormalize")
364
StateGeneric low clamav-daemon/MaxScriptNormalize MaxZipTypeRcg MaxHTMLNoTags
367
StateGeneric low clamav-daemon/MaxZipTypeRcg SelfCheck MaxScriptNormalize
370
StateGeneric low clamav-daemon/SelfCheck StatsEnabled MaxZipTypeRcg
373
StateGeneric low clamav-daemon/StatsEnabled StatsPEDisabled SelfCheck
376
StateGeneric low clamav-daemon/StatsPEDisabled StatsHostID StatsEnabled
379
StateGeneric low clamav-daemon/StatsHostID StatsTimeout StatsPEDisabled
382
StateGenericDigit low clamav-daemon/StatsTimeout User StatsHostID
388
StateGeneric medium clamav-daemon/AddGroups Bytecode User
394
StateGeneric low clamav-daemon/BytecodeSecurity BytecodeTimeout Bytecode
397
StateGenericDigit low clamav-daemon/BytecodeTimeout End BytecodeSecurity