File: css-autoupdate

package info (click to toggle)
mailscanner 4.79.11-2.2
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 5,820 kB
  • ctags: 1,309
  • sloc: perl: 25,655; sh: 2,666; xml: 624; makefile: 242
file content (69 lines) | stat: -rwxr-xr-x 1,399 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/usr/bin/perl

use Sys::Syslog;

$CSSDir = shift || "/opt/SYMCScan";
$CSSUpdateCommand="$CSSDir/bin/liveupdate.sh";

$LockFile = shift || "/var/spool/MailScanner/incoming/Locks/cssBusy.lock";

$LOCK_SH = 1;
$LOCK_EX = 2;
$LOCK_NB = 4;
$LOCK_UN = 8;

eval { Sys::Syslog::setlogsock('unix'); }; # This may fail!
Sys::Syslog::openlog("css-autoupdate", 'pid, nowait', 'mail');

BailOut("Installation dir \"$CSSDir/bin\" does not exist!")
  unless $CSSDir ne "" && -d "$CSSDir/bin";

if (-x $CSSUpdateCommand) {
  # Timeout prevention
  $SIG{ALRM} = sub { die "timeout"};

  &LockCSS();
  eval {
    alarm 300;
    $retval=system($CSSUpdateCommand)>>8;
    &UnlockCSS();
    alarm 0;
  };

  if ($@) {
    if ($@ =~ /timeout/) {
      # We timed out!
      &UnlockCSS();
      alarm 0;
      Sys::Syslog::syslog('err', "WARNING: CSS LiveUpdate timed out");
    }
  } else {
    alarm 0;
    Sys::Syslog::syslog('info', "CSS LiveUpdate Completed");
  }
} else {
  Sys::Syslog::syslog('err', "CSS updater $CSSUpdateCommand cannot be run");
}

exit 0;

sub BailOut {
	Sys::Syslog::syslog('err', @_);
	Sys::Syslog::closelog();
	warn "@_, $!";
	exit 1;
}

sub LockCSS {
	open(LOCK, ">$LockFile") or return;
	flock(LOCK, $LOCK_EX);
	print LOCK "Locked for updating CSS patterns by $$\n";
}

sub UnlockCSS {
	print LOCK "Unlocked after updating CSS patterns by $$\n";
	flock(LOCK, $LOCK_UN);
	close LOCK;
}