1#!/bin/sh
2
3pkg_admin=@PKG_ADMIN@
4
5usage() {
6          echo 'Usage: audit-packages [-deqsVv] [-c config_file] [-F file]' >& $2
7          echo '                      [-g file] [-h file]' >& $2
8          echo '                      [-K pkg_dbdir] [-n package] [-p package]' >& $2
9          echo '                      [-Q varname] [-t type]' >& $2
10          echo "Please use the audit, audit-pkg, audit-batch and fetch-pkg-vulnerabilities" >& $2
11          echo "commands of pkg_admin instead." >& $2
12          exit $1
13}
14
15do_pkgdb=
16do_eol=
17do_fetch=
18do_quiet=
19do_sign=
20do_verbose=
21do_check_file=
22do_check_pattern=
23do_check_installed=
24do_check_vul_file=
25do_limit_type=
26do_print_var=
27
28args=`getopt F:K:Q:Vc:deg:h:n:p:qst:v $*`
29if [ $? -ne 0 ]; then
30          usage 1 2
31fi
32
33set -- $args
34
35while [ $# -gt 0 ]; do
36          case "$1" in
37          -F)
38                    do_check_file=$2
39                    shift
40                    ;;
41          -K)
42                    do_pkgdb="$1 $2"
43                    shift
44                    ;;
45          -Q)
46                    do_print_var="$2"
47                    shift
48                    ;;
49          -V)
50                    exec ${pkg_admin} -V
51                    ;;
52          -c)
53                    echo "The audit-packages wrapper does not support -c" >&2
54                    echo "Please use the audit, audit-pkg, audit-batch and fetch-pkg-vulnerabilities" >& 2
55                    echo "commands of pkg_admin instead." >& 2
56                    exit 1
57                    ;;
58          -d)
59                    do_fetch=1
60                    ;;
61          -e)
62                    do_eol=-e
63                    ;;
64          -g)
65                    echo "The audit-packages wrapper does not support -g" >&2
66                    echo "Please switch to \`\`pkg_admin fetch-pkg-vulnerabilities''." >&2
67                    exit 1
68                    ;;
69          -h)
70                    do_check_vul_file=$2
71                    shift
72                    ;;
73          -n)
74                    do_check_pattern=$2
75                    shift
76                    ;;
77          -p)
78                    do_check_installed=$2
79                    shift
80                    ;;
81          -q)
82                    do_quiet=-q
83                    ;;
84          -s)
85                    do_sign=-s
86                    ;;
87          -t)
88                    do_limit_type="-t $2"
89                    shift
90                    ;;
91          -v)
92                    do_verbose="$do_verbose -v"
93                    ;;
94          esac
95          shift
96done
97
98if [ -n "${do_fetch}" ]; then
99          exec ${pkg_admin} ${do_pkgdb} fetch-pkg-vulnerabilities ${do_sign}
100fi
101
102if [ -n "${do_check_vul_file}" ]; then
103          exec ${pkg_admin} ${do_pkgdb} check-pkg-vulnerabilities ${do_sign} "${do_check_vul_file}"
104fi
105
106if [ -n "${do_print_var}" ]; then
107          exec ${pkg_admin} ${do_pkgdb} config-var "${do_print_var}"
108fi
109
110if [ -n "${do_check_file}" ]; then
111          if [ -n "${do_check_pattern}" -o -n "${do_check_installed}" ]; then
112                    echo "Only one of -F, -n or -p is interpreted at a time." >& 2
113                    usage 1 2
114          fi
115          exec ${pkg_admin} ${do_pkgdb} ${do_verbose} ${do_quiet} audit-pkg \
116              ${do_eol} ${do_limit_type} ${do_check_file}
117fi
118
119if [ -n "${do_check_pattern}" ]; then
120          if [ -n "${do_check_installed}" ]; then
121                    echo "Only one of -F, -n or -p is interpreted at a time." >& 2
122                    usage 1 2
123          fi
124          exec ${pkg_admin} ${do_pkgdb} ${do_verbose} ${do_quiet} audit-pkg \
125              ${do_eol} ${do_limit_type} ${do_check_pattern}
126fi
127
128# If do_check_installed is empty, all packages are checked.
129exec ${pkg_admin} ${do_pkgdb} ${do_verbose} ${do_quiet} audit \
130    ${do_eol} ${do_limit_type} ${do_check_installed}
131