aboutsummaryrefslogtreecommitdiff
path: root/ports-mgmt/portaudit/files/portaudit.functions
diff options
context:
space:
mode:
Diffstat (limited to 'ports-mgmt/portaudit/files/portaudit.functions')
-rw-r--r--ports-mgmt/portaudit/files/portaudit.functions263
1 files changed, 0 insertions, 263 deletions
diff --git a/ports-mgmt/portaudit/files/portaudit.functions b/ports-mgmt/portaudit/files/portaudit.functions
deleted file mode 100644
index 9475bfeaf805..000000000000
--- a/ports-mgmt/portaudit/files/portaudit.functions
+++ /dev/null
@@ -1,263 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2004 Oliver Eikemeier. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# 1. Redistributions of source code must retain the above copyright notice
-# this list of conditions and the following disclaimer.
-#
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# 3. Neither the name of the author nor the names of its contributors may be
-# used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# $FreeBSD$
-#
-
-portaudit_confs()
-{
- portaudit_dir=${portaudit_dir:-"%%DATABASEDIR%%"}
- portaudit_filename=${portaudit_filename:-"auditfile.tbz"}
-
- FETCH_ENV=${FETCH_ENV:-}
- FETCH_CMD=${FETCH_CMD:-"/usr/bin/fetch -1m"}
- FETCH_BEFORE_ARGS=${FETCH_BEFORE_ARGS:-"-p"}
- FETCH_AFTER_ARGS=${FETCH_AFTER_ARGS:-}
-
- MASTER_SITES=${MASTER_SITES:-"
- ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/local-distfiles/%SUBDIR%/
- ftp://ftp.se.FreeBSD.org/pub/FreeBSD/ports/local-distfiles/%SUBDIR%/
- ftp://ftp.dk.FreeBSD.org/pub/FreeBSD/ports/local-distfiles/%SUBDIR%/
- ftp://ftp.cz.FreeBSD.org/pub/FreeBSD/ports/local-distfiles/%SUBDIR%/
- ftp://ftp1.ro.FreeBSD.org/pub/FreeBSD/ports/local-distfiles/%SUBDIR%/
- ftp://ftp.uk.FreeBSD.org/pub/FreeBSD/ports/local-distfiles/%SUBDIR%/
- ftp://ftp.at.FreeBSD.org/pub/FreeBSD/ports/local-distfiles/%SUBDIR%/
- ftp://ftp.jp.FreeBSD.org/pub/FreeBSD/ports/local-distfiles/%SUBDIR%/
- ftp://ftp.tw.FreeBSD.org/pub/FreeBSD/ports/local-distfiles/%SUBDIR%/
- http://public.planetmirror.com/pub/FreeBSD/ports/local-distfiles/%SUBDIR%/
- "}
- MASTER_SITE_SUBDIR=${MASTER_SITE_SUBDIR:-"eik"}
-
- MASTER_SITE_BACKUP=${MASTER_SITE_BACKUP:-"http://people.freebsd.org/~eik/portaudit/"}
-
- #MASTER_SORT_REGEX="\.uk[.\/]"
- MASTER_SORT_REGEX=${MASTER_SORT_REGEX:-"#"}
-
- if [ -r %%PREFIX%%/etc/portaudit.conf ]; then
- . %%PREFIX%%/etc/portaudit.conf
- fi
-}
-
-extract_auditfile()
-{
- %%BZIP2_CMD%% -dc -- "${portaudit_dir}/${portaudit_filename}" | \
- /usr/bin/tar -xOf - auditfile
-}
-
-checksum_auditfile()
-{
- chksum1=`extract_auditfile |
- /usr/bin/sed -nEe '$s/^#CHECKSUM: *MD5 *([0-9a-f]{32})$/\1/p'`
- chksum2=`extract_auditfile | /usr/bin/sed -e '$d' | /sbin/md5`
- [ "${chksum1}" = "${chksum2}" ];
-}
-
-getcreated_auditfile()
-{
- extract_auditfile |
- /usr/bin/sed -nEe '1s/^#CREATED: *([0-9]{4})-?([0-9]{2})-?([0-9]{2}) *([0-9]{2}):?([0-9]{2}):?([0-9]{2}).*$/\1-\2-\3 \4:\5:\6/p'
-}
-
-gettimestamp_auditfile()
-{
- extract_auditfile |
- /usr/bin/sed -nEe '1s/^#CREATED: *([0-9]{4})-?([0-9]{2})-?([0-9]{2}).*$/\1\2\3/p'
-}
-
-checkexpiry_auditfile()
-{
- created=`gettimestamp_auditfile`
- expiry=`/bin/date -u -v-$1d '+%Y%m%d'`
- [ "${created}" -ge "${expiry}" ];
-}
-
-portaudit_prerequisites()
-{
- if [ -z "${PKG_INFO}" ]; then
- if [ -x "%%LOCALBASE%%/sbin/pkg_info" ]; then
- PKG_INFO="%%LOCALBASE%%/sbin/pkg_info"
- else
- PKG_INFO="/usr/sbin/pkg_info"
- fi
- fi
-
- PKG_VERSION="${PKG_INFO%/*}/pkg_version"
-
- if [ ! -x "${PKG_INFO}" ]; then
- echo "${PKG_INFO} missing, please install port sysutils/pkg_install-devel"
- return 1
- fi
-
- PKG_INSTALL_VER=`${PKG_INFO} -qP 2>/dev/null`
- if [ -z "${PKG_INSTALL_VER}" -o "${PKG_INSTALL_VER}" -lt 20040125 ]; then
- echo "${PKG_INFO} is too old, please update port sysutils/pkg_install-devel"
- return 1
- fi
-
- if [ ! -r "${portaudit_dir}/${portaudit_filename}" ]; then
- echo "portaudit: database missing, run \`portaudit -F' to update."
- return 1
- fi
- if ! checksum_auditfile; then
- echo "portaudit: corrupt database."
- return 1
- fi
- if ! checkexpiry_auditfile 14; then
- echo "portaudit: database too old."
- return 1
- fi
-
- return 0
-}
-
-audit_installed()
-{
- extract_auditfile | /usr/bin/awk -F\| "
- BEGIN { vul=0 }
- /^(#|\$)/ { next }
- {
- cmd=\"${PKG_INFO} -E \\\"\" \$1 \"\\\"\"
- while((cmd | getline pkg) > 0) {
- vul++
- print \"Affected package: \" pkg \"\\n\" \
- \"Type of problem: \" \$3 \".\\n\" \
- \"Reference: <\" \$2 \">\\n\"
- }
- close(cmd)
- }
- END {
- print vul \" problem(s) in your installed packages found.\"
- if (vul > 0) {
- print \"\nYou are advised to update or deinstall\" \
- \" the affected package(s) immediately.\"
- exit(1)
- }
- }
- "
-}
-
-audit_cwd()
-{
- if [ ! -r "Makefile" ]; then
- return 1
- fi
-
- PKGSTATE=`/usr/bin/make -VPKGNAME -VFORBIDDEN -VPKGORIGIN 2>/dev/null || true"`
- PKGNAME=`echo "${PKGSTATE}" | /usr/bin/sed -ne '1p'`
- FORBIDDEN=`echo "${PKGSTATE}" | /usr/bin/sed -ne '2p'`
- PKGORIGIN=`echo "${PKGSTATE}" | /usr/bin/sed -ne '3p'`
-
- VLIST=`extract_auditfile | /usr/bin/awk -F\| " \
- /^[^#]/ { \
- if (!system(\"${PKG_VERSION} -T '${PKGNAME}' '\" \\$1 \"'\")) \
- print \"- <\" \\$2 \">\" \
- } \
- "`
-
- if [ -n "${VLIST}" -a -z "${FORBIDDEN}" ]; then
- echo
- echo "Port ${PKGNAME} (${PKGORIGIN}) should be marked FORBIDDEN:"
- echo "${VLIST}"
- VULCNT=$((${VULCNT}+1))
- elif $opt_verbose && [ -n "${VLIST}" ]; then
- echo
- echo "Good: port ${PKGNAME} (${PKGORIGIN}) is marked FORBIDDEN: ${FORBIDDEN}"
- echo "${VLIST}"
- fi
-}
-
-fetch_locations()
-{
- # site sort order is not overly smart
- echo ${MASTER_SITES} | /usr/bin/tr -s ' \t' '\n' | /usr/bin/awk "
- BEGIN { IGNORECASE=1; srand() }
- /^$/ { next }
- {
- if (\$0 ~ /${MASTER_SORT_REGEX}/ ) rank=0; else rank=rand()
- gsub(/%SUBDIR%/, \"${MASTER_SITE_SUBDIR}\")
- print \$0 \"\\t\" rank
- }
- " | /usr/bin/sort -n -k 2 | /usr/bin/cut -f 1
- if [ -n "${MASTER_SITE_BACKUP}" ]; then
- echo "${MASTER_SITE_BACKUP}"
- fi
-}
-
-fetch_auditfile()
-{
- rc=1
-
- if [ ! -d "${portaudit_dir}" ]; then
- if ! /bin/mkdir -p "${portaudit_dir}"; then
- echo "Couldn't create ${portaudit_dir}, try running portaudit -F as root"
- return 1
- fi
- fi
- if [ ! -w "${portaudit_dir}" ]; then
- echo "Couldn't write to ${portaudit_dir}, try running portaudit -F as root"
- return 1
-
- fi
- cd "${portaudit_dir}"
- if [ -r "${portaudit_filename}" ]; then
- /bin/cp "${portaudit_filename}" "${portaudit_filename}.old"
- fi
-
- for site in `fetch_locations`; do
- echo ">> Attempting to fetch from ${site}."
- args="${site}${portaudit_filename}"
- /usr/bin/env ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} ${args} ${FETCH_AFTER_ARGS}
- if [ $? -ne 0 ]; then
- echo "Couldn't fetch database."
- elif [ ! -f "${portaudit_dir}/${portaudit_filename}" ] ; then
- echo "no database fetched."
- elif ! checksum_auditfile; then
- echo "fetched database corrupt."
- elif ! checkexpiry_auditfile 7; then
- echo "fetched database too old."
- else
- echo "new database installed."
- rc=0
- break
- fi
- done
- if [ -f "${portaudit_filename}.old" ]; then
- if [ ${rc} -eq 0 ]; then
- /bin/rm -f "${portaudit_filename}.old"
- else
- /bin/mv -f "${portaudit_filename}.old" "${portaudit_filename}"
- echo "old database restored."
- fi
- fi
- if [ -f "${portaudit_filename}" ]; then
- /bin/chmod a=r "${portaudit_filename}"
- fi
- return ${rc}
-}