forked from fmarier/user-scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdebian-security-filter
executable file
·45 lines (38 loc) · 1.16 KB
/
debian-security-filter
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
#!/usr/bin/perl
$headers_read = 0; # are we done reading the headers?
$buffer = 0; # should we keep on buffering everything ?
$msg = '';
while (<>) {
if (/^\s*$/ and !$headers_read) {
$buffer = 1;
$headers_read = 1;
} elsif (/^Package\s*:\s+([\w\-]+(,\s*[\w\-]+)*)\s*$/) {
@packages = split /,/, $1;
@package_versions = ();
foreach $package_name (@packages) {
$package_name =~ s/\s*([^\s]*)\s*/$1/g;
$dpkg_status = `dpkg -s $package_name 2> /dev/null`;
$installed_version = "none";
if ($dpkg_status =~ /^Version: ([^\s\n]+)$/m) {
$installed_version = $1;
}
if (@packages > 1) {
push @package_versions, "$package_name = $installed_version";
} else {
push @package_versions, "$installed_version";
}
}
$version_string = join ", ", @package_versions;
print "X-Installed-Version: $version_string\n";
print $msg;
$msg = '';
$buffer = 0;
}
if ($buffer) {
$msg .= $_;
} else {
print;
}
}
# flush buffer
print $msg;