mirror of https://github.com/Cisco-Talos/clamav
parent
1e5deac08d
commit
b5dc9f933e
@ -0,0 +1,164 @@ |
||||
#!/usr/bin/perl |
||||
|
||||
use strict; |
||||
use warnings; |
||||
|
||||
use Getopt::Long qw(:config gnu_getopt); |
||||
|
||||
sub wwarn { |
||||
my $w = shift; |
||||
warn "WARINING: $w"; |
||||
} |
||||
|
||||
my $notify = 0; |
||||
my $black = 0; |
||||
my $report = 0; |
||||
my $debug = 0; |
||||
my $sign = 0; |
||||
my $broad = 0; |
||||
my $forge = 0; |
||||
my $sanity = 1; |
||||
my $blackhole = 0; |
||||
my $quarantine = 0; |
||||
my $rate = 0; |
||||
my $monitor = 0; |
||||
my $oninfected = 'Reject'; |
||||
my $onfail = 'Defer'; |
||||
my @localnets = (); |
||||
my $whitelist; |
||||
my $config = ''; |
||||
my $chroot = ''; |
||||
my $pidfile = ''; |
||||
my $addheader = 1; |
||||
my $tcpclamds = ''; |
||||
my $localclamd; |
||||
|
||||
GetOptions ( |
||||
"from|a:s" => \$notify, |
||||
"bounce|b" => \$notify, |
||||
"headers|H" => \$notify, |
||||
"postmaster|p=s" => \$notify, |
||||
"postmaster-only|P" => \$notify, |
||||
"template-file|t=s" => \$notify, |
||||
"template-headers|1=s" => \$notify, |
||||
"quiet|q" => sub { $notify = 0 }, |
||||
"dont-blacklist|K=s" => \$black, |
||||
"blacklist-time|k=i" => \$black, |
||||
"report-phish|r=s" => \$report, |
||||
"report-phish-false-positives|R=s" => \$report, |
||||
"debug-level|x=i" => \$debug, |
||||
"debug|D" => \$debug, |
||||
"sign|S" => \$sign, |
||||
"signature-file|F=s" => \$sign, |
||||
"broadcast|B" => \$broad, |
||||
"detect-forged-local-address|L" => \$forge, |
||||
"dont-sanitise|z" => sub { $sanity = 0 }, |
||||
"black-hole-mode|2" => \$blackhole, |
||||
"quarantine|Q=s" => \$quarantine, |
||||
"quarantine-dir|U" => \$quarantine, |
||||
"max-children|m=i" => \$rate, |
||||
"dont-wait|w" => \$rate, |
||||
"timeout|T=i" => \$rate, |
||||
"freshclam-monitor|M=i" => \$monitor, |
||||
"external|e" => sub { }, |
||||
"no-check-cf" => sub { }, |
||||
"sendmail-cf|0=s" => sub { }, |
||||
"advisory|A" => sub { $oninfected='Accept'; }, |
||||
"noreject|N" => sub { $oninfected='Blackhole'; }, |
||||
"dont-scan-on-error|d" => sub { $onfail = 'Accept'; }, |
||||
"ignore|I=s" => \@localnets, |
||||
"local|l" => sub { @localnets = (); }, |
||||
"force-scan|f" => sub { @localnets = (); }, |
||||
"whitelist-file|W=s" => \$whitelist, |
||||
"config-file|c=s" => \$config, |
||||
"chroot|C=s" => \$chroot, |
||||
"pidfile|i=s" => \$pidfile, |
||||
"noxheader|n" => sub { $addheader = 0}, |
||||
"outgoing|o" => sub { push(@localnets, 'localhost'); }, |
||||
"server|s=s" => \$tcpclamds, |
||||
) or die "huh?!"; |
||||
|
||||
my %clamds = (); |
||||
foreach (split(/:/, $tcpclamds)) { |
||||
$clamds{"tcp:$_:3310"}++; |
||||
} |
||||
|
||||
if ($config) { |
||||
my $port = 0; |
||||
my $ip = ''; |
||||
my $lsock = ''; |
||||
open CFG, "<$chroot/$config" or die "failed to open clamd config file $config"; |
||||
while (<CFG>) { |
||||
chomp; |
||||
$port = $1 if /^TCPSocket\s+(.*)$/; |
||||
$ip = $1 if /^TCPAddr\s+(.*)$/; |
||||
$lsock = $1 if /^LocalSocket\s+(.*)$/; |
||||
} |
||||
close(CFG); |
||||
if ($lsock) { |
||||
$clamds{"unix:$lsock"}++; |
||||
} elsif ($port) { |
||||
if($ip) { |
||||
$clamds{"tcp:$ip:$port"}++; |
||||
} else { |
||||
$clamds{"tcp:localhost:$port"}++; |
||||
} |
||||
} |
||||
} |
||||
|
||||
die "FAIL: Unable to determine clamd socket\n" unless scalar keys %clamds; |
||||
|
||||
wwarn "Notifications and bounces are no longer supported. |
||||
As a result the following command line options cannot be converted into new config options: |
||||
--from (-a) |
||||
--bounce (-b) |
||||
--headers (-H) |
||||
--postmaster (-p) |
||||
--postmaster-only (-P) |
||||
--template-file (-t) |
||||
--template-headers (-1) |
||||
" if $notify; |
||||
|
||||
wwarn "Temporary blacklisting of ip addresses is no longer supported. |
||||
As a result the following command line options cannot be converted into new config options: |
||||
--dont-blacklist (-K) |
||||
--blacklist-time (-k) |
||||
" if $black; |
||||
|
||||
wwarn "Phising reports are no longer supported. |
||||
As a result the following command line options cannot be converted into new config options: |
||||
--report-phish (-r) |
||||
--report-phish-false-positives (-R) |
||||
" if $report; |
||||
|
||||
wwarn "The options --debug (-D) and --debug-level (-x) are no longer supported. |
||||
Please set LogVerbose to yes instead |
||||
" if $debug; |
||||
|
||||
wwarn "Message scan signatures are no longer supported. |
||||
As a result the following command line options cannot be converted into new config options: |
||||
--sign (-S) |
||||
--signature-file (-F) |
||||
" if $sign; |
||||
|
||||
wwarn "Broadcasting is no longer supported\n" if $broad; |
||||
|
||||
wwarn "Forgery detection is no longer supported\n" if $forge; |
||||
|
||||
wwarn "Please be aware that email addresses are no longer checked for weird characters like '|' and ';'\n" if $sanity; |
||||
|
||||
wwarn "Blackhole mode is no longer available\nIf you have a lot users aliased to /dev/null you may want to whitelist them instead\n" if $blackhole; |
||||
|
||||
wwarn "Quarantine now achieved via native milter support\nPlease read more about it in the example config file\n" if $quarantine; |
||||
|
||||
wwarn "Rate limiting in the milter is no longer supported. |
||||
As a result the following command line options cannot be converted into new config options: |
||||
--max-children (-m) |
||||
--dont-wait (-w) |
||||
--timeout (-T) |
||||
|
||||
Please make use of the native Sendmail / Postfix rate limiting facilities |
||||
" if $rate; |
||||
|
||||
wwarn "The option --freshclam-monitor (-M) only made sense in internal mode\nPlease configure freshclam to notify clamd about updates instead\n" if $monitor; |
||||
|
Loading…
Reference in new issue