From 439bc59e52b3099cf354dc254d8b787076323f6f Mon Sep 17 00:00:00 2001 From: JRGTH Date: Thu, 14 Jul 2022 19:01:47 -0400 Subject: [PATCH] Add required files from FreeBSD 13.1 base release, update config --- CHANGELOG | 1 + conf/bastille.conf.ext | 1 + .../system/freebsd-update/13.1/freebsd-update | 3490 +++++++++++++++++ .../freebsd-update/13.1/freebsd-update.conf | 79 + conf/system/include/13.1/ar | Bin 0 -> 51160 bytes conf/system/include/13.1/diff3 | Bin 0 -> 29928 bytes conf/system/include/13.1/jib | 418 ++ conf/system/include/13.1/makewhatis | Bin 0 -> 508504 bytes conf/system/include/13.1/setfib | Bin 0 -> 7736 bytes conf/system/include/13.1/sum | Bin 0 -> 11888 bytes version | 2 +- 11 files changed, 3990 insertions(+), 1 deletion(-) create mode 100755 conf/system/freebsd-update/13.1/freebsd-update create mode 100644 conf/system/freebsd-update/13.1/freebsd-update.conf create mode 100755 conf/system/include/13.1/ar create mode 100755 conf/system/include/13.1/diff3 create mode 100755 conf/system/include/13.1/jib create mode 100755 conf/system/include/13.1/makewhatis create mode 100755 conf/system/include/13.1/setfib create mode 100755 conf/system/include/13.1/sum diff --git a/CHANGELOG b/CHANGELOG index 7cc3632..6e54a31 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.1.15......Add required files from FreeBSD 13.1 base release, update config. 1.1.14......Automatically deal with spaces on the fstab utility. 1.1.13......Cosmetic changes, add note about space escaping in fstab. 1.1.12......Fix for PHP 8.1 compatibility. diff --git a/conf/bastille.conf.ext b/conf/bastille.conf.ext index 227cee7..9474b95 100644 --- a/conf/bastille.conf.ext +++ b/conf/bastille.conf.ext @@ -25,5 +25,6 @@ bastille_network_gateway="" bastille_template_base="default/base" bastille_template_empty="" bastille_template_thick="default/thick" +bastille_template_clone="default/clone" bastille_template_thin="default/thin" bastille_template_vnet="default/vnet" diff --git a/conf/system/freebsd-update/13.1/freebsd-update b/conf/system/freebsd-update/13.1/freebsd-update new file mode 100755 index 0000000..9743cd6 --- /dev/null +++ b/conf/system/freebsd-update/13.1/freebsd-update @@ -0,0 +1,3490 @@ +#!/bin/sh + +#- +# SPDX-License-Identifier: BSD-2-Clause-FreeBSD +# +# Copyright 2004-2007 Colin Percival +# All rights reserved +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted providing 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. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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$ + +#### Usage function -- called from command-line handling code. + +# Usage instructions. Options not listed: +# --debug -- don't filter output from utilities +# --no-stats -- don't show progress statistics while fetching files +usage () { + cat < ${LINE}" + exit 1 + fi + done < ${CONFFILE} + + # Merge the settings read from the configuration file with those + # provided at the command line. + mergeconfig +} + +# Provide some default parameters +default_params () { + # Save any parameters already configured, and clear the slate + saveconfig + nullconfig + + # Default configurations + config_WorkDir /var/db/freebsd-update + config_MailTo root + config_AllowAdd yes + config_AllowDelete yes + config_KeepModifiedMetadata yes + config_BaseDir / + config_VerboseLevel stats + config_StrictComponents no + config_BackupKernel yes + config_BackupKernelDir /boot/kernel.old + config_BackupKernelSymbolFiles no + config_CreateBootEnv yes + + # Merge these defaults into the earlier-configured settings + mergeconfig +} + +# Set utility output filtering options, based on ${VERBOSELEVEL} +fetch_setup_verboselevel () { + case ${VERBOSELEVEL} in + debug) + QUIETREDIR="/dev/stderr" + QUIETFLAG=" " + STATSREDIR="/dev/stderr" + DDSTATS=".." + XARGST="-t" + NDEBUG=" " + ;; + nostats) + QUIETREDIR="" + QUIETFLAG="" + STATSREDIR="/dev/null" + DDSTATS=".." + XARGST="" + NDEBUG="" + ;; + stats) + QUIETREDIR="/dev/null" + QUIETFLAG="-q" + STATSREDIR="/dev/stdout" + DDSTATS="" + XARGST="" + NDEBUG="-n" + ;; + esac +} + +# Perform sanity checks and set some final parameters +# in preparation for fetching files. Figure out which +# set of updates should be downloaded: If the user is +# running *-p[0-9]+, strip off the last part; if the +# user is running -SECURITY, call it -RELEASE. Chdir +# into the working directory. +fetchupgrade_check_params () { + export HTTP_USER_AGENT="freebsd-update (${COMMAND}, `uname -r`)" + + _SERVERNAME_z=\ +"SERVERNAME must be given via command line or configuration file." + _KEYPRINT_z="Key must be given via -k option or configuration file." + _KEYPRINT_bad="Invalid key fingerprint: " + _WORKDIR_bad="Directory does not exist or is not writable: " + _WORKDIR_bad2="Directory is not on a persistent filesystem: " + + if [ -z "${SERVERNAME}" ]; then + echo -n "`basename $0`: " + echo "${_SERVERNAME_z}" + exit 1 + fi + if [ -z "${KEYPRINT}" ]; then + echo -n "`basename $0`: " + echo "${_KEYPRINT_z}" + exit 1 + fi + if ! echo "${KEYPRINT}" | grep -qE "^[0-9a-f]{64}$"; then + echo -n "`basename $0`: " + echo -n "${_KEYPRINT_bad}" + echo ${KEYPRINT} + exit 1 + fi + if ! [ -d "${WORKDIR}" -a -w "${WORKDIR}" ]; then + echo -n "`basename $0`: " + echo -n "${_WORKDIR_bad}" + echo ${WORKDIR} + exit 1 + fi + case `df -T ${WORKDIR}` in */dev/md[0-9]* | *tmpfs*) + echo -n "`basename $0`: " + echo -n "${_WORKDIR_bad2}" + echo ${WORKDIR} + exit 1 + ;; + esac + chmod 700 ${WORKDIR} + cd ${WORKDIR} || exit 1 + + # Generate release number. The s/SECURITY/RELEASE/ bit exists + # to provide an upgrade path for FreeBSD Update 1.x users, since + # the kernels provided by FreeBSD Update 1.x are always labelled + # as X.Y-SECURITY. + RELNUM=`uname -r | + sed -E 's,-p[0-9]+,,' | + sed -E 's,-SECURITY,-RELEASE,'` + ARCH=`uname -m` + FETCHDIR=${RELNUM}/${ARCH} + PATCHDIR=${RELNUM}/${ARCH}/bp + + # Disallow upgrade from a version that is not a release + case ${RELNUM} in + *-RELEASE | *-ALPHA* | *-BETA* | *-RC*) + ;; + *) + echo -n "`basename $0`: " + cat <<- EOF + Cannot upgrade from a version that is not a release + (including alpha, beta and release candidates) + using `basename $0`. Instead, FreeBSD can be directly + upgraded by source or upgraded to a RELEASE/RELENG version + prior to running `basename $0`. + Currently running: ${RELNUM} + EOF + exit 1 + ;; + esac + + # Figure out what directory contains the running kernel + BOOTFILE=`sysctl -n kern.bootfile` + KERNELDIR=${BOOTFILE%/kernel} + if ! [ -d ${KERNELDIR} ]; then + echo "Cannot identify running kernel" + exit 1 + fi + + # Figure out what kernel configuration is running. We start with + # the output of `uname -i`, and then make the following adjustments: + # 1. Replace "SMP-GENERIC" with "SMP". Why the SMP kernel config + # file says "ident SMP-GENERIC", I don't know... + # 2. If the kernel claims to be GENERIC _and_ ${ARCH} is "amd64" + # _and_ `sysctl kern.version` contains a line which ends "/SMP", then + # we're running an SMP kernel. This mis-identification is a bug + # which was fixed in 6.2-STABLE. + KERNCONF=`uname -i` + if [ ${KERNCONF} = "SMP-GENERIC" ]; then + KERNCONF=SMP + fi + if [ ${KERNCONF} = "GENERIC" ] && [ ${ARCH} = "amd64" ]; then + if sysctl kern.version | grep -qE '/SMP$'; then + KERNCONF=SMP + fi + fi + + # Define some paths + BSPATCH=/usr/bin/bspatch + SHA256=/sbin/sha256 + PHTTPGET=/usr/libexec/phttpget + + # Set up variables relating to VERBOSELEVEL + fetch_setup_verboselevel + + # Construct a unique name from ${BASEDIR} + BDHASH=`echo ${BASEDIR} | sha256 -q` +} + +# Perform sanity checks etc. before fetching updates. +fetch_check_params () { + fetchupgrade_check_params + + if ! [ -z "${TARGETRELEASE}" ]; then + echo -n "`basename $0`: " + echo -n "-r option is meaningless with 'fetch' command. " + echo "(Did you mean 'upgrade' instead?)" + exit 1 + fi + + # Check that we have updates ready to install + if [ -f ${BDHASH}-install/kerneldone -a $FORCEFETCH -eq 0 ]; then + echo "You have a partially completed upgrade pending" + echo "Run '$0 install' first." + echo "Run '$0 fetch -F' to proceed anyway." + exit 1 + fi +} + +# Perform sanity checks etc. before fetching upgrades. +upgrade_check_params () { + fetchupgrade_check_params + + # Unless set otherwise, we're upgrading to the same kernel config. + NKERNCONF=${KERNCONF} + + # We need TARGETRELEASE set + _TARGETRELEASE_z="Release target must be specified via -r option." + if [ -z "${TARGETRELEASE}" ]; then + echo -n "`basename $0`: " + echo "${_TARGETRELEASE_z}" + exit 1 + fi + + # The target release should be != the current release. + if [ "${TARGETRELEASE}" = "${RELNUM}" ]; then + echo -n "`basename $0`: " + echo "Cannot upgrade from ${RELNUM} to itself" + exit 1 + fi + + # Turning off AllowAdd or AllowDelete is a bad idea for upgrades. + if [ "${ALLOWADD}" = "no" ]; then + echo -n "`basename $0`: " + echo -n "WARNING: \"AllowAdd no\" is a bad idea " + echo "when upgrading between releases." + echo + fi + if [ "${ALLOWDELETE}" = "no" ]; then + echo -n "`basename $0`: " + echo -n "WARNING: \"AllowDelete no\" is a bad idea " + echo "when upgrading between releases." + echo + fi + + # Set EDITOR to /usr/bin/vi if it isn't already set + : ${EDITOR:='/usr/bin/vi'} +} + +# Perform sanity checks and set some final parameters in +# preparation for installing updates. +install_check_params () { + # Check that we are root. All sorts of things won't work otherwise. + if [ `id -u` != 0 ]; then + echo "You must be root to run this." + exit 1 + fi + + # Check that securelevel <= 0. Otherwise we can't update schg files. + if [ `sysctl -n kern.securelevel` -gt 0 ]; then + echo "Updates cannot be installed when the system securelevel" + echo "is greater than zero." + exit 1 + fi + + # Check that we have a working directory + _WORKDIR_bad="Directory does not exist or is not writable: " + if ! [ -d "${WORKDIR}" -a -w "${WORKDIR}" ]; then + echo -n "`basename $0`: " + echo -n "${_WORKDIR_bad}" + echo ${WORKDIR} + exit 1 + fi + cd ${WORKDIR} || exit 1 + + # Construct a unique name from ${BASEDIR} + BDHASH=`echo ${BASEDIR} | sha256 -q` + + # Check that we have updates ready to install + if ! [ -L ${BDHASH}-install ]; then + echo "No updates are available to install." + if [ $ISFETCHED -eq 0 ]; then + echo "Run '$0 fetch' first." + exit 2 + fi + exit 0 + fi + if ! [ -f ${BDHASH}-install/INDEX-OLD ] || + ! [ -f ${BDHASH}-install/INDEX-NEW ]; then + echo "Update manifest is corrupt -- this should never happen." + echo "Re-run '$0 fetch'." + exit 1 + fi + + # Figure out what directory contains the running kernel + BOOTFILE=`sysctl -n kern.bootfile` + KERNELDIR=${BOOTFILE%/kernel} + if ! [ -d ${KERNELDIR} ]; then + echo "Cannot identify running kernel" + exit 1 + fi +} + +# Creates a new boot environment +install_create_be () { + # Figure out if we're running in a jail and return if we are + if [ `sysctl -n security.jail.jailed` = 1 ]; then + return 1 + fi + # Operating on roots that aren't located at / will, more often than not, + # not touch the boot environment. + if [ "$BASEDIR" != "/" ]; then + return 1 + fi + # Create a boot environment if enabled + if [ ${BOOTENV} = yes ]; then + bectl check 2>/dev/null + case $? in + 0) + # Boot environment are supported + CREATEBE=yes + ;; + 255) + # Boot environments are not supported + CREATEBE=no + ;; + *) + # If bectl returns an unexpected exit code, don't create a BE + CREATEBE=no + ;; + esac + if [ ${CREATEBE} = yes ]; then + echo -n "Creating snapshot of existing boot environment... " + VERSION=`freebsd-version -ku | sort -V | tail -n 1` + TIMESTAMP=`date +"%Y-%m-%d_%H%M%S"` + bectl create ${VERSION}_${TIMESTAMP} + if [ $? -eq 0 ]; then + echo "done."; + else + echo "failed." + exit 1 + fi + fi + fi +} + +# Perform sanity checks and set some final parameters in +# preparation for UNinstalling updates. +rollback_check_params () { + # Check that we are root. All sorts of things won't work otherwise. + if [ `id -u` != 0 ]; then + echo "You must be root to run this." + exit 1 + fi + + # Check that we have a working directory + _WORKDIR_bad="Directory does not exist or is not writable: " + if ! [ -d "${WORKDIR}" -a -w "${WORKDIR}" ]; then + echo -n "`basename $0`: " + echo -n "${_WORKDIR_bad}" + echo ${WORKDIR} + exit 1 + fi + cd ${WORKDIR} || exit 1 + + # Construct a unique name from ${BASEDIR} + BDHASH=`echo ${BASEDIR} | sha256 -q` + + # Check that we have updates ready to rollback + if ! [ -L ${BDHASH}-rollback ]; then + echo "No rollback directory found." + exit 1 + fi + if ! [ -f ${BDHASH}-rollback/INDEX-OLD ] || + ! [ -f ${BDHASH}-rollback/INDEX-NEW ]; then + echo "Update manifest is corrupt -- this should never happen." + exit 1 + fi +} + +# Perform sanity checks and set some final parameters +# in preparation for comparing the system against the +# published index. Figure out which index we should +# compare against: If the user is running *-p[0-9]+, +# strip off the last part; if the user is running +# -SECURITY, call it -RELEASE. Chdir into the working +# directory. +IDS_check_params () { + export HTTP_USER_AGENT="freebsd-update (${COMMAND}, `uname -r`)" + + _SERVERNAME_z=\ +"SERVERNAME must be given via command line or configuration file." + _KEYPRINT_z="Key must be given via -k option or configuration file." + _KEYPRINT_bad="Invalid key fingerprint: " + _WORKDIR_bad="Directory does not exist or is not writable: " + + if [ -z "${SERVERNAME}" ]; then + echo -n "`basename $0`: " + echo "${_SERVERNAME_z}" + exit 1 + fi + if [ -z "${KEYPRINT}" ]; then + echo -n "`basename $0`: " + echo "${_KEYPRINT_z}" + exit 1 + fi + if ! echo "${KEYPRINT}" | grep -qE "^[0-9a-f]{64}$"; then + echo -n "`basename $0`: " + echo -n "${_KEYPRINT_bad}" + echo ${KEYPRINT} + exit 1 + fi + if ! [ -d "${WORKDIR}" -a -w "${WORKDIR}" ]; then + echo -n "`basename $0`: " + echo -n "${_WORKDIR_bad}" + echo ${WORKDIR} + exit 1 + fi + cd ${WORKDIR} || exit 1 + + # Generate release number. The s/SECURITY/RELEASE/ bit exists + # to provide an upgrade path for FreeBSD Update 1.x users, since + # the kernels provided by FreeBSD Update 1.x are always labelled + # as X.Y-SECURITY. + RELNUM=`uname -r | + sed -E 's,-p[0-9]+,,' | + sed -E 's,-SECURITY,-RELEASE,'` + ARCH=`uname -m` + FETCHDIR=${RELNUM}/${ARCH} + PATCHDIR=${RELNUM}/${ARCH}/bp + + # Figure out what directory contains the running kernel + BOOTFILE=`sysctl -n kern.bootfile` + KERNELDIR=${BOOTFILE%/kernel} + if ! [ -d ${KERNELDIR} ]; then + echo "Cannot identify running kernel" + exit 1 + fi + + # Figure out what kernel configuration is running. We start with + # the output of `uname -i`, and then make the following adjustments: + # 1. Replace "SMP-GENERIC" with "SMP". Why the SMP kernel config + # file says "ident SMP-GENERIC", I don't know... + # 2. If the kernel claims to be GENERIC _and_ ${ARCH} is "amd64" + # _and_ `sysctl kern.version` contains a line which ends "/SMP", then + # we're running an SMP kernel. This mis-identification is a bug + # which was fixed in 6.2-STABLE. + KERNCONF=`uname -i` + if [ ${KERNCONF} = "SMP-GENERIC" ]; then + KERNCONF=SMP + fi + if [ ${KERNCONF} = "GENERIC" ] && [ ${ARCH} = "amd64" ]; then + if sysctl kern.version | grep -qE '/SMP$'; then + KERNCONF=SMP + fi + fi + + # Define some paths + SHA256=/sbin/sha256 + PHTTPGET=/usr/libexec/phttpget + + # Set up variables relating to VERBOSELEVEL + fetch_setup_verboselevel +} + +#### Core functionality -- the actual work gets done here + +# Use an SRV query to pick a server. If the SRV query doesn't provide +# a useful answer, use the server name specified by the user. +# Put another way... look up _http._tcp.${SERVERNAME} and pick a server +# from that; or if no servers are returned, use ${SERVERNAME}. +# This allows a user to specify "portsnap.freebsd.org" (in which case +# portsnap will select one of the mirrors) or "portsnap5.tld.freebsd.org" +# (in which case portsnap will use that particular server, since there +# won't be an SRV entry for that name). +# +# We ignore the Port field, since we are always going to use port 80. + +# Fetch the mirror list, but do not pick a mirror yet. Returns 1 if +# no mirrors are available for any reason. +fetch_pick_server_init () { + : > serverlist_tried + +# Check that host(1) exists (i.e., that the system wasn't built with the +# WITHOUT_BIND set) and don't try to find a mirror if it doesn't exist. + if ! which -s host; then + : > serverlist_full + return 1 + fi + + echo -n "Looking up ${SERVERNAME} mirrors... " + +# Issue the SRV query and pull out the Priority, Weight, and Target fields. +# BIND 9 prints "$name has SRV record ..." while BIND 8 prints +# "$name server selection ..."; we allow either format. + MLIST="_http._tcp.${SERVERNAME}" + host -t srv "${MLIST}" | + sed -nE "s/${MLIST} (has SRV record|server selection) //Ip" | + cut -f 1,2,4 -d ' ' | + sed -e 's/\.$//' | + sort > serverlist_full + +# If no records, give up -- we'll just use the server name we were given. + if [ `wc -l < serverlist_full` -eq 0 ]; then + echo "none found." + return 1 + fi + +# Report how many mirrors we found. + echo `wc -l < serverlist_full` "mirrors found." + +# Generate a random seed for use in picking mirrors. If HTTP_PROXY +# is set, this will be used to generate the seed; otherwise, the seed +# will be random. + if [ -n "${HTTP_PROXY}${http_proxy}" ]; then + RANDVALUE=`sha256 -qs "${HTTP_PROXY}${http_proxy}" | + tr -d 'a-f' | + cut -c 1-9` + else + RANDVALUE=`jot -r 1 0 999999999` + fi +} + +# Pick a mirror. Returns 1 if we have run out of mirrors to try. +fetch_pick_server () { +# Generate a list of not-yet-tried mirrors + sort serverlist_tried | + comm -23 serverlist_full - > serverlist + +# Have we run out of mirrors? + if [ `wc -l < serverlist` -eq 0 ]; then + cat <<- EOF + No mirrors remaining, giving up. + + This may be because upgrading from this platform (${ARCH}) + or release (${RELNUM}) is unsupported by `basename $0`. Only + platforms with Tier 1 support can be upgraded by `basename $0`. + See https://www.freebsd.org/platforms/ for more info. + + If unsupported, FreeBSD must be upgraded by source. + EOF + return 1 + fi + +# Find the highest priority level (lowest numeric value). + SRV_PRIORITY=`cut -f 1 -d ' ' serverlist | sort -n | head -1` + +# Add up the weights of the response lines at that priority level. + SRV_WSUM=0; + while read X; do + case "$X" in + ${SRV_PRIORITY}\ *) + SRV_W=`echo $X | cut -f 2 -d ' '` + SRV_WSUM=$(($SRV_WSUM + $SRV_W)) + ;; + esac + done < serverlist + +# If all the weights are 0, pretend that they are all 1 instead. + if [ ${SRV_WSUM} -eq 0 ]; then + SRV_WSUM=`grep -E "^${SRV_PRIORITY} " serverlist | wc -l` + SRV_W_ADD=1 + else + SRV_W_ADD=0 + fi + +# Pick a value between 0 and the sum of the weights - 1 + SRV_RND=`expr ${RANDVALUE} % ${SRV_WSUM}` + +# Read through the list of mirrors and set SERVERNAME. Write the line +# corresponding to the mirror we selected into serverlist_tried so that +# we won't try it again. + while read X; do + case "$X" in + ${SRV_PRIORITY}\ *) + SRV_W=`echo $X | cut -f 2 -d ' '` + SRV_W=$(($SRV_W + $SRV_W_ADD)) + if [ $SRV_RND -lt $SRV_W ]; then + SERVERNAME=`echo $X | cut -f 3 -d ' '` + echo "$X" >> serverlist_tried + break + else + SRV_RND=$(($SRV_RND - $SRV_W)) + fi + ;; + esac + done < serverlist +} + +# Take a list of ${oldhash}|${newhash} and output a list of needed patches, +# i.e., those for which we have ${oldhash} and don't have ${newhash}. +fetch_make_patchlist () { + grep -vE "^([0-9a-f]{64})\|\1$" | + tr '|' ' ' | + while read X Y; do + if [ -f "files/${Y}.gz" ] || + [ ! -f "files/${X}.gz" ]; then + continue + fi + echo "${X}|${Y}" + done | sort -u +} + +# Print user-friendly progress statistics +fetch_progress () { + LNC=0 + while read x; do + LNC=$(($LNC + 1)) + if [ $(($LNC % 10)) = 0 ]; then + echo -n $LNC + elif [ $(($LNC % 2)) = 0 ]; then + echo -n . + fi + done + echo -n " " +} + +# Function for asking the user if everything is ok +continuep () { + while read -p "Does this look reasonable (y/n)? " CONTINUE; do + case "${CONTINUE}" in + y*) + return 0 + ;; + n*) + return 1 + ;; + esac + done +} + +# Initialize the working directory +workdir_init () { + mkdir -p files + touch tINDEX.present +} + +# Check that we have a public key with an appropriate hash, or +# fetch the key if it doesn't exist. Returns 1 if the key has +# not yet been fetched. +fetch_key () { + if [ -r pub.ssl ] && [ `${SHA256} -q pub.ssl` = ${KEYPRINT} ]; then + return 0 + fi + + echo -n "Fetching public key from ${SERVERNAME}... " + rm -f pub.ssl + fetch ${QUIETFLAG} http://${SERVERNAME}/${FETCHDIR}/pub.ssl \ + 2>${QUIETREDIR} || true + if ! [ -r pub.ssl ]; then + echo "failed." + return 1 + fi + if ! [ `${SHA256} -q pub.ssl` = ${KEYPRINT} ]; then + echo "key has incorrect hash." + rm -f pub.ssl + return 1 + fi + echo "done." +} + +# Fetch metadata signature, aka "tag". +fetch_tag () { + echo -n "Fetching metadata signature " + echo ${NDEBUG} "for ${RELNUM} from ${SERVERNAME}... " + rm -f latest.ssl + fetch ${QUIETFLAG} http://${SERVERNAME}/${FETCHDIR}/latest.ssl \ + 2>${QUIETREDIR} || true + if ! [ -r latest.ssl ]; then + echo "failed." + return 1 + fi + + openssl rsautl -pubin -inkey pub.ssl -verify \ + < latest.ssl > tag.new 2>${QUIETREDIR} || true + rm latest.ssl + + if ! [ `wc -l < tag.new` = 1 ] || + ! grep -qE \ + "^freebsd-update\|${ARCH}\|${RELNUM}\|[0-9]+\|[0-9a-f]{64}\|[0-9]{10}" \ + tag.new; then + echo "invalid signature." + return 1 + fi + + echo "done." + + RELPATCHNUM=`cut -f 4 -d '|' < tag.new` + TINDEXHASH=`cut -f 5 -d '|' < tag.new` + EOLTIME=`cut -f 6 -d '|' < tag.new` +} + +# Sanity-check the patch number in a tag, to make sure that we're not +# going to "update" backwards and to prevent replay attacks. +fetch_tagsanity () { + # Check that we're not going to move from -pX to -pY with Y < X. + RELPX=`uname -r | sed -E 's,.*-,,'` + if echo ${RELPX} | grep -qE '^p[0-9]+$'; then + RELPX=`echo ${RELPX} | cut -c 2-` + else + RELPX=0 + fi + if [ "${RELPATCHNUM}" -lt "${RELPX}" ]; then + echo + echo -n "Files on mirror (${RELNUM}-p${RELPATCHNUM})" + echo " appear older than what" + echo "we are currently running (`uname -r`)!" + echo "Cowardly refusing to proceed any further." + return 1 + fi + + # If "tag" exists and corresponds to ${RELNUM}, make sure that + # it contains a patch number <= RELPATCHNUM, in order to protect + # against rollback (replay) attacks. + if [ -f tag ] && + grep -qE \ + "^freebsd-update\|${ARCH}\|${RELNUM}\|[0-9]+\|[0-9a-f]{64}\|[0-9]{10}" \ + tag; then + LASTRELPATCHNUM=`cut -f 4 -d '|' < tag` + + if [ "${RELPATCHNUM}" -lt "${LASTRELPATCHNUM}" ]; then + echo + echo -n "Files on mirror (${RELNUM}-p${RELPATCHNUM})" + echo " are older than the" + echo -n "most recently seen updates" + echo " (${RELNUM}-p${LASTRELPATCHNUM})." + echo "Cowardly refusing to proceed any further." + return 1 + fi + fi +} + +# Fetch metadata index file +fetch_metadata_index () { + echo ${NDEBUG} "Fetching metadata index... " + rm -f ${TINDEXHASH} + fetch ${QUIETFLAG} http://${SERVERNAME}/${FETCHDIR}/t/${TINDEXHASH} + 2>${QUIETREDIR} + if ! [ -f ${TINDEXHASH} ]; then + echo "failed." + return 1 + fi + if [ `${SHA256} -q ${TINDEXHASH}` != ${TINDEXHASH} ]; then + echo "update metadata index corrupt." + return 1 + fi + echo "done." +} + +# Print an error message about signed metadata being bogus. +fetch_metadata_bogus () { + echo + echo "The update metadata$1 is correctly signed, but" + echo "failed an integrity check." + echo "Cowardly refusing to proceed any further." + return 1 +} + +# Construct tINDEX.new by merging the lines named in $1 from ${TINDEXHASH} +# with the lines not named in $@ from tINDEX.present (if that file exists). +fetch_metadata_index_merge () { + for METAFILE in $@; do + if [ `grep -E "^${METAFILE}\|" ${TINDEXHASH} | wc -l` \ + -ne 1 ]; then + fetch_metadata_bogus " index" + return 1 + fi + + grep -E "${METAFILE}\|" ${TINDEXHASH} + done | + sort > tINDEX.wanted + + if [ -f tINDEX.present ]; then + join -t '|' -v 2 tINDEX.wanted tINDEX.present | + sort -m - tINDEX.wanted > tINDEX.new + rm tINDEX.wanted + else + mv tINDEX.wanted tINDEX.new + fi +} + +# Sanity check all the lines of tINDEX.new. Even if more metadata lines +# are added by future versions of the server, this won't cause problems, +# since the only lines which appear in tINDEX.new are the ones which we +# specifically grepped out of ${TINDEXHASH}. +fetch_metadata_index_sanity () { + if grep -qvE '^[0-9A-Z.-]+\|[0-9a-f]{64}$' tINDEX.new; then + fetch_metadata_bogus " index" + return 1 + fi +} + +# Sanity check the metadata file $1. +fetch_metadata_sanity () { + # Some aliases to save space later: ${P} is a character which can + # appear in a path; ${M} is the four numeric metadata fields; and + # ${H} is a sha256 hash. + P="[-+./:=,%@_[~[:alnum:]]" + M="[0-9]+\|[0-9]+\|[0-9]+\|[0-9]+" + H="[0-9a-f]{64}" + + # Check that the first four fields make sense. + if gunzip -c < files/$1.gz | + grep -qvE "^[a-z]+\|[0-9a-z-]+\|${P}+\|[fdL-]\|"; then + fetch_metadata_bogus "" + return 1 + fi + + # Remove the first three fields. + gunzip -c < files/$1.gz | + cut -f 4- -d '|' > sanitycheck.tmp + + # Sanity check entries with type 'f' + if grep -E '^f' sanitycheck.tmp | + grep -qvE "^f\|${M}\|${H}\|${P}*\$"; then + fetch_metadata_bogus "" + return 1 + fi + + # Sanity check entries with type 'd' + if grep -E '^d' sanitycheck.tmp | + grep -qvE "^d\|${M}\|\|\$"; then + fetch_metadata_bogus "" + return 1 + fi + + # Sanity check entries with type 'L' + if grep -E '^L' sanitycheck.tmp | + grep -qvE "^L\|${M}\|${P}*\|\$"; then + fetch_metadata_bogus "" + return 1 + fi + + # Sanity check entries with type '-' + if grep -E '^-' sanitycheck.tmp | + grep -qvE "^-\|\|\|\|\|\|"; then + fetch_metadata_bogus "" + return 1 + fi + + # Clean up + rm sanitycheck.tmp +} + +# Fetch the metadata index and metadata files listed in $@, +# taking advantage of metadata patches where possible. +fetch_metadata () { + fetch_metadata_index || return 1 + fetch_metadata_index_merge $@ || return 1 + fetch_metadata_index_sanity || return 1 + + # Generate a list of wanted metadata patches + join -t '|' -o 1.2,2.2 tINDEX.present tINDEX.new | + fetch_make_patchlist > patchlist + + if [ -s patchlist ]; then + # Attempt to fetch metadata patches + echo -n "Fetching `wc -l < patchlist | tr -d ' '` " + echo ${NDEBUG} "metadata patches.${DDSTATS}" + tr '|' '-' < patchlist | + lam -s "${FETCHDIR}/tp/" - -s ".gz" | + xargs ${XARGST} ${PHTTPGET} ${SERVERNAME} \ + 2>${STATSREDIR} | fetch_progress + echo "done." + + # Attempt to apply metadata patches + echo -n "Applying metadata patches... " + tr '|' ' ' < patchlist | + while read X Y; do + if [ ! -f "${X}-${Y}.gz" ]; then continue; fi + gunzip -c < ${X}-${Y}.gz > diff + gunzip -c < files/${X}.gz > diff-OLD + + # Figure out which lines are being added and removed + grep -E '^-' diff | + cut -c 2- | + while read PREFIX; do + look "${PREFIX}" diff-OLD + done | + sort > diff-rm + grep -E '^\+' diff | + cut -c 2- > diff-add + + # Generate the new file + comm -23 diff-OLD diff-rm | + sort - diff-add > diff-NEW + + if [ `${SHA256} -q diff-NEW` = ${Y} ]; then + mv diff-NEW files/${Y} + gzip -n files/${Y} + else + mv diff-NEW ${Y}.bad + fi + rm -f ${X}-${Y}.gz diff + rm -f diff-OLD diff-NEW diff-add diff-rm + done 2>${QUIETREDIR} + echo "done." + fi + + # Update metadata without patches + cut -f 2 -d '|' < tINDEX.new | + while read Y; do + if [ ! -f "files/${Y}.gz" ]; then + echo ${Y}; + fi + done | + sort -u > filelist + + if [ -s filelist ]; then + echo -n "Fetching `wc -l < filelist | tr -d ' '` " + echo ${NDEBUG} "metadata files... " + lam -s "${FETCHDIR}/m/" - -s ".gz" < filelist | + xargs ${XARGST} ${PHTTPGET} ${SERVERNAME} \ + 2>${QUIETREDIR} + + while read Y; do + if ! [ -f ${Y}.gz ]; then + echo "failed." + return 1 + fi + if [ `gunzip -c < ${Y}.gz | + ${SHA256} -q` = ${Y} ]; then + mv ${Y}.gz files/${Y}.gz + else + echo "metadata is corrupt." + return 1 + fi + done < filelist + echo "done." + fi + +# Sanity-check the metadata files. + cut -f 2 -d '|' tINDEX.new > filelist + while read X; do + fetch_metadata_sanity ${X} || return 1 + done < filelist + +# Remove files which are no longer needed + cut -f 2 -d '|' tINDEX.present | + sort > oldfiles + cut -f 2 -d '|' tINDEX.new | + sort | + comm -13 - oldfiles | + lam -s "files/" - -s ".gz" | + xargs rm -f + rm patchlist filelist oldfiles + rm ${TINDEXHASH} + +# We're done! + mv tINDEX.new tINDEX.present + mv tag.new tag + + return 0 +} + +# Extract a subset of a downloaded metadata file containing only the parts +# which are listed in COMPONENTS. +fetch_filter_metadata_components () { + METAHASH=`look "$1|" tINDEX.present | cut -f 2 -d '|'` + gunzip -c < files/${METAHASH}.gz > $1.all + + # Fish out the lines belonging to components we care about. + for C in ${COMPONENTS}; do + look "`echo ${C} | tr '/' '|'`|" $1.all + done > $1 + + # Remove temporary file. + rm $1.all +} + +# Generate a filtered version of the metadata file $1 from the downloaded +# file, by fishing out the lines corresponding to components we're trying +# to keep updated, and then removing lines corresponding to paths we want +# to ignore. +fetch_filter_metadata () { + # Fish out the lines belonging to components we care about. + fetch_filter_metadata_components $1 + + # Canonicalize directory names by removing any trailing / in + # order to avoid listing directories multiple times if they + # belong to multiple components. Turning "/" into "" doesn't + # matter, since we add a leading "/" when we use paths later. + cut -f 3- -d '|' $1 | + sed -e 's,/|d|,|d|,' | + sed -e 's,/|-|,|-|,' | + sort -u > $1.tmp + + # Figure out which lines to ignore and remove them. + for X in ${IGNOREPATHS}; do + grep -E "^${X}" $1.tmp + done | + sort -u | + comm -13 - $1.tmp > $1 + + # Remove temporary files. + rm $1.tmp +} + +# Filter the metadata file $1 by adding lines with "/boot/$2" +# replaced by ${KERNELDIR} (which is `sysctl -n kern.bootfile` minus the +# trailing "/kernel"); and if "/boot/$2" does not exist, remove +# the original lines which start with that. +# Put another way: Deal with the fact that the FOO kernel is sometimes +# installed in /boot/FOO/ and is sometimes installed elsewhere. +fetch_filter_kernel_names () { + grep ^/boot/$2 $1 | + sed -e "s,/boot/$2,${KERNELDIR},g" | + sort - $1 > $1.tmp + mv $1.tmp $1 + + if ! [ -d /boot/$2 ]; then + grep -v ^/boot/$2 $1 > $1.tmp + mv $1.tmp $1 + fi +} + +# For all paths appearing in $1 or $3, inspect the system +# and generate $2 describing what is currently installed. +fetch_inspect_system () { + # No errors yet... + rm -f .err + + # Tell the user why his disk is suddenly making lots of noise + echo -n "Inspecting system... " + + # Generate list of files to inspect + cat $1 $3 | + cut -f 1 -d '|' | + sort -u > filelist + + # Examine each file and output lines of the form + # /path/to/file|type|device-inum|user|group|perm|flags|value + # sorted by device and inode number. + while read F; do + # If the symlink/file/directory does not exist, record this. + if ! [ -e ${BASEDIR}/${F} ]; then + echo "${F}|-||||||" + continue + fi + if ! [ -r ${BASEDIR}/${F} ]; then + echo "Cannot read file: ${BASEDIR}/${F}" \ + >/dev/stderr + touch .err + return 1 + fi + + # Otherwise, output an index line. + if [ -L ${BASEDIR}/${F} ]; then + echo -n "${F}|L|" + stat -n -f '%d-%i|%u|%g|%Mp%Lp|%Of|' ${BASEDIR}/${F}; + readlink ${BASEDIR}/${F}; + elif [ -f ${BASEDIR}/${F} ]; then + echo -n "${F}|f|" + stat -n -f '%d-%i|%u|%g|%Mp%Lp|%Of|' ${BASEDIR}/${F}; + sha256 -q ${BASEDIR}/${F}; + elif [ -d ${BASEDIR}/${F} ]; then + echo -n "${F}|d|" + stat -f '%d-%i|%u|%g|%Mp%Lp|%Of|' ${BASEDIR}/${F}; + else + echo "Unknown file type: ${BASEDIR}/${F}" \ + >/dev/stderr + touch .err + return 1 + fi + done < filelist | + sort -k 3,3 -t '|' > $2.tmp + rm filelist + + # Check if an error occurred during system inspection + if [ -f .err ]; then + return 1 + fi + + # Convert to the form + # /path/to/file|type|user|group|perm|flags|value|hlink + # by resolving identical device and inode numbers into hard links. + cut -f 1,3 -d '|' $2.tmp | + sort -k 1,1 -t '|' | + sort -s -u -k 2,2 -t '|' | + join -1 2 -2 3 -t '|' - $2.tmp | + awk -F \| -v OFS=\| \ + '{ + if (($2 == $3) || ($4 == "-")) + print $3,$4,$5,$6,$7,$8,$9,"" + else + print $3,$4,$5,$6,$7,$8,$9,$2 + }' | + sort > $2 + rm $2.tmp + + # We're finished looking around + echo "done." +} + +# For any paths matching ${MERGECHANGES}, compare $1 and $2 and find any +# files which differ; generate $3 containing these paths and the old hashes. +fetch_filter_mergechanges () { + # Pull out the paths and hashes of the files matching ${MERGECHANGES}. + for F in $1 $2; do + for X in ${MERGECHANGES}; do + grep -E "^${X}" ${F} + done | + cut -f 1,2,7 -d '|' | + sort > ${F}-values + done + + # Any line in $2-values which doesn't appear in $1-values and is a + # file means that we should list the path in $3. + comm -13 $1-values $2-values | + fgrep '|f|' | + cut -f 1 -d '|' > $2-paths + + # For each path, pull out one (and only one!) entry from $1-values. + # Note that we cannot distinguish which "old" version the user made + # changes to; but hopefully any changes which occur due to security + # updates will exist in both the "new" version and the version which + # the user has installed, so the merging will still work. + while read X; do + look "${X}|" $1-values | + head -1 + done < $2-paths > $3 + + # Clean up + rm $1-values $2-values $2-paths +} + +# For any paths matching ${UPDATEIFUNMODIFIED}, remove lines from $[123] +# which correspond to lines in $2 with hashes not matching $1 or $3, unless +# the paths are listed in $4. For entries in $2 marked "not present" +# (aka. type -), remove lines from $[123] unless there is a corresponding +# entry in $1. +fetch_filter_unmodified_notpresent () { + # Figure out which lines of $1 and $3 correspond to bits which + # should only be updated if they haven't changed, and fish out + # the (path, type, value) tuples. + # NOTE: We don't consider a file to be "modified" if it matches + # the hash from $3. + for X in ${UPDATEIFUNMODIFIED}; do + grep -E "^${X}" $1 + grep -E "^${X}" $3 + done | + cut -f 1,2,7 -d '|' | + sort > $1-values + + # Do the same for $2. + for X in ${UPDATEIFUNMODIFIED}; do + grep -E "^${X}" $2 + done | + cut -f 1,2,7 -d '|' | + sort > $2-values + + # Any entry in $2-values which is not in $1-values corresponds to + # a path which we need to remove from $1, $2, and $3, unless it + # that path appears in $4. + comm -13 $1-values $2-values | + sort -t '|' -k 1,1 > mlines.tmp + cut -f 1 -d '|' $4 | + sort | + join -v 2 -t '|' - mlines.tmp | + sort > mlines + rm $1-values $2-values mlines.tmp + + # Any lines in $2 which are not in $1 AND are "not present" lines + # also belong in mlines. + comm -13 $1 $2 | + cut -f 1,2,7 -d '|' | + fgrep '|-|' >> mlines + + # Remove lines from $1, $2, and $3 + for X in $1 $2 $3; do + sort -t '|' -k 1,1 ${X} > ${X}.tmp + cut -f 1 -d '|' < mlines | + sort | + join -v 2 -t '|' - ${X}.tmp | + sort > ${X} + rm ${X}.tmp + done + + # Store a list of the modified files, for future reference + fgrep -v '|-|' mlines | + cut -f 1 -d '|' > modifiedfiles + rm mlines +} + +# For each entry in $1 of type -, remove any corresponding +# entry from $2 if ${ALLOWADD} != "yes". Remove all entries +# of type - from $1. +fetch_filter_allowadd () { + cut -f 1,2 -d '|' < $1 | + fgrep '|-' | + cut -f 1 -d '|' > filesnotpresent + + if [ ${ALLOWADD} != "yes" ]; then + sort < $2 | + join -v 1 -t '|' - filesnotpresent | + sort > $2.tmp + mv $2.tmp $2 + fi + + sort < $1 | + join -v 1 -t '|' - filesnotpresent | + sort > $1.tmp + mv $1.tmp $1 + rm filesnotpresent +} + +# If ${ALLOWDELETE} != "yes", then remove any entries from $1 +# which don't correspond to entries in $2. +fetch_filter_allowdelete () { + # Produce a lists ${PATH}|${TYPE} + for X in $1 $2; do + cut -f 1-2 -d '|' < ${X} | + sort -u > ${X}.nodes + done + + # Figure out which lines need to be removed from $1. + if [ ${ALLOWDELETE} != "yes" ]; then + comm -23 $1.nodes $2.nodes > $1.badnodes + else + : > $1.badnodes + fi + + # Remove the relevant lines from $1 + while read X; do + look "${X}|" $1 + done < $1.badnodes | + comm -13 - $1 > $1.tmp + mv $1.tmp $1 + + rm $1.badnodes $1.nodes $2.nodes +} + +# If ${KEEPMODIFIEDMETADATA} == "yes", then for each entry in $2 +# with metadata not matching any entry in $1, replace the corresponding +# line of $3 with one having the same metadata as the entry in $2. +fetch_filter_modified_metadata () { + # Fish out the metadata from $1 and $2 + for X in $1 $2; do + cut -f 1-6 -d '|' < ${X} > ${X}.metadata + done + + # Find the metadata we need to keep + if [ ${KEEPMODIFIEDMETADATA} = "yes" ]; then + comm -13 $1.metadata $2.metadata > keepmeta + else + : > keepmeta + fi + + # Extract the lines which we need to remove from $3, and + # construct the lines which we need to add to $3. + : > $3.remove + : > $3.add + while read LINE; do + NODE=`echo "${LINE}" | cut -f 1-2 -d '|'` + look "${NODE}|" $3 >> $3.remove + look "${NODE}|" $3 | + cut -f 7- -d '|' | + lam -s "${LINE}|" - >> $3.add + done < keepmeta + + # Remove the specified lines and add the new lines. + sort $3.remove | + comm -13 - $3 | + sort -u - $3.add > $3.tmp + mv $3.tmp $3 + + rm keepmeta $1.metadata $2.metadata $3.add $3.remove +} + +# Remove lines from $1 and $2 which are identical; +# no need to update a file if it isn't changing. +fetch_filter_uptodate () { + comm -23 $1 $2 > $1.tmp + comm -13 $1 $2 > $2.tmp + + mv $1.tmp $1 + mv $2.tmp $2 +} + +# Fetch any "clean" old versions of files we need for merging changes. +fetch_files_premerge () { + # We only need to do anything if $1 is non-empty. + if [ -s $1 ]; then + # Tell the user what we're doing + echo -n "Fetching files from ${OLDRELNUM} for merging... " + + # List of files wanted + fgrep '|f|' < $1 | + cut -f 3 -d '|' | + sort -u > files.wanted + + # Only fetch the files we don't already have + while read Y; do + if [ ! -f "files/${Y}.gz" ]; then + echo ${Y}; + fi + done < files.wanted > filelist + + # Actually fetch them + lam -s "${OLDFETCHDIR}/f/" - -s ".gz" < filelist | + xargs ${XARGST} ${PHTTPGET} ${SERVERNAME} \ + 2>${QUIETREDIR} + + # Make sure we got them all, and move them into /files/ + while read Y; do + if ! [ -f ${Y}.gz ]; then + echo "failed." + return 1 + fi + if [ `gunzip -c < ${Y}.gz | + ${SHA256} -q` = ${Y} ]; then + mv ${Y}.gz files/${Y}.gz + else + echo "${Y} has incorrect hash." + return 1 + fi + done < filelist + echo "done." + + # Clean up + rm filelist files.wanted + fi +} + +# Prepare to fetch files: Generate a list of the files we need, +# copy the unmodified files we have into /files/, and generate +# a list of patches to download. +fetch_files_prepare () { + # Tell the user why his disk is suddenly making lots of noise + echo -n "Preparing to download files... " + + # Reduce indices to ${PATH}|${HASH} pairs + for X in $1 $2 $3; do + cut -f 1,2,7 -d '|' < ${X} | + fgrep '|f|' | + cut -f 1,3 -d '|' | + sort > ${X}.hashes + done + + # List of files wanted + cut -f 2 -d '|' < $3.hashes | + sort -u | + while read HASH; do + if ! [ -f files/${HASH}.gz ]; then + echo ${HASH} + fi + done > files.wanted + + # Generate a list of unmodified files + comm -12 $1.hashes $2.hashes | + sort -k 1,1 -t '|' > unmodified.files + + # Copy all files into /files/. We only need the unmodified files + # for use in patching; but we'll want all of them if the user asks + # to rollback the updates later. + while read LINE; do + F=`echo "${LINE}" | cut -f 1 -d '|'` + HASH=`echo "${LINE}" | cut -f 2 -d '|'` + + # Skip files we already have. + if [ -f files/${HASH}.gz ]; then + continue + fi + + # Make sure the file hasn't changed. + cp "${BASEDIR}/${F}" tmpfile + if [ `sha256 -q tmpfile` != ${HASH} ]; then + echo + echo "File changed while FreeBSD Update running: ${F}" + return 1 + fi + + # Place the file into storage. + gzip -c < tmpfile > files/${HASH}.gz + rm tmpfile + done < $2.hashes + + # Produce a list of patches to download + sort -k 1,1 -t '|' $3.hashes | + join -t '|' -o 2.2,1.2 - unmodified.files | + fetch_make_patchlist > patchlist + + # Garbage collect + rm unmodified.files $1.hashes $2.hashes $3.hashes + + # We don't need the list of possible old files any more. + rm $1 + + # We're finished making noise + echo "done." +} + +# Fetch files. +fetch_files () { + # Attempt to fetch patches + if [ -s patchlist ]; then + echo -n "Fetching `wc -l < patchlist | tr -d ' '` " + echo ${NDEBUG} "patches.${DDSTATS}" + tr '|' '-' < patchlist | + lam -s "${PATCHDIR}/" - | + xargs ${XARGST} ${PHTTPGET} ${SERVERNAME} \ + 2>${STATSREDIR} | fetch_progress + echo "done." + + # Attempt to apply patches + echo -n "Applying patches... " + tr '|' ' ' < patchlist | + while read X Y; do + if [ ! -f "${X}-${Y}" ]; then continue; fi + gunzip -c < files/${X}.gz > OLD + + bspatch OLD NEW ${X}-${Y} + + if [ `${SHA256} -q NEW` = ${Y} ]; then + mv NEW files/${Y} + gzip -n files/${Y} + fi + rm -f diff OLD NEW ${X}-${Y} + done 2>${QUIETREDIR} + echo "done." + fi + + # Download files which couldn't be generate via patching + while read Y; do + if [ ! -f "files/${Y}.gz" ]; then + echo ${Y}; + fi + done < files.wanted > filelist + + if [ -s filelist ]; then + echo -n "Fetching `wc -l < filelist | tr -d ' '` " + echo ${NDEBUG} "files... " + lam -s "${FETCHDIR}/f/" - -s ".gz" < filelist | + xargs ${XARGST} ${PHTTPGET} ${SERVERNAME} \ + 2>${STATSREDIR} | fetch_progress + + while read Y; do + if ! [ -f ${Y}.gz ]; then + echo "failed." + return 1 + fi + if [ `gunzip -c < ${Y}.gz | + ${SHA256} -q` = ${Y} ]; then + mv ${Y}.gz files/${Y}.gz + else + echo "${Y} has incorrect hash." + return 1 + fi + done < filelist + echo "done." + fi + + # Clean up + rm files.wanted filelist patchlist +} + +# Create and populate install manifest directory; and report what updates +# are available. +fetch_create_manifest () { + # If we have an existing install manifest, nuke it. + if [ -L "${BDHASH}-install" ]; then + rm -r ${BDHASH}-install/ + rm ${BDHASH}-install + fi + + # Report to the user if any updates were avoided due to local changes + if [ -s modifiedfiles ]; then + cat - modifiedfiles <<- EOF | ${PAGER} + The following files are affected by updates. No changes have + been downloaded, however, because the files have been modified + locally: + EOF + fi + rm modifiedfiles + + # If no files will be updated, tell the user and exit + if ! [ -s INDEX-PRESENT ] && + ! [ -s INDEX-NEW ]; then + rm INDEX-PRESENT INDEX-NEW + echo + echo -n "No updates needed to update system to " + echo "${RELNUM}-p${RELPATCHNUM}." + return + fi + + # Divide files into (a) removed files, (b) added files, and + # (c) updated files. + cut -f 1 -d '|' < INDEX-PRESENT | + sort > INDEX-PRESENT.flist + cut -f 1 -d '|' < INDEX-NEW | + sort > INDEX-NEW.flist + comm -23 INDEX-PRESENT.flist INDEX-NEW.flist > files.removed + comm -13 INDEX-PRESENT.flist INDEX-NEW.flist > files.added + comm -12 INDEX-PRESENT.flist INDEX-NEW.flist > files.updated + rm INDEX-PRESENT.flist INDEX-NEW.flist + + # Report removed files, if any + if [ -s files.removed ]; then + cat - files.removed <<- EOF | ${PAGER} + The following files will be removed as part of updating to + ${RELNUM}-p${RELPATCHNUM}: + EOF + fi + rm files.removed + + # Report added files, if any + if [ -s files.added ]; then + cat - files.added <<- EOF | ${PAGER} + The following files will be added as part of updating to + ${RELNUM}-p${RELPATCHNUM}: + EOF + fi + rm files.added + + # Report updated files, if any + if [ -s files.updated ]; then + cat - files.updated <<- EOF | ${PAGER} + The following files will be updated as part of updating to + ${RELNUM}-p${RELPATCHNUM}: + EOF + fi + rm files.updated + + # Create a directory for the install manifest. + MDIR=`mktemp -d install.XXXXXX` || return 1 + + # Populate it + mv INDEX-PRESENT ${MDIR}/INDEX-OLD + mv INDEX-NEW ${MDIR}/INDEX-NEW + + # Link it into place + ln -s ${MDIR} ${BDHASH}-install +} + +# Warn about any upcoming EoL +fetch_warn_eol () { + # What's the current time? + NOWTIME=`date "+%s"` + + # When did we last warn about the EoL date? + if [ -f lasteolwarn ]; then + LASTWARN=`cat lasteolwarn` + else + LASTWARN=`expr ${NOWTIME} - 63072000` + fi + + # If the EoL time is past, warn. + if [ ${EOLTIME} -lt ${NOWTIME} ]; then + echo + cat <<-EOF + WARNING: `uname -sr` HAS PASSED ITS END-OF-LIFE DATE. + Any security issues discovered after `date -r ${EOLTIME}` + will not have been corrected. + EOF + return 1 + fi + + # Figure out how long it has been since we last warned about the + # upcoming EoL, and how much longer we have left. + SINCEWARN=`expr ${NOWTIME} - ${LASTWARN}` + TIMELEFT=`expr ${EOLTIME} - ${NOWTIME}` + + # Don't warn if the EoL is more than 3 months away + if [ ${TIMELEFT} -gt 7884000 ]; then + return 0 + fi + + # Don't warn if the time remaining is more than 3 times the time + # since the last warning. + if [ ${TIMELEFT} -gt `expr ${SINCEWARN} \* 3` ]; then + return 0 + fi + + # Figure out what time units to use. + if [ ${TIMELEFT} -lt 604800 ]; then + UNIT="day" + SIZE=86400 + elif [ ${TIMELEFT} -lt 2678400 ]; then + UNIT="week" + SIZE=604800 + else + UNIT="month" + SIZE=2678400 + fi + + # Compute the right number of units + NUM=`expr ${TIMELEFT} / ${SIZE}` + if [ ${NUM} != 1 ]; then + UNIT="${UNIT}s" + fi + + # Print the warning + echo + cat <<-EOF + WARNING: `uname -sr` is approaching its End-of-Life date. + It is strongly recommended that you upgrade to a newer + release within the next ${NUM} ${UNIT}. + EOF + + # Update the stored time of last warning + echo ${NOWTIME} > lasteolwarn +} + +# Do the actual work involved in "fetch" / "cron". +fetch_run () { + workdir_init || return 1 + + # Prepare the mirror list. + fetch_pick_server_init && fetch_pick_server + + # Try to fetch the public key until we run out of servers. + while ! fetch_key; do + fetch_pick_server || return 1 + done + + # Try to fetch the metadata index signature ("tag") until we run + # out of available servers; and sanity check the downloaded tag. + while ! fetch_tag; do + fetch_pick_server || return 1 + done + fetch_tagsanity || return 1 + + # Fetch the latest INDEX-NEW and INDEX-OLD files. + fetch_metadata INDEX-NEW INDEX-OLD || return 1 + + # Generate filtered INDEX-NEW and INDEX-OLD files containing only + # the lines which (a) belong to components we care about, and (b) + # don't correspond to paths we're explicitly ignoring. + fetch_filter_metadata INDEX-NEW || return 1 + fetch_filter_metadata INDEX-OLD || return 1 + + # Translate /boot/${KERNCONF} into ${KERNELDIR} + fetch_filter_kernel_names INDEX-NEW ${KERNCONF} + fetch_filter_kernel_names INDEX-OLD ${KERNCONF} + + # For all paths appearing in INDEX-OLD or INDEX-NEW, inspect the + # system and generate an INDEX-PRESENT file. + fetch_inspect_system INDEX-OLD INDEX-PRESENT INDEX-NEW || return 1 + + # Based on ${UPDATEIFUNMODIFIED}, remove lines from INDEX-* which + # correspond to lines in INDEX-PRESENT with hashes not appearing + # in INDEX-OLD or INDEX-NEW. Also remove lines where the entry in + # INDEX-PRESENT has type - and there isn't a corresponding entry in + # INDEX-OLD with type -. + fetch_filter_unmodified_notpresent \ + INDEX-OLD INDEX-PRESENT INDEX-NEW /dev/null + + # For each entry in INDEX-PRESENT of type -, remove any corresponding + # entry from INDEX-NEW if ${ALLOWADD} != "yes". Remove all entries + # of type - from INDEX-PRESENT. + fetch_filter_allowadd INDEX-PRESENT INDEX-NEW + + # If ${ALLOWDELETE} != "yes", then remove any entries from + # INDEX-PRESENT which don't correspond to entries in INDEX-NEW. + fetch_filter_allowdelete INDEX-PRESENT INDEX-NEW + + # If ${KEEPMODIFIEDMETADATA} == "yes", then for each entry in + # INDEX-PRESENT with metadata not matching any entry in INDEX-OLD, + # replace the corresponding line of INDEX-NEW with one having the + # same metadata as the entry in INDEX-PRESENT. + fetch_filter_modified_metadata INDEX-OLD INDEX-PRESENT INDEX-NEW + + # Remove lines from INDEX-PRESENT and INDEX-NEW which are identical; + # no need to update a file if it isn't changing. + fetch_filter_uptodate INDEX-PRESENT INDEX-NEW + + # Prepare to fetch files: Generate a list of the files we need, + # copy the unmodified files we have into /files/, and generate + # a list of patches to download. + fetch_files_prepare INDEX-OLD INDEX-PRESENT INDEX-NEW || return 1 + + # Fetch files. + fetch_files || return 1 + + # Create and populate install manifest directory; and report what + # updates are available. + fetch_create_manifest || return 1 + + # Warn about any upcoming EoL + fetch_warn_eol || return 1 +} + +# If StrictComponents is not "yes", generate a new components list +# with only the components which appear to be installed. +upgrade_guess_components () { + if [ "${STRICTCOMPONENTS}" = "no" ]; then + # Generate filtered INDEX-ALL with only the components listed + # in COMPONENTS. + fetch_filter_metadata_components $1 || return 1 + + # Tell the user why his disk is suddenly making lots of noise + echo -n "Inspecting system... " + + # Look at the files on disk, and assume that a component is + # supposed to be present if it is more than half-present. + cut -f 1-3 -d '|' < INDEX-ALL | + tr '|' ' ' | + while read C S F; do + if [ -e ${BASEDIR}/${F} ]; then + echo "+ ${C}|${S}" + fi + echo "= ${C}|${S}" + done | + sort | + uniq -c | + sed -E 's,^ +,,' > compfreq + grep ' = ' compfreq | + cut -f 1,3 -d ' ' | + sort -k 2,2 -t ' ' > compfreq.total + grep ' + ' compfreq | + cut -f 1,3 -d ' ' | + sort -k 2,2 -t ' ' > compfreq.present + join -t ' ' -1 2 -2 2 compfreq.present compfreq.total | + while read S P T; do + if [ ${T} -ne 0 -a ${P} -gt `expr ${T} / 2` ]; then + echo ${S} + fi + done > comp.present + cut -f 2 -d ' ' < compfreq.total > comp.total + rm INDEX-ALL compfreq compfreq.total compfreq.present + + # We're done making noise. + echo "done." + + # Sometimes the kernel isn't installed where INDEX-ALL + # thinks that it should be: In particular, it is often in + # /boot/kernel instead of /boot/GENERIC or /boot/SMP. To + # deal with this, if "kernel|X" is listed in comp.total + # (i.e., is a component which would be upgraded if it is + # found to be present) we will add it to comp.present. + # If "kernel|" is in comp.total but "kernel|X" is + # not, we print a warning -- the user is running a kernel + # which isn't part of the release. + KCOMP=`echo ${KERNCONF} | tr 'A-Z' 'a-z'` + grep -E "^kernel\|${KCOMP}\$" comp.total >> comp.present + + if grep -qE "^kernel\|" comp.total && + ! grep -qE "^kernel\|${KCOMP}\$" comp.total; then + cat <<-EOF + +WARNING: This system is running a "${KCOMP}" kernel, which is not a +kernel configuration distributed as part of FreeBSD ${RELNUM}. +This kernel will not be updated: you MUST update the kernel manually +before running "$0 install". + EOF + fi + + # Re-sort the list of installed components and generate + # the list of non-installed components. + sort -u < comp.present > comp.present.tmp + mv comp.present.tmp comp.present + comm -13 comp.present comp.total > comp.absent + + # Ask the user to confirm that what we have is correct. To + # reduce user confusion, translate "X|Y" back to "X/Y" (as + # subcomponents must be listed in the configuration file). + echo + echo -n "The following components of FreeBSD " + echo "seem to be installed:" + tr '|' '/' < comp.present | + fmt -72 + echo + echo -n "The following components of FreeBSD " + echo "do not seem to be installed:" + tr '|' '/' < comp.absent | + fmt -72 + echo + continuep || return 1 + echo + + # Suck the generated list of components into ${COMPONENTS}. + # Note that comp.present.tmp is used due to issues with + # pipelines and setting variables. + COMPONENTS="" + tr '|' '/' < comp.present > comp.present.tmp + while read C; do + COMPONENTS="${COMPONENTS} ${C}" + done < comp.present.tmp + + # Delete temporary files + rm comp.present comp.present.tmp comp.absent comp.total + fi +} + +# If StrictComponents is not "yes", COMPONENTS contains an entry +# corresponding to the currently running kernel, and said kernel +# does not exist in the new release, add "kernel/generic" to the +# list of components. +upgrade_guess_new_kernel () { + if [ "${STRICTCOMPONENTS}" = "no" ]; then + # Grab the unfiltered metadata file. + METAHASH=`look "$1|" tINDEX.present | cut -f 2 -d '|'` + gunzip -c < files/${METAHASH}.gz > $1.all + + # If "kernel/${KCOMP}" is in ${COMPONENTS} and that component + # isn't in $1.all, we need to add kernel/generic. + for C in ${COMPONENTS}; do + if [ ${C} = "kernel/${KCOMP}" ] && + ! grep -qE "^kernel\|${KCOMP}\|" $1.all; then + COMPONENTS="${COMPONENTS} kernel/generic" + NKERNCONF="GENERIC" + cat <<-EOF + +WARNING: This system is running a "${KCOMP}" kernel, which is not a +kernel configuration distributed as part of FreeBSD ${RELNUM}. +As part of upgrading to FreeBSD ${RELNUM}, this kernel will be +replaced with a "generic" kernel. + EOF + continuep || return 1 + fi + done + + # Don't need this any more... + rm $1.all + fi +} + +# Convert INDEX-OLD (last release) and INDEX-ALL (new release) into +# INDEX-OLD and INDEX-NEW files (in the sense of normal upgrades). +upgrade_oldall_to_oldnew () { + # For each ${F}|... which appears in INDEX-ALL but does not appear + # in INDEX-OLD, add ${F}|-|||||| to INDEX-OLD. + cut -f 1 -d '|' < $1 | + sort -u > $1.paths + cut -f 1 -d '|' < $2 | + sort -u | + comm -13 $1.paths - | + lam - -s "|-||||||" | + sort - $1 > $1.tmp + mv $1.tmp $1 + + # Remove lines from INDEX-OLD which also appear in INDEX-ALL + comm -23 $1 $2 > $1.tmp + mv $1.tmp $1 + + # Remove lines from INDEX-ALL which have a file name not appearing + # anywhere in INDEX-OLD (since these must be files which haven't + # changed -- if they were new, there would be an entry of type "-"). + cut -f 1 -d '|' < $1 | + sort -u > $1.paths + sort -k 1,1 -t '|' < $2 | + join -t '|' - $1.paths | + sort > $2.tmp + rm $1.paths + mv $2.tmp $2 + + # Rename INDEX-ALL to INDEX-NEW. + mv $2 $3 +} + +# Helper for upgrade_merge: Return zero true iff the two files differ only +# in the contents of their RCS tags. +samef () { + X=`sed -E 's/\\$FreeBSD.*\\$/\$FreeBSD\$/' < $1 | ${SHA256}` + Y=`sed -E 's/\\$FreeBSD.*\\$/\$FreeBSD\$/' < $2 | ${SHA256}` + + if [ $X = $Y ]; then + return 0; + else + return 1; + fi +} + +# From the list of "old" files in $1, merge changes in $2 with those in $3, +# and update $3 to reflect the hashes of merged files. +upgrade_merge () { + # We only need to do anything if $1 is non-empty. + if [ -s $1 ]; then + cut -f 1 -d '|' $1 | + sort > $1-paths + + # Create staging area for merging files + rm -rf merge/ + while read F; do + D=`dirname ${F}` + mkdir -p merge/old/${D} + mkdir -p merge/${OLDRELNUM}/${D} + mkdir -p merge/${RELNUM}/${D} + mkdir -p merge/new/${D} + done < $1-paths + + # Copy in files + while read F; do + # Currently installed file + V=`look "${F}|" $2 | cut -f 7 -d '|'` + gunzip < files/${V}.gz > merge/old/${F} + + # Old release + if look "${F}|" $1 | fgrep -q "|f|"; then + V=`look "${F}|" $1 | cut -f 3 -d '|'` + gunzip < files/${V}.gz \ + > merge/${OLDRELNUM}/${F} + fi + + # New release + if look "${F}|" $3 | cut -f 1,2,7 -d '|' | + fgrep -q "|f|"; then + V=`look "${F}|" $3 | cut -f 7 -d '|'` + gunzip < files/${V}.gz \ + > merge/${RELNUM}/${F} + fi + done < $1-paths + + # Attempt to automatically merge changes + echo -n "Attempting to automatically merge " + echo -n "changes in files..." + : > failed.merges + while read F; do + # If the file doesn't exist in the new release, + # the result of "merging changes" is having the file + # not exist. + if ! [ -f merge/${RELNUM}/${F} ]; then + continue + fi + + # If the file didn't exist in the old release, we're + # going to throw away the existing file and hope that + # the version from the new release is what we want. + if ! [ -f merge/${OLDRELNUM}/${F} ]; then + cp merge/${RELNUM}/${F} merge/new/${F} + continue + fi + + # Some files need special treatment. + case ${F} in + /etc/spwd.db | /etc/pwd.db | /etc/login.conf.db) + # Don't merge these -- we're rebuild them + # after updates are installed. + cp merge/old/${F} merge/new/${F} + ;; + *) + if ! diff3 -E -m -L "current version" \ + -L "${OLDRELNUM}" -L "${RELNUM}" \ + merge/old/${F} \ + merge/${OLDRELNUM}/${F} \ + merge/${RELNUM}/${F} \ + > merge/new/${F} 2>/dev/null; then + echo ${F} >> failed.merges + fi + ;; + esac + done < $1-paths + echo " done." + + # Ask the user to handle any files which didn't merge. + while read F; do + # If the installed file differs from the version in + # the old release only due to RCS tag expansion + # then just use the version in the new release. + if samef merge/old/${F} merge/${OLDRELNUM}/${F}; then + cp merge/${RELNUM}/${F} merge/new/${F} + continue + fi + + cat <<-EOF + +The following file could not be merged automatically: ${F} +Press Enter to edit this file in ${EDITOR} and resolve the conflicts +manually... + EOF + read dummy files/${V}.gz + echo "${F}|${V}" + fi + done < $1-paths > newhashes + + # Pull lines out from $3 which need to be updated to + # reflect merged files. + while read F; do + look "${F}|" $3 + done < $1-paths > $3-oldlines + + # Update lines to reflect merged files + join -t '|' -o 1.1,1.2,1.3,1.4,1.5,1.6,2.2,1.8 \ + $3-oldlines newhashes > $3-newlines + + # Remove old lines from $3 and add new lines. + sort $3-oldlines | + comm -13 - $3 | + sort - $3-newlines > $3.tmp + mv $3.tmp $3 + + # Clean up + rm $1-paths newhashes $3-oldlines $3-newlines + rm -rf merge/ + fi + + # We're done with merging files. + rm $1 +} + +# Do the work involved in fetching upgrades to a new release +upgrade_run () { + workdir_init || return 1 + + # Prepare the mirror list. + fetch_pick_server_init && fetch_pick_server + + # Try to fetch the public key until we run out of servers. + while ! fetch_key; do + fetch_pick_server || return 1 + done + + # Try to fetch the metadata index signature ("tag") until we run + # out of available servers; and sanity check the downloaded tag. + while ! fetch_tag; do + fetch_pick_server || return 1 + done + fetch_tagsanity || return 1 + + # Fetch the INDEX-OLD and INDEX-ALL. + fetch_metadata INDEX-OLD INDEX-ALL || return 1 + + # If StrictComponents is not "yes", generate a new components list + # with only the components which appear to be installed. + upgrade_guess_components INDEX-ALL || return 1 + + # Generate filtered INDEX-OLD and INDEX-ALL files containing only + # the components we want and without anything marked as "Ignore". + fetch_filter_metadata INDEX-OLD || return 1 + fetch_filter_metadata INDEX-ALL || return 1 + + # Merge the INDEX-OLD and INDEX-ALL files into INDEX-OLD. + sort INDEX-OLD INDEX-ALL > INDEX-OLD.tmp + mv INDEX-OLD.tmp INDEX-OLD + rm INDEX-ALL + + # Adjust variables for fetching files from the new release. + OLDRELNUM=${RELNUM} + RELNUM=${TARGETRELEASE} + OLDFETCHDIR=${FETCHDIR} + FETCHDIR=${RELNUM}/${ARCH} + + # Try to fetch the NEW metadata index signature ("tag") until we run + # out of available servers; and sanity check the downloaded tag. + while ! fetch_tag; do + fetch_pick_server || return 1 + done + + # Fetch the new INDEX-ALL. + fetch_metadata INDEX-ALL || return 1 + + # If StrictComponents is not "yes", COMPONENTS contains an entry + # corresponding to the currently running kernel, and said kernel + # does not exist in the new release, add "kernel/generic" to the + # list of components. + upgrade_guess_new_kernel INDEX-ALL || return 1 + + # Filter INDEX-ALL to contain only the components we want and without + # anything marked as "Ignore". + fetch_filter_metadata INDEX-ALL || return 1 + + # Convert INDEX-OLD (last release) and INDEX-ALL (new release) into + # INDEX-OLD and INDEX-NEW files (in the sense of normal upgrades). + upgrade_oldall_to_oldnew INDEX-OLD INDEX-ALL INDEX-NEW + + # Translate /boot/${KERNCONF} or /boot/${NKERNCONF} into ${KERNELDIR} + fetch_filter_kernel_names INDEX-NEW ${NKERNCONF} + fetch_filter_kernel_names INDEX-OLD ${KERNCONF} + + # For all paths appearing in INDEX-OLD or INDEX-NEW, inspect the + # system and generate an INDEX-PRESENT file. + fetch_inspect_system INDEX-OLD INDEX-PRESENT INDEX-NEW || return 1 + + # Based on ${MERGECHANGES}, generate a file tomerge-old with the + # paths and hashes of old versions of files to merge. + fetch_filter_mergechanges INDEX-OLD INDEX-PRESENT tomerge-old + + # Based on ${UPDATEIFUNMODIFIED}, remove lines from INDEX-* which + # correspond to lines in INDEX-PRESENT with hashes not appearing + # in INDEX-OLD or INDEX-NEW. Also remove lines where the entry in + # INDEX-PRESENT has type - and there isn't a corresponding entry in + # INDEX-OLD with type -. + fetch_filter_unmodified_notpresent \ + INDEX-OLD INDEX-PRESENT INDEX-NEW tomerge-old + + # For each entry in INDEX-PRESENT of type -, remove any corresponding + # entry from INDEX-NEW if ${ALLOWADD} != "yes". Remove all entries + # of type - from INDEX-PRESENT. + fetch_filter_allowadd INDEX-PRESENT INDEX-NEW + + # If ${ALLOWDELETE} != "yes", then remove any entries from + # INDEX-PRESENT which don't correspond to entries in INDEX-NEW. + fetch_filter_allowdelete INDEX-PRESENT INDEX-NEW + + # If ${KEEPMODIFIEDMETADATA} == "yes", then for each entry in + # INDEX-PRESENT with metadata not matching any entry in INDEX-OLD, + # replace the corresponding line of INDEX-NEW with one having the + # same metadata as the entry in INDEX-PRESENT. + fetch_filter_modified_metadata INDEX-OLD INDEX-PRESENT INDEX-NEW + + # Remove lines from INDEX-PRESENT and INDEX-NEW which are identical; + # no need to update a file if it isn't changing. + fetch_filter_uptodate INDEX-PRESENT INDEX-NEW + + # Fetch "clean" files from the old release for merging changes. + fetch_files_premerge tomerge-old + + # Prepare to fetch files: Generate a list of the files we need, + # copy the unmodified files we have into /files/, and generate + # a list of patches to download. + fetch_files_prepare INDEX-OLD INDEX-PRESENT INDEX-NEW || return 1 + + # Fetch patches from to-${RELNUM}/${ARCH}/bp/ + PATCHDIR=to-${RELNUM}/${ARCH}/bp + fetch_files || return 1 + + # Merge configuration file changes. + upgrade_merge tomerge-old INDEX-PRESENT INDEX-NEW || return 1 + + # Create and populate install manifest directory; and report what + # updates are available. + fetch_create_manifest || return 1 + + # Leave a note behind to tell the "install" command that the kernel + # needs to be installed before the world. + touch ${BDHASH}-install/kernelfirst + + # Remind the user that they need to run "freebsd-update install" + # to install the downloaded bits, in case they didn't RTFM. + echo "To install the downloaded upgrades, run \"$0 install\"." +} + +# Make sure that all the file hashes mentioned in $@ have corresponding +# gzipped files stored in /files/. +install_verify () { + # Generate a list of hashes + cat $@ | + cut -f 2,7 -d '|' | + grep -E '^f' | + cut -f 2 -d '|' | + sort -u > filelist + + # Make sure all the hashes exist + while read HASH; do + if ! [ -f files/${HASH}.gz ]; then + echo -n "Update files missing -- " + echo "this should never happen." + echo "Re-run '$0 fetch'." + return 1 + fi + done < filelist + + # Clean up + rm filelist +} + +# Remove the system immutable flag from files +install_unschg () { + # Generate file list + cat $@ | + cut -f 1 -d '|' > filelist + + # Remove flags + while read F; do + if ! [ -e ${BASEDIR}/${F} ]; then + continue + else + echo ${BASEDIR}/${F} + fi + done < filelist | xargs chflags noschg || return 1 + + # Clean up + rm filelist +} + +# Decide which directory name to use for kernel backups. +backup_kernel_finddir () { + CNT=0 + while true ; do + # Pathname does not exist, so it is OK use that name + # for backup directory. + if [ ! -e $BASEDIR/$BACKUPKERNELDIR ]; then + return 0 + fi + + # If directory do exist, we only use if it has our + # marker file. + if [ -d $BASEDIR/$BACKUPKERNELDIR -a \ + -e $BASEDIR/$BACKUPKERNELDIR/.freebsd-update ]; then + return 0 + fi + + # We could not use current directory name, so add counter to + # the end and try again. + CNT=$((CNT + 1)) + if [ $CNT -gt 9 ]; then + echo "Could not find valid backup dir ($BASEDIR/$BACKUPKERNELDIR)" + exit 1 + fi + BACKUPKERNELDIR="`echo $BACKUPKERNELDIR | sed -Ee 's/[0-9]\$//'`" + BACKUPKERNELDIR="${BACKUPKERNELDIR}${CNT}" + done +} + +# Backup the current kernel using hardlinks, if not disabled by user. +# Since we delete all files in the directory used for previous backups +# we create a marker file called ".freebsd-update" in the directory so +# we can determine on the next run that the directory was created by +# freebsd-update and we then do not accidentally remove user files in +# the unlikely case that the user has created a directory with a +# conflicting name. +backup_kernel () { + # Only make kernel backup is so configured. + if [ $BACKUPKERNEL != yes ]; then + return 0 + fi + + # Decide which directory name to use for kernel backups. + backup_kernel_finddir + + # Remove old kernel backup files. If $BACKUPKERNELDIR was + # "not ours", backup_kernel_finddir would have exited, so + # deleting the directory content is as safe as we can make it. + if [ -d $BASEDIR/$BACKUPKERNELDIR ]; then + rm -fr $BASEDIR/$BACKUPKERNELDIR + fi + + # Create directories for backup. + mkdir -p $BASEDIR/$BACKUPKERNELDIR + mtree -cdn -p "${BASEDIR}/${KERNELDIR}" | \ + mtree -Ue -p "${BASEDIR}/${BACKUPKERNELDIR}" > /dev/null + + # Mark the directory as having been created by freebsd-update. + touch $BASEDIR/$BACKUPKERNELDIR/.freebsd-update + if [ $? -ne 0 ]; then + echo "Could not create kernel backup directory" + exit 1 + fi + + # Disable pathname expansion to be sure *.symbols is not + # expanded. + set -f + + # Use find to ignore symbol files, unless disabled by user. + if [ $BACKUPKERNELSYMBOLFILES = yes ]; then + FINDFILTER="" + else + FINDFILTER="-a ! -name *.debug -a ! -name *.symbols" + fi + + # Backup all the kernel files using hardlinks. + (cd ${BASEDIR}/${KERNELDIR} && find . -type f $FINDFILTER -exec \ + cp -pl '{}' ${BASEDIR}/${BACKUPKERNELDIR}/'{}' \;) + + # Re-enable patchname expansion. + set +f +} + +# Install new files +install_from_index () { + # First pass: Do everything apart from setting file flags. We + # can't set flags yet, because schg inhibits hard linking. + sort -k 1,1 -t '|' $1 | + tr '|' ' ' | + while read FPATH TYPE OWNER GROUP PERM FLAGS HASH LINK; do + case ${TYPE} in + d) + # Create a directory + install -d -o ${OWNER} -g ${GROUP} \ + -m ${PERM} ${BASEDIR}/${FPATH} + ;; + f) + if [ -z "${LINK}" ]; then + # Create a file, without setting flags. + gunzip < files/${HASH}.gz > ${HASH} + install -S -o ${OWNER} -g ${GROUP} \ + -m ${PERM} ${HASH} ${BASEDIR}/${FPATH} + rm ${HASH} + else + # Create a hard link. + ln -f ${BASEDIR}/${LINK} ${BASEDIR}/${FPATH} + fi + ;; + L) + # Create a symlink + ln -sfh ${HASH} ${BASEDIR}/${FPATH} + ;; + esac + done + + # Perform a second pass, adding file flags. + tr '|' ' ' < $1 | + while read FPATH TYPE OWNER GROUP PERM FLAGS HASH LINK; do + if [ ${TYPE} = "f" ] && + ! [ ${FLAGS} = "0" ]; then + chflags ${FLAGS} ${BASEDIR}/${FPATH} + fi + done +} + +# Remove files which we want to delete +install_delete () { + # Generate list of new files + cut -f 1 -d '|' < $2 | + sort > newfiles + + # Generate subindex of old files we want to nuke + sort -k 1,1 -t '|' $1 | + join -t '|' -v 1 - newfiles | + sort -r -k 1,1 -t '|' | + cut -f 1,2 -d '|' | + tr '|' ' ' > killfiles + + # Remove the offending bits + while read FPATH TYPE; do + case ${TYPE} in + d) + rmdir ${BASEDIR}/${FPATH} + ;; + f) + rm ${BASEDIR}/${FPATH} + ;; + L) + rm ${BASEDIR}/${FPATH} + ;; + esac + done < killfiles + + # Clean up + rm newfiles killfiles +} + +# Install new files, delete old files, and update generated files +install_files () { + # If we haven't already dealt with the kernel, deal with it. + if ! [ -f $1/kerneldone ]; then + grep -E '^/boot/' $1/INDEX-OLD > INDEX-OLD + grep -E '^/boot/' $1/INDEX-NEW > INDEX-NEW + + # Backup current kernel before installing a new one + backup_kernel || return 1 + + # Install new files + install_from_index INDEX-NEW || return 1 + + # Remove files which need to be deleted + install_delete INDEX-OLD INDEX-NEW || return 1 + + # Update linker.hints if necessary + if [ -s INDEX-OLD -o -s INDEX-NEW ]; then + kldxref -R ${BASEDIR}/boot/ 2>/dev/null + fi + + # We've finished updating the kernel. + touch $1/kerneldone + + # Do we need to ask for a reboot now? + if [ -f $1/kernelfirst ] && + [ -s INDEX-OLD -o -s INDEX-NEW ]; then + cat <<-EOF + +Kernel updates have been installed. Please reboot and run +"$0 install" again to finish installing updates. + EOF + exit 0 + fi + fi + + # If we haven't already dealt with the world, deal with it. + if ! [ -f $1/worlddone ]; then + # Create any necessary directories first + grep -vE '^/boot/' $1/INDEX-NEW | + grep -E '^[^|]+\|d\|' > INDEX-NEW + install_from_index INDEX-NEW || return 1 + + # Install new runtime linker + grep -vE '^/boot/' $1/INDEX-NEW | + grep -vE '^[^|]+\|d\|' | + grep -E '^/libexec/ld-elf[^|]*\.so\.[0-9]+\|' > INDEX-NEW + install_from_index INDEX-NEW || return 1 + + # Install new shared libraries next + grep -vE '^/boot/' $1/INDEX-NEW | + grep -vE '^[^|]+\|d\|' | + grep -vE '^/libexec/ld-elf[^|]*\.so\.[0-9]+\|' | + grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-NEW + install_from_index INDEX-NEW || return 1 + + # Deal with everything else + grep -vE '^/boot/' $1/INDEX-OLD | + grep -vE '^[^|]+\|d\|' | + grep -vE '^/libexec/ld-elf[^|]*\.so\.[0-9]+\|' | + grep -vE '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-OLD + grep -vE '^/boot/' $1/INDEX-NEW | + grep -vE '^[^|]+\|d\|' | + grep -vE '^/libexec/ld-elf[^|]*\.so\.[0-9]+\|' | + grep -vE '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-NEW + install_from_index INDEX-NEW || return 1 + install_delete INDEX-OLD INDEX-NEW || return 1 + + # Rehash certs if we actually have certctl installed. + if which certctl>/dev/null; then + env DESTDIR=${BASEDIR} certctl rehash + fi + + # Rebuild generated pwd files and /etc/login.conf.db. + pwd_mkdb -d ${BASEDIR}/etc -p ${BASEDIR}/etc/master.passwd + cap_mkdb ${BASEDIR}/etc/login.conf + + # Rebuild man page databases, if necessary. + for D in /usr/share/man /usr/share/openssl/man; do + if [ ! -d ${BASEDIR}/$D ]; then + continue + fi + if [ -f ${BASEDIR}/$D/mandoc.db ] && \ + [ -z "$(find ${BASEDIR}/$D -type f -newer ${BASEDIR}/$D/mandoc.db)" ]; then + continue; + fi + makewhatis ${BASEDIR}/$D + done + + # We've finished installing the world and deleting old files + # which are not shared libraries. + touch $1/worlddone + + # Do we need to ask the user to portupgrade now? + grep -vE '^/boot/' $1/INDEX-NEW | + grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' | + cut -f 1 -d '|' | + sort > newfiles + if grep -vE '^/boot/' $1/INDEX-OLD | + grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' | + cut -f 1 -d '|' | + sort | + join -v 1 - newfiles | + grep -q .; then + cat <<-EOF + +Completing this upgrade requires removing old shared object files. +Please rebuild all installed 3rd party software (e.g., programs +installed from the ports tree) and then run "$0 install" +again to finish installing updates. + EOF + rm newfiles + exit 0 + fi + rm newfiles + fi + + # Remove old shared libraries + grep -vE '^/boot/' $1/INDEX-NEW | + grep -vE '^[^|]+\|d\|' | + grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-NEW + grep -vE '^/boot/' $1/INDEX-OLD | + grep -vE '^[^|]+\|d\|' | + grep -E '^[^|]*/lib/[^|]*\.so\.[0-9]+\|' > INDEX-OLD + install_delete INDEX-OLD INDEX-NEW || return 1 + + # Remove old directories + grep -vE '^/boot/' $1/INDEX-NEW | + grep -E '^[^|]+\|d\|' > INDEX-NEW + grep -vE '^/boot/' $1/INDEX-OLD | + grep -E '^[^|]+\|d\|' > INDEX-OLD + install_delete INDEX-OLD INDEX-NEW || return 1 + + # Remove temporary files + rm INDEX-OLD INDEX-NEW +} + +# Rearrange bits to allow the installed updates to be rolled back +install_setup_rollback () { + # Remove the "reboot after installing kernel", "kernel updated", and + # "finished installing the world" flags if present -- they are + # irrelevant when rolling back updates. + if [ -f ${BDHASH}-install/kernelfirst ]; then + rm ${BDHASH}-install/kernelfirst + rm ${BDHASH}-install/kerneldone + fi + if [ -f ${BDHASH}-install/worlddone ]; then + rm ${BDHASH}-install/worlddone + fi + + if [ -L ${BDHASH}-rollback ]; then + mv ${BDHASH}-rollback ${BDHASH}-install/rollback + fi + + mv ${BDHASH}-install ${BDHASH}-rollback +} + +# Actually install updates +install_run () { + echo -n "Installing updates..." + + # Make sure we have all the files we should have + install_verify ${BDHASH}-install/INDEX-OLD \ + ${BDHASH}-install/INDEX-NEW || return 1 + + # Remove system immutable flag from files + install_unschg ${BDHASH}-install/INDEX-OLD \ + ${BDHASH}-install/INDEX-NEW || return 1 + + # Install new files, delete old files, and update linker.hints + install_files ${BDHASH}-install || return 1 + + # Rearrange bits to allow the installed updates to be rolled back + install_setup_rollback + + echo " done." +} + +# Rearrange bits to allow the previous set of updates to be rolled back next. +rollback_setup_rollback () { + if [ -L ${BDHASH}-rollback/rollback ]; then + mv ${BDHASH}-rollback/rollback rollback-tmp + rm -r ${BDHASH}-rollback/ + rm ${BDHASH}-rollback + mv rollback-tmp ${BDHASH}-rollback + else + rm -r ${BDHASH}-rollback/ + rm ${BDHASH}-rollback + fi +} + +# Install old files, delete new files, and update linker.hints +rollback_files () { + # Install old shared library files which don't have the same path as + # a new shared library file. + grep -vE '^/boot/' $1/INDEX-NEW | + grep -E '/lib/.*\.so\.[0-9]+\|' | + cut -f 1 -d '|' | + sort > INDEX-NEW.libs.flist + grep -vE '^/boot/' $1/INDEX-OLD | + grep -E '/lib/.*\.so\.[0-9]+\|' | + sort -k 1,1 -t '|' - | + join -t '|' -v 1 - INDEX-NEW.libs.flist > INDEX-OLD + install_from_index INDEX-OLD || return 1 + + # Deal with files which are neither kernel nor shared library + grep -vE '^/boot/' $1/INDEX-OLD | + grep -vE '/lib/.*\.so\.[0-9]+\|' > INDEX-OLD + grep -vE '^/boot/' $1/INDEX-NEW | + grep -vE '/lib/.*\.so\.[0-9]+\|' > INDEX-NEW + install_from_index INDEX-OLD || return 1 + install_delete INDEX-NEW INDEX-OLD || return 1 + + # Install any old shared library files which we didn't install above. + grep -vE '^/boot/' $1/INDEX-OLD | + grep -E '/lib/.*\.so\.[0-9]+\|' | + sort -k 1,1 -t '|' - | + join -t '|' - INDEX-NEW.libs.flist > INDEX-OLD + install_from_index INDEX-OLD || return 1 + + # Delete unneeded shared library files + grep -vE '^/boot/' $1/INDEX-OLD | + grep -E '/lib/.*\.so\.[0-9]+\|' > INDEX-OLD + grep -vE '^/boot/' $1/INDEX-NEW | + grep -E '/lib/.*\.so\.[0-9]+\|' > INDEX-NEW + install_delete INDEX-NEW INDEX-OLD || return 1 + + # Deal with kernel files + grep -E '^/boot/' $1/INDEX-OLD > INDEX-OLD + grep -E '^/boot/' $1/INDEX-NEW > INDEX-NEW + install_from_index INDEX-OLD || return 1 + install_delete INDEX-NEW INDEX-OLD || return 1 + if [ -s INDEX-OLD -o -s INDEX-NEW ]; then + kldxref -R /boot/ 2>/dev/null + fi + + # Remove temporary files + rm INDEX-OLD INDEX-NEW INDEX-NEW.libs.flist +} + +# Actually rollback updates +rollback_run () { + echo -n "Uninstalling updates..." + + # If there are updates waiting to be installed, remove them; we + # want the user to re-run 'fetch' after rolling back updates. + if [ -L ${BDHASH}-install ]; then + rm -r ${BDHASH}-install/ + rm ${BDHASH}-install + fi + + # Make sure we have all the files we should have + install_verify ${BDHASH}-rollback/INDEX-NEW \ + ${BDHASH}-rollback/INDEX-OLD || return 1 + + # Remove system immutable flag from files + install_unschg ${BDHASH}-rollback/INDEX-NEW \ + ${BDHASH}-rollback/INDEX-OLD || return 1 + + # Install old files, delete new files, and update linker.hints + rollback_files ${BDHASH}-rollback || return 1 + + # Remove the rollback directory and the symlink pointing to it; and + # rearrange bits to allow the previous set of updates to be rolled + # back next. + rollback_setup_rollback + + echo " done." +} + +# Compare INDEX-ALL and INDEX-PRESENT and print warnings about differences. +IDS_compare () { + # Get all the lines which mismatch in something other than file + # flags. We ignore file flags because sysinstall doesn't seem to + # set them when it installs FreeBSD; warning about these adds a + # very large amount of noise. + cut -f 1-5,7-8 -d '|' $1 > $1.noflags + sort -k 1,1 -t '|' $1.noflags > $1.sorted + cut -f 1-5,7-8 -d '|' $2 | + comm -13 $1.noflags - | + fgrep -v '|-|||||' | + sort -k 1,1 -t '|' | + join -t '|' $1.sorted - > INDEX-NOTMATCHING + + # Ignore files which match IDSIGNOREPATHS. + for X in ${IDSIGNOREPATHS}; do + grep -E "^${X}" INDEX-NOTMATCHING + done | + sort -u | + comm -13 - INDEX-NOTMATCHING > INDEX-NOTMATCHING.tmp + mv INDEX-NOTMATCHING.tmp INDEX-NOTMATCHING + + # Go through the lines and print warnings. + local IFS='|' + while read FPATH TYPE OWNER GROUP PERM HASH LINK P_TYPE P_OWNER P_GROUP P_PERM P_HASH P_LINK; do + # Warn about different object types. + if ! [ "${TYPE}" = "${P_TYPE}" ]; then + echo -n "${FPATH} is a " + case "${P_TYPE}" in + f) echo -n "regular file, " + ;; + d) echo -n "directory, " + ;; + L) echo -n "symlink, " + ;; + esac + echo -n "but should be a " + case "${TYPE}" in + f) echo -n "regular file." + ;; + d) echo -n "directory." + ;; + L) echo -n "symlink." + ;; + esac + echo + + # Skip other tests, since they don't make sense if + # we're comparing different object types. + continue + fi + + # Warn about different owners. + if ! [ "${OWNER}" = "${P_OWNER}" ]; then + echo -n "${FPATH} is owned by user id ${P_OWNER}, " + echo "but should be owned by user id ${OWNER}." + fi + + # Warn about different groups. + if ! [ "${GROUP}" = "${P_GROUP}" ]; then + echo -n "${FPATH} is owned by group id ${P_GROUP}, " + echo "but should be owned by group id ${GROUP}." + fi + + # Warn about different permissions. We do not warn about + # different permissions on symlinks, since some archivers + # don't extract symlink permissions correctly and they are + # ignored anyway. + if ! [ "${PERM}" = "${P_PERM}" ] && + ! [ "${TYPE}" = "L" ]; then + echo -n "${FPATH} has ${P_PERM} permissions, " + echo "but should have ${PERM} permissions." + fi + + # Warn about different file hashes / symlink destinations. + if ! [ "${HASH}" = "${P_HASH}" ]; then + if [ "${TYPE}" = "L" ]; then + echo -n "${FPATH} is a symlink to ${P_HASH}, " + echo "but should be a symlink to ${HASH}." + fi + if [ "${TYPE}" = "f" ]; then + echo -n "${FPATH} has SHA256 hash ${P_HASH}, " + echo "but should have SHA256 hash ${HASH}." + fi + fi + + # We don't warn about different hard links, since some + # some archivers break hard links, and as long as the + # underlying data is correct they really don't matter. + done < INDEX-NOTMATCHING + + # Clean up + rm $1 $1.noflags $1.sorted $2 INDEX-NOTMATCHING +} + +# Do the work involved in comparing the system to a "known good" index +IDS_run () { + workdir_init || return 1 + + # Prepare the mirror list. + fetch_pick_server_init && fetch_pick_server + + # Try to fetch the public key until we run out of servers. + while ! fetch_key; do + fetch_pick_server || return 1 + done + + # Try to fetch the metadata index signature ("tag") until we run + # out of available servers; and sanity check the downloaded tag. + while ! fetch_tag; do + fetch_pick_server || return 1 + done + fetch_tagsanity || return 1 + + # Fetch INDEX-OLD and INDEX-ALL. + fetch_metadata INDEX-OLD INDEX-ALL || return 1 + + # Generate filtered INDEX-OLD and INDEX-ALL files containing only + # the components we want and without anything marked as "Ignore". + fetch_filter_metadata INDEX-OLD || return 1 + fetch_filter_metadata INDEX-ALL || return 1 + + # Merge the INDEX-OLD and INDEX-ALL files into INDEX-ALL. + sort INDEX-OLD INDEX-ALL > INDEX-ALL.tmp + mv INDEX-ALL.tmp INDEX-ALL + rm INDEX-OLD + + # Translate /boot/${KERNCONF} to ${KERNELDIR} + fetch_filter_kernel_names INDEX-ALL ${KERNCONF} + + # Inspect the system and generate an INDEX-PRESENT file. + fetch_inspect_system INDEX-ALL INDEX-PRESENT /dev/null || return 1 + + # Compare INDEX-ALL and INDEX-PRESENT and print warnings about any + # differences. + IDS_compare INDEX-ALL INDEX-PRESENT +} + +#### Main functions -- call parameter-handling and core functions + +# Using the command line, configuration file, and defaults, +# set all the parameters which are needed later. +get_params () { + init_params + parse_cmdline $@ + parse_conffile + default_params +} + +# Fetch command. Make sure that we're being called +# interactively, then run fetch_check_params and fetch_run +cmd_fetch () { + finalize_components_config ${COMPONENTS} + if [ ! -t 0 -a $NOTTYOK -eq 0 ]; then + echo -n "`basename $0` fetch should not " + echo "be run non-interactively." + echo "Run `basename $0` cron instead." + exit 1 + fi + fetch_check_params + fetch_run || exit 1 + ISFETCHED=1 +} + +# Cron command. Make sure the parameters are sensible; wait +# rand(3600) seconds; then fetch updates. While fetching updates, +# send output to a temporary file; only print that file if the +# fetching failed. +cmd_cron () { + fetch_check_params + sleep `jot -r 1 0 3600` + + TMPFILE=`mktemp /tmp/freebsd-update.XXXXXX` || exit 1 + finalize_components_config ${COMPONENTS} >> ${TMPFILE} + if ! fetch_run >> ${TMPFILE} || + ! grep -q "No updates needed" ${TMPFILE} || + [ ${VERBOSELEVEL} = "debug" ]; then + mail -s "`hostname` security updates" ${MAILTO} < ${TMPFILE} + fi + + rm ${TMPFILE} +} + +# Fetch files for upgrading to a new release. +cmd_upgrade () { + finalize_components_config ${COMPONENTS} + upgrade_check_params + upgrade_run || exit 1 +} + +# Check if there are fetched updates ready to install. +# Chdir into the working directory. +cmd_updatesready () { + finalize_components_config ${COMPONENTS} + # Check if working directory exists (if not, no updates pending) + if ! [ -e "${WORKDIR}" ]; then + echo "No updates are available to install." + exit 2 + fi + + # Change into working directory (fail if no permission/directory etc.) + cd ${WORKDIR} || exit 1 + + # Construct a unique name from ${BASEDIR} + BDHASH=`echo ${BASEDIR} | sha256 -q` + + # Check that we have updates ready to install + if ! [ -L ${BDHASH}-install ]; then + echo "No updates are available to install." + exit 2 + fi + + echo "There are updates available to install." + echo "Run '$0 install' to proceed." +} + +# Install downloaded updates. +cmd_install () { + finalize_components_config ${COMPONENTS} + install_check_params + install_create_be + install_run || exit 1 +} + +# Rollback most recently installed updates. +cmd_rollback () { + finalize_components_config ${COMPONENTS} + rollback_check_params + rollback_run || exit 1 +} + +# Compare system against a "known good" index. +cmd_IDS () { + finalize_components_config ${COMPONENTS} + IDS_check_params + IDS_run || exit 1 +} + +# Output configuration. +cmd_showconfig () { + finalize_components_config ${COMPONENTS} + for X in ${CONFIGOPTIONS}; do + echo $X=$(eval echo \$${X}) + done +} + +#### Entry point + +# Make sure we find utilities from the base system +export PATH=/sbin:/bin:/usr/sbin:/usr/bin:${PATH} + +# Set a pager if the user doesn't +if [ -z "$PAGER" ]; then + PAGER=/usr/bin/less +fi + +# Set LC_ALL in order to avoid problems with character ranges like [A-Z]. +export LC_ALL=C + +get_params $@ +for COMMAND in ${COMMANDS}; do + cmd_${COMMAND} +done diff --git a/conf/system/freebsd-update/13.1/freebsd-update.conf b/conf/system/freebsd-update/13.1/freebsd-update.conf new file mode 100644 index 0000000..62e6acf --- /dev/null +++ b/conf/system/freebsd-update/13.1/freebsd-update.conf @@ -0,0 +1,79 @@ +# $FreeBSD$ + +# Trusted keyprint. Changing this is a Bad Idea unless you've received +# a PGP-signed email from telling you to +# change it and explaining why. +KeyPrint 800651ef4b4c71c27e60786d7b487188970f4b4169cc055784e21eb71d410cc5 + +# Server or server pool from which to fetch updates. You can change +# this to point at a specific server if you want, but in most cases +# using a "nearby" server won't provide a measurable improvement in +# performance. +ServerName update.FreeBSD.org + +# Components of the base system which should be kept updated. +Components src world kernel + +# Example for updating the userland and the kernel source code only: +# Components src/base src/sys world + +# Paths which start with anything matching an entry in an IgnorePaths +# statement will be ignored. +IgnorePaths + +# Paths which start with anything matching an entry in an IDSIgnorePaths +# statement will be ignored by "freebsd-update IDS". +IDSIgnorePaths /usr/share/man/cat +IDSIgnorePaths /usr/share/man/whatis +IDSIgnorePaths /var/db/locate.database +IDSIgnorePaths /var/log + +# Paths which start with anything matching an entry in an UpdateIfUnmodified +# statement will only be updated if the contents of the file have not been +# modified by the user (unless changes are merged; see below). +UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile + +# When upgrading to a new FreeBSD release, files which match MergeChanges +# will have any local changes merged into the version from the new release. +MergeChanges /etc/ /boot/device.hints + +### Default configuration options: + +# Directory in which to store downloaded updates and temporary +# files used by FreeBSD Update. +# WorkDir /var/db/freebsd-update + +# Destination to send output of "freebsd-update cron" if an error +# occurs or updates have been downloaded. +# MailTo root + +# Is FreeBSD Update allowed to create new files? +# AllowAdd yes + +# Is FreeBSD Update allowed to delete files? +# AllowDelete yes + +# If the user has modified file ownership, permissions, or flags, should +# FreeBSD Update retain this modified metadata when installing a new version +# of that file? +# KeepModifiedMetadata yes + +# When upgrading between releases, should the list of Components be +# read strictly (StrictComponents yes) or merely as a list of components +# which *might* be installed of which FreeBSD Update should figure out +# which actually are installed and upgrade those (StrictComponents no)? +# StrictComponents no + +# When installing a new kernel perform a backup of the old one first +# so it is possible to boot the old kernel in case of problems. +# BackupKernel yes + +# If BackupKernel is enabled, the backup kernel is saved to this +# directory. +# BackupKernelDir /boot/kernel.old + +# When backing up a kernel also back up debug symbol files? +# BackupKernelSymbolFiles no + +# Create a new boot environment when installing patches +# CreateBootEnv yes diff --git a/conf/system/include/13.1/ar b/conf/system/include/13.1/ar new file mode 100755 index 0000000000000000000000000000000000000000..39e52384cb5d99c708ca4b6a3969d064dbcc1d2d GIT binary patch literal 51160 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 KT3m%VQ21ZNeP#jx literal 0 HcmV?d00001 diff --git a/conf/system/include/13.1/jib b/conf/system/include/13.1/jib new file mode 100755 index 0000000..818065a --- /dev/null +++ b/conf/system/include/13.1/jib @@ -0,0 +1,418 @@ +#!/bin/sh +#- +# Copyright (c) 2016 Devin Teske +# 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. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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: releng/12.1/share/examples/jails/jib 339977 2018-10-31 23:07:47Z dteske $ +# +############################################################ IDENT(1) +# +# $Title: if_bridge(4) management script for vnet jails $ +# +############################################################ INFORMATION +# +# Use this tool with jail.conf(5) (or rc.conf(5) ``legacy'' configuration) to +# manage `vnet' interfaces for jails. Designed to automate the creation of vnet +# interface(s) during jail `prestart' and destroy said interface(s) during jail +# `poststop'. +# +# In jail.conf(5) format: +# +# ### BEGIN EXCERPT ### +# +# xxx { +# host.hostname = "xxx.yyy"; +# path = "/vm/xxx"; +# +# # +# # NB: Below 2-lines required +# # NB: The number of eNb_xxx interfaces should match the number of +# # arguments given to `jib addm xxx' in exec.prestart value. +# # +# vnet; +# vnet.interface = e0b_xxx, e1b_xxx, ...; +# +# exec.clean; +# exec.system_user = "root"; +# exec.jail_user = "root"; +# +# # +# # NB: Below 2-lines required +# # NB: The number of arguments after `jib addm xxx' should match +# # the number of eNb_xxx arguments in vnet.interface value. +# # +# exec.prestart += "jib addm xxx em0 em1 ..."; +# exec.poststop += "jib destroy xxx"; +# +# # Standard recipe +# exec.start += "/bin/sh /etc/rc"; +# exec.stop = "/bin/sh /etc/rc.shutdown"; +# exec.consolelog = "/var/log/jail_xxx_console.log"; +# mount.devfs; +# +# # Optional (default off) +# #allow.mount; +# #allow.set_hostname = 1; +# #allow.sysvipc = 1; +# #devfs_ruleset = "11"; # rule to unhide bpf for DHCP +# } +# +# ### END EXCERPT ### +# +# In rc.conf(5) ``legacy'' format (used when /etc/jail.conf does not exist): +# +# ### BEGIN EXCERPT ### +# +# jail_enable="YES" +# jail_list="xxx" +# +# # +# # Global presets for all jails +# # +# jail_devfs_enable="YES" # mount devfs +# +# # +# # Global options (default off) +# # +# #jail_mount_enable="YES" # mount /etc/fstab.{name} +# #jail_set_hostname_allow="YES" # Allow hostname to change +# #jail_sysvipc_allow="YES" # Allow SysV Interprocess Comm. +# +# # xxx +# jail_xxx_hostname="xxx.shxd.cx" # hostname +# jail_xxx_rootdir="/vm/xxx" # root directory +# jail_xxx_vnet_interfaces="e0b_xxx e1bxxx ..." # vnet interface(s) +# jail_xxx_exec_prestart0="jib addm xxx em0 em1 ..." # bridge interface(s) +# jail_xxx_exec_poststop0="jib destroy xxx" # destroy interface(s) +# #jail_xxx_mount_enable="YES" # mount /etc/fstab.xxx +# #jail_xxx_devfs_ruleset="11" # rule to unhide bpf for DHCP +# +# ### END EXCERPT ### +# +# Note that the legacy rc.conf(5) format is converted to +# /var/run/jail.{name}.conf by /etc/rc.d/jail if jail.conf(5) is missing. +# +# ASIDE: dhclient(8) inside a vnet jail... +# +# To allow dhclient(8) to work inside a vnet jail, make sure the following +# appears in /etc/devfs.rules (which should be created if it doesn't exist): +# +# [devfsrules_jail=11] +# add include $devfsrules_hide_all +# add include $devfsrules_unhide_basic +# add include $devfsrules_unhide_login +# add path 'bpf*' unhide +# +# And set ether devfs.ruleset="11" (jail.conf(5)) or +# jail_{name}_devfs_ruleset="11" (rc.conf(5)). +# +# NB: While this tool can't create every type of desirable topology, it should +# handle most setups, minus some which considered exotic or purpose-built. +# +############################################################ GLOBALS + +pgm="${0##*/}" # Program basename + +# +# Global exit status +# +SUCCESS=0 +FAILURE=1 + +############################################################ FUNCTIONS + +usage() +{ + local action usage descr + exec >&2 + echo "Usage: $pgm action [arguments]" + echo "Actions:" + for action in \ + addm \ + show \ + show1 \ + destroy \ + ; do + eval usage=\"\$jib_${action}_usage\" + [ "$usage" ] || continue + eval descr=\"\$jib_${action}_descr\" + printf "\t%s\n\t\t%s\n" "$usage" "$descr" + done + exit $FAILURE +} + +action_usage() +{ + local usage descr action="$1" + eval usage=\"\$jib_${action}_usage\" + echo "Usage: $pgm $usage" >&2 + eval descr=\"\$jib_${action}_descr\" + printf "\t%s\n" "$descr" + exit $FAILURE +} + +derive_mac() +{ + local OPTIND=1 OPTARG __flag + local __mac_num= __make_pair= + while getopts 2n: __flag; do + case "$__flag" in + 2) __make_pair=1 ;; + n) __mac_num=${OPTARG%%[^0-9]*} ;; + esac + done + shift $(( $OPTIND - 1 )) + + if [ ! "$__mac_num" ]; then + eval __mac_num=\${_${iface}_num:--1} + __mac_num=$(( $__mac_num + 1 )) + eval _${iface}_num=\$__mac_num + fi + + local __iface="$1" __name="$2" __var_to_set="$3" __var_to_set_b="$4" + local __iface_devid __new_devid __num __new_devid_b + # + # Calculate MAC address derived from given iface. + # + # The formula I'm using is ``NP:SS:SS:II:II:II'' where: + # + N denotes 4 bits used as a counter to support branching + # each parent interface up to 15 times under the same jail + # name (see S below). + # + P denotes the special nibble whose value, if one of + # 2, 6, A, or E (but usually 2) denotes a privately + # administered MAC address (while remaining routable). + # + S denotes 16 bits, the sum(1) value of the jail name. + # + I denotes bits that are inherited from parent interface. + # + # The S bits are a CRC-16 checksum of NAME, allowing the jail + # to change link numbers in ng_bridge(4) without affecting the + # MAC address. Meanwhile, if... + # + the jail NAME changes (e.g., it was duplicated and given + # a new name with no other changes) + # + the underlying network interface changes + # + the jail is moved to another host + # the MAC address will be recalculated to a new, similarly + # unique value preventing conflict. + # + __iface_devid=$( ifconfig $__iface ether | awk '/ether/,$0=$2' ) + # ??:??:??:II:II:II + __new_devid=${__iface_devid#??:??:??} # => :II:II:II + # => :SS:SS:II:II:II + __num=$( set -- `echo -n "$__name" | sum` && echo $1 ) + __new_devid=$( printf :%02x:%02x \ + $(( $__num >> 8 & 255 )) $(( $__num & 255 )) )$__new_devid + # => P:SS:SS:II:II:II + case "$__iface_devid" in + ?2:*) __new_devid=a$__new_devid __new_devid_b=e$__new_devid ;; + ?[Ee]:*) __new_devid=2$__new_devid __new_devid_b=6$__new_devid ;; + *) __new_devid=2$__new_devid __new_devid_b=e$__new_devid + esac + # => NP:SS:SS:II:II:II + __new_devid=$( printf %x $(( $__mac_num & 15 )) )$__new_devid + __new_devid_b=$( printf %x $(( $__mac_num & 15 )) )$__new_devid_b + + # + # Return derivative MAC address(es) + # + if [ "$__make_pair" ]; then + if [ "$__var_to_set" -a "$__var_to_set_b" ]; then + eval $__var_to_set=\$__new_devid + eval $__var_to_set_b=\$__new_devid_b + else + echo $__new_devid $__new_devid_b + fi + else + if [ "$__var_to_set" ]; then + eval $__var_to_set=\$__new_devid + else + echo $__new_devid + fi + fi +} + +mustberoot_to_continue() +{ + if [ "$( id -u )" -ne 0 ]; then + echo "Must run as root!" >&2 + exit $FAILURE + fi +} + +jib_addm_usage="addm [-b BRIDGE_NAME] NAME [!]iface0 [[!]iface1 ...]" +jib_addm_descr="Creates e0b_NAME [e1b_NAME ...]" +jib_addm() +{ + local OPTIND=1 OPTARG flag bridge=bridge + while getopts b: flag; do + case "$flag" in + b) bridge="${OPTARG:-bridge}" ;; + *) action_usage addm # NOTREACHED + esac + done + shift $(( $OPTIND - 1 )) + + local name="$1" + [ "${name:-x}" = "${name#*[!0-9a-zA-Z_]}" -a $# -gt 1 ] || + action_usage addm # NOTREACHED + shift 1 # name + + mustberoot_to_continue + + local iface eiface_devid_a eiface_devid_b + local new no_derive num quad i=0 + for iface in $*; do + + no_derive= + case "$iface" in + !*) iface=${iface#!} no_derive=1 ;; + esac + + # Make sure the interface doesn't exist already + if ifconfig "e${i}a_$name" > /dev/null 2>&1; then + i=$(( $i + 1 )) + continue + fi + + # Bring the interface up + ifconfig $iface up || return + + # Make sure the interface has been bridged + if ! ifconfig "$iface$bridge" > /dev/null 2>&1; then + new=$( ifconfig bridge create ) || return + ifconfig $new addm $iface || return + ifconfig $new name "$iface$bridge" || return + ifconfig "$iface$bridge" up || return + fi + + # Create a new interface to the bridge + new=$( ifconfig epair create ) || return + ifconfig "$iface$bridge" addm $new || return + + # Rename the new interface + ifconfig $new name "e${i}a_$name" || return + ifconfig ${new%a}b name "e${i}b_$name" || return + ifconfig "e${i}a_$name" up || return + ifconfig "e${i}b_$name" up || return + + # + # Set the MAC address of the new interface using a sensible + # algorithm to prevent conflicts on the network. + # + eiface_devid_a= eiface_devid_b= + [ "$no_derive" ] || derive_mac -2 $iface "$name" \ + eiface_devid_a eiface_devid_b + if [ "$eiface_devid_a" -a "$eiface_devid_b" ]; then + ifconfig "e${i}a_$name" ether $eiface_devid_a + ifconfig "e${i}b_$name" ether $eiface_devid_b + fi > /dev/null 2>&1 + + i=$(( $i + 1 )) + done # for iface +} + +jib_show_usage="show" +jib_show_descr="List possible NAME values for \`show NAME'" +jib_show1_usage="show NAME" +jib_show1_descr="Lists e0b_NAME [e1b_NAME ...]" +jib_show2_usage="show [NAME]" +jib_show() +{ + local OPTIND=1 OPTARG flag + while getopts "" flag; do + case "$flag" in + *) action_usage show2 # NOTREACHED + esac + done + shift $(( $OPTIND - 1 )) + if [ $# -eq 0 ]; then + ifconfig | awk ' + /^[^:[:space:]]+:/ { + iface = $1 + sub(/:.*/, "", iface) + next + } + $1 == "groups:" { + for (n = split($0, group); n > 1; n--) { + if (group[n] != "bridge") continue + print iface + next + } + }' | + xargs -rn1 ifconfig | + awk '$1 == "member:" && + sub(/^e[[:digit:]]+a_/, "", $2), $0 = $2' | + sort -u + return + fi + ifconfig | awk -v name="$1" ' + match($0, /^e[[:digit:]]+a_/) && sub(/:.*/, "") && + substr($1, RSTART + RLENGTH) == name + ' | sort +} + +jib_destroy_usage="destroy NAME" +jib_destroy_descr="Destroy e0b_NAME [e1b_NAME ...]" +jib_destroy() +{ + local OPTIND=1 OPTARG flag + while getopts "" flag; do + case "$flag" in + *) action_usage destroy # NOTREACHED + esac + done + shift $(( $OPTIND -1 )) + local name="$1" + [ "${name:-x}" = "${name#*[!0-9a-zA-Z_]}" -a $# -eq 1 ] || + action_usage destroy # NOTREACHED + mustberoot_to_continue + jib_show "$name" | xargs -rn1 -I eiface ifconfig eiface destroy +} + +############################################################ MAIN + +# +# Command-line arguments +# +action="$1" +[ "$action" ] || usage # NOTREACHED + +# +# Validate action argument +# +if [ "$BASH_VERSION" ]; then + type="$( type -t "jib_$action" )" || usage # NOTREACHED +else + type="$( type "jib_$action" 2> /dev/null )" || usage # NOTREACHED +fi +case "$type" in +*function) + shift 1 # action + eval "jib_$action" \"\$@\" + ;; +*) usage # NOTREACHED +esac + +################################################################################ +# END +################################################################################ diff --git a/conf/system/include/13.1/makewhatis b/conf/system/include/13.1/makewhatis new file mode 100755 index 0000000000000000000000000000000000000000..291302d4f5ffc0967946004d2b5626fa44ae4421 GIT binary patch literal 508504 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�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 CXo|1^ literal 0 HcmV?d00001 diff --git a/conf/system/include/13.1/setfib b/conf/system/include/13.1/setfib new file mode 100755 index 0000000000000000000000000000000000000000..a9e55afee584d9b0d576ff82b8420f3c06ff833a GIT binary patch literal 7736 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 literal 0 HcmV?d00001 diff --git a/version b/version index e9bc149..645377e 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.14 +1.1.15