| 1 |
# Sample clamav-update.conf |
| 2 |
# In the default, put this file to /usr/local/clamXav/etc/ . |
| 3 |
# If you want to use the other file, issue clamav-update.pl with --config |
| 4 |
# option. |
| 5 |
# ex) clamav-update.pl --config /etc/clamav-update.conf |
| 6 |
|
| 7 |
# $Id: clamav-update.conf,v 1.4 2006/11/30 18:57:54 okamura Exp $ |
| 8 |
|
| 9 |
#### Logging #### |
| 10 |
# log destination |
| 11 |
# GLOB destinations |
| 12 |
# \*STDOUT - standerd output |
| 13 |
# \*STDERR - standerd error output |
| 14 |
# Syslog destinations |
| 15 |
# 'unix' - unix domain socket |
| 16 |
# ['stream', 'FILE_PATH'] - the file of which path name is FILE_PATH |
| 17 |
# 'inet' - INET socket (either tcp or udp, tried in that order) returned by getservbyname() |
| 18 |
# 'tcp' - tcp socket returned by getservbyname() |
| 19 |
# 'udp' - udp socket returned by getservbyname() |
| 20 |
# 'console' - console |
| 21 |
#$Setting{logging}->{setlogsock} = \*STDERR; |
| 22 |
|
| 23 |
# log level |
| 24 |
# 'emerg' - A panic condition. |
| 25 |
# 'alert' - A condition that should be corrected immediately. |
| 26 |
# 'crit' - Critical conditions. |
| 27 |
# 'err' - Errors. |
| 28 |
# 'warning' - Warning messages. |
| 29 |
# 'notice' - Conditions that are not error conditions, but should possibly be |
| 30 |
# handled specially. |
| 31 |
# 'info' - Informational messages. |
| 32 |
# 'debug' - Messages that contain information normally of use only when |
| 33 |
# debugging a program. |
| 34 |
#$Setting{logging}->{setlogmask} = 'warning'; |
| 35 |
|
| 36 |
# log identity (only syslog) |
| 37 |
# 'NAME' - NAME is prepended to every message. |
| 38 |
#$Setting{logging}->{openlog}->{ident} = 'clamav-update'; |
| 39 |
|
| 40 |
# log options (only syslog) |
| 41 |
# ['OPTION1', 'OPTION2' ...] or [qw(OPTION1 OPTION2 ...)] |
| 42 |
# ndelay - Open the connection to syslogd(8) immediately. |
| 43 |
# perror - Write the message to standard error output as well to the system log. |
| 44 |
# pid - Log the process id with each message. |
| 45 |
#$Setting{logging}->{openlog}->{logopt} = [qw()]; |
| 46 |
|
| 47 |
# log facility (only syslog) |
| 48 |
# 'console' - Messages written to /dev/console by the kernel console output |
| 49 |
# driver. |
| 50 |
# 'daemon' - System daemons, such as routed(8), that are not provided for |
| 51 |
# explicitly by other facilities. |
| 52 |
# 'mail' - The mail system. |
| 53 |
# 'news' - The network news system. |
| 54 |
# 'user' - Messages generated by random user processes. |
| 55 |
# 'local1' - for other purpose. |
| 56 |
# 'local2' - for other purpose. |
| 57 |
# 'local3' - for other purpose. |
| 58 |
# 'local4' - for other purpose. |
| 59 |
# 'local5' - for other purpose. |
| 60 |
# 'local6' - for other purpose. |
| 61 |
# 'local7' - for other purpose. |
| 62 |
#$Setting{logging}->{openlog}->{facility} = 'local6'; |
| 63 |
|
| 64 |
|
| 65 |
#### Environment Variables #### |
| 66 |
# $Setting{environment}->{VARNAME} = 'VALUE'; |
| 67 |
#$Setting{environment}->{PATH} = '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/clamXav/bin'; |
| 68 |
|
| 69 |
|
| 70 |
#### Getting Version Method #### |
| 71 |
# latest version |
| 72 |
# command to get |
| 73 |
#$Setting{version}->{latest}->{command} = 'host -t txt current.cvd.clamav.net'; |
| 74 |
|
| 75 |
# the regular expression that is applied to command output |
| 76 |
#$Setting{version}->{latest}->{regexp} = qr/"(\d+(?:\.\d+)*):\d+:\d+:\d+:[^"]*"\s*$/; |
| 77 |
|
| 78 |
# current version |
| 79 |
# command to get |
| 80 |
#$Setting{version}->{current}->{command} = 'clamav-config --version'; |
| 81 |
|
| 82 |
# the regular expression that is applied to command output |
| 83 |
#$Setting{version}->{current}->{regexp} = qr/^(\d+(?:\.\d+)*)\s*$/; |
| 84 |
|
| 85 |
# version number compare method |
| 86 |
#$Setting{version}->{compare} = sub { |
| 87 |
# my ($a, $b) = @_; |
| 88 |
# my @a = reverse(split(/\./, $a)); |
| 89 |
# my @b = reverse(split(/\./, $b)); |
| 90 |
# |
| 91 |
# while (0 < scalar(@a) and 0 < scalar(@b)) { |
| 92 |
# $a = pop @a; |
| 93 |
# $b = pop @b; |
| 94 |
# return -1 if ($a < $b); |
| 95 |
# return 1 if ($a > $b); |
| 96 |
# } |
| 97 |
# return 1 if (0 < scalar(@a)); |
| 98 |
# return -1 if (0 < scalar(@b)); |
| 99 |
# return 0; |
| 100 |
#}; |
| 101 |
|
| 102 |
|
| 103 |
#### Update Phases Sepcification #### |
| 104 |
# phases sequence |
| 105 |
#$Setting{phase}->{sequence} = [qw(download extract build install postInstall clean)]; |
| 106 |
|
| 107 |
# clean phase specification |
| 108 |
#$Setting{phase}->{clean} = 'clean'; |
| 109 |
|
| 110 |
|
| 111 |
|
| 112 |
#### Download Phase Specification #### |
| 113 |
# download from |
| 114 |
# 'http://jaist.dl.sourceforge.net/sourceforge/clamav' - Asia: Ishikawa, Japan |
| 115 |
# 'http://nchc.dl.sourceforge.net/sourceforge/clamav' - Asia: Tainan, Taiwan |
| 116 |
# 'http://optusnet.dl.sourceforge.net/sourceforge/clamav' - Australia: Sydney, Australia |
| 117 |
# 'http://surfnet.dl.sourceforge.net/sourceforge/clamav' - Europe: Amsterdam, The Netherlands |
| 118 |
# 'http://belnet.dl.sourceforge.net/sourceforge/clamav' - Europe: Brussels, Belgium |
| 119 |
# 'http://heanet.dl.sourceforge.net/sourceforge/clamav' - Europe: Dublin, Ireland |
| 120 |
# 'http://mesh.dl.sourceforge.net/sourceforge/clamav' - Europe: Duesseldorf, Germany |
| 121 |
# 'http://kent.dl.sourceforge.net/sourceforge/clamav' - Europe: Kent, UK |
| 122 |
# 'http://switch.dl.sourceforge.net/sourceforge/clamav' - Europe: Lausanne, Switzerland |
| 123 |
# 'http://ovh.dl.sourceforge.net/sourceforge/clamav' - Europe: Paris, France |
| 124 |
# 'http://superb-east.dl.sourceforge.net/sourceforge/clamav' - North America: McLean, Virginia |
| 125 |
# 'http://umn.dl.sourceforge.net/sourceforge/clamav' - North America: Minneapolis, MN |
| 126 |
# 'http://easynews.dl.sourceforge.net/sourceforge/clamav' - North America: Phoenix, AZ |
| 127 |
# 'http://superb-west.dl.sourceforge.net/sourceforge/clamav' - North America: Seattle, Washington |
| 128 |
# 'http://ufpr.dl.sourceforge.net/sourceforge/clamav' - South America: Curitiba, Brazil |
| 129 |
#$Setting{download}->{srcBase} = 'http://jaist.dl.sourceforge.net/sourceforge/clamav'; |
| 130 |
|
| 131 |
# save direcotry |
| 132 |
#$Setting{download}->{dstBase} = '/tmp'; |
| 133 |
|
| 134 |
# package name |
| 135 |
#$Setting{download}->{name} = 'clamav'; |
| 136 |
|
| 137 |
# package file extension |
| 138 |
#$Setting{download}->{ext} = 'tar.gz'; |
| 139 |
|
| 140 |
# common |
| 141 |
# working directory |
| 142 |
#$Setting{download}->{workdir} = undef; |
| 143 |
|
| 144 |
# phase commands sequence |
| 145 |
#$Setting{download}->{sequence} = [ |
| 146 |
# sub { |
| 147 |
# my ($latestVersion, $currentVersion) = @_; |
| 148 |
# my $fname = sprintf( |
| 149 |
# '%s-%s.%s', |
| 150 |
# $Setting{download}->{name}, |
| 151 |
# $latestVersion, |
| 152 |
# $Setting{download}->{ext}, |
| 153 |
# ); |
| 154 |
# my $src = sprintf( |
| 155 |
# '%s/%s', $Setting{download}->{srcBase}, $fname |
| 156 |
# ); |
| 157 |
# my $dst = sprintf( |
| 158 |
# '%s/%s', $Setting{download}->{dstBase}, $fname |
| 159 |
# ); |
| 160 |
# |
| 161 |
# if (-f $dst) { |
| 162 |
# Log 'notice', 'already exists: %s', $dst; |
| 163 |
# 1; |
| 164 |
# } |
| 165 |
# else { |
| 166 |
# DoCommand('curl', '--silent', '-o', $dst, $src); |
| 167 |
# } |
| 168 |
# }, |
| 169 |
#]; |
| 170 |
|
| 171 |
|
| 172 |
#### Extract Phase Specification #### |
| 173 |
# common |
| 174 |
# working directory |
| 175 |
#$Setting{extract}->{workdir} = undef; |
| 176 |
|
| 177 |
# phase commands sequence |
| 178 |
#$Setting{extract}->{sequence} = [ |
| 179 |
# sub { |
| 180 |
# my ($latestVersion, $currentVersion) = @_; |
| 181 |
# my @cmd = ( |
| 182 |
# 'tar', 'xzf', |
| 183 |
# sprintf( |
| 184 |
# '%s/%s-%s.%s', |
| 185 |
# $Setting{download}->{dstBase}, |
| 186 |
# $Setting{download}->{name}, |
| 187 |
# $latestVersion, |
| 188 |
# $Setting{download}->{ext}, |
| 189 |
# ), |
| 190 |
# '-C', $Setting{download}->{dstBase} |
| 191 |
# ); |
| 192 |
# |
| 193 |
# DoCommand(@cmd); |
| 194 |
# }, |
| 195 |
#]; |
| 196 |
|
| 197 |
|
| 198 |
#### Build Phase Specification #### |
| 199 |
# common |
| 200 |
# working directory |
| 201 |
#$Setting{build}->{workdir} = sub { |
| 202 |
# my ($latestVersion, $currentVersion) = @_; |
| 203 |
# |
| 204 |
# sprintf('%s/%s-%s', |
| 205 |
# $Setting{download}->{dstBase}, $Setting{download}->{name}, |
| 206 |
# $latestVersion |
| 207 |
# ); |
| 208 |
#}; |
| 209 |
|
| 210 |
# phase commands sequence |
| 211 |
#$Setting{build}->{sequence} = [ |
| 212 |
# [qw(./configure --prefix=/usr/local/clamXav)], |
| 213 |
# [qw(make)], |
| 214 |
#]; |
| 215 |
|
| 216 |
|
| 217 |
#### Install Phase Specification #### |
| 218 |
# common |
| 219 |
# working directory |
| 220 |
#$Setting{install}->{workdir} = sub { |
| 221 |
# my ($latestVersion, $currentVersion) = @_; |
| 222 |
# |
| 223 |
# sprintf('%s/%s-%s', |
| 224 |
# $Setting{download}->{dstBase}, $Setting{download}->{name}, |
| 225 |
# $latestVersion |
| 226 |
# ); |
| 227 |
#}; |
| 228 |
|
| 229 |
# phase commands sequence |
| 230 |
#$Setting{install}->{sequence} = [ |
| 231 |
# [qw(make install)], |
| 232 |
# [qw(chown -R root:admin /usr/local/clamXav)], |
| 233 |
# [qw(chmod 664 /usr/local/clamXav/etc/freshclam.conf)], |
| 234 |
# [qw(chown clamav /usr/local/clamXav/bin/freshclam)], |
| 235 |
# [qw(chmod u+s /usr/local/clamXav/bin/freshclam)], |
| 236 |
# [qw(touch /usr/local/clamXav/share/clamav/freshclam.log)], |
| 237 |
# [qw(chmod 664 /usr/local/clamXav/share/clamav/freshclam.log)], |
| 238 |
# [qw(chown -R clamav:clamav /usr/local/clamXav/share/clamav)], |
| 239 |
# [qw(chmod -R ug+w /usr/local/clamXav/share/clamav)], |
| 240 |
#]; |
| 241 |
|
| 242 |
|
| 243 |
#### Post-Install Phase Specification #### |
| 244 |
# common |
| 245 |
# working directory |
| 246 |
#$Setting{postInstall}->{workdir} = undef; |
| 247 |
|
| 248 |
# phase commands sequence |
| 249 |
#$Setting{postInstall}->{sequence} = [ |
| 250 |
#]; |
| 251 |
|
| 252 |
# using clamd (sample) |
| 253 |
#push @{$Setting{postInstall}->{sequence}}, |
| 254 |
# [qw(/Library/StartupItems/ClamAntiVirusDaemon/ClamAntiVirusDaemon restart)]; |
| 255 |
|
| 256 |
# using freshclam as a daemon (sample) |
| 257 |
#push @{$Setting{postInstall}->{sequence}}, |
| 258 |
# [qw(chown root /usr/local/clamXav/bin/freshclam)], |
| 259 |
# [qw(chmod u-s /usr/local/clamXav/bin/freshclam)], |
| 260 |
# [qw(/Library/StartupItems/FreshClamDaemon/FreshClamDaemon restart)]; |
| 261 |
|
| 262 |
|
| 263 |
#### Clean Phase Specification #### |
| 264 |
# common |
| 265 |
# working directory |
| 266 |
#$Setting{clean}->{workdir} = undef; |
| 267 |
|
| 268 |
# phase commands sequence |
| 269 |
#$Setting{clean}->{sequence} = [ |
| 270 |
# sub { |
| 271 |
# my ($latestVersion, $currentVersion) = @_; |
| 272 |
# my $dir = sprintf( |
| 273 |
# '%s/%s-%s', |
| 274 |
# $Setting{download}->{dstBase}, |
| 275 |
# $Setting{download}->{name}, |
| 276 |
# $latestVersion, |
| 277 |
# ); |
| 278 |
# my @cmd = ( |
| 279 |
# 'rm', '-rf', $dir, |
| 280 |
# sprintf('%s.%s', $dir, $Setting{download}->{ext}) |
| 281 |
# ); |
| 282 |
# |
| 283 |
# DoCommand(@cmd); |
| 284 |
# }, |
| 285 |
#]; |
| 286 |
|
| 287 |
|
| 288 |
#### DO NOT EDIT #### |
| 289 |
1; |