php IHDR w Q )Ba pHYs sRGB gAMA a IDATxMk\U s&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨ G;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j- $_q?qS XzG'ay
files >> /usr/libexec/webmin/virtual-server/ |
files >> //usr/libexec/webmin/virtual-server/clam-wrapper.pl |
#!/usr/bin/perl # Runs clamdscan, and exits with 1 if the program reports a virus was found # or 0 if not was found or some error happened $prog = join(" ", map { quotemeta($_) } @ARGV); $temp = "/tmp/clamwrapper.$$"; unlink($temp); # Check if we are using the streaming client, which has slightly different # semantics $stream_client = $ARGV[0] =~ /clamd-stream-client/ ? 1 : 0; $fullprog = $prog; if (!$stream_client) { $fullprog .= " -"; } # Feel email to clamscan $SIG{'PIPE'} = 'ignore'; $clampid = open(INPUT, "|$fullprog >$temp"); while(read(STDIN, $buf, 1024) > 0) { print INPUT $buf; } # Wait at most 30 seconds for a response $timed_out = 0; $SIG{'ALRM'} = sub { $timed_out++ }; alarm(30); close(INPUT); alarm(0); if ($timed_out) { print STDERR "Virus scanner failed to response within 30 seconds\n"; kill('KILL', $clampid); unlink($temp); exit(0); } # Read back status from clamscan, and exit non-zero if a virus was found open(OUTPUT, $temp); while(<OUTPUT>) { $out .= $_; } close(OUTPUT); unlink($temp); if ($stream_client && $out =~ /\S/) { # Using clamd-stream-client - output contains a virus name if found exit(1); } elsif (!$stream_client && $out =~ /FOUND/) { # Using clamscan or clamdscan - output contains FOUND if a virus # was detected exit(1); } else { exit(0); }y~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`