From e81b3b14aac873f7e3ff06e122fabadab8015b31 Mon Sep 17 00:00:00 2001 From: tschettervictor <85497460+tschettervictor@users.noreply.github.com> Date: Sat, 7 Dec 2024 10:34:00 -0700 Subject: [PATCH 01/80] Update bastille-init - correct typos --- bastille-init | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bastille-init b/bastille-init index 2fcdc21..24f01ee 100644 --- a/bastille-init +++ b/bastille-init @@ -78,7 +78,7 @@ INSTALLPATH="${CWDIR}/${FULLAPPNAME}" BRANCH="master" BATSILLE_URL="https://github.com/BastilleBSD/${APPNAME}/archive/${BRANCH}.zip" # Official Bastille Repository) BATSILLE_ALT="https://github.com/JRGTH/${APPNAME}/archive/${BRANCH}.zip" # Alternate Bastille Repository, early updates) -BASTILE_VERSION="https://raw.githubusercontent.com/BastilleBSD/${APPNAME}/${BRANCH}/usr/local/bin/${APPNAME}" +BASTILLE_VERSION="https://raw.githubusercontent.com/BastilleBSD/${APPNAME}/${BRANCH}/usr/local/bin/${APPNAME}" GITURL="https://github.com/JRGTH/xigmanas-${APPNAME}-extension/archive/${BRANCH}.zip" VERFILE="https://raw.githubusercontent.com/JRGTH/xigmanas-${APPNAME}-extension/${BRANCH}/version" URL_FREEBSD="http://ftp.freebsd.org/pub/FreeBSD/releases/" @@ -205,7 +205,7 @@ bastille_upgrade() DATE=$(date +"%a %b %d %T %Y") echo "Looking for new ${APPNAME} package!" mkdir -p ${CWDIR}/update - fetch -ao ${CWDIR}/update --no-verify-peer --timeout=30 ${BASTILE_VERSION} || \ + fetch -ao ${CWDIR}/update --no-verify-peer --timeout=30 ${BASTILLE_VERSION} || \ error_notify "Error: A problem has occurred while fetching version file." # Compare version files and fetch latest package if available. @@ -399,12 +399,12 @@ sys_symlinkdir() done fi - # Link bastile config file directory. + # Link bastille config file directory. if [ -d "${INSTALLPATH}${USRLOCAL}/etc/${APPNAME}" ]; then ln -fhs ${INSTALLPATH}${USRLOCAL}/etc/${APPNAME} ${USRLOCAL}/etc/${APPNAME} fi - # Link bastile config file. + # Link bastille config file. #if [ -f "${INSTALLPATH}${USRLOCAL}/etc/${APPNAME}/${APPNAME}.conf.sample" ]; then # cd ${INSTALLPATH}${USRLOCAL}/etc/${APPNAME} # if [ ! -f "${APPNAME}.conf" ]; then @@ -1109,7 +1109,7 @@ remove_addon() fi echo "Done!" - echo "Please manually remove the Bastile Extension Command Script from the WebGUI." + echo "Please manually remove the Bastille Extension Command Script from the WebGUI." exit 0 } From f83944ae528e053d714ff0cc42e6802119a002fe Mon Sep 17 00:00:00 2001 From: tschettervictor <85497460+tschettervictor@users.noreply.github.com> Date: Sun, 8 Dec 2024 13:29:43 -0700 Subject: [PATCH 02/80] Update README.md typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7ccf5da..2b25869 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ **Description:** - This is the XigmaNAS Bastille Extension for quickly create and manage FreeBSD Jails/Containers. + This is the XigmaNAS Bastille Extension to create and manage FreeBSD Jails/Containers. **Credits:** From fd7918073e96461017ec7228b5efe3952ddddc98 Mon Sep 17 00:00:00 2001 From: tschettervictor <85497460+tschettervictor@users.noreply.github.com> Date: Tue, 24 Dec 2024 16:17:02 -0700 Subject: [PATCH 03/80] BATSILLE fix to BASTILLE --- bastille-init | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bastille-init b/bastille-init index 24f01ee..1a6320e 100644 --- a/bastille-init +++ b/bastille-init @@ -76,8 +76,8 @@ FREEBSD_UPDATE="${INCLUDE_PATH}/freebsd-update/${HOSTVERSION}" SYSTEM_INCLUDE="${INCLUDE_PATH}/include/${HOSTVERSION}" INSTALLPATH="${CWDIR}/${FULLAPPNAME}" BRANCH="master" -BATSILLE_URL="https://github.com/BastilleBSD/${APPNAME}/archive/${BRANCH}.zip" # Official Bastille Repository) -BATSILLE_ALT="https://github.com/JRGTH/${APPNAME}/archive/${BRANCH}.zip" # Alternate Bastille Repository, early updates) +BASTILLE_URL="https://github.com/BastilleBSD/${APPNAME}/archive/${BRANCH}.zip" # Official Bastille Repository) +BASTILLE_ALT="https://github.com/JRGTH/${APPNAME}/archive/${BRANCH}.zip" # Alternate Bastille Repository, early updates) BASTILLE_VERSION="https://raw.githubusercontent.com/BastilleBSD/${APPNAME}/${BRANCH}/usr/local/bin/${APPNAME}" GITURL="https://github.com/JRGTH/xigmanas-${APPNAME}-extension/archive/${BRANCH}.zip" VERFILE="https://raw.githubusercontent.com/JRGTH/xigmanas-${APPNAME}-extension/${BRANCH}/version" @@ -177,7 +177,7 @@ bastille_initial_download() if [ -n "${REQUIRED_UPDATE}" ] || [ ! -f "${CWDIR}/${FULLAPPNAME}${BASTILLEPATH}/${APPNAME}" ]; then # Fetch latest bastille package. echo "Fetching ${APPNAME} files..." - fetch -ao ${CWDIR}/${BRANCH}.zip --no-verify-peer --timeout=30 ${BATSILLE_URL} || \ + fetch -ao ${CWDIR}/${BRANCH}.zip --no-verify-peer --timeout=30 ${BASTILLE_URL} || \ error_notify "Error: A problem has occurred while fetching ${APPNAME}." bastille_pkg_extract fi @@ -214,7 +214,7 @@ bastille_upgrade() CURRENTVER=$(cat ${BASTILLEPATH}/${APPNAME} | grep BASTILLE_VERSION= | egrep -o "([0-9]{1,}\.)+[0-9]{1,}" | tr -d '.') if [ "${UPDATEVER}" -gt "${CURRENTVER}" ]; then echo "New ${APPNAME} package found, performing upgrade..." - fetch -ao ${CWDIR}/update --no-verify-peer --timeout=30 ${BATSILLE_URL} || \ + fetch -ao ${CWDIR}/update --no-verify-peer --timeout=30 ${BASTILLE_URL} || \ error_notify "Error: A problem has occurred while fetching ${APPNAME} package." tar -xf ${CWDIR}/update/${BRANCH}.zip --exclude='.git*' --exclude='docs' --exclude='bastille.conf' --strip-components 1 -C ${CWDIR}/update rm -f ${CWDIR}/update/${BRANCH}.zip @@ -248,7 +248,7 @@ bastille_core_update() if [ -f "${CWDIR}/${FULLAPPNAME}${BASTILLEPATH}/${APPNAME}" ]; then # Fetch latest bastille package. echo "Fetching ${APPNAME} files..." - fetch -ao ${CWDIR}/${BRANCH}.zip --no-verify-peer --timeout=30 ${BATSILLE_URL} || \ + fetch -ao ${CWDIR}/${BRANCH}.zip --no-verify-peer --timeout=30 ${BASTILLE_URL} || \ error_notify "Error: A problem has occurred while fetching ${APPNAME}." bastille_pkg_extract fi From 8afb09bc81819a4f783ed6a236ec45d8c03d5358 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Wed, 25 Dec 2024 02:49:29 -0400 Subject: [PATCH 04/80] Code fixes/improvements thanks to tschettervictor --- CHANGELOG | 1 + version | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index f5d5baa..d7e665e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.1.40......Code fixes/improvements thanks to tschettervictor. 1.1.39......Update release list on bastille_manager_add.php. 1.1.38......Update release list, added new Debian/Ubuntu distros. 1.1.37......Workaround to copy host resolv.conf to jail path. diff --git a/version b/version index 1b507d1..2818446 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.39 +1.1.40 From daae72c60502b5f38b2a584671cddad3dc5f6ce0 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Wed, 25 Dec 2024 03:12:10 -0400 Subject: [PATCH 05/80] Add support for 14.2 release --- CHANGELOG | 1 + .../system/freebsd-update/14.2/freebsd-update | 3547 +++++++++++++++++ .../freebsd-update/14.2/freebsd-update.conf | 78 + conf/system/include/14.2/ar | Bin 0 -> 50520 bytes conf/system/include/14.2/diff3 | Bin 0 -> 28736 bytes conf/system/include/14.2/jib | 417 ++ conf/system/include/14.2/makewhatis | Bin 0 -> 513696 bytes conf/system/include/14.2/pf.os | 708 ++++ conf/system/include/14.2/pfctl | Bin 0 -> 341856 bytes conf/system/include/14.2/pfilctl | Bin 0 -> 9424 bytes conf/system/include/14.2/pflogd | Bin 0 -> 26448 bytes conf/system/include/14.2/setfib | Bin 0 -> 7296 bytes conf/system/include/14.2/sum | Bin 0 -> 11296 bytes gui/bastille_manager_tarballs.php | 4 +- version | 2 +- 15 files changed, 4754 insertions(+), 3 deletions(-) create mode 100755 conf/system/freebsd-update/14.2/freebsd-update create mode 100644 conf/system/freebsd-update/14.2/freebsd-update.conf create mode 100755 conf/system/include/14.2/ar create mode 100755 conf/system/include/14.2/diff3 create mode 100755 conf/system/include/14.2/jib create mode 100755 conf/system/include/14.2/makewhatis create mode 100644 conf/system/include/14.2/pf.os create mode 100755 conf/system/include/14.2/pfctl create mode 100755 conf/system/include/14.2/pfilctl create mode 100755 conf/system/include/14.2/pflogd create mode 100755 conf/system/include/14.2/setfib create mode 100755 conf/system/include/14.2/sum diff --git a/CHANGELOG b/CHANGELOG index d7e665e..2c4bf6b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.1.41......Update: Add support for 14.2 release. 1.1.40......Code fixes/improvements thanks to tschettervictor. 1.1.39......Update release list on bastille_manager_add.php. 1.1.38......Update release list, added new Debian/Ubuntu distros. diff --git a/conf/system/freebsd-update/14.2/freebsd-update b/conf/system/freebsd-update/14.2/freebsd-update new file mode 100755 index 0000000..77b12a3 --- /dev/null +++ b/conf/system/freebsd-update/14.2/freebsd-update @@ -0,0 +1,3547 @@ +#!/bin/sh + +#- +# SPDX-License-Identifier: BSD-2-Clause +# +# 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. + +#### 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 '`basename $0` [options] install' first." + echo "Run '`basename $0` [options] 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 '`basename $0` [options] 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 '`basename $0` [options] 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 -r ${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 "update.FreeBSD.org" (in which case +# freebsd-update will select one of the mirrors) or "update1.freebsd.org" +# (in which case freebsd-update 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 + [yY]*) + return 0 + ;; + [nN]*) + 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 $2 against $1 and $3 and +# find any files with values unique to $2; generate $4 containing these paths +# and their corresponding hashes from $1. +fetch_filter_mergechanges () { + # Pull out the paths and hashes of the files matching ${MERGECHANGES}. + for F in $1 $2 $3; 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 or $3-values + # and is a file means that we should list the path in $3. + sort $1-values $3-values | + comm -13 - $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 > $4 + + # Clean up + rm $1-values $2-values $3-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 '`basename $0` [options] 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 + while true; do + read response /dev/null; then + echo + break + fi + ${EDITOR} `pwd`/merge/new/${F} < /dev/tty + + if ! grep -qE '^(<<<<<<<|=======|>>>>>>>)([[:space:]].*)?$' $(pwd)/merge/new/${F} ; then + break + fi + cat <<-EOF + +Merge conflict markers remain in: ${F} +These must be resolved for the system to be functional. + +Press Enter to return to editing this file, or type "ACCEPT" to carry on with +these lines remaining in the file. + EOF + done + done < failed.merges + rm failed.merges + + # Ask the user to confirm that he likes how the result + # of merging files. + while read F; do + # Skip files which haven't changed except possibly + # in their RCS tags. + if [ -f merge/old/${F} ] && [ -f merge/new/${F} ] && + samef merge/old/${F} merge/new/${F}; then + continue + fi + + # Skip files where the installed file differs from + # the old file only due to RCS tags. + if [ -f merge/old/${F} ] && + [ -f merge/${OLDRELNUM}/${F} ] && + samef merge/old/${F} merge/${OLDRELNUM}/${F}; then + continue + fi + + # Warn about files which are ceasing to exist. + if ! [ -f merge/new/${F} ]; then + cat <<-EOF + +The following file will be removed, as it no longer exists in +FreeBSD ${RELNUM}: ${F} + EOF + continuep < /dev/tty || return 1 + continue + fi + + # Print changes for the user's approval. + cat <<-EOF + +The following changes, which occurred between FreeBSD ${OLDRELNUM} and +FreeBSD ${RELNUM} have been merged into ${F}: +EOF + diff -U 5 -L "current version" -L "new version" \ + merge/old/${F} merge/new/${F} || true + continuep < /dev/tty || return 1 + done < $1-paths + + # Store merged files. + while read F; do + if [ -f merge/new/${F} ]; then + V=`${SHA256} -q merge/new/${F}` + + gzip -c < merge/new/${F} > 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 INDEX-NEW 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 '`basename $0` [options] 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 '`basename $0` [options] 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 pathname expansion. + set +f +} + +# Check for and remove an existing directory that conflicts with the file or +# symlink that we are going to install. +dir_conflict () { + if [ -d "$1" ]; then + echo "Removing conflicting directory $1" + rm -rf -- "$1" + fi +} + +# 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. A file may change to a directory + # on upgrade (PR273661). If that happens, remove the + # file first. + if [ -e "${BASEDIR}/${FPATH}" ] && \ + ! [ -d "${BASEDIR}/${FPATH}" ]; then + rm -f -- "${BASEDIR}/${FPATH}" + fi + install -d -o ${OWNER} -g ${GROUP} \ + -m ${PERM} ${BASEDIR}/${FPATH} + ;; + f) + dir_conflict "${BASEDIR}/${FPATH}" + 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) + dir_conflict "${BASEDIR}/${FPATH}" + # 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) + if [ -f "${BASEDIR}/${FPATH}" ]; then + rm "${BASEDIR}/${FPATH}" + fi + ;; + L) + if [ -L "${BASEDIR}/${FPATH}" ]; then + rm "${BASEDIR}/${FPATH}" + fi + ;; + 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 +'`basename $0` [options] 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 + + # Restart host sshd if running (PR263489). Note that this does + # not affect child sshd processes handling existing sessions. + if [ "$BASEDIR" = / ] && \ + service sshd status >/dev/null 2>/dev/null; then + echo + echo "Restarting sshd after upgrade" + service sshd restart + fi + + # 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 +'`basename $0` [options] 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 () { + # Create directories first. They may be needed by files we will + # install in subsequent steps (PR273950). + awk -F \| '{if ($2 == "d") print }' $1/INDEX-OLD > INDEX-OLD + install_from_index INDEX-OLD || return 1 + + # 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 + ISFETCHED=1 + + 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 '`basename $0` [options] 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 + +# Clear environment variables that may affect operation of tools that we use. +unset GREP_OPTIONS + +get_params $@ +for COMMAND in ${COMMANDS}; do + cmd_${COMMAND} +done diff --git a/conf/system/freebsd-update/14.2/freebsd-update.conf b/conf/system/freebsd-update/14.2/freebsd-update.conf new file mode 100644 index 0000000..08cf512 --- /dev/null +++ b/conf/system/freebsd-update/14.2/freebsd-update.conf @@ -0,0 +1,78 @@ + +# 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/14.2/ar b/conf/system/include/14.2/ar new file mode 100755 index 0000000000000000000000000000000000000000..5d7523b5184c7994dfdc5e7793dba1dda5d27b8a GIT binary patch literal 50520 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 literal 0 HcmV?d00001 diff --git a/conf/system/include/14.2/jib b/conf/system/include/14.2/jib new file mode 100755 index 0000000..55d9084 --- /dev/null +++ b/conf/system/include/14.2/jib @@ -0,0 +1,417 @@ +#!/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. +# +# +############################################################ 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 jail"; +# 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/14.2/makewhatis b/conf/system/include/14.2/makewhatis new file mode 100755 index 0000000000000000000000000000000000000000..6fe3ca87ae1ae0c3cbef1e747908ebd675d9f1f0 GIT binary patch literal 513696 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 z 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≈amJEF1^HKz7Y`bAxDL~n(o_AtdUu7^qVth!Vk^! znrmf%YFe-~sbDrLn3W1<2e)~&g?!AMmS3vkIYk}wBIj*2GaS=w1JV#Q2L#Rc(sU&S z|C)ax46?`E;W1zHnEy(5Oig$nYWA9Q>CrV|dL}%UZ>YxkB*6QhScMZP^Fa zylq^{8Vs0M)$I*)$Fh&J5Z9ONjwZ8=dp9?Hkk{>?IlZd2Aurq|x-E~#==+ECj&&@g zbf&-3UrXKdE#dzMaRRG-j;08NTt&!VIYov?6KsK#j>xm;75XhVMp9T9YpXa$ z5&r_g9!zOWgyJP+%S+(U!Rcup?*yqdFD~?(uow%ftd%nV(Zf06v$#nd=;pez;gl;* zoEY6G<90>P*&Q@%C$%!2PZOBMUtj8aU@P560sGba>#C7g*J=T9g2 zN&DNN7yHh|SpH{)o2m8iE1pIq!~snU^(A8vMzto2S1=o%mDTVJxU6c~`_*Lawhguh zvqcuAl~Gj~_ck@`&ts_?qVMN*`_f}xTorxqkiPaF6agIDZ8?yD@zcQ}p>Ok~!s?5w zvOD~*k6pau?0ukU0$Heqez-$$k4YEy7O4^;>3d}!r8e%DSs{|g@>xdh z9SjQJBsTkx!bR{0ql%Q8P>zjB7*-&xW+z$X@-#NYk0SpF#C+0g+HrJ3rT3|uscO!m zM%wodwu6=LO^uyCYHDoMD30RNzdpKu0XJ{hctdhOunVak{~*x<#jk)`2z}rzd)rI)v4Rp z68{^8W!;c`8MO~FGr)Jn&FqDUBAir9rquibV94}Fx{(%SR!s~nM3UXn_MwN>0Hkf_ zyq`e*~Kp15kU?pJXV9>|RtX z65;7~jtq(;mB@dmci@9Q<{ZcEtnaH(-rFhu0}^hJ`KHJGx-;edEp0({p}bWo%B#tH zF0=e^5nsr$!t-SGh~Rm1!^e5u4w>7c5aA=8C@-5Q$E640uR2^f(>nzuDzm@Jf8%>L zi;n>d<}O8_*eGh~tL`;8!m&z7=P~q2lchA3`d`r}O^@Egw4$TqFnY&OqfYzpf7kzW z{+s?Ib@+eP|HA)U{r~Ce@1K9Ro&Q(;zozZqn}5GVpmHK#AQ{pjCV21^`mHXqgZK28 z&C3h-<8MLubP^FQ3!pob#5&ngektTn$s5s<0>yGn~@Du-Le+H@kV7E)}(|sB!eVU*cG&lZgVtSG4 z-5aUiCARym%aBOdBe3w`7)#eSOV_-nVq~Om8=bx-p8gK`N6K`!LYmFBujqvzs5-Sp zwJRTokcEExw%$U47S6T1y(R>D;dFbRPMK-{R36ft@fEyv<~PKjTYF;N43E?rKCNSZ zgv#xat%y@SpCVtdL9uu`^6IgRm+dUxOtpA3Sv)yGh5}_*v3P;9Gb0lc#3q!*o2eF0 zB!qqnP@|gc2t0zS{O$&!3<51rAAF>TO{Jl(UGVE1xH=>(_Ve1;c zpmp*sIgyc00Fb-?PVVTDG3YzQqVG1c7{qFRW4^)l4GVfcD*-=5Ne{QS?C|;I2)7c- zV2e|~syKF+s^hTK@oYvN+o&T+9UF8VhgBWPjyjH6Pgqgru|7Ok08f?asEs?wjfaoi zG&+;NLCv6;+EJRJ>>B>OwSs}!mSVwU8&#*0V{U#i+TMLZuJQ1f^Iu-pu3CQ)VFF_) zsh0p_Y54{17yd8XSNZ=hwy(zX|JV3s+SB~C*ys~My54V{(by>1lP%mR0q3RzlZ21~ zOb9qPY#_g`VD|8}Do^f1{CF*BRqkJS!mNXsUc%%>TAUwP%`>A%XN6D19P!-5B!PhR z{CkXzH@iWKlhu_5ax|EQ7V5fuT1Qmy%qmaWJ4^bA8jM$>X*Zj1wR&4T6_G~-5vS>F zbhj@pqiLsKG#2cVEJ;=$o+W!b8#tCT_$l$pe`udrXkq3YaJK~x?GgDmH<$N3&sVm6 zNhoB^aB=5)D0Sz0Mff7FSHwyyWHtocha;~iZgxWNg>UHSzvxJW_g@D>rF@SQi6A29 z`haz^NMz3|Y1Msc8hl_dcPx&!9uwAVaf_(&<>KaU4}j6uczah*nQ~uCq6a;e;m!N4 zY+GGr8HCY8Lz&4xZn3K=aP0b_aNlaqSO@)LAy=~|M>$xfoe6pw>)pPRz2*HOyIU|F zIE6bZN1al#8&$gp6Cq~r1^KHyb+_|?){uh+mk1<~Emo^f)$N5wja=yB{^r|AYov=x)gIcSZ^Ul~UnUXX^mMCA;GnG6iZt z@!>q#Ug|%N|KomnX~~>X<2PTZA{+4YTzv=pm``6rV$d4ouWaCAShl-bVwuPlr8zkz zgy@gW9F$o50!mk)VzjF%Tv8H*`3%1O_P&Iber4N#zm*41~T2$JN{qf3M6+(iQE1p&#_4( z$3XYgEwm5q!Nq=kUh;=jqr&K^UqAJeHoY^j?r66j#@ zYFeA@F84+9NyM^LCvY=veYDN9n48m+m7;+_Y8{jrn z5=vUjhp(vp6$1`;HyhNDh7y-9Hd%xes|7_N!ZX%dY6Z(;vdBiwdEFJ&^PBgTs`q_# z4`^d*e5;?LV1ut@Yf^y$l9V;Vx|%P{Bd6bd+RsnWj1}^eIAIl+28XcI`gMKY9;4<& zAy$loO=hG|ZbW{CYCWZ`7}Sbk0eZUCH7^;ppORW#IxDiJdi;XO#-Ld{U20}lm4)pm zQJK+`7L3@?uf9Seh6F8@A!w;KZ_1`gzomO)sounImGU~t$?Vr(oH9zf;)sQ$bAIA)#>I5kZ`BI$TO7%c4Bo7kP%qi3 zi1>o$7JcE@vp*KPlX~pR zlSwseWqE`i)Lxk-D|9r=sgv4`+8`A$-)lU|E2Fv;|BhdgL_Ez)joLXpX|DzA1;KBK zOxG(gc-zWqvby#O&}D%vhlG4;L<=!okKf4|DFq1?>u0M_YF_h|_~*z&JR2ARB#61# z$E(m&Pj%aA;UARGiiCt3_^lHIv1wRb-`E%v3cy&ULBNP_jx$8#2DhOs*|0-d?iWodj2%|*1D7dj&MTJ_6p%efb3sO5xE6C+MMUC zO>~i)m_sItXu4&-ASiCEyn~h)2tyEJ!j4%|kF6iY_5cpoWHAFn;9uSY$>h5jL6~3J zS7gbKtZFddw7KOvr%3%ZRT!h((c zG5D{)MutelXhk4`R%p$pU!@zq5i2=3;B#n|BHbw>SQD`N6ya0ArlQd1Pq+)}`yTei zH0Fp<5nP!K>L>;T)XAn(A!OB|!H4Wp-8W_Eb;y|j`zA>Q+X5zC=|J-@jOZC{p!uU9 zm-&^`VNuG8D@|T-@L}q9bL-8wT>3+&)M&*xR(Ihy)aW4~PL(x|EAjJya>v9~5r%-F7OD_00Asw+hd3-%Kj6UX-2e zZrtl^+Ox9T5of)H=UcR`P@=$eLm`&hBh9zjA~pM8qioYg(3-5D>>5T*Z;hkUcB{IR ztXiMBB}jUA=ltbQzNBNZ7lyy4^6(c;G6|{vLP&(4NjK;-zwr!iBqooxQ{#}~vVUaB zL~pTtHReQw=#^ouE)!88W+*lCV=1o4S|*!{)_7@>?KgKgdb0tS{CjFMbE?vsX=4Fc zO?#1QeIn8GAC++`Z!?T5M-w|yCZc+3RkmPXbG7tU{s{v+AW|Z9;kg3d{Z?-AIvKOl ze&`FQ*l3nD%E=|;$OF+@a{hIkKMqW+UNkyc=+J@4P|(yJ?jMZJOI{o+FJ@zvSb3a9 zIege?%$$6QY;N9U9%Y4%^|9&vtdOln-lZ?`U*k~X9Xh6Dud+0RjzZtmn#%mfFC&`| zR8H)(-~J}+*!Z6r@dM`u%v~5DD-~eww5RmIlnOAk+G~}BD))QMIhcgD{Qz!pt#O+y z38ocuT}CaOwmeq3B1;evv{uWeniZKJvdShK>xXfm*!VBxDZBBgQ+9XajArN48ECK= z-$(r3iyo6mUE%Ry=zO0L*`!_mt&_o;QO8V8ThKq`{+PSYV)@VGVYCS*j6I`Xb9M7j z6{^alKjE1~=8DP*21E&(uUIoU2YzY)9*>SShEdZWu8xT}YEJ>sAnt1e7O~9lk@k^6 z^eoi38_H$A>qsiyWz=ltSI1VjCe9OV{$sSt>k2=BT(n9Q*WIGeRg=XPULLT@g6@ww z#h^4j?A{O{(I0)wWo#Uk7czI)|9MnV1Ec0?XiSrAxF-jxLxP9J`c4$e6dQflkAy&d ziG*oe^+hh+>Rw^$zQvO;V79RXH<20fk`S|GJq&X{0^BvCS_@hOfA?fIt|okm9zG}B zFM4=H_{8YpS&<)j#M#0%p?XoFdqiZS&wVIRxdT2c(dU@+nuwU{A$r^&7d{w0+%5c> z*IeA_k4?;z?V#EBxQy{hcjD*47?;IhttnG6&Ek}L0In&QAsh|})Pz?1&7MVS?l*Ho zvbv-3%L&O#3-V<8ALhXPq}vQV9yAxz*p)yX~P zatY zJ+GO{q|LDhzd@tgmt4)cdwG<9p68ivR~(CK*OI(si<#TR2ez_j_yO((5+q`^gh8q< zm#d}{JXxbx@fkVm%4c{>zG9B9<~_cX7mmL1KX4eKU05D14{4-@Oepwj^7lc(VSxe} z>4E=}EJ{LT)chInjNd{J0p*Re6)5lIJHR~?SxvpC`Y7-iFb^WR0v*~xf;arIT?Ii? ze1=W9l-TIPAEf5Y_Au`#Jbb{2e#zVb1dZ4;tPN$)VHxuuo(GkB zOy)*`3`{JWdNZr(S=RnF$=Ekg2hbNl-0Mk#lE}9QzVSph)F`jDVP80pn^YNp;sC$Z zr9gg#JN&i4uUFOBiU7v`cxDE)wc0i{0+N&Hjo&)oZ(df_5s9xkcl{9!6xhN(?N9Y{FbsbJWm_7Ouxi26D3YYvKWk2;f$~tLyihJ78^AJg3xSn zPN+SUh3u*)D*KRFcI4oXGAmpu$n+sk_BAi{LRp29A*@?_0*G1J>iQzv6UmKK6zO|}(S&Hpw&TVf?uiH`QQJtgH?aLnTO;h2UyuylyIOC=%vDYNhB$6hf#%&Xl zeXt>M##K{HS-bvg*=q-00d)d=y2>=f#=Z&wgIbS2BtQALMxeSrwoLmbG7JA**&P(U zOZH8Eb9!;NXgI&5Uh#Ln(w6X`E$Yz|Z96A?Dt||W`;^r4J1eqZZAjINda)n9EouYz zVZ^w8cT=JuLw?9|CYy})U4(o6N*K(~&F*U0qW$w`*k>qv0l)dG$8048a&+mXSrKtG z+bGLn{~0x$@XI3vQ3MLbCJj5j>sDnjqPwak?M1ISZ(egnm<%q>i6SW_y%vH(eCy@H z@OaExVQzSnAF)X@Zp=zkc*Tw+%FYc(piR&QP>*c0YSBT^A)eT*hs70%~xUZnp9F&R$eZum+{0GvuzvtF5oPMy>JE0vYY`E(Alg3xU&r z44#z#z}E*L(8u}@IL--h2+AfgZCV5w82NxA1CKta$iUUNKnB(c8MvN$GUfdOe~vwb zR-_NI@~n9U)^r^Ba!+m)eJmofSibc$_C>)Sw!=Cmg+aqb*M~V_J04SHddKX@bdSok zu*&|?Q^0@o#41^hG#{r_b@tLrNlLk7Xjcw}4{7@e1VxVlE=<3$hUVsytzxT?=-#2P z=!8GmcRD7(eoV6>mwT$mkARaF*;+|`?6OVKBZC(ZmUZ+(?pH`(8Ly~Q{2O`~Z7+%p zuyNAL-Q5q9(qgL1rkL4@y4E6OP;6p)Te#iL4Op*#e!t|pI zQBMkfmCxH+rbgfwU@fEy`@Mw@unJDt^B1LnRYXLXEz8a&>sBnliZe)Mu^2O}RAH|= z-Jw?3kGzRb>I4ZAAF9q}JDq!7-V!^U@yh&b`{9oGewp?FG)4rOHv?jYCx!u6k8JkI z9J(C)dF=fQ#oqtIpf!|}fnz-X24sPeeZbKh4Q1qQdW}s|eRvmzp=>TsYnLpeb~(h4 zjh|X)Vl$xa>At(Z+yCeK^0-rt`o!!&)fuhlh~!)Qoa`pZ7B9V0yvp!5iEb(IFFPu6 zM#JY{Y+ZkTTSu=8bt~^Uy?)KZ%VX=X!}5;CJ2?k*n0e{ zsvenRet}8=jJKRI?~)M#3Hi?24hq`YLS z-0554N;Xui7%4)Jvcrqd@mKDG7?0|MsCQQ6pZ?esH?p%n?pfS&@2}h@pL&|R65FK{ zi@G$qx>JsdhtlW!=`LOdo$ObR=O-opB`zR}(Bw{7Ee8??@7pP6G+ptiwz3lW&A#o7 z6qLSUdkLq1U!$kBJ`1m`$~GVT@c5v0MsEuG%CeW7$B8?i=gz`oYqXm*q;7KX;imgu zI&{2I+bkSYp_Qx_S-DHw1+H0Xdr|~Ul3vaa#LT675%Iv?h zFtD>;bC)>cL5_@?pHfg3PCAP8sxDx@6`m2OjEFT^&kH?ey_QT)&(J}C_KdZhku-mb z&LK5p#`>+T-W{F_u9!9>h!X(+&B-PTFMYdX{zKB-0y()F>l>r>`=V`AjpZw4BaG#* zL&TOgl*m}Z`(z2@6DXuO_SmTI$p$tWg+E}qpkb@Gjn%5TiaaKEM$H)J&A!Y2CPJ+jygv$i+#|x*sPuE3G-1f`+@gVT)&7dG+CJ zBf6K*_3vkUp1=O=pSe7*eo8(r4PhbXwD`sp8Y`#slK6SXL_DY_qD*S-0PsJm#G=lL zzgLOk-<7H@mL;{Fo>A}*Do+Brn$IfqX45FM{0^@;jEJ~53eu7NfkTIt16V=4-pM*t zXMK`aPn3XK_ti%ixA4 z@tIP1-A|d04XTscS!ip7f*S4w zevleLK3Tn!_4$N z%UiZ}i9cxdy_wXsuxlE3M`Cyx>CT5adk92^#jsi zpCT+k5<|cTuXV!YSf5`{i1qwIv|*=7gfqTbBWN1vJqyX`7OCxAOuyNvuoXSRxZa|J z`#d?}Q;dyUWgefK9P4RLB4nP2DiV!U%_+Oy3T@Bs<&hXpXMiHri{BiMWfw!pIdp0w z+j9t&Va{36`lq68gBK7DJ^#&38N@*HWqYmeo`(0crSf=#47zh-ApUqpqVH#05AYhl zKQqm}bz&?hfROfQEoapxeh?(6U4uP7&~SJ_0u77PM6xAuUHau`4N}WNV@Ul$7MvvKcdGq+5&^dfbQ#cB93a zL#b@9*O(O?p*YmC^MWB`&qvA>Y z;Zx{Fj|C^zWx?f(O#Y@kgr4?a{($(;%5C`&c7;>l8Dzq*mA^y|JWkRYw8msC%k$Sm zvqs%Uan=Qx}3<`@O}NnVCHm2+`xj8nNBJb29)V15~5w(DV2)(zhzAmig7K zi_Rg17>xKz=GVOk9>ivB_nIFg=Cr$EIRHeIN5}qw53Z$L_DNYkPzOiMPjjv%>HKTX zy~TM-gjA#C#0|bGFQJ7Aq|ApblPrLw#Z z8lfcB;$qNSQHxB=ar?A)MBtc~XBf94_2;O2~}c=xB$47NAhmF>;K3@~0MVhER#2HRJ)3)uMu*+wy`#J@QeP zSZax)Mc9bJx|Y9F3%i+7Q!n{qqeIhR&|-`07_9jgBbqP=D63@g=MV>)X#X5?>$IXm ztc%wXCQ-tCKj81U zNSuFOq-NhbIY1yuSjQBhUwc;s zJcn#B1`_STGEaLgTGt74ri=hLn zEC-tMqgQ?_HolJi>mxqX=G+G46tk2PpOMf zpZr*kx9g&Z3yhkjtQ7H|jhfHMNB9t5P`f z(h}ke!Jzq{V5TeASkdlSKJ`y^;v&oh1n;fcxS%MtV#6p$t@w$fR=j|+U|MM+Cxvgr zgJr)+$!DcGdjM;UkYu02w@LKG!MFG#>eeV%@e@HZB(tF0=k{*(2Fm>+g>qV~ge{pDw+f?i*Hlz3d%v~oN_|vGWxt-P)A~zXUl-0I*E())@Ez5RES zrz+X_s#G$&9{P-+`w^pNvl@ud<JjyVuJCqGa%hPvAM=?Zbc0 z#M`11Df0(i#+vbaW^W7y6v^x$zy1tGg#8#+h8g>5w0%LiP&P^BC{0Z705%)h?0}n< zD~|m*GcX&U<`h429Dl|g1BxkYr*B`Z5X#Ro_+Z&W+X?T5ofiJj)_F{WQS&wZG}f0^ z)Fef&y^BbKzLMRtTV?cTLTUL4!~iBIC!<9La7LTSAF+MzUC>^3*fX&jEi{&|AqSq^ zAh}zfjE6TH(R+E~bSXl6pZT(uUrIntZ7;U8pS@!jbe2fIb`uYr(Cm%;%AK5Y&q)Dy zMimq36@xks0L5XVqmL@`yT20oJRq3pq2!@Bev0Hsn_nLk0~YKlZ`dyEw~)ioyIORw zEfSF2x$6^GIv*7myTcwrma$*b)yV1C^GK~K`a+!4Pmnkm1oi^JSb}Ds#2Y!FY`U&$>$G%;nDpJf( zbbmV{!D#zQ2p|Z_BAn1$a69Tb-d&Tu}H_I3Q}> zdwVvE?rSt^cF97)3?+I5vS+)9gDc7GOVwlgdsZ}x88TA77X$8pz~a;eVzY`y!cp2U z?Er}!qJ4yz>`-elgR-}9qnc)TFfZyDUyA-7$L~DMOr+^=6P2d;oeMPm*fNXWImEZ! zo-teAGWi`4mr3d%z6{O9(1cs;z_d$D;x}TCRm~+EU7ME6BL^(}CHl)^!VC*5nOlHEtD*#{>d&Kk z!Ca}nV}6_>AnT9*l)*o5pG@i7GdlM*(~;tzGx@VpkNL7N%Ry_byH=PpOaf7$Nw49R zbMk^Qj0uvBL30jfggJSF_8X`cU8dNG5&2igaKc&3YrbUvawMwmhHy5;el)oQ?4vbbU1%^rN&ELN3%K~! z;I|u-*xPMt_#NYydHYE!Viiu2m_5pQi|F+j7w($^^H6^jtd73Q%Hk@&lhg0|0COX> z1-i^qLSx^&QfRCMRKO^V<&;Dn*H5Aj4rlOJgv)NDj(enz=r_nI z$3@M54ddiZI=vmBx2!!v>H`^CY?Pr;MKd)2I72<{pL2%yXFgYG&Fa?5FD)P z;2EK2qFsijX%|MjFZttJ$z>0vzi9Hl`MGp(^gs-cD0oF*?2oSR#dtq`NfE40=RJWx zWrMV=eJ6E?hhtKyjTY*D$>cxVjl>Od)QUc*L_(1f9Z`uA{p;?PJb9AmS3ITibk}*< zKwP!=)bKZQep$m!=c=Gk%^mOpqLiTWl%T&*p_1K<{ed%Bl4Mh;>`>%=B~I41G3w@K z`_5zf4`zfa8`#VGxIpI8fE#3fkk&k$=!sD(=m>(RkT@%N3=-dPg+}70erEzYfhuFTzG(#rn@gmbg^!icNVidiX?RxhVVa z`+W5;KuKlKJJfY-CA-VdCf*PmF{ob`KS-96t?=vftD$H9VR3QXbv`n!ak(7>j(~_2 zku^Bv48mCn_w}^=1zIH@Kn^_->LMfxBXchS@yLZ#l?b~`y{me*cXAa86Eax*vZ

veiN2NDD?=Yu0$&v|5(q( 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⪙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 z%0A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 NYuNrQ%|L^W{|6&}`=kH> literal 0 HcmV?d00001 diff --git a/conf/system/include/14.2/pf.os b/conf/system/include/14.2/pf.os new file mode 100644 index 0000000..e131d1b --- /dev/null +++ b/conf/system/include/14.2/pf.os @@ -0,0 +1,708 @@ +# $OpenBSD: pf.os,v 1.27 2016/09/03 17:08:57 sthen Exp $ +# passive OS fingerprinting +# ------------------------- +# +# SYN signatures. Those signatures work for SYN packets only (duh!). +# +# (C) Copyright 2000-2003 by Michal Zalewski +# (C) Copyright 2003 by Mike Frantzen +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# +# +# This fingerprint database is adapted from Michal Zalewski's p0f passive +# operating system package. The last database sync was from a Nov 3 2003 +# p0f.fp. +# +# +# Each line in this file specifies a single fingerprint. Please read the +# information below carefully before attempting to append any signatures +# reported as UNKNOWN to this file to avoid mistakes. +# +# We use the following set metrics for fingerprinting: +# +# - Window size (WSS) - a highly OS dependent setting used for TCP/IP +# performance control (max. amount of data to be sent without ACK). +# Some systems use a fixed value for initial packets. On other +# systems, it is a multiple of MSS or MTU (MSS+40). In some rare +# cases, the value is just arbitrary. +# +# NEW SIGNATURE: if p0f reported a special value of 'Snn', the number +# appears to be a multiple of MSS (MSS*nn); a special value of 'Tnn' +# means it is a multiple of MTU ((MSS+40)*nn). Unless you notice the +# value of nn is not fixed (unlikely), just copy the Snn or Tnn token +# literally. If you know this device has a simple stack and a fixed +# MTU, you can however multiply S value by MSS, or T value by MSS+40, +# and put it instead of Snn or Tnn. +# +# If WSS otherwise looks like a fixed value (for example a multiple +# of two), or if you can confirm the value is fixed, please quote +# it literally. If there's no apparent pattern in WSS chosen, you +# should consider wildcarding this value. +# +# - Overall packet size - a function of all IP and TCP options and bugs. +# +# NEW SIGNATURE: Copy this value literally. +# +# - Initial TTL - We check the actual TTL of a received packet. It can't +# be higher than the initial TTL, and also shouldn't be dramatically +# lower (maximum distance is defined as 40 hops). +# +# NEW SIGNATURE: *Never* copy TTL from a p0f-reported signature literally. +# You need to determine the initial TTL. The best way to do it is to +# check the documentation for a remote system, or check its settings. +# A fairly good method is to simply round the observed TTL up to +# 32, 64, 128, or 255, but it should be noted that some obscure devices +# might not use round TTLs (in particular, some shoddy appliances use +# "original" initial TTL settings). If not sure, you can see how many +# hops you're away from the remote party with traceroute or mtr. +# +# - Don't fragment flag (DF) - some modern OSes set this to implement PMTU +# discovery. Others do not bother. +# +# NEW SIGNATURE: Copy this value literally. +# +# - Maximum segment size (MSS) - this setting is usually link-dependent. P0f +# uses it to determine link type of the remote host. +# +# NEW SIGNATURE: Always wildcard this value, except for rare cases when +# you have an appliance with a fixed value, know the system supports only +# a very limited number of network interface types, or know the system +# is using a value it pulled out of nowhere. Specific unique MSS +# can be used to tell Google crawlbots from the rest of the population. +# +# - Window scaling (WSCALE) - this feature is used to scale WSS. +# It extends the size of a TCP/IP window to 32 bits. Some modern +# systems implement this feature. +# +# NEW SIGNATURE: Observe several signatures. Initial WSCALE is often set +# to zero or other low value. There's usually no need to wildcard this +# parameter. +# +# - Timestamp - some systems that implement timestamps set them to +# zero in the initial SYN. This case is detected and handled appropriately. +# +# - Selective ACK permitted - a flag set by systems that implement +# selective ACK functionality. +# +# - The sequence of TCP all options (MSS, window scaling, selective ACK +# permitted, timestamp, NOP). Other than the options previously +# discussed, p0f also checks for timestamp option (a silly +# extension to broadcast your uptime ;-), NOP options (used for +# header padding) and sackOK option (selective ACK feature). +# +# NEW SIGNATURE: Copy the sequence literally. +# +# To wildcard any value (except for initial TTL or TCP options), replace +# it with '*'. You can also use a modulo operator to match any values +# that divide by nnn - '%nnn'. +# +# Fingerprint entry format: +# +# wwww:ttt:D:ss:OOO...:OS:Version:Subtype:Details +# +# wwww - window size (can be *, %nnn, Snn or Tnn). The special values +# "S" and "T" which are a multiple of MSS or a multiple of MTU +# respectively. +# ttt - initial TTL +# D - don't fragment bit (0 - not set, 1 - set) +# ss - overall SYN packet size +# OOO - option value and order specification (see below) +# OS - OS genre (Linux, Solaris, Windows) +# Version - OS Version (2.0.27 on x86, etc) +# Subtype - OS subtype or patchlevel (SP3, lo0) +# details - Generic OS details +# +# If OS genre starts with '*', p0f will not show distance, link type +# and timestamp data. It is useful for userland TCP/IP stacks of +# network scanners and so on, where many settings are randomized or +# bogus. +# +# If OS genre starts with @, it denotes an approximate hit for a group +# of operating systems (signature reporting still enabled in this case). +# Use this feature at the end of this file to catch cases for which +# you don't have a precise match, but can tell it's Windows or FreeBSD +# or whatnot by looking at, say, flag layout alone. +# +# Option block description is a list of comma or space separated +# options in the order they appear in the packet: +# +# N - NOP option +# Wnnn - window scaling option, value nnn (or * or %nnn) +# Mnnn - maximum segment size option, value nnn (or * or %nnn) +# S - selective ACK OK +# T - timestamp +# T0 - timestamp with a zero value +# +# To denote no TCP options, use a single '.'. +# +# Please report any additions to this file, or any inaccuracies or +# problems spotted, to the maintainers: lcamtuf@coredump.cx, +# frantzen@openbsd.org and bugs@openbsd.org with a tcpdump packet +# capture of the relevant SYN packet(s) +# +# A test and submission page is available at +# http://lcamtuf.coredump.cx/p0f-help/ +# +# +# WARNING WARNING WARNING +# ----------------------- +# +# Do not add a system X as OS Y just because NMAP says so. It is often +# the case that X is a NAT firewall. While nmap is talking to the +# device itself, p0f is fingerprinting the guy behind the firewall +# instead. +# +# When in doubt, use common sense, don't add something that looks like +# a completely different system as Linux or FreeBSD or LinkSys router. +# Check DNS name, establish a connection to the remote host and look +# at SYN+ACK - does it look similar? +# +# Some users tweak their TCP/IP settings - enable or disable RFC1323 +# functionality, enable or disable timestamps or selective ACK, +# disable PMTU discovery, change MTU and so on. Always compare a new rule +# to other fingerprints for this system, and verify the system isn't +# "customized" before adding it. It is OK to add signature variants +# caused by a commonly used software (personal firewalls, security +# packages, etc), but it makes no sense to try to add every single +# possible /proc/sys/net/ipv4 tweak on Linux or so. +# +# KEEP IN MIND: Some packet firewalls configured to normalize outgoing +# traffic (OpenBSD pf with "scrub" enabled, for example) will, well, +# normalize packets. Signatures will not correspond to the originating +# system (and probably not quite to the firewall either). +# +# NOTE: Try to keep this file in some reasonable order, from most to +# least likely systems. This will speed up operation. Also keep most +# generic and broad rules near the end. +# + +########################## +# Standard OS signatures # +########################## + +# ----------------- AIX --------------------- + +# AIX is first because its signatures are close to NetBSD, MacOS X and +# Linux 2.0, but it uses a fairly rare MSSes, at least sometimes... +# This is a shoddy hack, though. + +45046:64:0:44:M*: AIX:4.3::AIX 4.3 +16384:64:0:44:M512: AIX:4.3:2-3:AIX 4.3.2 and earlier + +16384:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2 +16384:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2 +32768:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2 +32768:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2 +65535:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2 +65535:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2 +65535:64:0:64:M*,N,W1,N,N,T,N,N,S: AIX:5.3:ML1:AIX 5.3 ML1 + +# ----------------- Linux ------------------- + +# S1:64:0:44:M*:A: Linux:1.2::Linux 1.2.x (XXX quirks support) +512:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x +16384:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x + +# Endian snafu! Nelson says "ha-ha": +2:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x (MkLinux) on Mac +64:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x (MkLinux) on Mac + + +S4:64:1:60:M1360,S,T,N,W0: Linux:google::Linux (Google crawlbot) + +S2:64:1:60:M*,S,T,N,W0: Linux:2.4::Linux 2.4 (big boy) +S3:64:1:60:M*,S,T,N,W0: Linux:2.4:.18-21:Linux 2.4.18 and newer +S4:64:1:60:M*,S,T,N,W0: Linux:2.4::Linux 2.4/2.6 <= 2.6.7 +S4:64:1:60:M*,S,T,N,W0: Linux:2.6:.1-7:Linux 2.4/2.6 <= 2.6.7 + +S4:64:1:60:M*,S,T,N,W5: Linux:2.6::Linux 2.6 (newer, 1) +S4:64:1:60:M*,S,T,N,W6: Linux:2.6::Linux 2.6 (newer, 2) +S4:64:1:60:M*,S,T,N,W7: Linux:2.6::Linux 2.6 (newer, 3) +T4:64:1:60:M*,S,T,N,W7: Linux:2.6::Linux 2.6 (newer, 4) + +S10:64:1:60:M*,S,T,N,W4: Linux:3.0::Linux 3.0 + +S3:64:1:60:M*,S,T,N,W1: Linux:2.5::Linux 2.5 (sometimes 2.4) +S4:64:1:60:M*,S,T,N,W1: Linux:2.5-2.6::Linux 2.5/2.6 +S3:64:1:60:M*,S,T,N,W2: Linux:2.5::Linux 2.5 (sometimes 2.4) +S4:64:1:60:M*,S,T,N,W2: Linux:2.5::Linux 2.5 (sometimes 2.4) + +S20:64:1:60:M*,S,T,N,W0: Linux:2.2:20-25:Linux 2.2.20 and newer +S22:64:1:60:M*,S,T,N,W0: Linux:2.2::Linux 2.2 +S11:64:1:60:M*,S,T,N,W0: Linux:2.2::Linux 2.2 + +# Popular cluster config scripts disable timestamps and +# selective ACK: +S4:64:1:48:M1460,N,W0: Linux:2.4:cluster:Linux 2.4 in cluster + +# This needs to be investigated. On some systems, WSS +# is selected as a multiple of MTU instead of MSS. I got +# many submissions for this for many late versions of 2.4: +T4:64:1:60:M1412,S,T,N,W0: Linux:2.4::Linux 2.4 (late, uncommon) + +# This happens only over loopback, but let's make folks happy: +32767:64:1:60:M16396,S,T,N,W0: Linux:2.4:lo0:Linux 2.4 (local) +S8:64:1:60:M3884,S,T,N,W0: Linux:2.2:lo0:Linux 2.2 (local) + +# Opera visitors: +16384:64:1:60:M*,S,T,N,W0: Linux:2.2:Opera:Linux 2.2 (Opera?) +32767:64:1:60:M*,S,T,N,W0: Linux:2.4:Opera:Linux 2.4 (Opera?) + +# Some fairly common mods: +S4:64:1:52:M*,N,N,S,N,W0: Linux:2.4:ts:Linux 2.4 w/o timestamps +S22:64:1:52:M*,N,N,S,N,W0: Linux:2.2:ts:Linux 2.2 w/o timestamps + + +# ----------------- FreeBSD ----------------- + +16384:64:1:44:M*: FreeBSD:2.0-2.2::FreeBSD 2.0-4.2 +16384:64:1:44:M*: FreeBSD:3.0-3.5::FreeBSD 2.0-4.2 +16384:64:1:44:M*: FreeBSD:4.0-4.2::FreeBSD 2.0-4.2 +16384:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.4::FreeBSD 4.4 + +1024:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.4::FreeBSD 4.4 + +57344:64:1:44:M*: FreeBSD:4.6-4.8:noRFC1323:FreeBSD 4.6-4.8 (no RFC1323) +57344:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.6-4.9::FreeBSD 4.6-4.9 + +32768:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.8-4.11::FreeBSD 4.8-5.1 (or MacOS X) +32768:64:1:60:M*,N,W0,N,N,T: FreeBSD:5.0-5.1::FreeBSD 4.8-5.1 (or MacOS X) +65535:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.8-4.11::FreeBSD 4.8-5.2 (or MacOS X) +65535:64:1:60:M*,N,W0,N,N,T: FreeBSD:5.0-5.2::FreeBSD 4.8-5.2 (or MacOS X) +65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:4.7-4.11::FreeBSD 4.7-5.2 +65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:5.0-5.2::FreeBSD 4.7-5.2 + +# XXX need quirks support +# 65535:64:1:60:M*,N,W0,N,N,T:Z:FreeBSD:5.1-5.4::5.1-current (1) +# 65535:64:1:60:M*,N,W1,N,N,T:Z:FreeBSD:5.1-5.4::5.1-current (2) +# 65535:64:1:60:M*,N,W2,N,N,T:Z:FreeBSD:5.1-5.4::5.1-current (3) +# 65535:64:1:44:M*:Z:FreeBSD:5.2::FreeBSD 5.2 (no RFC1323) + +# 16384:64:1:60:M*,N,N,N,N,N,N,T:FreeBSD:4.4:noTS:FreeBSD 4.4 (w/o timestamps) + +# ----------------- NetBSD ------------------ + +16384:64:0:60:M*,N,W0,N,N,T: NetBSD:1.3::NetBSD 1.3 +65535:64:0:60:M*,N,W0,N,N,T0: NetBSD:1.6:opera:NetBSD 1.6 (Opera) +16384:64:0:60:M*,N,W0,N,N,T0: NetBSD:1.6::NetBSD 1.6 +16384:64:1:60:M*,N,W0,N,N,T0: NetBSD:1.6:df:NetBSD 1.6 (DF) +65535:64:1:60:M*,N,W1,N,N,T0: NetBSD:1.6::NetBSD 1.6W-current (DF) +65535:64:1:60:M*,N,W0,N,N,T0: NetBSD:1.6::NetBSD 1.6X (DF) +32768:64:1:60:M*,N,W0,N,N,T0: NetBSD:1.6:randomization:NetBSD 1.6ZH-current (w/ ip_id randomization) + +# ----------------- OpenBSD ----------------- + +16384:64:0:60:M*,N,W0,N,N,T: OpenBSD:2.6::NetBSD 1.3 (or OpenBSD 2.6) +16384:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-4.8::OpenBSD 3.0-4.8 +16384:64:0:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-4.8:no-df:OpenBSD 3.0-4.8 (scrub no-df) +57344:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.3-4.0::OpenBSD 3.3-4.0 +57344:64:0:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.3-4.0:no-df:OpenBSD 3.3-4.0 (scrub no-df) + +65535:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-4.0:opera:OpenBSD 3.0-4.0 (Opera) + +16384:64:1:64:M*,N,N,S,N,W3,N,N,T: OpenBSD:4.9::OpenBSD 4.9 +16384:64:0:64:M*,N,N,S,N,W3,N,N,T: OpenBSD:4.9:no-df:OpenBSD 4.9 (scrub no-df) + +16384:64:1:64:M*,N,N,S,N,W6,N,N,T: OpenBSD:6.1::OpenBSD 6.1 +16384:64:0:64:M*,N,N,S,N,W6,N,N,T: OpenBSD:6.1:no-df:OpenBSD 6.1 (scrub no-df) + +# ----------------- DragonFly BSD ----------------- + +57344:64:1:60:M*,N,W0,N,N,T: DragonFly:1.0:A:DragonFly 1.0A +57344:64:0:64:M*,N,W0,N,N,S,N,N,T: DragonFly:1.2-1.12::DragonFly 1.2-1.12 +5840:64:1:60:M*,S,T,N,W4: DragonFly:2.0-2.1::DragonFly 2.0-2.1 +57344:64:0:64:M*,N,W0,N,N,S,N,N,T: DragonFly:2.2-2.3::DragonFly 2.2-2.3 +57344:64:0:64:M*,N,W5,N,N,S,N,N,T: DragonFly:2.4-2.7::DragonFly 2.4-2.7 + +# ----------------- Solaris ----------------- + +S17:64:1:64:N,W3,N,N,T0,N,N,S,M*: Solaris:8:RFC1323:Solaris 8 RFC1323 +S17:64:1:48:N,N,S,M*: Solaris:8::Solaris 8 +S17:255:1:44:M*: Solaris:2.5-2.7::Solaris 2.5 to 7 + +S6:255:1:44:M*: Solaris:2.6-2.7::Solaris 2.6 to 7 +S23:255:1:44:M*: Solaris:2.5:1:Solaris 2.5.1 +S34:64:1:48:M*,N,N,S: Solaris:2.9::Solaris 9 +S44:255:1:44:M*: Solaris:2.7::Solaris 7 + +4096:64:0:44:M1460: SunOS:4.1::SunOS 4.1.x + +S34:64:1:52:M*,N,W0,N,N,S: Solaris:10:beta:Solaris 10 (beta) +32850:64:1:64:M*,N,N,T,N,W1,N,N,S: Solaris:10::Solaris 10 1203 + +# ----------------- IRIX -------------------- + +49152:64:0:44:M*: IRIX:6.4::IRIX 6.4 +61440:64:0:44:M*: IRIX:6.2-6.5::IRIX 6.2-6.5 +49152:64:0:52:M*,N,W2,N,N,S: IRIX:6.5:RFC1323:IRIX 6.5 (RFC1323) +49152:64:0:52:M*,N,W3,N,N,S: IRIX:6.5:RFC1323:IRIX 6.5 (RFC1323) + +61440:64:0:48:M*,N,N,S: IRIX:6.5:12-21:IRIX 6.5.12 - 6.5.21 +49152:64:0:48:M*,N,N,S: IRIX:6.5:15-21:IRIX 6.5.15 - 6.5.21 + +49152:60:0:64:M*,N,W2,N,N,T,N,N,S: IRIX:6.5:IP27:IRIX 6.5 IP27 + + +# ----------------- Tru64 ------------------- + +32768:64:1:48:M*,N,W0: Tru64:4.0::Tru64 4.0 (or OS/2 Warp 4) +32768:64:0:48:M*,N,W0: Tru64:5.0::Tru64 5.0 +8192:64:0:44:M1460: Tru64:5.1:noRFC1323:Tru64 6.1 (no RFC1323) (or QNX 6) +61440:64:0:48:M*,N,W0: Tru64:5.1a:JP4:Tru64 v5.1a JP4 (or OpenVMS 7.x on Compaq 5.x stack) + +# ----------------- OpenVMS ----------------- + +6144:64:1:60:M*,N,W0,N,N,T: OpenVMS:7.2::OpenVMS 7.2 (Multinet 4.4 stack) + +# ----------------- MacOS ------------------- + +# XXX Need EOL tcp opt support +# S2:255:1:48:M*,W0,E:.:MacOS:8.6 classic + +# XXX some of these use EOL too +16616:255:1:48:M*,W0: MacOS:7.3-7.6:OTTCP:MacOS 7.3-8.6 (OTTCP) +16616:255:1:48:M*,W0: MacOS:8.0-8.6:OTTCP:MacOS 7.3-8.6 (OTTCP) +16616:255:1:48:M*,N,N,N: MacOS:8.1-8.6:OTTCP:MacOS 8.1-8.6 (OTTCP) +32768:255:1:48:M*,W0,N: MacOS:9.0-9.2::MacOS 9.0-9.2 +65535:255:1:48:M*,N,N,N,N: MacOS:9.1::MacOS 9.1 (OT 2.7.4) + + +# ----------------- Windows ----------------- + +# Windows TCP/IP stack is a mess. For most recent XP, 2000 and +# even 98, the patchlevel, not the actual OS version, is more +# relevant to the signature. They share the same code, so it would +# seem. Luckily for us, almost all Windows 9x boxes have an +# awkward MSS of 536, which I use to tell one from another +# in most difficult cases. + +8192:32:1:44:M*: Windows:3.11::Windows 3.11 (Tucows) +S44:64:1:64:M*,N,W0,N,N,T0,N,N,S: Windows:95::Windows 95 +8192:128:1:64:M*,N,W0,N,N,T0,N,N,S: Windows:95:b:Windows 95b + +# There were so many tweaking tools and so many stack versions for +# Windows 98 it is no longer possible to tell them from each other +# without some very serious research. Until then, there's an insane +# number of signatures, for your amusement: + +S44:32:1:48:M*,N,N,S: Windows:98:lowTTL:Windows 98 (low TTL) +8192:32:1:48:M*,N,N,S: Windows:98:lowTTL:Windows 98 (low TTL) +%8192:64:1:48:M536,N,N,S: Windows:98::Windows 98 +%8192:128:1:48:M536,N,N,S: Windows:98::Windows 98 +S4:64:1:48:M*,N,N,S: Windows:98::Windows 98 +S6:64:1:48:M*,N,N,S: Windows:98::Windows 98 +S12:64:1:48:M*,N,N,S: Windows:98::Windows 98 +T30:64:1:64:M1460,N,W0,N,N,T0,N,N,S: Windows:98::Windows 98 +32767:64:1:48:M*,N,N,S: Windows:98::Windows 98 +37300:64:1:48:M*,N,N,S: Windows:98::Windows 98 +46080:64:1:52:M*,N,W3,N,N,S: Windows:98:RFC1323:Windows 98 (RFC1323) +65535:64:1:44:M*: Windows:98:noSack:Windows 98 (no sack) +S16:128:1:48:M*,N,N,S: Windows:98::Windows 98 +S16:128:1:64:M*,N,W0,N,N,T0,N,N,S: Windows:98::Windows 98 +S26:128:1:48:M*,N,N,S: Windows:98::Windows 98 +T30:128:1:48:M*,N,N,S: Windows:98::Windows 98 +32767:128:1:52:M*,N,W0,N,N,S: Windows:98::Windows 98 +60352:128:1:48:M*,N,N,S: Windows:98::Windows 98 +60352:128:1:64:M*,N,W2,N,N,T0,N,N,S: Windows:98::Windows 98 + +# What's with 1414 on NT? +T31:128:1:44:M1414: Windows:NT:4.0:Windows NT 4.0 SP6a +64512:128:1:44:M1414: Windows:NT:4.0:Windows NT 4.0 SP6a +8192:128:1:44:M*: Windows:NT:4.0:Windows NT 4.0 (older) + +# Windows XP and 2000. Most of the signatures that were +# either dubious or non-specific (no service pack data) +# were deleted and replaced with generics at the end. + +65535:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows 2000 SP4, XP SP1 +65535:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows 2000 SP4, XP SP1 +%8192:128:1:48:M*,N,N,S: Windows:2000:SP2+:Windows 2000 SP2, XP SP1 (seldom 98 4.10.2222) +%8192:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows 2000 SP2, XP SP1 (seldom 98 4.10.2222) +S20:128:1:48:M*,N,N,S: Windows:2000::Windows 2000/XP SP3 +S20:128:1:48:M*,N,N,S: Windows:XP:SP3:Windows 2000/XP SP3 +S45:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows 2000 SP4, XP SP 1 +S45:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows 2000 SP4, XP SP 1 +40320:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows 2000 SP4 + +S6:128:1:48:M*,N,N,S: Windows:2000:SP2:Windows XP, 2000 SP2+ +S6:128:1:48:M*,N,N,S: Windows:XP::Windows XP, 2000 SP2+ +S12:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows XP SP1 +S44:128:1:48:M*,N,N,S: Windows:2000:SP3:Windows Pro SP1, 2000 SP3 +S44:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows Pro SP1, 2000 SP3 +64512:128:1:48:M*,N,N,S: Windows:2000:SP3:Windows SP1, 2000 SP3 +64512:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows SP1, 2000 SP3 +32767:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows SP1, 2000 SP4 +32767:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows SP1, 2000 SP4 + +8192:128:1:52:M*,N,W2,N,N,S: Windows:Vista::Windows Vista/7 + +# Odds, ends, mods: + +S52:128:1:48:M1260,N,N,S: Windows:2000:cisco:Windows XP/2000 via Cisco +S52:128:1:48:M1260,N,N,S: Windows:XP:cisco:Windows XP/2000 via Cisco +65520:128:1:48:M*,N,N,S: Windows:XP::Windows XP bare-bone +16384:128:1:52:M536,N,W0,N,N,S: Windows:2000:ZoneAlarm:Windows 2000 w/ZoneAlarm? +2048:255:0:40:.: Windows:.NET::Windows .NET Enterprise Server + +44620:64:0:48:M*,N,N,S: Windows:ME::Windows ME no SP (?) +S6:255:1:48:M536,N,N,S: Windows:95:winsock2:Windows 95 winsock 2 +32768:32:1:52:M1460,N,W0,N,N,S: Windows:2003:AS:Windows 2003 AS + + +# No need to be more specific, it passes: +# *:128:1:48:M*,N,N,S:U:-Windows:XP/2000 while downloading (leak!) XXX quirk +# there is an equiv similar generic sig w/o the quirk + +# ----------------- HP/UX ------------------- + +32768:64:1:44:M*: HP-UX:B.10.20::HP-UX B.10.20 +32768:64:0:48:M*,W0,N: HP-UX:11.0::HP-UX 11.0 +32768:64:1:48:M*,W0,N: HP-UX:11.10::HP-UX 11.0 or 11.11 +32768:64:1:48:M*,W0,N: HP-UX:11.11::HP-UX 11.0 or 11.11 + +# Whoa. Hardcore WSS. +0:64:0:48:M*,W0,N: HP-UX:B.11.00:A:HP-UX B.11.00 A (RFC1323) + +# ----------------- RiscOS ------------------ + +# We don't yet support the ?12 TCP option +#16384:64:1:68:M1460,N,W0,N,N,T,N,N,?12: RISCOS:3.70-4.36::RISC OS 3.70-4.36 +12288:32:0:44:M536: RISC OS:3.70:4.10:RISC OS 3.70 inet 4.10 + +# XXX quirk +# 4096:64:1:56:M1460,N,N,T:T: RISC OS:3.70:freenet:RISC OS 3.70 freenet 2.00 + + + +# ----------------- BSD/OS ------------------ + +# Once again, power of two WSS is also shared by MacOS X with DF set +8192:64:1:60:M1460,N,W0,N,N,T: BSD/OS:3.1::BSD/OS 3.1-4.3 (or MacOS X 10.2 w/DF) +8192:64:1:60:M1460,N,W0,N,N,T: BSD/OS:4.0-4.3::BSD/OS 3.1-4.3 (or MacOS X 10.2) + + +# ---------------- NewtonOS ----------------- + +4096:64:0:44:M1420: NewtonOS:2.1::NewtonOS 2.1 + +# ---------------- NeXTSTEP ----------------- + +S4:64:0:44:M1024: NeXTSTEP:3.3::NeXTSTEP 3.3 +S8:64:0:44:M512: NeXTSTEP:3.3::NeXTSTEP 3.3 + +# ------------------ BeOS ------------------- + +1024:255:0:48:M*,N,W0: BeOS:5.0-5.1::BeOS 5.0-5.1 +12288:255:0:44:M1402: BeOS:5.0::BeOS 5.0.x + +# ------------------ OS/400 ----------------- + +8192:64:1:60:M1440,N,W0,N,N,T: OS/400:VR4::OS/400 VR4/R5 +8192:64:1:60:M1440,N,W0,N,N,T: OS/400:VR5::OS/400 VR4/R5 +4096:64:1:60:M1440,N,W0,N,N,T: OS/400:V4R5:CF67032:OS/400 V4R5 + CF67032 + +# XXX quirk +# 28672:64:0:44:M1460:A:OS/390:? + +# ------------------ ULTRIX ----------------- + +16384:64:0:40:.: ULTRIX:4.5::ULTRIX 4.5 + +# ------------------- QNX ------------------- + +S16:64:0:44:M512: QNX:::QNX demodisk + +# ------------------ Novell ----------------- + +16384:128:1:44:M1460: Novell:NetWare:5.0:Novel Netware 5.0 +6144:128:1:44:M1460: Novell:IntranetWare:4.11:Novell IntranetWare 4.11 +6144:128:1:44:M1368: Novell:BorderManager::Novell BorderManager ? + +6144:128:1:52:M*,W0,N,S,N,N: Novell:Netware:6:Novell Netware 6 SP3 + + +# ----------------- SCO ------------------ +S3:64:1:60:M1460,N,W0,N,N,T: SCO:UnixWare:7.1:SCO UnixWare 7.1 +S17:64:1:60:M1380,N,W0,N,N,T: SCO:UnixWare:7.1:SCO UnixWare 7.1.3 MP3 +S23:64:1:44:M1380: SCO:OpenServer:5.0:SCO OpenServer 5.0 + +# ------------------- DOS ------------------- + +2048:255:0:44:M536: DOS:WATTCP:1.05:DOS Arachne via WATTCP/1.05 +T2:255:0:44:M984: DOS:WATTCP:1.05Arachne:Arachne via WATTCP/1.05 (eepro) + +# ------------------ OS/2 ------------------- + +S56:64:0:44:M512: OS/2:4::OS/2 4 +28672:64:0:44:M1460: OS/2:4::OS/2 Warp 4.0 + +# ----------------- TOPS-20 ----------------- + +# Another hardcore MSS, one of the ACK leakers hunted down. +# XXX QUIRK 0:64:0:44:M1460:A:TOPS-20:version 7 +0:64:0:44:M1460: TOPS-20:7::TOPS-20 version 7 + +# ----------------- FreeMiNT ---------------- + +S44:255:0:44:M536: FreeMiNT:1:16A:FreeMiNT 1 patch 16A (Atari) + +# ------------------ AMIGA ------------------ + +# XXX TCP option 12 +# S32:64:1:56:M*,N,N,S,N,N,?12:.:AMIGA:3.9 BB2 with Miami stack + +# ------------------ Plan9 ------------------ + +65535:255:0:48:M1460,W0,N: Plan9:4::Plan9 edition 4 + +# ----------------- AMIGAOS ----------------- + +16384:64:1:48:M1560,N,N,S: AMIGAOS:3.9::AMIGAOS 3.9 BB2 MiamiDX + +########################################### +# Appliance / embedded / other signatures # +########################################### + +# ---------- Firewalls / routers ------------ + +S12:64:1:44:M1460: @Checkpoint:::Checkpoint (unknown 1) +S12:64:1:48:N,N,S,M1460: @Checkpoint:::Checkpoint (unknown 2) +4096:32:0:44:M1460: ExtremeWare:4.x::ExtremeWare 4.x + +# XXX TCP option 12 +# S32:64:0:68:M512,N,W0,N,N,T,N,N,?12:.:Nokia:IPSO w/Checkpoint NG FP3 +# S16:64:0:68:M1024,N,W0,N,N,T,N,N,?12:.:Nokia:IPSO 3.7 build 026 + +S4:64:1:60:W0,N,S,T,M1460: FortiNet:FortiGate:50:FortiNet FortiGate 50 + +8192:64:1:44:M1460: Eagle:::Eagle Secure Gateway + +S52:128:1:48:M1260,N,N,N,N: LinkSys:WRV54G::LinkSys WRV54G VPN router + + + +# ------- Switches and other stuff ---------- + +4128:255:0:44:M*: Cisco:::Cisco Catalyst 3500, 7500 etc +S8:255:0:44:M*: Cisco:12008::Cisco 12008 +60352:128:1:64:M1460,N,W2,N,N,T,N,N,S: Alteon:ACEswitch::Alteon ACEswitch +64512:128:1:44:M1370: Nortel:Contivity Client::Nortel Conectivity Client + + +# ---------- Caches and whatnots ------------ + +S4:64:1:52:M1460,N,N,S,N,W0: AOL:web cache::AOL web cache + +32850:64:1:64:N,W1,N,N,T,N,N,S,M*: NetApp:5.x::NetApp Data OnTap 5.x +16384:64:1:64:M1460,N,N,S,N,W0,N: NetApp:5.3:1:NetApp 5.3.1 +65535:64:0:64:M1460,N,N,S,N,W*,N,N,T: NetApp:5.3-5.5::NetApp 5.3-5.5 +65535:64:0:60:M1460,N,W0,N,N,T: NetApp:CacheFlow::NetApp CacheFlow +8192:64:1:64:M1460,N,N,S,N,W0,N,N,T: NetApp:5.2:1:NetApp NetCache 5.2.1 +20480:64:1:64:M1460,N,N,S,N,W0,N,N,T: NetApp:4.1::NetApp NetCache4.1 + +65535:64:0:60:M1460,N,W0,N,N,T: CacheFlow:4.1::CacheFlow CacheOS 4.1 +8192:64:0:60:M1380,N,N,N,N,N,N,T: CacheFlow:1.1::CacheFlow CacheOS 1.1 + +S4:64:0:48:M1460,N,N,S: Cisco:Content Engine::Cisco Content Engine + +27085:128:0:40:.: Dell:PowerApp cache::Dell PowerApp (Linux-based) + +65535:255:1:48:N,W1,M1460: Inktomi:crawler::Inktomi crawler +S1:255:1:60:M1460,S,T,N,W0: LookSmart:ZyBorg::LookSmart ZyBorg + +16384:255:0:40:.: Proxyblocker:::Proxyblocker (what's this?) + +65535:255:0:48:M*,N,N,S: Redline:::Redline T|X 2200 + +32696:128:0:40:M1460: Spirent:Avalanche::Spirent Web Avalanche HTTP benchmarking engine + +# ----------- Embedded systems -------------- + +S9:255:0:44:M536: PalmOS:Tungsten:C:PalmOS Tungsten C +S5:255:0:44:M536: PalmOS:3::PalmOS 3/4 +S5:255:0:44:M536: PalmOS:4::PalmOS 3/4 +S4:255:0:44:M536: PalmOS:3:5:PalmOS 3.5 +2948:255:0:44:M536: PalmOS:3:5:PalmOS 3.5.3 (Handera) +S29:255:0:44:M536: PalmOS:5::PalmOS 5.0 +16384:255:0:44:M1398: PalmOS:5.2:Clie:PalmOS 5.2 (Clie) +S14:255:0:44:M1350: PalmOS:5.2:Treo:PalmOS 5.2.1 (Treo) + +S23:64:1:64:N,W1,N,N,T,N,N,S,M1460: SymbianOS:7::SymbianOS 7 + +8192:255:0:44:M1460: SymbianOS:6048::Symbian OS 6048 (Nokia 7650?) +8192:255:0:44:M536: SymbianOS:9210::Symbian OS (Nokia 9210?) +S22:64:1:56:M1460,T,S: SymbianOS:P800::Symbian OS ? (SE P800?) +S36:64:1:56:M1360,T,S: SymbianOS:6600::Symbian OS 60xx (Nokia 6600?) + + +# Perhaps S4? +5840:64:1:60:M1452,S,T,N,W1: Zaurus:3.10::Zaurus 3.10 + +32768:128:1:64:M1460,N,W0,N,N,T0,N,N,S: PocketPC:2002::PocketPC 2002 + +S1:255:0:44:M346: Contiki:1.1:rc0:Contiki 1.1-rc0 + +4096:128:0:44:M1460: Sega:Dreamcast:3.0:Sega Dreamcast Dreamkey 3.0 +T5:64:0:44:M536: Sega:Dreamcast:HKT-3020:Sega Dreamcast HKT-3020 (browser disc 51027) +S22:64:1:44:M1460: Sony:PS2::Sony Playstation 2 (SOCOM?) + +S12:64:0:44:M1452: AXIS:5600:v5.64:AXIS Printer Server 5600 v5.64 + +3100:32:1:44:M1460: Windows:CE:2.0:Windows CE 2.0 + +#################### +# Fancy signatures # +#################### + +1024:64:0:40:.: *NMAP:syn scan:1:NMAP syn scan (1) +2048:64:0:40:.: *NMAP:syn scan:2:NMAP syn scan (2) +3072:64:0:40:.: *NMAP:syn scan:3:NMAP syn scan (3) +4096:64:0:40:.: *NMAP:syn scan:4:NMAP syn scan (4) + +# Requires quirks support +# 1024:64:0:40:.:A:*NMAP:TCP sweep probe (1) +# 2048:64:0:40:.:A:*NMAP:TCP sweep probe (2) +# 3072:64:0:40:.:A:*NMAP:TCP sweep probe (3) +# 4096:64:0:40:.:A:*NMAP:TCP sweep probe (4) + +1024:64:0:60:W10,N,M265,T: *NMAP:OS:1:NMAP OS detection probe (1) +2048:64:0:60:W10,N,M265,T: *NMAP:OS:2:NMAP OS detection probe (2) +3072:64:0:60:W10,N,M265,T: *NMAP:OS:3:NMAP OS detection probe (3) +4096:64:0:60:W10,N,M265,T: *NMAP:OS:4:NMAP OS detection probe (4) + +32767:64:0:40:.: *NAST:::NASTsyn scan + +# Requires quirks support +# 12345:255:0:40:.:A:-p0f:sendsyn utility + + +##################################### +# Generic signatures - just in case # +##################################### + +#*:64:1:60:M*,N,W*,N,N,T: @FreeBSD:4.0-4.9::FreeBSD 4.x/5.x +#*:64:1:60:M*,N,W*,N,N,T: @FreeBSD:5.0-5.1::FreeBSD 4.x/5.x + +*:128:1:52:M*,N,W0,N,N,S: @Windows:XP:RFC1323:Windows XP/2000 (RFC1323 no tstamp) +*:128:1:52:M*,N,W0,N,N,S: @Windows:2000:RFC1323:Windows XP/2000 (RFC1323 no tstamp) +*:128:1:52:M*,N,W*,N,N,S: @Windows:XP:RFC1323:Windows XP/2000 (RFC1323 no tstamp) +*:128:1:52:M*,N,W*,N,N,S: @Windows:2000:RFC1323:Windows XP/2000 (RFC1323 no tstamp) +*:128:1:64:M*,N,W0,N,N,T0,N,N,S: @Windows:XP:RFC1323:Windows XP/2000 (RFC1323) +*:128:1:64:M*,N,W0,N,N,T0,N,N,S: @Windows:2000:RFC1323:Windows XP/2000 (RFC1323) +*:128:1:64:M*,N,W*,N,N,T0,N,N,S: @Windows:XP:RFC1323:Windows XP (RFC1323, w+) +*:128:1:48:M536,N,N,S: @Windows:98::Windows 98 +*:128:1:48:M*,N,N,S: @Windows:XP::Windows XP/2000 +*:128:1:48:M*,N,N,S: @Windows:2000::Windows XP/2000 + + diff --git a/conf/system/include/14.2/pfctl b/conf/system/include/14.2/pfctl new file mode 100755 index 0000000000000000000000000000000000000000..475c7a848a0c2aadb879093996a708f479ed08c8 GIT binary patch literal 341856 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 Pi6SP;_;=4yy8iz+u(Fj- literal 0 HcmV?d00001 diff --git a/conf/system/include/14.2/pfilctl b/conf/system/include/14.2/pfilctl new file mode 100755 index 0000000000000000000000000000000000000000..5011f3aa8f04471cea25229bc3bc68e229f94909 GIT binary patch literal 9424 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 Urnq!Wxv>FU=ziE13NQRGynhq literal 0 HcmV?d00001 diff --git a/conf/system/include/14.2/pflogd b/conf/system/include/14.2/pflogd new file mode 100755 index 0000000000000000000000000000000000000000..fb6e935e29480667d4c9a44649ac65c242c9312e GIT binary patch literal 26448 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

xzO_vYfAYg< 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 literal 0 HcmV?d00001 diff --git a/gui/bastille_manager_tarballs.php b/gui/bastille_manager_tarballs.php index ba8d0bb..33a1856 100644 --- a/gui/bastille_manager_tarballs.php +++ b/gui/bastille_manager_tarballs.php @@ -72,7 +72,7 @@ $sphere_array = $rel_list; if ($linux_compat_support == "YES"): $a_action = [ - //'14.2-RELEASE' => gettext('14.2-RELEASE'), + '14.2-RELEASE' => gettext('14.2-RELEASE'), '14.1-RELEASE' => gettext('14.1-RELEASE'), '14.0-RELEASE' => gettext('14.0-RELEASE'), '13.4-RELEASE' => gettext('13.4-RELEASE'), @@ -98,7 +98,7 @@ if ($linux_compat_support == "YES"): ]; else: $a_action = [ - //'14.2-RELEASE' => gettext('14.2-RELEASE'), + '14.2-RELEASE' => gettext('14.2-RELEASE'), '14.1-RELEASE' => gettext('14.1-RELEASE'), '14.0-RELEASE' => gettext('14.0-RELEASE'), '13.4-RELEASE' => gettext('13.4-RELEASE'), diff --git a/version b/version index 2818446..a2f3bf5 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.40 +1.1.41 From c5d15f9c838f2b7b58305fa5b3b5d10c3219ad20 Mon Sep 17 00:00:00 2001 From: tschettervictor <85497460+tschettervictor@users.noreply.github.com> Date: Wed, 7 May 2025 22:00:36 -0600 Subject: [PATCH 06/80] Add 3 necessary variables for ext to work These are three new options that have recently been added to Bastille, one of which is required to keep using this extension (bastille_network_vnet_type) --- conf/bastille.conf.ext | 3 +++ 1 file changed, 3 insertions(+) diff --git a/conf/bastille.conf.ext b/conf/bastille.conf.ext index 4ba7c65..c7bee76 100644 --- a/conf/bastille.conf.ext +++ b/conf/bastille.conf.ext @@ -1,5 +1,6 @@ bastille_prefix="/usr/local/bastille" bastille_backupsdir="${bastille_prefix}/backups" +bastille_migratedir="${bastille_prefix}/migrate" bastille_cachedir="${bastille_prefix}/cache" bastille_jailsdir="${bastille_prefix}/jails" bastille_releasesdir="${bastille_prefix}/releases" @@ -22,6 +23,7 @@ bastille_compress_xz_options="-0 -v" bastille_decompress_xz_options="-c -d -v" bastille_compress_gz_options="-1 -v" bastille_decompress_gz_options="-k -d -c -v" +bastille_network_vnet_type="if_bridge" bastille_network_loopback="" bastille_network_pf_ext_if="ext_if" bastille_network_pf_table="jails" @@ -34,3 +36,4 @@ bastille_template_thick="default/thick" bastille_template_clone="default/clone" bastille_template_thin="default/thin" bastille_template_vnet="default/vnet" +bastille_template_vlan="default/vlan" From 34e4902919c0df2968c3302eb3fccba4c44fe272 Mon Sep 17 00:00:00 2001 From: tschettervictor <85497460+tschettervictor@users.noreply.github.com> Date: Wed, 4 Jun 2025 08:28:27 -0600 Subject: [PATCH 07/80] Use -y on destroy jail --- gui/bastille_manager_util.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gui/bastille_manager_util.php b/gui/bastille_manager_util.php index 95333a4..17590ed 100644 --- a/gui/bastille_manager_util.php +++ b/gui/bastille_manager_util.php @@ -390,9 +390,9 @@ if($_POST): break; else: if (isset($_POST['nowstop'])): - $cmd = ("/usr/local/bin/bastille destroy -f {$item}"); + $cmd = ("/usr/local/bin/bastille destroy -fy {$item}"); else: - $cmd = ("/usr/local/bin/bastille destroy {$item}"); + $cmd = ("/usr/local/bin/bastille destroy -y {$item}"); endif; unset($output,$retval);mwexec2($cmd,$output,$retval); if($retval == 0): From b751cfce0756b9ec7475cdfc3731824707dd95e5 Mon Sep 17 00:00:00 2001 From: tschettervictor <85497460+tschettervictor@users.noreply.github.com> Date: Sat, 9 Aug 2025 20:30:10 -0600 Subject: [PATCH 08/80] destroy: implement necessary -y option to autoconfirm --- gui/bastille_manager_util.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gui/bastille_manager_util.php b/gui/bastille_manager_util.php index 95333a4..b4db349 100644 --- a/gui/bastille_manager_util.php +++ b/gui/bastille_manager_util.php @@ -390,9 +390,9 @@ if($_POST): break; else: if (isset($_POST['nowstop'])): - $cmd = ("/usr/local/bin/bastille destroy -f {$item}"); + $cmd = ("/usr/local/bin/bastille destroy -afy {$item}"); else: - $cmd = ("/usr/local/bin/bastille destroy {$item}"); + $cmd = ("/usr/local/bin/bastille destroy -fy {$item}"); endif; unset($output,$retval);mwexec2($cmd,$output,$retval); if($retval == 0): From 14a2e28f96915456d6f7e3be59e0d9c4e3f6f859 Mon Sep 17 00:00:00 2001 From: tschettervictor Date: Wed, 3 Sep 2025 12:46:42 -0600 Subject: [PATCH 09/80] add support for 14.3 This allows using update and upgrade commands using 14.3 --- .../system/freebsd-update/14.3/freebsd-update | 3547 +++++++++++++++++ .../freebsd-update/14.3/freebsd-update.conf | 78 + 2 files changed, 3625 insertions(+) create mode 100644 conf/system/freebsd-update/14.3/freebsd-update create mode 100644 conf/system/freebsd-update/14.3/freebsd-update.conf diff --git a/conf/system/freebsd-update/14.3/freebsd-update b/conf/system/freebsd-update/14.3/freebsd-update new file mode 100644 index 0000000..77b12a3 --- /dev/null +++ b/conf/system/freebsd-update/14.3/freebsd-update @@ -0,0 +1,3547 @@ +#!/bin/sh + +#- +# SPDX-License-Identifier: BSD-2-Clause +# +# 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. + +#### 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 '`basename $0` [options] install' first." + echo "Run '`basename $0` [options] 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 '`basename $0` [options] 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 '`basename $0` [options] 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 -r ${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 "update.FreeBSD.org" (in which case +# freebsd-update will select one of the mirrors) or "update1.freebsd.org" +# (in which case freebsd-update 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 + [yY]*) + return 0 + ;; + [nN]*) + 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 $2 against $1 and $3 and +# find any files with values unique to $2; generate $4 containing these paths +# and their corresponding hashes from $1. +fetch_filter_mergechanges () { + # Pull out the paths and hashes of the files matching ${MERGECHANGES}. + for F in $1 $2 $3; 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 or $3-values + # and is a file means that we should list the path in $3. + sort $1-values $3-values | + comm -13 - $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 > $4 + + # Clean up + rm $1-values $2-values $3-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 '`basename $0` [options] 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 + while true; do + read response /dev/null; then + echo + break + fi + ${EDITOR} `pwd`/merge/new/${F} < /dev/tty + + if ! grep -qE '^(<<<<<<<|=======|>>>>>>>)([[:space:]].*)?$' $(pwd)/merge/new/${F} ; then + break + fi + cat <<-EOF + +Merge conflict markers remain in: ${F} +These must be resolved for the system to be functional. + +Press Enter to return to editing this file, or type "ACCEPT" to carry on with +these lines remaining in the file. + EOF + done + done < failed.merges + rm failed.merges + + # Ask the user to confirm that he likes how the result + # of merging files. + while read F; do + # Skip files which haven't changed except possibly + # in their RCS tags. + if [ -f merge/old/${F} ] && [ -f merge/new/${F} ] && + samef merge/old/${F} merge/new/${F}; then + continue + fi + + # Skip files where the installed file differs from + # the old file only due to RCS tags. + if [ -f merge/old/${F} ] && + [ -f merge/${OLDRELNUM}/${F} ] && + samef merge/old/${F} merge/${OLDRELNUM}/${F}; then + continue + fi + + # Warn about files which are ceasing to exist. + if ! [ -f merge/new/${F} ]; then + cat <<-EOF + +The following file will be removed, as it no longer exists in +FreeBSD ${RELNUM}: ${F} + EOF + continuep < /dev/tty || return 1 + continue + fi + + # Print changes for the user's approval. + cat <<-EOF + +The following changes, which occurred between FreeBSD ${OLDRELNUM} and +FreeBSD ${RELNUM} have been merged into ${F}: +EOF + diff -U 5 -L "current version" -L "new version" \ + merge/old/${F} merge/new/${F} || true + continuep < /dev/tty || return 1 + done < $1-paths + + # Store merged files. + while read F; do + if [ -f merge/new/${F} ]; then + V=`${SHA256} -q merge/new/${F}` + + gzip -c < merge/new/${F} > 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 INDEX-NEW 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 '`basename $0` [options] 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 '`basename $0` [options] 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 pathname expansion. + set +f +} + +# Check for and remove an existing directory that conflicts with the file or +# symlink that we are going to install. +dir_conflict () { + if [ -d "$1" ]; then + echo "Removing conflicting directory $1" + rm -rf -- "$1" + fi +} + +# 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. A file may change to a directory + # on upgrade (PR273661). If that happens, remove the + # file first. + if [ -e "${BASEDIR}/${FPATH}" ] && \ + ! [ -d "${BASEDIR}/${FPATH}" ]; then + rm -f -- "${BASEDIR}/${FPATH}" + fi + install -d -o ${OWNER} -g ${GROUP} \ + -m ${PERM} ${BASEDIR}/${FPATH} + ;; + f) + dir_conflict "${BASEDIR}/${FPATH}" + 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) + dir_conflict "${BASEDIR}/${FPATH}" + # 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) + if [ -f "${BASEDIR}/${FPATH}" ]; then + rm "${BASEDIR}/${FPATH}" + fi + ;; + L) + if [ -L "${BASEDIR}/${FPATH}" ]; then + rm "${BASEDIR}/${FPATH}" + fi + ;; + 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 +'`basename $0` [options] 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 + + # Restart host sshd if running (PR263489). Note that this does + # not affect child sshd processes handling existing sessions. + if [ "$BASEDIR" = / ] && \ + service sshd status >/dev/null 2>/dev/null; then + echo + echo "Restarting sshd after upgrade" + service sshd restart + fi + + # 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 +'`basename $0` [options] 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 () { + # Create directories first. They may be needed by files we will + # install in subsequent steps (PR273950). + awk -F \| '{if ($2 == "d") print }' $1/INDEX-OLD > INDEX-OLD + install_from_index INDEX-OLD || return 1 + + # 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 + ISFETCHED=1 + + 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 '`basename $0` [options] 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 + +# Clear environment variables that may affect operation of tools that we use. +unset GREP_OPTIONS + +get_params $@ +for COMMAND in ${COMMANDS}; do + cmd_${COMMAND} +done diff --git a/conf/system/freebsd-update/14.3/freebsd-update.conf b/conf/system/freebsd-update/14.3/freebsd-update.conf new file mode 100644 index 0000000..08cf512 --- /dev/null +++ b/conf/system/freebsd-update/14.3/freebsd-update.conf @@ -0,0 +1,78 @@ + +# 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 From 3e2b6b42b18d85005a562500beb550b3540cd984 Mon Sep 17 00:00:00 2001 From: tschettervictor Date: Wed, 3 Sep 2025 13:15:08 -0600 Subject: [PATCH 10/80] update version --- CHANGELOG | 1 + version | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 2c4bf6b..cc95a29 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.1.42......Update: Add support for 14.3 release + add -a option for destroy. 1.1.41......Update: Add support for 14.2 release. 1.1.40......Code fixes/improvements thanks to tschettervictor. 1.1.39......Update release list on bastille_manager_add.php. diff --git a/version b/version index a2f3bf5..1171c84 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.41 +1.1.42 From 5f71d8cd0b66046e729df27a052af88a6893ec35 Mon Sep 17 00:00:00 2001 From: tschettervictor Date: Thu, 4 Sep 2025 08:48:14 -0600 Subject: [PATCH 11/80] Finish adding support for 14.3 --- CHANGELOG | 1 + conf/system/include/14.3/ar | Bin 0 -> 50520 bytes conf/system/include/14.3/diff3 | Bin 0 -> 28736 bytes conf/system/include/14.3/jib | 417 ++++++++++++++++ conf/system/include/14.3/makewhatis | Bin 0 -> 513696 bytes conf/system/include/14.3/pf.os | 708 ++++++++++++++++++++++++++++ conf/system/include/14.3/pfctl | Bin 0 -> 341856 bytes conf/system/include/14.3/pfilctl | Bin 0 -> 9424 bytes conf/system/include/14.3/pflogd | Bin 0 -> 26448 bytes conf/system/include/14.3/setfib | Bin 0 -> 7296 bytes conf/system/include/14.3/sum | Bin 0 -> 11296 bytes gui/bastille_manager_tarballs.php | 2 + version | 2 +- 13 files changed, 1129 insertions(+), 1 deletion(-) create mode 100644 conf/system/include/14.3/ar create mode 100644 conf/system/include/14.3/diff3 create mode 100644 conf/system/include/14.3/jib create mode 100644 conf/system/include/14.3/makewhatis create mode 100644 conf/system/include/14.3/pf.os create mode 100644 conf/system/include/14.3/pfctl create mode 100644 conf/system/include/14.3/pfilctl create mode 100644 conf/system/include/14.3/pflogd create mode 100644 conf/system/include/14.3/setfib create mode 100644 conf/system/include/14.3/sum diff --git a/CHANGELOG b/CHANGELOG index cc95a29..c063003 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.1.43......Update: Finish adding support for 14.3 release. 1.1.42......Update: Add support for 14.3 release + add -a option for destroy. 1.1.41......Update: Add support for 14.2 release. 1.1.40......Code fixes/improvements thanks to tschettervictor. diff --git a/conf/system/include/14.3/ar b/conf/system/include/14.3/ar new file mode 100644 index 0000000000000000000000000000000000000000..5d7523b5184c7994dfdc5e7793dba1dda5d27b8a GIT binary patch literal 50520 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 literal 0 HcmV?d00001 diff --git a/conf/system/include/14.3/jib b/conf/system/include/14.3/jib new file mode 100644 index 0000000..55d9084 --- /dev/null +++ b/conf/system/include/14.3/jib @@ -0,0 +1,417 @@ +#!/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. +# +# +############################################################ 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 jail"; +# 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/14.3/makewhatis b/conf/system/include/14.3/makewhatis new file mode 100644 index 0000000000000000000000000000000000000000..6fe3ca87ae1ae0c3cbef1e747908ebd675d9f1f0 GIT binary patch literal 513696 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 z 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≈amJEF1^HKz7Y`bAxDL~n(o_AtdUu7^qVth!Vk^! znrmf%YFe-~sbDrLn3W1<2e)~&g?!AMmS3vkIYk}wBIj*2GaS=w1JV#Q2L#Rc(sU&S z|C)ax46?`E;W1zHnEy(5Oig$nYWA9Q>CrV|dL}%UZ>YxkB*6QhScMZP^Fa zylq^{8Vs0M)$I*)$Fh&J5Z9ONjwZ8=dp9?Hkk{>?IlZd2Aurq|x-E~#==+ECj&&@g zbf&-3UrXKdE#dzMaRRG-j;08NTt&!VIYov?6KsK#j>xm;75XhVMp9T9YpXa$ z5&r_g9!zOWgyJP+%S+(U!Rcup?*yqdFD~?(uow%ftd%nV(Zf06v$#nd=;pez;gl;* zoEY6G<90>P*&Q@%C$%!2PZOBMUtj8aU@P560sGba>#C7g*J=T9g2 zN&DNN7yHh|SpH{)o2m8iE1pIq!~snU^(A8vMzto2S1=o%mDTVJxU6c~`_*Lawhguh zvqcuAl~Gj~_ck@`&ts_?qVMN*`_f}xTorxqkiPaF6agIDZ8?yD@zcQ}p>Ok~!s?5w zvOD~*k6pau?0ukU0$Heqez-$$k4YEy7O4^;>3d}!r8e%DSs{|g@>xdh z9SjQJBsTkx!bR{0ql%Q8P>zjB7*-&xW+z$X@-#NYk0SpF#C+0g+HrJ3rT3|uscO!m zM%wodwu6=LO^uyCYHDoMD30RNzdpKu0XJ{hctdhOunVak{~*x<#jk)`2z}rzd)rI)v4Rp z68{^8W!;c`8MO~FGr)Jn&FqDUBAir9rquibV94}Fx{(%SR!s~nM3UXn_MwN>0Hkf_ zyq`e*~Kp15kU?pJXV9>|RtX z65;7~jtq(;mB@dmci@9Q<{ZcEtnaH(-rFhu0}^hJ`KHJGx-;edEp0({p}bWo%B#tH zF0=e^5nsr$!t-SGh~Rm1!^e5u4w>7c5aA=8C@-5Q$E640uR2^f(>nzuDzm@Jf8%>L zi;n>d<}O8_*eGh~tL`;8!m&z7=P~q2lchA3`d`r}O^@Egw4$TqFnY&OqfYzpf7kzW z{+s?Ib@+eP|HA)U{r~Ce@1K9Ro&Q(;zozZqn}5GVpmHK#AQ{pjCV21^`mHXqgZK28 z&C3h-<8MLubP^FQ3!pob#5&ngektTn$s5s<0>yGn~@Du-Le+H@kV7E)}(|sB!eVU*cG&lZgVtSG4 z-5aUiCARym%aBOdBe3w`7)#eSOV_-nVq~Om8=bx-p8gK`N6K`!LYmFBujqvzs5-Sp zwJRTokcEExw%$U47S6T1y(R>D;dFbRPMK-{R36ft@fEyv<~PKjTYF;N43E?rKCNSZ zgv#xat%y@SpCVtdL9uu`^6IgRm+dUxOtpA3Sv)yGh5}_*v3P;9Gb0lc#3q!*o2eF0 zB!qqnP@|gc2t0zS{O$&!3<51rAAF>TO{Jl(UGVE1xH=>(_Ve1;c zpmp*sIgyc00Fb-?PVVTDG3YzQqVG1c7{qFRW4^)l4GVfcD*-=5Ne{QS?C|;I2)7c- zV2e|~syKF+s^hTK@oYvN+o&T+9UF8VhgBWPjyjH6Pgqgru|7Ok08f?asEs?wjfaoi zG&+;NLCv6;+EJRJ>>B>OwSs}!mSVwU8&#*0V{U#i+TMLZuJQ1f^Iu-pu3CQ)VFF_) zsh0p_Y54{17yd8XSNZ=hwy(zX|JV3s+SB~C*ys~My54V{(by>1lP%mR0q3RzlZ21~ zOb9qPY#_g`VD|8}Do^f1{CF*BRqkJS!mNXsUc%%>TAUwP%`>A%XN6D19P!-5B!PhR z{CkXzH@iWKlhu_5ax|EQ7V5fuT1Qmy%qmaWJ4^bA8jM$>X*Zj1wR&4T6_G~-5vS>F zbhj@pqiLsKG#2cVEJ;=$o+W!b8#tCT_$l$pe`udrXkq3YaJK~x?GgDmH<$N3&sVm6 zNhoB^aB=5)D0Sz0Mff7FSHwyyWHtocha;~iZgxWNg>UHSzvxJW_g@D>rF@SQi6A29 z`haz^NMz3|Y1Msc8hl_dcPx&!9uwAVaf_(&<>KaU4}j6uczah*nQ~uCq6a;e;m!N4 zY+GGr8HCY8Lz&4xZn3K=aP0b_aNlaqSO@)LAy=~|M>$xfoe6pw>)pPRz2*HOyIU|F zIE6bZN1al#8&$gp6Cq~r1^KHyb+_|?){uh+mk1<~Emo^f)$N5wja=yB{^r|AYov=x)gIcSZ^Ul~UnUXX^mMCA;GnG6iZt z@!>q#Ug|%N|KomnX~~>X<2PTZA{+4YTzv=pm``6rV$d4ouWaCAShl-bVwuPlr8zkz zgy@gW9F$o50!mk)VzjF%Tv8H*`3%1O_P&Iber4N#zm*41~T2$JN{qf3M6+(iQE1p&#_4( z$3XYgEwm5q!Nq=kUh;=jqr&K^UqAJeHoY^j?r66j#@ zYFeA@F84+9NyM^LCvY=veYDN9n48m+m7;+_Y8{jrn z5=vUjhp(vp6$1`;HyhNDh7y-9Hd%xes|7_N!ZX%dY6Z(;vdBiwdEFJ&^PBgTs`q_# z4`^d*e5;?LV1ut@Yf^y$l9V;Vx|%P{Bd6bd+RsnWj1}^eIAIl+28XcI`gMKY9;4<& zAy$loO=hG|ZbW{CYCWZ`7}Sbk0eZUCH7^;ppORW#IxDiJdi;XO#-Ld{U20}lm4)pm zQJK+`7L3@?uf9Seh6F8@A!w;KZ_1`gzomO)sounImGU~t$?Vr(oH9zf;)sQ$bAIA)#>I5kZ`BI$TO7%c4Bo7kP%qi3 zi1>o$7JcE@vp*KPlX~pR zlSwseWqE`i)Lxk-D|9r=sgv4`+8`A$-)lU|E2Fv;|BhdgL_Ez)joLXpX|DzA1;KBK zOxG(gc-zWqvby#O&}D%vhlG4;L<=!okKf4|DFq1?>u0M_YF_h|_~*z&JR2ARB#61# z$E(m&Pj%aA;UARGiiCt3_^lHIv1wRb-`E%v3cy&ULBNP_jx$8#2DhOs*|0-d?iWodj2%|*1D7dj&MTJ_6p%efb3sO5xE6C+MMUC zO>~i)m_sItXu4&-ASiCEyn~h)2tyEJ!j4%|kF6iY_5cpoWHAFn;9uSY$>h5jL6~3J zS7gbKtZFddw7KOvr%3%ZRT!h((c zG5D{)MutelXhk4`R%p$pU!@zq5i2=3;B#n|BHbw>SQD`N6ya0ArlQd1Pq+)}`yTei zH0Fp<5nP!K>L>;T)XAn(A!OB|!H4Wp-8W_Eb;y|j`zA>Q+X5zC=|J-@jOZC{p!uU9 zm-&^`VNuG8D@|T-@L}q9bL-8wT>3+&)M&*xR(Ihy)aW4~PL(x|EAjJya>v9~5r%-F7OD_00Asw+hd3-%Kj6UX-2e zZrtl^+Ox9T5of)H=UcR`P@=$eLm`&hBh9zjA~pM8qioYg(3-5D>>5T*Z;hkUcB{IR ztXiMBB}jUA=ltbQzNBNZ7lyy4^6(c;G6|{vLP&(4NjK;-zwr!iBqooxQ{#}~vVUaB zL~pTtHReQw=#^ouE)!88W+*lCV=1o4S|*!{)_7@>?KgKgdb0tS{CjFMbE?vsX=4Fc zO?#1QeIn8GAC++`Z!?T5M-w|yCZc+3RkmPXbG7tU{s{v+AW|Z9;kg3d{Z?-AIvKOl ze&`FQ*l3nD%E=|;$OF+@a{hIkKMqW+UNkyc=+J@4P|(yJ?jMZJOI{o+FJ@zvSb3a9 zIege?%$$6QY;N9U9%Y4%^|9&vtdOln-lZ?`U*k~X9Xh6Dud+0RjzZtmn#%mfFC&`| zR8H)(-~J}+*!Z6r@dM`u%v~5DD-~eww5RmIlnOAk+G~}BD))QMIhcgD{Qz!pt#O+y z38ocuT}CaOwmeq3B1;evv{uWeniZKJvdShK>xXfm*!VBxDZBBgQ+9XajArN48ECK= z-$(r3iyo6mUE%Ry=zO0L*`!_mt&_o;QO8V8ThKq`{+PSYV)@VGVYCS*j6I`Xb9M7j z6{^alKjE1~=8DP*21E&(uUIoU2YzY)9*>SShEdZWu8xT}YEJ>sAnt1e7O~9lk@k^6 z^eoi38_H$A>qsiyWz=ltSI1VjCe9OV{$sSt>k2=BT(n9Q*WIGeRg=XPULLT@g6@ww z#h^4j?A{O{(I0)wWo#Uk7czI)|9MnV1Ec0?XiSrAxF-jxLxP9J`c4$e6dQflkAy&d ziG*oe^+hh+>Rw^$zQvO;V79RXH<20fk`S|GJq&X{0^BvCS_@hOfA?fIt|okm9zG}B zFM4=H_{8YpS&<)j#M#0%p?XoFdqiZS&wVIRxdT2c(dU@+nuwU{A$r^&7d{w0+%5c> z*IeA_k4?;z?V#EBxQy{hcjD*47?;IhttnG6&Ek}L0In&QAsh|})Pz?1&7MVS?l*Ho zvbv-3%L&O#3-V<8ALhXPq}vQV9yAxz*p)yX~P zatY zJ+GO{q|LDhzd@tgmt4)cdwG<9p68ivR~(CK*OI(si<#TR2ez_j_yO((5+q`^gh8q< zm#d}{JXxbx@fkVm%4c{>zG9B9<~_cX7mmL1KX4eKU05D14{4-@Oepwj^7lc(VSxe} z>4E=}EJ{LT)chInjNd{J0p*Re6)5lIJHR~?SxvpC`Y7-iFb^WR0v*~xf;arIT?Ii? ze1=W9l-TIPAEf5Y_Au`#Jbb{2e#zVb1dZ4;tPN$)VHxuuo(GkB zOy)*`3`{JWdNZr(S=RnF$=Ekg2hbNl-0Mk#lE}9QzVSph)F`jDVP80pn^YNp;sC$Z zr9gg#JN&i4uUFOBiU7v`cxDE)wc0i{0+N&Hjo&)oZ(df_5s9xkcl{9!6xhN(?N9Y{FbsbJWm_7Ouxi26D3YYvKWk2;f$~tLyihJ78^AJg3xSn zPN+SUh3u*)D*KRFcI4oXGAmpu$n+sk_BAi{LRp29A*@?_0*G1J>iQzv6UmKK6zO|}(S&Hpw&TVf?uiH`QQJtgH?aLnTO;h2UyuylyIOC=%vDYNhB$6hf#%&Xl zeXt>M##K{HS-bvg*=q-00d)d=y2>=f#=Z&wgIbS2BtQALMxeSrwoLmbG7JA**&P(U zOZH8Eb9!;NXgI&5Uh#Ln(w6X`E$Yz|Z96A?Dt||W`;^r4J1eqZZAjINda)n9EouYz zVZ^w8cT=JuLw?9|CYy})U4(o6N*K(~&F*U0qW$w`*k>qv0l)dG$8048a&+mXSrKtG z+bGLn{~0x$@XI3vQ3MLbCJj5j>sDnjqPwak?M1ISZ(egnm<%q>i6SW_y%vH(eCy@H z@OaExVQzSnAF)X@Zp=zkc*Tw+%FYc(piR&QP>*c0YSBT^A)eT*hs70%~xUZnp9F&R$eZum+{0GvuzvtF5oPMy>JE0vYY`E(Alg3xU&r z44#z#z}E*L(8u}@IL--h2+AfgZCV5w82NxA1CKta$iUUNKnB(c8MvN$GUfdOe~vwb zR-_NI@~n9U)^r^Ba!+m)eJmofSibc$_C>)Sw!=Cmg+aqb*M~V_J04SHddKX@bdSok zu*&|?Q^0@o#41^hG#{r_b@tLrNlLk7Xjcw}4{7@e1VxVlE=<3$hUVsytzxT?=-#2P z=!8GmcRD7(eoV6>mwT$mkARaF*;+|`?6OVKBZC(ZmUZ+(?pH`(8Ly~Q{2O`~Z7+%p zuyNAL-Q5q9(qgL1rkL4@y4E6OP;6p)Te#iL4Op*#e!t|pI zQBMkfmCxH+rbgfwU@fEy`@Mw@unJDt^B1LnRYXLXEz8a&>sBnliZe)Mu^2O}RAH|= z-Jw?3kGzRb>I4ZAAF9q}JDq!7-V!^U@yh&b`{9oGewp?FG)4rOHv?jYCx!u6k8JkI z9J(C)dF=fQ#oqtIpf!|}fnz-X24sPeeZbKh4Q1qQdW}s|eRvmzp=>TsYnLpeb~(h4 zjh|X)Vl$xa>At(Z+yCeK^0-rt`o!!&)fuhlh~!)Qoa`pZ7B9V0yvp!5iEb(IFFPu6 zM#JY{Y+ZkTTSu=8bt~^Uy?)KZ%VX=X!}5;CJ2?k*n0e{ zsvenRet}8=jJKRI?~)M#3Hi?24hq`YLS z-0554N;Xui7%4)Jvcrqd@mKDG7?0|MsCQQ6pZ?esH?p%n?pfS&@2}h@pL&|R65FK{ zi@G$qx>JsdhtlW!=`LOdo$ObR=O-opB`zR}(Bw{7Ee8??@7pP6G+ptiwz3lW&A#o7 z6qLSUdkLq1U!$kBJ`1m`$~GVT@c5v0MsEuG%CeW7$B8?i=gz`oYqXm*q;7KX;imgu zI&{2I+bkSYp_Qx_S-DHw1+H0Xdr|~Ul3vaa#LT675%Iv?h zFtD>;bC)>cL5_@?pHfg3PCAP8sxDx@6`m2OjEFT^&kH?ey_QT)&(J}C_KdZhku-mb z&LK5p#`>+T-W{F_u9!9>h!X(+&B-PTFMYdX{zKB-0y()F>l>r>`=V`AjpZw4BaG#* zL&TOgl*m}Z`(z2@6DXuO_SmTI$p$tWg+E}qpkb@Gjn%5TiaaKEM$H)J&A!Y2CPJ+jygv$i+#|x*sPuE3G-1f`+@gVT)&7dG+CJ zBf6K*_3vkUp1=O=pSe7*eo8(r4PhbXwD`sp8Y`#slK6SXL_DY_qD*S-0PsJm#G=lL zzgLOk-<7H@mL;{Fo>A}*Do+Brn$IfqX45FM{0^@;jEJ~53eu7NfkTIt16V=4-pM*t zXMK`aPn3XK_ti%ixA4 z@tIP1-A|d04XTscS!ip7f*S4w zevleLK3Tn!_4$N z%UiZ}i9cxdy_wXsuxlE3M`Cyx>CT5adk92^#jsi zpCT+k5<|cTuXV!YSf5`{i1qwIv|*=7gfqTbBWN1vJqyX`7OCxAOuyNvuoXSRxZa|J z`#d?}Q;dyUWgefK9P4RLB4nP2DiV!U%_+Oy3T@Bs<&hXpXMiHri{BiMWfw!pIdp0w z+j9t&Va{36`lq68gBK7DJ^#&38N@*HWqYmeo`(0crSf=#47zh-ApUqpqVH#05AYhl zKQqm}bz&?hfROfQEoapxeh?(6U4uP7&~SJ_0u77PM6xAuUHau`4N}WNV@Ul$7MvvKcdGq+5&^dfbQ#cB93a zL#b@9*O(O?p*YmC^MWB`&qvA>Y z;Zx{Fj|C^zWx?f(O#Y@kgr4?a{($(;%5C`&c7;>l8Dzq*mA^y|JWkRYw8msC%k$Sm zvqs%Uan=Qx}3<`@O}NnVCHm2+`xj8nNBJb29)V15~5w(DV2)(zhzAmig7K zi_Rg17>xKz=GVOk9>ivB_nIFg=Cr$EIRHeIN5}qw53Z$L_DNYkPzOiMPjjv%>HKTX zy~TM-gjA#C#0|bGFQJ7Aq|ApblPrLw#Z z8lfcB;$qNSQHxB=ar?A)MBtc~XBf94_2;O2~}c=xB$47NAhmF>;K3@~0MVhER#2HRJ)3)uMu*+wy`#J@QeP zSZax)Mc9bJx|Y9F3%i+7Q!n{qqeIhR&|-`07_9jgBbqP=D63@g=MV>)X#X5?>$IXm ztc%wXCQ-tCKj81U zNSuFOq-NhbIY1yuSjQBhUwc;s zJcn#B1`_STGEaLgTGt74ri=hLn zEC-tMqgQ?_HolJi>mxqX=G+G46tk2PpOMf zpZr*kx9g&Z3yhkjtQ7H|jhfHMNB9t5P`f z(h}ke!Jzq{V5TeASkdlSKJ`y^;v&oh1n;fcxS%MtV#6p$t@w$fR=j|+U|MM+Cxvgr zgJr)+$!DcGdjM;UkYu02w@LKG!MFG#>eeV%@e@HZB(tF0=k{*(2Fm>+g>qV~ge{pDw+f?i*Hlz3d%v~oN_|vGWxt-P)A~zXUl-0I*E())@Ez5RES zrz+X_s#G$&9{P-+`w^pNvl@ud<JjyVuJCqGa%hPvAM=?Zbc0 z#M`11Df0(i#+vbaW^W7y6v^x$zy1tGg#8#+h8g>5w0%LiP&P^BC{0Z705%)h?0}n< zD~|m*GcX&U<`h429Dl|g1BxkYr*B`Z5X#Ro_+Z&W+X?T5ofiJj)_F{WQS&wZG}f0^ z)Fef&y^BbKzLMRtTV?cTLTUL4!~iBIC!<9La7LTSAF+MzUC>^3*fX&jEi{&|AqSq^ zAh}zfjE6TH(R+E~bSXl6pZT(uUrIntZ7;U8pS@!jbe2fIb`uYr(Cm%;%AK5Y&q)Dy zMimq36@xks0L5XVqmL@`yT20oJRq3pq2!@Bev0Hsn_nLk0~YKlZ`dyEw~)ioyIORw zEfSF2x$6^GIv*7myTcwrma$*b)yV1C^GK~K`a+!4Pmnkm1oi^JSb}Ds#2Y!FY`U&$>$G%;nDpJf( zbbmV{!D#zQ2p|Z_BAn1$a69Tb-d&Tu}H_I3Q}> zdwVvE?rSt^cF97)3?+I5vS+)9gDc7GOVwlgdsZ}x88TA77X$8pz~a;eVzY`y!cp2U z?Er}!qJ4yz>`-elgR-}9qnc)TFfZyDUyA-7$L~DMOr+^=6P2d;oeMPm*fNXWImEZ! zo-teAGWi`4mr3d%z6{O9(1cs;z_d$D;x}TCRm~+EU7ME6BL^(}CHl)^!VC*5nOlHEtD*#{>d&Kk z!Ca}nV}6_>AnT9*l)*o5pG@i7GdlM*(~;tzGx@VpkNL7N%Ry_byH=PpOaf7$Nw49R zbMk^Qj0uvBL30jfggJSF_8X`cU8dNG5&2igaKc&3YrbUvawMwmhHy5;el)oQ?4vbbU1%^rN&ELN3%K~! z;I|u-*xPMt_#NYydHYE!Viiu2m_5pQi|F+j7w($^^H6^jtd73Q%Hk@&lhg0|0COX> z1-i^qLSx^&QfRCMRKO^V<&;Dn*H5Aj4rlOJgv)NDj(enz=r_nI z$3@M54ddiZI=vmBx2!!v>H`^CY?Pr;MKd)2I72<{pL2%yXFgYG&Fa?5FD)P z;2EK2qFsijX%|MjFZttJ$z>0vzi9Hl`MGp(^gs-cD0oF*?2oSR#dtq`NfE40=RJWx zWrMV=eJ6E?hhtKyjTY*D$>cxVjl>Od)QUc*L_(1f9Z`uA{p;?PJb9AmS3ITibk}*< zKwP!=)bKZQep$m!=c=Gk%^mOpqLiTWl%T&*p_1K<{ed%Bl4Mh;>`>%=B~I41G3w@K z`_5zf4`zfa8`#VGxIpI8fE#3fkk&k$=!sD(=m>(RkT@%N3=-dPg+}70erEzYfhuFTzG(#rn@gmbg^!icNVidiX?RxhVVa z`+W5;KuKlKJJfY-CA-VdCf*PmF{ob`KS-96t?=vftD$H9VR3QXbv`n!ak(7>j(~_2 zku^Bv48mCn_w}^=1zIH@Kn^_->LMfxBXchS@yLZ#l?b~`y{me*cXAa86Eax*vZ

veiN2NDD?=Yu0$&v|5(q( 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⪙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 z%0A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 NYuNrQ%|L^W{|6&}`=kH> literal 0 HcmV?d00001 diff --git a/conf/system/include/14.3/pf.os b/conf/system/include/14.3/pf.os new file mode 100644 index 0000000..e131d1b --- /dev/null +++ b/conf/system/include/14.3/pf.os @@ -0,0 +1,708 @@ +# $OpenBSD: pf.os,v 1.27 2016/09/03 17:08:57 sthen Exp $ +# passive OS fingerprinting +# ------------------------- +# +# SYN signatures. Those signatures work for SYN packets only (duh!). +# +# (C) Copyright 2000-2003 by Michal Zalewski +# (C) Copyright 2003 by Mike Frantzen +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# +# +# This fingerprint database is adapted from Michal Zalewski's p0f passive +# operating system package. The last database sync was from a Nov 3 2003 +# p0f.fp. +# +# +# Each line in this file specifies a single fingerprint. Please read the +# information below carefully before attempting to append any signatures +# reported as UNKNOWN to this file to avoid mistakes. +# +# We use the following set metrics for fingerprinting: +# +# - Window size (WSS) - a highly OS dependent setting used for TCP/IP +# performance control (max. amount of data to be sent without ACK). +# Some systems use a fixed value for initial packets. On other +# systems, it is a multiple of MSS or MTU (MSS+40). In some rare +# cases, the value is just arbitrary. +# +# NEW SIGNATURE: if p0f reported a special value of 'Snn', the number +# appears to be a multiple of MSS (MSS*nn); a special value of 'Tnn' +# means it is a multiple of MTU ((MSS+40)*nn). Unless you notice the +# value of nn is not fixed (unlikely), just copy the Snn or Tnn token +# literally. If you know this device has a simple stack and a fixed +# MTU, you can however multiply S value by MSS, or T value by MSS+40, +# and put it instead of Snn or Tnn. +# +# If WSS otherwise looks like a fixed value (for example a multiple +# of two), or if you can confirm the value is fixed, please quote +# it literally. If there's no apparent pattern in WSS chosen, you +# should consider wildcarding this value. +# +# - Overall packet size - a function of all IP and TCP options and bugs. +# +# NEW SIGNATURE: Copy this value literally. +# +# - Initial TTL - We check the actual TTL of a received packet. It can't +# be higher than the initial TTL, and also shouldn't be dramatically +# lower (maximum distance is defined as 40 hops). +# +# NEW SIGNATURE: *Never* copy TTL from a p0f-reported signature literally. +# You need to determine the initial TTL. The best way to do it is to +# check the documentation for a remote system, or check its settings. +# A fairly good method is to simply round the observed TTL up to +# 32, 64, 128, or 255, but it should be noted that some obscure devices +# might not use round TTLs (in particular, some shoddy appliances use +# "original" initial TTL settings). If not sure, you can see how many +# hops you're away from the remote party with traceroute or mtr. +# +# - Don't fragment flag (DF) - some modern OSes set this to implement PMTU +# discovery. Others do not bother. +# +# NEW SIGNATURE: Copy this value literally. +# +# - Maximum segment size (MSS) - this setting is usually link-dependent. P0f +# uses it to determine link type of the remote host. +# +# NEW SIGNATURE: Always wildcard this value, except for rare cases when +# you have an appliance with a fixed value, know the system supports only +# a very limited number of network interface types, or know the system +# is using a value it pulled out of nowhere. Specific unique MSS +# can be used to tell Google crawlbots from the rest of the population. +# +# - Window scaling (WSCALE) - this feature is used to scale WSS. +# It extends the size of a TCP/IP window to 32 bits. Some modern +# systems implement this feature. +# +# NEW SIGNATURE: Observe several signatures. Initial WSCALE is often set +# to zero or other low value. There's usually no need to wildcard this +# parameter. +# +# - Timestamp - some systems that implement timestamps set them to +# zero in the initial SYN. This case is detected and handled appropriately. +# +# - Selective ACK permitted - a flag set by systems that implement +# selective ACK functionality. +# +# - The sequence of TCP all options (MSS, window scaling, selective ACK +# permitted, timestamp, NOP). Other than the options previously +# discussed, p0f also checks for timestamp option (a silly +# extension to broadcast your uptime ;-), NOP options (used for +# header padding) and sackOK option (selective ACK feature). +# +# NEW SIGNATURE: Copy the sequence literally. +# +# To wildcard any value (except for initial TTL or TCP options), replace +# it with '*'. You can also use a modulo operator to match any values +# that divide by nnn - '%nnn'. +# +# Fingerprint entry format: +# +# wwww:ttt:D:ss:OOO...:OS:Version:Subtype:Details +# +# wwww - window size (can be *, %nnn, Snn or Tnn). The special values +# "S" and "T" which are a multiple of MSS or a multiple of MTU +# respectively. +# ttt - initial TTL +# D - don't fragment bit (0 - not set, 1 - set) +# ss - overall SYN packet size +# OOO - option value and order specification (see below) +# OS - OS genre (Linux, Solaris, Windows) +# Version - OS Version (2.0.27 on x86, etc) +# Subtype - OS subtype or patchlevel (SP3, lo0) +# details - Generic OS details +# +# If OS genre starts with '*', p0f will not show distance, link type +# and timestamp data. It is useful for userland TCP/IP stacks of +# network scanners and so on, where many settings are randomized or +# bogus. +# +# If OS genre starts with @, it denotes an approximate hit for a group +# of operating systems (signature reporting still enabled in this case). +# Use this feature at the end of this file to catch cases for which +# you don't have a precise match, but can tell it's Windows or FreeBSD +# or whatnot by looking at, say, flag layout alone. +# +# Option block description is a list of comma or space separated +# options in the order they appear in the packet: +# +# N - NOP option +# Wnnn - window scaling option, value nnn (or * or %nnn) +# Mnnn - maximum segment size option, value nnn (or * or %nnn) +# S - selective ACK OK +# T - timestamp +# T0 - timestamp with a zero value +# +# To denote no TCP options, use a single '.'. +# +# Please report any additions to this file, or any inaccuracies or +# problems spotted, to the maintainers: lcamtuf@coredump.cx, +# frantzen@openbsd.org and bugs@openbsd.org with a tcpdump packet +# capture of the relevant SYN packet(s) +# +# A test and submission page is available at +# http://lcamtuf.coredump.cx/p0f-help/ +# +# +# WARNING WARNING WARNING +# ----------------------- +# +# Do not add a system X as OS Y just because NMAP says so. It is often +# the case that X is a NAT firewall. While nmap is talking to the +# device itself, p0f is fingerprinting the guy behind the firewall +# instead. +# +# When in doubt, use common sense, don't add something that looks like +# a completely different system as Linux or FreeBSD or LinkSys router. +# Check DNS name, establish a connection to the remote host and look +# at SYN+ACK - does it look similar? +# +# Some users tweak their TCP/IP settings - enable or disable RFC1323 +# functionality, enable or disable timestamps or selective ACK, +# disable PMTU discovery, change MTU and so on. Always compare a new rule +# to other fingerprints for this system, and verify the system isn't +# "customized" before adding it. It is OK to add signature variants +# caused by a commonly used software (personal firewalls, security +# packages, etc), but it makes no sense to try to add every single +# possible /proc/sys/net/ipv4 tweak on Linux or so. +# +# KEEP IN MIND: Some packet firewalls configured to normalize outgoing +# traffic (OpenBSD pf with "scrub" enabled, for example) will, well, +# normalize packets. Signatures will not correspond to the originating +# system (and probably not quite to the firewall either). +# +# NOTE: Try to keep this file in some reasonable order, from most to +# least likely systems. This will speed up operation. Also keep most +# generic and broad rules near the end. +# + +########################## +# Standard OS signatures # +########################## + +# ----------------- AIX --------------------- + +# AIX is first because its signatures are close to NetBSD, MacOS X and +# Linux 2.0, but it uses a fairly rare MSSes, at least sometimes... +# This is a shoddy hack, though. + +45046:64:0:44:M*: AIX:4.3::AIX 4.3 +16384:64:0:44:M512: AIX:4.3:2-3:AIX 4.3.2 and earlier + +16384:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2 +16384:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2 +32768:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2 +32768:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2 +65535:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2 +65535:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2 +65535:64:0:64:M*,N,W1,N,N,T,N,N,S: AIX:5.3:ML1:AIX 5.3 ML1 + +# ----------------- Linux ------------------- + +# S1:64:0:44:M*:A: Linux:1.2::Linux 1.2.x (XXX quirks support) +512:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x +16384:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x + +# Endian snafu! Nelson says "ha-ha": +2:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x (MkLinux) on Mac +64:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x (MkLinux) on Mac + + +S4:64:1:60:M1360,S,T,N,W0: Linux:google::Linux (Google crawlbot) + +S2:64:1:60:M*,S,T,N,W0: Linux:2.4::Linux 2.4 (big boy) +S3:64:1:60:M*,S,T,N,W0: Linux:2.4:.18-21:Linux 2.4.18 and newer +S4:64:1:60:M*,S,T,N,W0: Linux:2.4::Linux 2.4/2.6 <= 2.6.7 +S4:64:1:60:M*,S,T,N,W0: Linux:2.6:.1-7:Linux 2.4/2.6 <= 2.6.7 + +S4:64:1:60:M*,S,T,N,W5: Linux:2.6::Linux 2.6 (newer, 1) +S4:64:1:60:M*,S,T,N,W6: Linux:2.6::Linux 2.6 (newer, 2) +S4:64:1:60:M*,S,T,N,W7: Linux:2.6::Linux 2.6 (newer, 3) +T4:64:1:60:M*,S,T,N,W7: Linux:2.6::Linux 2.6 (newer, 4) + +S10:64:1:60:M*,S,T,N,W4: Linux:3.0::Linux 3.0 + +S3:64:1:60:M*,S,T,N,W1: Linux:2.5::Linux 2.5 (sometimes 2.4) +S4:64:1:60:M*,S,T,N,W1: Linux:2.5-2.6::Linux 2.5/2.6 +S3:64:1:60:M*,S,T,N,W2: Linux:2.5::Linux 2.5 (sometimes 2.4) +S4:64:1:60:M*,S,T,N,W2: Linux:2.5::Linux 2.5 (sometimes 2.4) + +S20:64:1:60:M*,S,T,N,W0: Linux:2.2:20-25:Linux 2.2.20 and newer +S22:64:1:60:M*,S,T,N,W0: Linux:2.2::Linux 2.2 +S11:64:1:60:M*,S,T,N,W0: Linux:2.2::Linux 2.2 + +# Popular cluster config scripts disable timestamps and +# selective ACK: +S4:64:1:48:M1460,N,W0: Linux:2.4:cluster:Linux 2.4 in cluster + +# This needs to be investigated. On some systems, WSS +# is selected as a multiple of MTU instead of MSS. I got +# many submissions for this for many late versions of 2.4: +T4:64:1:60:M1412,S,T,N,W0: Linux:2.4::Linux 2.4 (late, uncommon) + +# This happens only over loopback, but let's make folks happy: +32767:64:1:60:M16396,S,T,N,W0: Linux:2.4:lo0:Linux 2.4 (local) +S8:64:1:60:M3884,S,T,N,W0: Linux:2.2:lo0:Linux 2.2 (local) + +# Opera visitors: +16384:64:1:60:M*,S,T,N,W0: Linux:2.2:Opera:Linux 2.2 (Opera?) +32767:64:1:60:M*,S,T,N,W0: Linux:2.4:Opera:Linux 2.4 (Opera?) + +# Some fairly common mods: +S4:64:1:52:M*,N,N,S,N,W0: Linux:2.4:ts:Linux 2.4 w/o timestamps +S22:64:1:52:M*,N,N,S,N,W0: Linux:2.2:ts:Linux 2.2 w/o timestamps + + +# ----------------- FreeBSD ----------------- + +16384:64:1:44:M*: FreeBSD:2.0-2.2::FreeBSD 2.0-4.2 +16384:64:1:44:M*: FreeBSD:3.0-3.5::FreeBSD 2.0-4.2 +16384:64:1:44:M*: FreeBSD:4.0-4.2::FreeBSD 2.0-4.2 +16384:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.4::FreeBSD 4.4 + +1024:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.4::FreeBSD 4.4 + +57344:64:1:44:M*: FreeBSD:4.6-4.8:noRFC1323:FreeBSD 4.6-4.8 (no RFC1323) +57344:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.6-4.9::FreeBSD 4.6-4.9 + +32768:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.8-4.11::FreeBSD 4.8-5.1 (or MacOS X) +32768:64:1:60:M*,N,W0,N,N,T: FreeBSD:5.0-5.1::FreeBSD 4.8-5.1 (or MacOS X) +65535:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.8-4.11::FreeBSD 4.8-5.2 (or MacOS X) +65535:64:1:60:M*,N,W0,N,N,T: FreeBSD:5.0-5.2::FreeBSD 4.8-5.2 (or MacOS X) +65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:4.7-4.11::FreeBSD 4.7-5.2 +65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:5.0-5.2::FreeBSD 4.7-5.2 + +# XXX need quirks support +# 65535:64:1:60:M*,N,W0,N,N,T:Z:FreeBSD:5.1-5.4::5.1-current (1) +# 65535:64:1:60:M*,N,W1,N,N,T:Z:FreeBSD:5.1-5.4::5.1-current (2) +# 65535:64:1:60:M*,N,W2,N,N,T:Z:FreeBSD:5.1-5.4::5.1-current (3) +# 65535:64:1:44:M*:Z:FreeBSD:5.2::FreeBSD 5.2 (no RFC1323) + +# 16384:64:1:60:M*,N,N,N,N,N,N,T:FreeBSD:4.4:noTS:FreeBSD 4.4 (w/o timestamps) + +# ----------------- NetBSD ------------------ + +16384:64:0:60:M*,N,W0,N,N,T: NetBSD:1.3::NetBSD 1.3 +65535:64:0:60:M*,N,W0,N,N,T0: NetBSD:1.6:opera:NetBSD 1.6 (Opera) +16384:64:0:60:M*,N,W0,N,N,T0: NetBSD:1.6::NetBSD 1.6 +16384:64:1:60:M*,N,W0,N,N,T0: NetBSD:1.6:df:NetBSD 1.6 (DF) +65535:64:1:60:M*,N,W1,N,N,T0: NetBSD:1.6::NetBSD 1.6W-current (DF) +65535:64:1:60:M*,N,W0,N,N,T0: NetBSD:1.6::NetBSD 1.6X (DF) +32768:64:1:60:M*,N,W0,N,N,T0: NetBSD:1.6:randomization:NetBSD 1.6ZH-current (w/ ip_id randomization) + +# ----------------- OpenBSD ----------------- + +16384:64:0:60:M*,N,W0,N,N,T: OpenBSD:2.6::NetBSD 1.3 (or OpenBSD 2.6) +16384:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-4.8::OpenBSD 3.0-4.8 +16384:64:0:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-4.8:no-df:OpenBSD 3.0-4.8 (scrub no-df) +57344:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.3-4.0::OpenBSD 3.3-4.0 +57344:64:0:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.3-4.0:no-df:OpenBSD 3.3-4.0 (scrub no-df) + +65535:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-4.0:opera:OpenBSD 3.0-4.0 (Opera) + +16384:64:1:64:M*,N,N,S,N,W3,N,N,T: OpenBSD:4.9::OpenBSD 4.9 +16384:64:0:64:M*,N,N,S,N,W3,N,N,T: OpenBSD:4.9:no-df:OpenBSD 4.9 (scrub no-df) + +16384:64:1:64:M*,N,N,S,N,W6,N,N,T: OpenBSD:6.1::OpenBSD 6.1 +16384:64:0:64:M*,N,N,S,N,W6,N,N,T: OpenBSD:6.1:no-df:OpenBSD 6.1 (scrub no-df) + +# ----------------- DragonFly BSD ----------------- + +57344:64:1:60:M*,N,W0,N,N,T: DragonFly:1.0:A:DragonFly 1.0A +57344:64:0:64:M*,N,W0,N,N,S,N,N,T: DragonFly:1.2-1.12::DragonFly 1.2-1.12 +5840:64:1:60:M*,S,T,N,W4: DragonFly:2.0-2.1::DragonFly 2.0-2.1 +57344:64:0:64:M*,N,W0,N,N,S,N,N,T: DragonFly:2.2-2.3::DragonFly 2.2-2.3 +57344:64:0:64:M*,N,W5,N,N,S,N,N,T: DragonFly:2.4-2.7::DragonFly 2.4-2.7 + +# ----------------- Solaris ----------------- + +S17:64:1:64:N,W3,N,N,T0,N,N,S,M*: Solaris:8:RFC1323:Solaris 8 RFC1323 +S17:64:1:48:N,N,S,M*: Solaris:8::Solaris 8 +S17:255:1:44:M*: Solaris:2.5-2.7::Solaris 2.5 to 7 + +S6:255:1:44:M*: Solaris:2.6-2.7::Solaris 2.6 to 7 +S23:255:1:44:M*: Solaris:2.5:1:Solaris 2.5.1 +S34:64:1:48:M*,N,N,S: Solaris:2.9::Solaris 9 +S44:255:1:44:M*: Solaris:2.7::Solaris 7 + +4096:64:0:44:M1460: SunOS:4.1::SunOS 4.1.x + +S34:64:1:52:M*,N,W0,N,N,S: Solaris:10:beta:Solaris 10 (beta) +32850:64:1:64:M*,N,N,T,N,W1,N,N,S: Solaris:10::Solaris 10 1203 + +# ----------------- IRIX -------------------- + +49152:64:0:44:M*: IRIX:6.4::IRIX 6.4 +61440:64:0:44:M*: IRIX:6.2-6.5::IRIX 6.2-6.5 +49152:64:0:52:M*,N,W2,N,N,S: IRIX:6.5:RFC1323:IRIX 6.5 (RFC1323) +49152:64:0:52:M*,N,W3,N,N,S: IRIX:6.5:RFC1323:IRIX 6.5 (RFC1323) + +61440:64:0:48:M*,N,N,S: IRIX:6.5:12-21:IRIX 6.5.12 - 6.5.21 +49152:64:0:48:M*,N,N,S: IRIX:6.5:15-21:IRIX 6.5.15 - 6.5.21 + +49152:60:0:64:M*,N,W2,N,N,T,N,N,S: IRIX:6.5:IP27:IRIX 6.5 IP27 + + +# ----------------- Tru64 ------------------- + +32768:64:1:48:M*,N,W0: Tru64:4.0::Tru64 4.0 (or OS/2 Warp 4) +32768:64:0:48:M*,N,W0: Tru64:5.0::Tru64 5.0 +8192:64:0:44:M1460: Tru64:5.1:noRFC1323:Tru64 6.1 (no RFC1323) (or QNX 6) +61440:64:0:48:M*,N,W0: Tru64:5.1a:JP4:Tru64 v5.1a JP4 (or OpenVMS 7.x on Compaq 5.x stack) + +# ----------------- OpenVMS ----------------- + +6144:64:1:60:M*,N,W0,N,N,T: OpenVMS:7.2::OpenVMS 7.2 (Multinet 4.4 stack) + +# ----------------- MacOS ------------------- + +# XXX Need EOL tcp opt support +# S2:255:1:48:M*,W0,E:.:MacOS:8.6 classic + +# XXX some of these use EOL too +16616:255:1:48:M*,W0: MacOS:7.3-7.6:OTTCP:MacOS 7.3-8.6 (OTTCP) +16616:255:1:48:M*,W0: MacOS:8.0-8.6:OTTCP:MacOS 7.3-8.6 (OTTCP) +16616:255:1:48:M*,N,N,N: MacOS:8.1-8.6:OTTCP:MacOS 8.1-8.6 (OTTCP) +32768:255:1:48:M*,W0,N: MacOS:9.0-9.2::MacOS 9.0-9.2 +65535:255:1:48:M*,N,N,N,N: MacOS:9.1::MacOS 9.1 (OT 2.7.4) + + +# ----------------- Windows ----------------- + +# Windows TCP/IP stack is a mess. For most recent XP, 2000 and +# even 98, the patchlevel, not the actual OS version, is more +# relevant to the signature. They share the same code, so it would +# seem. Luckily for us, almost all Windows 9x boxes have an +# awkward MSS of 536, which I use to tell one from another +# in most difficult cases. + +8192:32:1:44:M*: Windows:3.11::Windows 3.11 (Tucows) +S44:64:1:64:M*,N,W0,N,N,T0,N,N,S: Windows:95::Windows 95 +8192:128:1:64:M*,N,W0,N,N,T0,N,N,S: Windows:95:b:Windows 95b + +# There were so many tweaking tools and so many stack versions for +# Windows 98 it is no longer possible to tell them from each other +# without some very serious research. Until then, there's an insane +# number of signatures, for your amusement: + +S44:32:1:48:M*,N,N,S: Windows:98:lowTTL:Windows 98 (low TTL) +8192:32:1:48:M*,N,N,S: Windows:98:lowTTL:Windows 98 (low TTL) +%8192:64:1:48:M536,N,N,S: Windows:98::Windows 98 +%8192:128:1:48:M536,N,N,S: Windows:98::Windows 98 +S4:64:1:48:M*,N,N,S: Windows:98::Windows 98 +S6:64:1:48:M*,N,N,S: Windows:98::Windows 98 +S12:64:1:48:M*,N,N,S: Windows:98::Windows 98 +T30:64:1:64:M1460,N,W0,N,N,T0,N,N,S: Windows:98::Windows 98 +32767:64:1:48:M*,N,N,S: Windows:98::Windows 98 +37300:64:1:48:M*,N,N,S: Windows:98::Windows 98 +46080:64:1:52:M*,N,W3,N,N,S: Windows:98:RFC1323:Windows 98 (RFC1323) +65535:64:1:44:M*: Windows:98:noSack:Windows 98 (no sack) +S16:128:1:48:M*,N,N,S: Windows:98::Windows 98 +S16:128:1:64:M*,N,W0,N,N,T0,N,N,S: Windows:98::Windows 98 +S26:128:1:48:M*,N,N,S: Windows:98::Windows 98 +T30:128:1:48:M*,N,N,S: Windows:98::Windows 98 +32767:128:1:52:M*,N,W0,N,N,S: Windows:98::Windows 98 +60352:128:1:48:M*,N,N,S: Windows:98::Windows 98 +60352:128:1:64:M*,N,W2,N,N,T0,N,N,S: Windows:98::Windows 98 + +# What's with 1414 on NT? +T31:128:1:44:M1414: Windows:NT:4.0:Windows NT 4.0 SP6a +64512:128:1:44:M1414: Windows:NT:4.0:Windows NT 4.0 SP6a +8192:128:1:44:M*: Windows:NT:4.0:Windows NT 4.0 (older) + +# Windows XP and 2000. Most of the signatures that were +# either dubious or non-specific (no service pack data) +# were deleted and replaced with generics at the end. + +65535:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows 2000 SP4, XP SP1 +65535:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows 2000 SP4, XP SP1 +%8192:128:1:48:M*,N,N,S: Windows:2000:SP2+:Windows 2000 SP2, XP SP1 (seldom 98 4.10.2222) +%8192:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows 2000 SP2, XP SP1 (seldom 98 4.10.2222) +S20:128:1:48:M*,N,N,S: Windows:2000::Windows 2000/XP SP3 +S20:128:1:48:M*,N,N,S: Windows:XP:SP3:Windows 2000/XP SP3 +S45:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows 2000 SP4, XP SP 1 +S45:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows 2000 SP4, XP SP 1 +40320:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows 2000 SP4 + +S6:128:1:48:M*,N,N,S: Windows:2000:SP2:Windows XP, 2000 SP2+ +S6:128:1:48:M*,N,N,S: Windows:XP::Windows XP, 2000 SP2+ +S12:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows XP SP1 +S44:128:1:48:M*,N,N,S: Windows:2000:SP3:Windows Pro SP1, 2000 SP3 +S44:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows Pro SP1, 2000 SP3 +64512:128:1:48:M*,N,N,S: Windows:2000:SP3:Windows SP1, 2000 SP3 +64512:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows SP1, 2000 SP3 +32767:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows SP1, 2000 SP4 +32767:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows SP1, 2000 SP4 + +8192:128:1:52:M*,N,W2,N,N,S: Windows:Vista::Windows Vista/7 + +# Odds, ends, mods: + +S52:128:1:48:M1260,N,N,S: Windows:2000:cisco:Windows XP/2000 via Cisco +S52:128:1:48:M1260,N,N,S: Windows:XP:cisco:Windows XP/2000 via Cisco +65520:128:1:48:M*,N,N,S: Windows:XP::Windows XP bare-bone +16384:128:1:52:M536,N,W0,N,N,S: Windows:2000:ZoneAlarm:Windows 2000 w/ZoneAlarm? +2048:255:0:40:.: Windows:.NET::Windows .NET Enterprise Server + +44620:64:0:48:M*,N,N,S: Windows:ME::Windows ME no SP (?) +S6:255:1:48:M536,N,N,S: Windows:95:winsock2:Windows 95 winsock 2 +32768:32:1:52:M1460,N,W0,N,N,S: Windows:2003:AS:Windows 2003 AS + + +# No need to be more specific, it passes: +# *:128:1:48:M*,N,N,S:U:-Windows:XP/2000 while downloading (leak!) XXX quirk +# there is an equiv similar generic sig w/o the quirk + +# ----------------- HP/UX ------------------- + +32768:64:1:44:M*: HP-UX:B.10.20::HP-UX B.10.20 +32768:64:0:48:M*,W0,N: HP-UX:11.0::HP-UX 11.0 +32768:64:1:48:M*,W0,N: HP-UX:11.10::HP-UX 11.0 or 11.11 +32768:64:1:48:M*,W0,N: HP-UX:11.11::HP-UX 11.0 or 11.11 + +# Whoa. Hardcore WSS. +0:64:0:48:M*,W0,N: HP-UX:B.11.00:A:HP-UX B.11.00 A (RFC1323) + +# ----------------- RiscOS ------------------ + +# We don't yet support the ?12 TCP option +#16384:64:1:68:M1460,N,W0,N,N,T,N,N,?12: RISCOS:3.70-4.36::RISC OS 3.70-4.36 +12288:32:0:44:M536: RISC OS:3.70:4.10:RISC OS 3.70 inet 4.10 + +# XXX quirk +# 4096:64:1:56:M1460,N,N,T:T: RISC OS:3.70:freenet:RISC OS 3.70 freenet 2.00 + + + +# ----------------- BSD/OS ------------------ + +# Once again, power of two WSS is also shared by MacOS X with DF set +8192:64:1:60:M1460,N,W0,N,N,T: BSD/OS:3.1::BSD/OS 3.1-4.3 (or MacOS X 10.2 w/DF) +8192:64:1:60:M1460,N,W0,N,N,T: BSD/OS:4.0-4.3::BSD/OS 3.1-4.3 (or MacOS X 10.2) + + +# ---------------- NewtonOS ----------------- + +4096:64:0:44:M1420: NewtonOS:2.1::NewtonOS 2.1 + +# ---------------- NeXTSTEP ----------------- + +S4:64:0:44:M1024: NeXTSTEP:3.3::NeXTSTEP 3.3 +S8:64:0:44:M512: NeXTSTEP:3.3::NeXTSTEP 3.3 + +# ------------------ BeOS ------------------- + +1024:255:0:48:M*,N,W0: BeOS:5.0-5.1::BeOS 5.0-5.1 +12288:255:0:44:M1402: BeOS:5.0::BeOS 5.0.x + +# ------------------ OS/400 ----------------- + +8192:64:1:60:M1440,N,W0,N,N,T: OS/400:VR4::OS/400 VR4/R5 +8192:64:1:60:M1440,N,W0,N,N,T: OS/400:VR5::OS/400 VR4/R5 +4096:64:1:60:M1440,N,W0,N,N,T: OS/400:V4R5:CF67032:OS/400 V4R5 + CF67032 + +# XXX quirk +# 28672:64:0:44:M1460:A:OS/390:? + +# ------------------ ULTRIX ----------------- + +16384:64:0:40:.: ULTRIX:4.5::ULTRIX 4.5 + +# ------------------- QNX ------------------- + +S16:64:0:44:M512: QNX:::QNX demodisk + +# ------------------ Novell ----------------- + +16384:128:1:44:M1460: Novell:NetWare:5.0:Novel Netware 5.0 +6144:128:1:44:M1460: Novell:IntranetWare:4.11:Novell IntranetWare 4.11 +6144:128:1:44:M1368: Novell:BorderManager::Novell BorderManager ? + +6144:128:1:52:M*,W0,N,S,N,N: Novell:Netware:6:Novell Netware 6 SP3 + + +# ----------------- SCO ------------------ +S3:64:1:60:M1460,N,W0,N,N,T: SCO:UnixWare:7.1:SCO UnixWare 7.1 +S17:64:1:60:M1380,N,W0,N,N,T: SCO:UnixWare:7.1:SCO UnixWare 7.1.3 MP3 +S23:64:1:44:M1380: SCO:OpenServer:5.0:SCO OpenServer 5.0 + +# ------------------- DOS ------------------- + +2048:255:0:44:M536: DOS:WATTCP:1.05:DOS Arachne via WATTCP/1.05 +T2:255:0:44:M984: DOS:WATTCP:1.05Arachne:Arachne via WATTCP/1.05 (eepro) + +# ------------------ OS/2 ------------------- + +S56:64:0:44:M512: OS/2:4::OS/2 4 +28672:64:0:44:M1460: OS/2:4::OS/2 Warp 4.0 + +# ----------------- TOPS-20 ----------------- + +# Another hardcore MSS, one of the ACK leakers hunted down. +# XXX QUIRK 0:64:0:44:M1460:A:TOPS-20:version 7 +0:64:0:44:M1460: TOPS-20:7::TOPS-20 version 7 + +# ----------------- FreeMiNT ---------------- + +S44:255:0:44:M536: FreeMiNT:1:16A:FreeMiNT 1 patch 16A (Atari) + +# ------------------ AMIGA ------------------ + +# XXX TCP option 12 +# S32:64:1:56:M*,N,N,S,N,N,?12:.:AMIGA:3.9 BB2 with Miami stack + +# ------------------ Plan9 ------------------ + +65535:255:0:48:M1460,W0,N: Plan9:4::Plan9 edition 4 + +# ----------------- AMIGAOS ----------------- + +16384:64:1:48:M1560,N,N,S: AMIGAOS:3.9::AMIGAOS 3.9 BB2 MiamiDX + +########################################### +# Appliance / embedded / other signatures # +########################################### + +# ---------- Firewalls / routers ------------ + +S12:64:1:44:M1460: @Checkpoint:::Checkpoint (unknown 1) +S12:64:1:48:N,N,S,M1460: @Checkpoint:::Checkpoint (unknown 2) +4096:32:0:44:M1460: ExtremeWare:4.x::ExtremeWare 4.x + +# XXX TCP option 12 +# S32:64:0:68:M512,N,W0,N,N,T,N,N,?12:.:Nokia:IPSO w/Checkpoint NG FP3 +# S16:64:0:68:M1024,N,W0,N,N,T,N,N,?12:.:Nokia:IPSO 3.7 build 026 + +S4:64:1:60:W0,N,S,T,M1460: FortiNet:FortiGate:50:FortiNet FortiGate 50 + +8192:64:1:44:M1460: Eagle:::Eagle Secure Gateway + +S52:128:1:48:M1260,N,N,N,N: LinkSys:WRV54G::LinkSys WRV54G VPN router + + + +# ------- Switches and other stuff ---------- + +4128:255:0:44:M*: Cisco:::Cisco Catalyst 3500, 7500 etc +S8:255:0:44:M*: Cisco:12008::Cisco 12008 +60352:128:1:64:M1460,N,W2,N,N,T,N,N,S: Alteon:ACEswitch::Alteon ACEswitch +64512:128:1:44:M1370: Nortel:Contivity Client::Nortel Conectivity Client + + +# ---------- Caches and whatnots ------------ + +S4:64:1:52:M1460,N,N,S,N,W0: AOL:web cache::AOL web cache + +32850:64:1:64:N,W1,N,N,T,N,N,S,M*: NetApp:5.x::NetApp Data OnTap 5.x +16384:64:1:64:M1460,N,N,S,N,W0,N: NetApp:5.3:1:NetApp 5.3.1 +65535:64:0:64:M1460,N,N,S,N,W*,N,N,T: NetApp:5.3-5.5::NetApp 5.3-5.5 +65535:64:0:60:M1460,N,W0,N,N,T: NetApp:CacheFlow::NetApp CacheFlow +8192:64:1:64:M1460,N,N,S,N,W0,N,N,T: NetApp:5.2:1:NetApp NetCache 5.2.1 +20480:64:1:64:M1460,N,N,S,N,W0,N,N,T: NetApp:4.1::NetApp NetCache4.1 + +65535:64:0:60:M1460,N,W0,N,N,T: CacheFlow:4.1::CacheFlow CacheOS 4.1 +8192:64:0:60:M1380,N,N,N,N,N,N,T: CacheFlow:1.1::CacheFlow CacheOS 1.1 + +S4:64:0:48:M1460,N,N,S: Cisco:Content Engine::Cisco Content Engine + +27085:128:0:40:.: Dell:PowerApp cache::Dell PowerApp (Linux-based) + +65535:255:1:48:N,W1,M1460: Inktomi:crawler::Inktomi crawler +S1:255:1:60:M1460,S,T,N,W0: LookSmart:ZyBorg::LookSmart ZyBorg + +16384:255:0:40:.: Proxyblocker:::Proxyblocker (what's this?) + +65535:255:0:48:M*,N,N,S: Redline:::Redline T|X 2200 + +32696:128:0:40:M1460: Spirent:Avalanche::Spirent Web Avalanche HTTP benchmarking engine + +# ----------- Embedded systems -------------- + +S9:255:0:44:M536: PalmOS:Tungsten:C:PalmOS Tungsten C +S5:255:0:44:M536: PalmOS:3::PalmOS 3/4 +S5:255:0:44:M536: PalmOS:4::PalmOS 3/4 +S4:255:0:44:M536: PalmOS:3:5:PalmOS 3.5 +2948:255:0:44:M536: PalmOS:3:5:PalmOS 3.5.3 (Handera) +S29:255:0:44:M536: PalmOS:5::PalmOS 5.0 +16384:255:0:44:M1398: PalmOS:5.2:Clie:PalmOS 5.2 (Clie) +S14:255:0:44:M1350: PalmOS:5.2:Treo:PalmOS 5.2.1 (Treo) + +S23:64:1:64:N,W1,N,N,T,N,N,S,M1460: SymbianOS:7::SymbianOS 7 + +8192:255:0:44:M1460: SymbianOS:6048::Symbian OS 6048 (Nokia 7650?) +8192:255:0:44:M536: SymbianOS:9210::Symbian OS (Nokia 9210?) +S22:64:1:56:M1460,T,S: SymbianOS:P800::Symbian OS ? (SE P800?) +S36:64:1:56:M1360,T,S: SymbianOS:6600::Symbian OS 60xx (Nokia 6600?) + + +# Perhaps S4? +5840:64:1:60:M1452,S,T,N,W1: Zaurus:3.10::Zaurus 3.10 + +32768:128:1:64:M1460,N,W0,N,N,T0,N,N,S: PocketPC:2002::PocketPC 2002 + +S1:255:0:44:M346: Contiki:1.1:rc0:Contiki 1.1-rc0 + +4096:128:0:44:M1460: Sega:Dreamcast:3.0:Sega Dreamcast Dreamkey 3.0 +T5:64:0:44:M536: Sega:Dreamcast:HKT-3020:Sega Dreamcast HKT-3020 (browser disc 51027) +S22:64:1:44:M1460: Sony:PS2::Sony Playstation 2 (SOCOM?) + +S12:64:0:44:M1452: AXIS:5600:v5.64:AXIS Printer Server 5600 v5.64 + +3100:32:1:44:M1460: Windows:CE:2.0:Windows CE 2.0 + +#################### +# Fancy signatures # +#################### + +1024:64:0:40:.: *NMAP:syn scan:1:NMAP syn scan (1) +2048:64:0:40:.: *NMAP:syn scan:2:NMAP syn scan (2) +3072:64:0:40:.: *NMAP:syn scan:3:NMAP syn scan (3) +4096:64:0:40:.: *NMAP:syn scan:4:NMAP syn scan (4) + +# Requires quirks support +# 1024:64:0:40:.:A:*NMAP:TCP sweep probe (1) +# 2048:64:0:40:.:A:*NMAP:TCP sweep probe (2) +# 3072:64:0:40:.:A:*NMAP:TCP sweep probe (3) +# 4096:64:0:40:.:A:*NMAP:TCP sweep probe (4) + +1024:64:0:60:W10,N,M265,T: *NMAP:OS:1:NMAP OS detection probe (1) +2048:64:0:60:W10,N,M265,T: *NMAP:OS:2:NMAP OS detection probe (2) +3072:64:0:60:W10,N,M265,T: *NMAP:OS:3:NMAP OS detection probe (3) +4096:64:0:60:W10,N,M265,T: *NMAP:OS:4:NMAP OS detection probe (4) + +32767:64:0:40:.: *NAST:::NASTsyn scan + +# Requires quirks support +# 12345:255:0:40:.:A:-p0f:sendsyn utility + + +##################################### +# Generic signatures - just in case # +##################################### + +#*:64:1:60:M*,N,W*,N,N,T: @FreeBSD:4.0-4.9::FreeBSD 4.x/5.x +#*:64:1:60:M*,N,W*,N,N,T: @FreeBSD:5.0-5.1::FreeBSD 4.x/5.x + +*:128:1:52:M*,N,W0,N,N,S: @Windows:XP:RFC1323:Windows XP/2000 (RFC1323 no tstamp) +*:128:1:52:M*,N,W0,N,N,S: @Windows:2000:RFC1323:Windows XP/2000 (RFC1323 no tstamp) +*:128:1:52:M*,N,W*,N,N,S: @Windows:XP:RFC1323:Windows XP/2000 (RFC1323 no tstamp) +*:128:1:52:M*,N,W*,N,N,S: @Windows:2000:RFC1323:Windows XP/2000 (RFC1323 no tstamp) +*:128:1:64:M*,N,W0,N,N,T0,N,N,S: @Windows:XP:RFC1323:Windows XP/2000 (RFC1323) +*:128:1:64:M*,N,W0,N,N,T0,N,N,S: @Windows:2000:RFC1323:Windows XP/2000 (RFC1323) +*:128:1:64:M*,N,W*,N,N,T0,N,N,S: @Windows:XP:RFC1323:Windows XP (RFC1323, w+) +*:128:1:48:M536,N,N,S: @Windows:98::Windows 98 +*:128:1:48:M*,N,N,S: @Windows:XP::Windows XP/2000 +*:128:1:48:M*,N,N,S: @Windows:2000::Windows XP/2000 + + diff --git a/conf/system/include/14.3/pfctl b/conf/system/include/14.3/pfctl new file mode 100644 index 0000000000000000000000000000000000000000..475c7a848a0c2aadb879093996a708f479ed08c8 GIT binary patch literal 341856 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 Pi6SP;_;=4yy8iz+u(Fj- literal 0 HcmV?d00001 diff --git a/conf/system/include/14.3/pfilctl b/conf/system/include/14.3/pfilctl new file mode 100644 index 0000000000000000000000000000000000000000..5011f3aa8f04471cea25229bc3bc68e229f94909 GIT binary patch literal 9424 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 Urnq!Wxv>FU=ziE13NQRGynhq literal 0 HcmV?d00001 diff --git a/conf/system/include/14.3/pflogd b/conf/system/include/14.3/pflogd new file mode 100644 index 0000000000000000000000000000000000000000..fb6e935e29480667d4c9a44649ac65c242c9312e GIT binary patch literal 26448 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

xzO_vYfAYg< znuCgRj#n4>KLvkTBKf2H^MqYrR|X*8H1KtUkNe4qd?}|Y zsazAT1YcL4Y2!E_=8Q*J2@FVAxx)W+g^#$x-?&11(p=%=uF!MouByS|PS>+NDXygF z+!0$IjA*=rRdnCJedJ$U<_bCY^VTCU)TKL5DMRtgD0W50*|4gyC*=-vMV!wfS02+LxO^8{ zHWS;Q>3j@F{$O(XuCQ|}a&3LCh;8UU`T%l|y$fJ3I;@Yn10^nf*bM+~-PS-X;{4&k zzP_Ajd8`;x?c*?!b|J~s}$@2-eCYSC%CMcg6?+^{mg3`;4!pzTci(jJ9N7Q1df)CE=7M*~ysQ`^e=Abe_Mxd3;01t?!{pBmg| zpSm{c3g4BDB3C$)2jC936$lVGo1M3Po zQx~?BtsbBL_(DDS|#j^fkpbtJnw*b=|z1x-Tod zwtSZ{4JB6pk^ZKSy8&Wd`l%ShK^VgwoRiz>|Hcp@iv?%1U|hW5$YfPxJPR-cvPL%w zc8a=hAxC%Z_gA*(>a@*-Pm`m3mni;L`GoH%=bZR=^^d?E6P7P_g$|9z2&}tAjlf|{ zvloRwkNTN#>=bUqAvTeLOb6$$njlR;~XuAYc$XM(+VjKP=a;BueHbq~4V2eXO~2M1&3j>gP2+A;>tpQ|{7pmzyY z5`EnB2>DFs=|T&8jpxDd)*JVhwtX0=;yihI5yDh)Hv zc!Yd2JA?0|l9(vRjWA@jMT4&t?w|=cGcY$lHf{kKEzd{Gf@bR66&zj^J}lJ6)G0S7 zkFf_*YvS`CR=NtYo}OEUPpo%!xM&o<_0*?m!I(+GVcX@Pa%L~Uv^H`<3mppvml*TE zp?RFsP-;vEHEbIPDPh|Pe1blb^m9Sqas6z~5$=T9r;_X0oM_t%t#itE!Qk`6(lzQx zDcllUq1HPO#3w-%7;2pPm1tux7>qBWIvlhEd8Xcp#uuRIc}6nCqFxdf7E#X}<2SzS z>+8VW?cZ4ZR`gZ1PH#WGcY`3zjNw(zxA!jkK zbpx506U-oCQJst|7S%HWFz-^|q#xzp_Bz*A;{!w-F5Pw^WrS^$0PIiLG6A0LNe|nm zAk%4^h)<^QxI-nHmJ^L{2pU>H1%+t+AbJ>bcA{Jhp+WIp}d80QC3? zv50fc8$yp{Q;!wUqa2Dn1UXRTKLMb~uK|Q2_aoD3`#C81f%gB zIhAg$v(1#6ZK9r{gPUqAqL3y~dcZe9z zLi^4ehr7cc8FN4l9m5Xx7;1qn=P18&sO7w1%tQ&qwY><`r9aMH!PR!uzJ9;SXsiYw zn|lpirTiCQxMFN-V~y!pOfl0&pttkk&YHdL98`|kQ32!qJo>9VH24MRpHqOIo8&@A zt04qV*$4pEk6x9m*bH6teWM5!!fzYDLwSsAF=p-y^H6V^SufYD_k^nF3cqI78_I?@ zutFsFcW?JA@aZwon?Tn`-3vLhM*R$*_VrJ(&yn1R;GsKh$fM;K!C9m`SE0Np+-KZ? z0|RFDC~zHs|A^%gT)zfaFJ^_CY%`CGY2oFRPO_B%gq&F@5Yu8JGf40fJF;*`4FK-= zA(V$yf47(xFO4UQZ7gMkZNmWIjb{J|Z#*5DPTQ&YWGV_fU!DuTj+b{m_RC~^XUY|B z>!w?Ew)Fsz1)`o3bD*FOg$4^F&yZ)wXq1Z8%N;&qe8^Tq$C83e+~M2~OxKVz2+3OD z!cJQ~Gf4WVS~jK+D+7S~g~TGxEK~hI{avU(5`yR)`%=Vw)rY-<;I?-pNk4ap+WSH1 zfO}vyJjFGu6bmmlc1|D0ENbB`g_v*cw<7+M`$wKD{4Z=FZawoB$Scu{(f8u6oTEAW zji0ie$l8t*d#IC&9@^VpL0@iOD{Ll~HGA9ZpwxucKAmiD>oT)DQtfTeBdeG0bLpd2 z!Bb~l-e7OzoGH@R?uFaiH~t1l;nOrD;yu{;6ez;UCptULA>8Hc*u7?Xp*}bLS;H3U zN#YdS2%^}Pwx=TpWw&w=4090DgSC2aThYvK?6-1eV+wBE3Rsf#X-Q~zddbW;>_6EI z940jbn_r?@Yz++>$vyi(zpI~e6iYhn3hR_=!qQ%>pLrHDWAzA@L11uxPPAy2b0gOM zzNS!d_4LYW&);wfjMPvNP$P#793Va39o_c9&qJEd+$Jr2A7Bhp^?#s zl_9>LsQ5W_$l*quf>TwAJ{ZH+9df3jX)Q3p)n^+4Ta!GixZB=#GbeCpw<8|TBIGU! zANZHOc~Fhr8#QX|2a5NWggLHelxm_%RA1{QI~P!j@Hm}|g) zj{&jM_C~Q;Cw2()HROC3tU^{dGeXt@*4BsZ1c0n<#3IgnO<8A{vO<*AXL}lx)%YAe z#$wAaR+i{?xI}kwB3j*`)E1$D)!wn^|Aj$}LWDR!nCBn2p3%Y;;QWkL061?H;{FYvdk@QhtB8RTM z3xKY@LM-BZ?qy*n*Gpop*@`!8s|R%G}J&0=RdQd{g?=F?aR=Rv7Jii8M|oDNNzfoJ4^U_LSG2k zd61DLWY3^9eb{&a$WA8~aefW$A)&>T{SNjO<62X8tttB`7%Z|2AsgL%DBE0KhSE_R z!HKg>z)~1b)mZ| z^ASu&_srgwn?g=6%C+F|lJMu4b|vAjj875e!`m-_OVxud_G^?E>9&QG6UiOTg~J9C z_F>rV)+5lo&sG4&-Wwqpe*-84k441p#^Q}lo+teHx*t1$C=>;S`n+@$>I+69Oc;Vn z{S&^>eqc~xcy3x@c)`$;$c^b@;vazH8XsVgN|N5f{?(1CRXFv{qHyLxU^>dh36|%l+r%sizH9sz0&!BBs9*K2UTR?cS}7-z8{98Di5~vuFvgw7 zrz=s*cpsYq81mKfX@=G}gXdcZqXw{A&olA)CHFTMR<%MNk!%lSQ9D=^%Ufr02aIb* z|HfI+4;RfpHKH7;!xv z`r;z{t@m;0s#0}VQg>fZr)>@#HVLHOzu^vJ2gh}L`f2Q9X@~J=R14cmA=VXI+o1)1 zAA4YsxpIeX(?RXM7j?E{54b7ksHkuoDm)c{jJD{F$>C>3Eye*i*^Bpvhoz%Rtd^UY zUc9YO^eVO#sJg#EFJjYxGjwgsLrc2tw*}PTkNAX@evwJdN2BkLIjP~=sIeN?%Q#C$ zah9~NAAu^aaCv)4B=rrLY%^|8j8@#WmxOn_!;M>e#|}8Zm+Fn0sQ5Q@yF@R?mDk(G zJXV;wJ9rSaU17M|L1Pjc!7ke6(${V^&IJ;3rb8pBRNfw3fZ5)If!UD)%65#nX55L- zoW7i+#(yG%i8Rqzfl63cRsz6x)^P5pQh+#m7k@;HtleTf0yT_PsI&7jidlaE`!z3I*^X4_m-`Q2?S(l*f z4P|3k;UHu?Z6gH%gBr=q#6r<~HkxnzZwRNo zp#Nx?0cAh^oHi@ph5=iGr4v(l7&fW4*X?ZwpnGq*xlR(_0~|7DtMwK#UOvRFcJ(YY z%>Ag58A#Vhtwat>`IP`z3W|wEoEQ8Tnu_E;Y}#)$UQW3p}`vvRmd457O2eWGup+_1?CIW zV|j#{nL^F|`BKe2%m_7iBZp>w2LLtiBNlP$e-&z`nri-d1c;rs4U~_BrbO1h{wrd- z^C@b|JI=oVH&TuvmfMG%m>}`>13^Fug~Q0FquXvhhZ2Vn2C6-kk?VP^FL;KobnqdB1? zxf3t|rs9oejp3@s>)2M=<$r=32ab>O03x}a;8(}dS*TIC6DuGc?j=jXM2ga#DNu>` z2&Wqhj|##kY(0Y}tg^j@JWixf0)(8ufN*iJYi9;YA9Xw1(}%4BK=0~^MVwdtMYQ$$ z3u1AYh0A@cvosJUWDo$s){Oun*jkNDr_GN~Ca6;+CP*-9REYuQE-Gzz0hrK*>5#7a zRuPlC=xL~B{E{t2azDisvaE!&zyrC5;B>}#SSjS(imVp28GjINV!QraHjIN#aaV8+ zq9E+}uKv(s7nXq7a~Kz6zYv7gdbQ|L?kyLyxp5zGj)dRFXo~rvkGc+Ywb+6BXG2({ z71j_`khX$kE^It=K;^|yx%VGNJ20`Is(ITV5riKGpKr} zjdzhuFuG~C+$Z<4wNY6F;aAbtSHdxz8Q|omiJO_ez)fiKG&E^^%tEZ4MLec_0;CYP zK~*>n<-RQhuvfhxW9Jpoqa8gbyYU`06)OFeX6*(`?_lF^ir7J-pRzk`!q`yJ_#;Zg zqlFIQCcY?~yBT~?9oGz+@oTV~XT;S##;r~9#DE?~V;s5cXLq1BV{VhFDUbms_=V?O}7|J@JY0G$|5-F#>Y_6P)% zS7mVZ8H5O+ON<;g;@L2U*x`_$!912<4f*q!7dy*Q;|I)RuOxjq^VmO`AH@7%Gk+YN z-I-?QKVtqAGk=izA!hyn^QW5m7nvVw=IK8>hne}unCFHH`42MBtr+=xn8(BX?aZTX z=5Jvh{b#;~dH59b*D;TUi}`Dr#|p>%BIdF2Fh7@h?8MCHGe6qQXEBd>jr57kpKa#P zV1A65AHw`tGye^A+&Rw7f5JTXf7E@C`SE7{HRN59$X@K+!t~<)1J^awUtCDWzy~)P zi$&a63nDz)zP^Va`{f2C#3EYftKF9b$ z==gpV7`Q6e;WO|U=C0&`w3Q6(>kO6h`qp&~v*;xp`! zF$@Eyx9y`uTPc*Gk6|IQw><(LMB+E^rUP1*Bh1YaSW05+Kt{ggMcE`~Y7*pwvxqah4JE6Hs9^0nBJ^d}DF*_XcT*01!f*?M^NKxUalaNm zsXs&YjX7{bOuoO&0GGY(69~XvH7(M+LU=l)ya>gi=WpNP8fDAB02TDS9lYS)z7DFO zXaU9=gLW(2yGYMAZ3Hc@#`HkkwQ&J-MBvbkVl=hfZ0c6j*YBk@i*w#Bja)LV{ zO7;C-zl*{`$CK^rFT(m6I-X=-e;)+5?YFm$1EcEPjNPJh`|v7opf=HyYU86NO>O=I zW;C^lh#a-y?YhwB56D=wp)go)>_sTXu0>z3h4I2=b%q1)rgNe(FHoh`KTWM>Kr2-0 z%x0z0#$YtP1J}NYxIRYES&zZ&9cCQC2*#;6VuxQX3`a32G0>fT=<2G4;NPKPP0HC1 z`Y%C8^Whq_XS@t*DDU*ZQ^t!Tml}A~h$4p*$_oIdLq&4$gmapa%&+kNsdt2;-`y#! zcRPsYYqz5C<4>cf15HWVw+HrW;d^3W-Lmy}jM*YbQ#M0EVJK=EH)ZT8#7;2EW7CCE zaIiJTQ&TS2aMqS*si}M`a1<}SVqx&B(ihPWnBXnY#Z_sz?fYx{Tj9P!+xxKAn*)ER z$Why8**=H01DSqpPeto^G57}f5N_~|%#R@lyK$zm6g1em5%A;AN)j!|bTyK~F}K;a0|CPF*V*WqL27D|JXN%zBTkp#kVllzsp8S1!{Qkx>A5du z@{JVk%lYCb{AFkHUWmdC<%c!x3nG_fA{Oc^N&2|(X>&n2WW9e8_aV5EI%w>N^N9I8 z*64&SIIIVaXGHFtKzD2sMDxC%BRd-TlBDNLLSLu)?nC>F*?!K4JnyhQY-Hb~y%qiK zT^(<)G~V8y&;!-pR^+Yiy)*5E_AtudqrK+ z^?+Wy8;3G{*=AUSm}RGge^`g}!eDIw>Mc$-;_cCv4Gx~u!Itnn0s3cT)NMQZJ?#f5 zG3qfx(b#&9QUCq2`hEZom|GEPl<29G7_I5!j-GFB9`}H|vv?o3IbmzF{({Iw(%v5x zim0u0>c`gcD)#v;4aqG{MO%`eJ=Zob0`40P5!E>d3H^$q$QMK2b zW3g|BY773gw?rR0NxY;wi6b>rW+b=l8DZGH7Q?;*zcu)sM|Iu`9rE&9S-A~}Ud=$? z=q%oZerfirqxPxA_*PRfzSUG5Z9CdJ6<<>7f^$W&P%!XybucvIdsBK`XK^=e9uD^O z4l$lV6S@{I-h?WfP}+{GSbo(RY9Ws+SlrB#8{ewgfVaZ)i z4x##C^r}b?Zo*O=7-HN4jj`VMmWI~u9qPM4-V_C<7U~Pq_`(FYc+P2J%H)oN2=S5# z@*jo}zBJ`6pVMx({`J#hw{Ay~c?ib$yk?c2V4sl~1$F+z_YWiELOAw__p<}PUwAD3 z{X*K(z;y(^`y%XWT!xoB$Xioi?k(rSH!{}allJe+AYMn77`EKLz6{8lb;RLDT5OxZR}iNQ#kL6iN5s)HE!HmZMZ_@>T5O%bFDE{jxL4q_iDPnW zvE>5KCysShi+@oa%lB#zKSi#Y^-HgN=CS}a}Q!-*rn)MA>z zhY&~Pt;P7wmA;H*;y9|H{{lZg892|Ru`YpsLY(K)SXAI25FbH&o4^ke=Y)%G5%_Dw zc}9)33w%Fuo>OD%1pXp%o>gOBfj>u_(>AtT;M&Y}MT|A08p>9K7BKS&&>AM{_~uMy8B-Y)R{#CbG~trPf*#Bqm) z{tNs$;(5fE3w%3qT;-zw0)LEnKJfy9KSX>M@oa%VKpc0G=)b`4A?_reF7P{uUrJmP z_-({-dyoF(@PhFtUO>D@;MWr`B+k<^=0EY-#Cg=i_!FN)e4D^m5HBLWMc_XoUQE1Q z;ERaQCB9DJmlK~y+$-?e#9hRf3p}5A3Gp(4UqJkF;spXfkNAAz*#e(P+)dme@Uw}R z5>FTSaN-MyYXToa{0icSkBjjqUPin};K$+1bqk4i3H%e{i-<>w%LH7cfw-b8$c2;QA$IhJ!X z;amxqNLV9bi-a2_yj#KtC454{JrW*}@I48SN;s%awlCpi31>(+SHdL{)=1bQ;RXrs zmheFdpOA2mgz87E9aRmL_=ElykB@(D@5sr^%E_AHm{J!Ac>Vd)r`Og8>Vhk>@b|>i z8yZ^7k4*e_+jaPPg)9_0NNx7jW||c zE?oY8_IK3H%(*BV2{O#T5YDRhtOyD#jePXcDE^AlU&kLOt6ZUFi9g=;YFSOq0Z&$- zvR2EgUftwh-Kb^NHU+a}-%da(d?s2~>95nW%um({fbPRz-BW?4wJc9v zMU4-Cr(RK44Niq=S@@kYaPe=owJh-~cv+%aRiGI^8JAUUg6pbKhddRPJ|F%Dn~hX9 z)>lCl{B{}J^)**`@iTMy^J)}|22o;)TH%Kvj6)-T^Njtf5cUv1lV-Zi|IsIxRj#FK zAK5B13J%=A2Clo@Uj|$1M`e8lT`04rR4al!16eNhs(rODDcF%_Rv=*85{>UylR@L2 zpz5oAL&5E4buC3g#it+xKkhLKSNn{D3?!IT`vdi#jWWE~j@MWFqJq;zZT?EBnUww# z6@T+<1EShj`>2A4Wr3=%+ESf1 z^+#uzoC*dwIF_XJSESpKVf%w5LH+v>>feocV~XN5ArGe3bSDsNef2xO4U0`K6`!d( z1NFaWKz$WQwSLd~TL#o`uQFR|m-Pz<^nalKzmfHof5iX2i>0QVf&2sQ_sD?yJ*{TF zp6^-zj|1u-mh}(I`UBe=hq~AOH6^eh4Dc77i|wYF9yJ zm%pNnEULcxUB)e(m`Hghh<~d3im)FU(p3HK>&+7N?}$tpFn&@URbBfBa@O|M?@p@v z-_`#61L~`DNBT0e3I3kAH4W7NFbb{uMM_EKMBEq(xTV>WG>Kj}SMyp5XsmJ^`z0|rw)OlR z+-ieJZV;Ib z!eu&CN9qC|ufGn@kMr zc|Eo^8Sm7SBmQjKA0SieKiN=!1`S>B+t#o4#4oMmq!S#~I!?_yanfCkC@w$3^VC;E zqT(h>%I5|l51?Eu&ejI_9l)2OxJd_anHz+BFUrO2zYhFj?LN`~f3!iI#~au`(E$Hh z1N@l=@qgLC{!jz_NCW)$4dNefVE<|ZoR;%ab%hG|p#qY1_6gLNs#R*vg)3|X&6tJF z)?W*ATcY1q2jYR92ebA~#NuVHX4dSQuVC{oV^3Lft2)E-)0T|cj0s6T&suVmT0j#N zM2zMIamo?YQidsEzY0%0{^P&=@Sc^ZQ=$1lcC_SaAErIlIj3l!B$C`{EU5pN69`&v zGqsrc5^y>m=n&!Ul{FW#rVAl!zax0jMRWww8YaR3*>gM+!EO+XWX-5y22>=HG18-{ z=(w)*)I`EarvSzB(a1<56-_2~=_>O1iO5!cG?6uRV^cDk&FWc|-IE*0pJC+T zG(H^34kPw>!c>vl#tc0g-!;oM3hZA!_ZTv1BzxdMj~a7DBUnrI)i*h)u?Ww zhG@XjhRT|TnNE^2k&3IVZjK~|)xA+8rD!{w$iOgb#$lULBlj8!6P?JTdFmi-a<`~K zY-y2zze_3ssoW@)TQDwpJ||?JW>r3iy)_oQIyw)r66CqGYW)j8OaRaC5IanY3Z*ah1zPNA(Rp+unCq=Usz4c1%Q*Io%gakB>)F@r4QzQo8BKBFUn@!IwzE zAQ7i%zBS{~yssmE9kuUS)qE@6NodXm(ZM^x$H4R82f!Z#uYk{juSADVfotGxJSn7) zo?Tm&C*ST_wP=1D-Kl8VP&tml^nKVkG!|{wrr*-0-_xegX@wWswCNAE!l8C8 zHh=nv_S|dDn&(ic)cPPSE1R$yjvhTq_S?c*q5BPb`sO07*!`(%pV6%y9o3T)dq?l>z1w?l+olyxtk_0@RFfZc=DNN64bM}Z>*wyf5nVoqZpK5!mJaIU=HkYnHdV{Pq5B;uwBqMZ_n+x) zF&AjHLlkTJJ@5V(*U#Q}2O>UCo?3C8<*5~0=4n%9@@#$D@>Hk$XW`jtrBcebA>sX} zYBl7#9Jx-FcTyJ~0U}*k1b84&3za%{0o96EW)UY;8ZUcSPf~LI(`U3|ZZ21yK1Segd^Zu&Kwp_ekLn_iZk&ID!6GY@emj zBA42WfL;eAL-Hr&IwJGWnqS4%aZ0F&;p~18mcPClCI{iJDjV@@Iac~mtIzM!m7A~t zy{qBmp1)`7^Os^*UaHksdm${Pb*dHSb<-f@3jt+$4Fm&4X(A0 zg(Ooh)nk_2L^7VLs+KMJLnJ%aO!AB+|D9x->eYRg{5HvS^i=m)@*5=6=2V@uvl7B(+B9eWU{1cMtXsWhb z@()O+BdMxLW`b;yTNYe64Fu7fHdFts)zVz0oa^5K7^~kUW~qlD%ZNA!lCzigOrj4s z9t|jw++mNgW0MWrPXu+b8|t$aSX~xzbM?Dw8ym`9McR`)!87)8VcoGQz%tJ7{d0Ez zX4#M)EYT^Judv1XeU3lF)cZ*fg6R6yHkUg>kmWhgta ze7A77Fv9sxFn@sgx0wHk`F`dvF#jX-zcN3~e4fv4;WFmeGQXMmAai-?_r;RY)TnPl zH?oOz$`=Uw1OA(RYsO47lijd(?P$Ur%MJT+Em@mPPS`)4c+I$5kC}cbeT1fs(N5d3 zv#WD75C{ZgH|SkA={MhUoeCvV_vpq3UntaH56<5kKEk&%u&xV)81_BMAJ>O-qYAYB zrK{e@4In#4?-bEt<;Sasj`s#XZdtnDjE*XQd}k`Vb6ojHQ#n8P?K~l3*y30;JEr{h zFZr0j4Lup909?x?P1Mrys2Np$eJnC!;0-G>7Kf!s%5UmT zEV8lL-7)x(O(bd<(VbS7(eXqKsidh5J!zyPnP@zoNKqH82BEP-4QCOEu7`N@vT~1D zmQ=H^pH?%*@M-l%rSA=U$XVhiA3w#wSw1?^{1 zSV7wrwJrOd>^HcJ(YBiwe_8j!yPzkMeNF6y-v}M;5hBYzAv|n(+wD^O?)>|Jop$)k zz9#${_Luf0e}=6)G;K}NzU+g-XI=i%zVNNkQ*7~4caPssUH(H|06;_R z_)-2(!f%z z9OCx(h$C~i{~T~<{&Tz$&9T4R-Yw%oVCCQCYDfHOemP0{FZ>*oQg_-th8HLzx&PYI Wg|@Ws$k>Yw@fr4C>i>9?y*8z>u0i@t|Ekgk^Yg{2-1-(vuoPnZvIgHIOm^+KAy{5B9M@aJT_W6Ku-$ z8v;hXy<9)RTsLLSH3-I-5D=qYS8%yE+e0vA#nPx}3|BeVPsT^Ez?_vMSXU3n*lfr4 zH-DmsxxlPAKl*xggIM{x8E@lUmZSWZ4wKWbS8x9>)291=Pn&&8@pW7IOv(CjOk|5esEWvS4RJ%UABt%ghKg!^ECM#sJiL<<@tPtx?KK2nlG&}j|UYC!3?*g>TP0d@~9{`1yK44G+ zeJ0S}aJ|cpZx{T}y5P?PeowgcVIeTyWj`GF?~;%0LO!7j{*o^EE4$#Y0sg!EW_BUJ zu?zX1yO95-3;wAt_-DJ|^MT)!>PM0NiTQ-kAFiI14V5*MA(^~kTLzRNWSilC{Nph> z$)gOY%b-ZgL+9s3Wh?FLC?NcXmg;4{f}< z!-Zf0R}ZH3<_F7JAGomGy~nXFIZXBpM|L8d3-qH8209F^p}K%|90t@07&if|4|roC zd5QVJ%tK%x?B?LWc%@XK6jFhKaf;Zm7-_VOlEoxOC}LxP6`Uju42_79$|IJ@sKBX- zfiq=c5%EfyVv<}MA1{li;*|-@1v-3O3j%5#zV7;z>hL>n`k+*qj>Axeg!q6@eff zKG{du7p}v{{X-y5hp$@)lXUpKh%n$39X{Ew*u7SVk9%1kMpA;I@l-;*G)y*55F8bs z5G|PJ7%LD8mI+3}H7Y7As z%VLxQWvl?~;Z}lu33{;MLLy?Qq4EU5(8v%boMX1dMltTI&2HLHvb>#W^j=idx%UtI zruR4Yn=-KAk*Phu`QisvRqLFkm!>&{Y_)K`mR=_8zB6X<#2TZ4OA%?<1AX`8$|;P&z*OLxST zg)UIm;aS2!v@$)8hp-!a#9G2KfJOnvsY5e^gg@xSlIMAS!VZM(>mTyEz^vbmz$dYR(8>% z+kwqVx%vLfBC@O(-OZ>>sJXKtO0J$6o7d2Dp+S3j=;_Hj7MRXkF!$r zZ1t^loaAO>V2Pg1U46*Z+x`;jPTNgE9q6*OR4Dv*GF$nzWV6YxZ87gwpTx{vxxZO zby;*uO=i%?=ck8^++?~WO?7d_{G4_1O}Wz+`&$}K|HJCsv@ve!lfQD9GI8BfYQ9Hk z@#ptESI?dmFlokiciW*O>~9ZhrgnTZ#dg8)iN5{Z{`RXL`BCE5Pqs$Qb+@mwHvIZh zWjFDo&E2)l{ykpp>}lnDs=W8NTQ~F@oIcaGhrjdF(xdryULC<1zlW`G2zt3EbVct z{KBI@A6TCIWBa&+)(!3ZFRKfFUV0~a_xT{Vt&5ho?$|r;=r?wg6E^klGjeT?`SbNk z$J|vVE{oE>%UT!Ulrim#)&r)WdFEgA^KQue^jZ7#sSbB6ru?8Tn>1+o>ZO~4Cas)4 znNqaPD^7fEo*q86&lLFv7bEEq$8$2xw5>fC_|LWeGOk}=m+0yNt{yuKRtpxG%rmhy ze`s@?KV#2^j~ht}6U~;il!=Pv%b8V3DKUe8?*IR};%c2WlNg?g@8$ z{$q6L(ZX9x6ABCi-13fkwjRO)u*s#{;*X>~9-o+D_FccT(cQj!5gF&29jw{CF=YG5 zwKY9{D!83IP;an#)zDKl=A_K}vK&U$_G@t z$kINg7Cw8l(L}y9n`cw}!gTeVv;4o$-^`WyX^!=JP*9{=w)XfxwYGN_`Z(UQe!lG5 zdYPoM{d4JI-`{8CjZ;#EyX##}R*JG~r{36D?Gb(U>QC)2s;)(9A}0NFGiLPUwP88s z1wpss9gV#HvNaqPDCxfc;xfxS;};qG?H3sgv$8TTN*7pM9GVwC=SW(tz^pR#_>Ozh z-+R2gyI{-3n=U7kG zmemrQ?!UH7HFOJFVk9bg5>z|8Hf-;c%ot&EQN-l+N2Hhfr-l~ptcV@zRv$id<6?`; zhEvQ>9`9rDfwR5w>>~FQ=Z2e~I{eMtqYg%qN9O;my>Ui(r94ly{pLru2k*|yJrlCk z{#o$DA9hD3bl(tdu+PNohfmykG^K@gQ@l5aGG0CP^v2#x3hEC!99lZYCf{OfX2my_ zMc4m2_T=`mLA5pJl@-_0C)QU!Z98%&JSO#)U0I)^RrBnRxBRgt^7?q{dNZVq-@5_+Uys`RXZO?be!4zVA8Tx5Q9SEfaY zO|9|Vj3)+;JR3uId^dn+qAWPjWC2zK&IN1*2boI1o_L^vL!t{jTnqu60@xF2c!-Gu z90wTRXOsgziu}G5RSh_$A3U$aAyQyNQDXr64S@3&cc>(1A>NXi6fen&XJgUL6m5VA zbG5;t%L&?4H!D#O(@E(Dmh5R!0IczFnL>;bz?7(mRl30>OOuJIh6dhX1X#o23W94i z$P5GADKj7Xy)8_vM64Wk3E)}}*BFp}2>v@|eN(%wH_0&0H2TUAhQrK<5d`f6?M@l+ z`4Nzp;Ti*d`*rpG-sl_BJa8xi$L!et0r>)$L*`YKPW(!c5;Mmw_)E zH_G7r_l5_=u4FK-5RmZ$8Q-qr8ucbFl>Zjwa4olVCBNcr`LiHb2a_|rEBPL8ZAy#=@1^bQnpj(__`xiWehXOe9?eL8T@KlE43^7lf`qDsQ zsx23%mY6m*iBr#-&I>5v+j+A7Q$6N0*4_uZ`|&AWX(`U|*afWs%~miRPy(J=K>wmS zB7f0r(Py*7sSo@5(5)i+AF*nnn652y2HnPFCX^(eI880)d$o%*TodkTwT%j3r>PVA ziZd+l!xI$*yAvLu3UDqpzhR^qmS3@a+)I)S*HzG+C;bHEiEBHGfTlR;z_6$pi_Zy72=yPf6WIG6?y2+c3iEXq ztco+hO~&j}?KK$wdd6^rIK%iUXu*;+gMky!1Z~GR+L{;`qiT6&;|Sn2!rW6NKOo;! zwzD7`#42-8{RC8tu+E%7r;Xh~ob8y79rzN5?RW~$+NT+j8_;@Z{;Yb~*Ar?CT_vWU zi)gJxHS`7S7ax_;5Hamt-fG=30#_lg{Iphkf&$6L9IyoIk@*Vu4DX*`1!9z!j6ffjE>O17dMy|Yx)Xb zLImRC2c{zWJpI&X)oU$i_|VrEUu+tk6wD3O=K^zQ5UN$KwZmc2`!ibzyc~zp)HI0x z9b5o)0H{{TwG5mbn%7!IyXJzpQ0=3#7$SD}El=ntUUe3yf1YT*C_uD86c|v#m}~~myx}9!;rO&TpvStcyjfJtMjgHO4*_*HkX62KaMjN6hkTvDh;LL;L6ks}Ez}4D7!K zV-RAdj(ugP{Ukm6NOS4R)Y~`p4)Rq1rs<7pMmet(5acbCq497Z5v!ofyBzZm_$Me3 z#T0o7dkJ$Ej~GmrZo3NIke*F;p;@%rhj)$<68aDNOlliXdA-RV z@;Sp#>qS2;{=>@4?CDhvKR*v$@qYK>A8QfQH&HH!t`N3Bu~`EKFyA2GLAdqm6G(U? zp@`S!MPFETzXMWBR9t5zGHVlEZRF=K6Y{)x7r;y_+=mRtK1(>Sk!qPJA>=f5QeQ}K z9IY4af{6|-NOUM`#!SkHRhI6s@x>}LCbN2BW(nTPtVTl^7fkBg_m9r`MAJTW3pHKU&6*~U3I@rt6eG1=NTN*_a`6dJ{|S^_{-qP%Zv)cc*GmqT0VvTRaDoEi#_sGbGxHaiTnU|B3LPgQY%I`l zQ(p!f9XAMYnfoEuXZ4Ub^_idFE~2YN#f_$ruIpV<&P#a3i!Kq38c@W~e+9)6Xwj(N zMeLkhVXE>9u)uidHc>j%fi(5XA6u_URIa<=I4@B#fj}Y;!t@2JFh?SKz>rq!iJ%LK z+=H9fWDq?S(W%KxxVux;xS^=afdx&<02w zBAv_7uRZ`8MnGwHGW0W~p~6v`EQWr7G?Z#elfuyTNJD|9G;s`l3u#lNgBZF3X)~n# z82UG)vFvL+8Tt&;_=;NN!q6v>wm@3I(1(%6$1jZ)L+?i#U*T&ghW-(0d^N3U?mz|$ zKr^6E6F$K>F$kAgM8QhOa!nk=zrGjYKoNqt1|tM?HN$1U2VoQLrVPB~?BN6>K-p(t z45w(o(J5RYM6PWH+W}jL0pb@Y9>J6oB=7c#KU^pTB`1gzjnK#<>hBJAd|8|zE;PbX zj)s#519+oHfI}(+WSqD#2!+hUC;MECbSXzSbK`a4?7@;S^BKg^upSIe<{fqaKLOVp z?Fl^JZMB7q)5MwW@55nx4!d!9GKc*+9LnKD4ySW?6NmS3IG@AkIb6lz1`d;t@`7Nw zG$u@tC{x74hX;XhjFZsGO)xxMsf>#s=jPtB5vX9vaA|xv<;4D?juQ9^nOuqnxK^B839Z-=sZvTg$-)Ce74Y>mFgye#2}L<6 zWl10v5d&X4o#0by1m(o21uJ6}@emD*B7;E(WdfxNg*2IoQW_l*457rL51CvM8yF`I zfp0!I1jZrsu%;HqgCST0{7}Ti9>`3F9Om}j+4X{KLS`F zas-b8Hr5D2lR81L3#Ui?lX}Imsfo~lyJDw4scQre;RK0)5#B z=o9}0&xC&LBl@K765Pn?6QsX>bD;xm;W!Y;eT86hUm^ZU{AB(^Ku1@f+*b(Jy|45K zS$+K&;9*Q7;X+X3omvN{5CxXq`F|c9NhLx9^~v}>;XNS&!Ah3w{3Y{77;B)Rt6#wB z6Wp5^<`ne8p)xsra$h9>??(O)?jbiG;tyUiz6IX`h5m^?xvv%C#sDDqSC;zs{`np{ zboI%7u=Kyw->Iix$8DH8PTvZR>wtdz+0cg~BtJU;f6tCp(wEntzhCt9DNk0960rC` z=^p_xUH?{|oSuNi`u_Ck0ubu~7m1&oJMeK3L0?{|H1n4I@G_0D-D^xx3H`1R+B=wp8A p0?Hx~+@aHEI=G+lgV_dIC(=js2#w`|%pKt&mT>x(dJ1|Z^*_{#2&Vu5 literal 0 HcmV?d00001 diff --git a/gui/bastille_manager_tarballs.php b/gui/bastille_manager_tarballs.php index 33a1856..39edf0a 100644 --- a/gui/bastille_manager_tarballs.php +++ b/gui/bastille_manager_tarballs.php @@ -72,6 +72,7 @@ $sphere_array = $rel_list; if ($linux_compat_support == "YES"): $a_action = [ + '14.3-RELEASE' => gettext('14.3-RELEASE'), '14.2-RELEASE' => gettext('14.2-RELEASE'), '14.1-RELEASE' => gettext('14.1-RELEASE'), '14.0-RELEASE' => gettext('14.0-RELEASE'), @@ -98,6 +99,7 @@ if ($linux_compat_support == "YES"): ]; else: $a_action = [ + '14.3-RELEASE' => gettext('14.3-RELEASE'), '14.2-RELEASE' => gettext('14.2-RELEASE'), '14.1-RELEASE' => gettext('14.1-RELEASE'), '14.0-RELEASE' => gettext('14.0-RELEASE'), diff --git a/version b/version index 1171c84..2c69d9f 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.42 +1.1.43 From 74428e54e19c02abbdcf59759d8bfc050d853381 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Thu, 4 Sep 2025 14:15:46 -0400 Subject: [PATCH 12/80] Fix bastille version display under maintenance tab --- CHANGELOG | 1 + gui/bastille_manager-lib.inc | 7 +++++-- version | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) mode change 100755 => 100644 gui/bastille_manager-lib.inc diff --git a/CHANGELOG b/CHANGELOG index c063003..55c7620 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.1.44......Fix bastille version display under maintenance tab. 1.1.43......Update: Finish adding support for 14.3 release. 1.1.42......Update: Add support for 14.3 release + add -a option for destroy. 1.1.41......Update: Add support for 14.2 release. diff --git a/gui/bastille_manager-lib.inc b/gui/bastille_manager-lib.inc old mode 100755 new mode 100644 index d6cf529..cdd0f26 --- a/gui/bastille_manager-lib.inc +++ b/gui/bastille_manager-lib.inc @@ -90,8 +90,11 @@ function is_dir_empty($reldir) { function get_version_bastille() { global $tarballversion, $prdname; if (is_file("{$tarballversion}")) { - //exec("/bin/cat {$tarballversion}", $result); - exec("/usr/bin/grep 'BASTILLE_VERSION=' {$tarballversion} | cut -d'\"' -f2", $result); + // For some reason bastille bin version value isn't double quoted anymore so we can't use the old delimiter. + // we will keep the old line for reference. + + //exec("/usr/bin/grep 'BASTILLE_VERSION=' {$tarballversion} | cut -d'\"' -f2", $result); + exec("/usr/bin/grep 'BASTILLE_VERSION=' {$tarballversion} | cut -d'=' -f2", $result); return ($result[0] ?? ''); } else { diff --git a/version b/version index 2c69d9f..633becb 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.43 +1.1.44 From afa76f6a9c196c61e840d5188495b764db8b2346 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Thu, 4 Sep 2025 23:51:29 -0400 Subject: [PATCH 13/80] Update for recent bastille boot settings changes --- CHANGELOG | 1 + bastille-init | 21 ++++++++++--- gui/bastille_manager-lib.inc | 8 +++-- gui/bastille_manager_add.php | 31 ++++++++++--------- gui/bastille_manager_jconf.php | 54 +++++++++++++++++++--------------- gui/bastille_manager_util.php | 8 +++-- version | 2 +- 7 files changed, 74 insertions(+), 51 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 55c7620..7e64849 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.1.45......Code update for recent bastille boot settings changes. 1.1.44......Fix bastille version display under maintenance tab. 1.1.43......Update: Finish adding support for 14.3 release. 1.1.42......Update: Add support for 14.3 release + add -a option for destroy. diff --git a/bastille-init b/bastille-init index 1a6320e..9ce7458 100644 --- a/bastille-init +++ b/bastille-init @@ -1139,6 +1139,7 @@ ext_start() # Start bastille jails. if [ -d "${CWDIR}/jails" ]; then JAIL_LIST=$(bastille list jail) + # This loop is for backward compatibility only. for jail in ${JAIL_LIST}; do if grep -qw "${jail}_AUTO_START=\"YES\"" ${CWDIR}${EXTCONF}; then if ! jls | sed "1 d" | awk '{print $3}' | grep -qw ${jail}; then @@ -1146,6 +1147,13 @@ ext_start() fi fi done + + # Required for embedded platforms. + if [ "${PRDPLATFORM}" = "x64-embedded" ]; then + if sysrc -qc bastille_enable=YES; then + service bastille start + fi + fi fi if [ $? -eq 0 ]; then @@ -1198,9 +1206,9 @@ rc_params() fi # Do't start containers by default. - if ! sysrc -qn bastille_enable >/dev/null 2>&1; then - sysrc bastille_enable="NO" >/dev/null 2>&1 - fi + #if ! sysrc -qn bastille_enable >/dev/null 2>&1; then + # sysrc bastille_enable="NO" >/dev/null 2>&1 + #fi # Check if sane ZFS is enabled in this setup. if [ "${bastille_zfs_enable}" = "YES" ]; then @@ -1225,6 +1233,9 @@ rc_params() else sysrc -f ${CWDIR}${EXTCONF} ZFS_SUPPORT="NO" >/dev/null 2>&1 fi + + # Enable bastille in /etc/rc.conf + sysrc bastille_enable="YES" >/dev/null 2>&1 } update_config() @@ -1308,7 +1319,9 @@ bastille_stop() { # Stop all bastille containers. echo "${PRDNAME} Extension: Stopping all containers..." - bastille stop ALL + if ! sysrc -qc bastille_enable=YES; then + bastille stop ALL + fi if [ $? -eq 0 ]; then exit 0 else diff --git a/gui/bastille_manager-lib.inc b/gui/bastille_manager-lib.inc index cdd0f26..b81545f 100644 --- a/gui/bastille_manager-lib.inc +++ b/gui/bastille_manager-lib.inc @@ -67,6 +67,7 @@ $tarballversion = "/usr/local/bin/bastille"; $bastille_version_min = exec("grep 'BASTILLE_VERSION=' $tarballversion | cut -d '\"' -f2 | tr -d '.'"); $host_version = exec("/bin/cat /etc/prd.version | tr -d '.'"); $linux_compat_support = exec("/usr/bin/grep 'LINUX_COMPAT_SUPPORT=' $configfile | /usr/bin/cut -d'\"' -f2"); +$jail_settings = "settings.conf"; // Ensure the root directory is configured. if ($rootfolder == "") @@ -253,10 +254,11 @@ function get_jail_infos() { $r['path'] = "-"; endif; // Display auto-start settings. - $jail_autostart = exec("/usr/bin/grep -w {$item}_AUTO_START $configfile | cut -d'=' -f2 | tr -d '\"'"); - if ($jail_autostart == 'YES') { + //$jail_autostart = exec("/usr/bin/grep -w {$item}_AUTO_START $configfile | cut -d'=' -f2 | tr -d '\"'"); + $jail_autostart = exec("/usr/bin/grep -w boot {$jail_dir}/{$item}/settings.conf | cut -d'=' -f2 | tr -d '\"'"); + if ($jail_autostart == 'on') { $r['boot'] = $img_path['ena']; - } elseif ($jail_autostart == 'NO') { + } elseif ($jail_autostart == 'off') { $r['boot'] = $img_path['dis']; } else { $r['boot'] = $img_path['dis']; diff --git a/gui/bastille_manager_add.php b/gui/bastille_manager_add.php index 65cad35..bf80cd4 100644 --- a/gui/bastille_manager_add.php +++ b/gui/bastille_manager_add.php @@ -113,10 +113,10 @@ if($_POST): // Just create an empty container with minimal jail.conf. $cmd = ("/usr/local/bin/bastille create -E {$jname}"); else: - if (isset($_POST['nowstart'])): - $cmd = ("/usr/local/bin/bastille create {$options} {$jname} {$release} {$ipaddr} {$interface} && /usr/local/bin/bastille start {$jname}"); - else: + if (isset($_POST['autostart'])): $cmd = ("/usr/local/bin/bastille create {$options} {$jname} {$release} {$ipaddr} {$interface}"); + else: + $cmd = ("/usr/local/bin/bastille create --no-boot {$options} {$jname} {$release} {$ipaddr} {$interface}"); endif; endif; @@ -124,16 +124,15 @@ if($_POST): if(get_all_release_list()): unset($output,$retval);mwexec2($cmd,$output,$retval); if($retval == 0): - if (isset($_POST['autostart'])): - exec("/usr/sbin/sysrc -f {$configfile} {$jname}_AUTO_START=\"YES\""); - endif; + //if (isset($_POST['autostart'])): + // exec("/usr/sbin/sysrc -f {$configfile} {$jname}_AUTO_START=\"YES\""); + //endif; if(is_link($resolv_conf)): if(unlink($resolv_conf)): //exec("/usr/local/bin/bastille cp $jname $resolv_host etc"); copy($resolv_host, $resolv_conf); endif; endif; - //$savemsg .= gtext("Boot Environment created and activated successfully."); header('Location: bastille_manager_gui.php'); exit; else: @@ -163,7 +162,7 @@ function emptyjail_change() { showElementById('thickjail_tr', 'show'); showElementById('vnetjail_tr', 'show'); showElementById('bridgejail_tr', 'show'); - showElementById('nowstart_tr', 'show'); + //showElementById('nowstart_tr', 'show'); showElementById('autostart_tr', 'show'); showElementById('linuxjail_tr', 'show'); break; @@ -174,7 +173,7 @@ function emptyjail_change() { showElementById('thickjail_tr', 'hide'); showElementById('vnetjail_tr', 'hide'); showElementById('bridgejail_tr', 'hide'); - showElementById('nowstart_tr', 'hide'); + //showElementById('nowstart_tr', 'hide'); showElementById('autostart_tr', 'hide'); showElementById('linuxjail_tr', 'hide'); break; @@ -190,7 +189,7 @@ function linuxjail_change() { showElementById('thickjail_tr', 'show'); showElementById('vnetjail_tr', 'show'); showElementById('bridgejail_tr', 'show'); - showElementById('nowstart_tr', 'show'); + //showElementById('nowstart_tr', 'show'); showElementById('autostart_tr', 'show'); showElementById('linuxjail_tr', 'show'); showElementById('emptyjail_tr', 'show'); @@ -202,7 +201,7 @@ function linuxjail_change() { showElementById('thickjail_tr', 'hide'); showElementById('vnetjail_tr', 'hide'); showElementById('bridgejail_tr', 'hide'); - showElementById('nowstart_tr', 'show'); + //showElementById('nowstart_tr', 'show'); showElementById('autostart_tr', 'show'); showElementById('emptyjail_tr', 'hide'); break; @@ -218,7 +217,7 @@ function vnetjail_change() { showElementById('thickjail_tr', 'show'); showElementById('vnetjail_tr', 'show'); showElementById('bridgejail_tr', 'show'); - showElementById('nowstart_tr', 'show'); + //showElementById('nowstart_tr', 'show'); showElementById('autostart_tr', 'show'); showElementById('linuxjail_tr', 'show'); break; @@ -229,7 +228,7 @@ function vnetjail_change() { showElementById('thickjail_tr', 'show'); showElementById('vnetjail_tr', 'show'); showElementById('bridgejail_tr', 'hide'); - showElementById('nowstart_tr', 'show'); + //showElementById('nowstart_tr', 'show'); showElementById('autostart_tr', 'show'); showElementById('linuxjail_tr', 'show'); break; @@ -245,7 +244,7 @@ function bridgejail_change() { showElementById('thickjail_tr', 'show'); showElementById('vnetjail_tr', 'show'); showElementById('bridgejail_tr', 'show'); - showElementById('nowstart_tr', 'show'); + //showElementById('nowstart_tr', 'show'); showElementById('autostart_tr', 'show'); showElementById('linuxjail_tr', 'show'); break; @@ -256,7 +255,7 @@ function bridgejail_change() { showElementById('thickjail_tr', 'show'); showElementById('vnetjail_tr', 'hide'); showElementById('bridgejail_tr', 'show'); - showElementById('nowstart_tr', 'show'); + //showElementById('nowstart_tr', 'show'); showElementById('autostart_tr', 'show'); showElementById('linuxjail_tr', 'show'); break; @@ -320,7 +319,7 @@ $document->render(); html_checkbox2('linuxjail',gettext('Create a Linux container'),!empty($pconfig['linuxjail']) ? true : false,gettext('This will create a Linux container, this is highly experimental and for testing purposes.'),'',false,false,'linuxjail_change()'); endif; endif; - html_checkbox2('nowstart',gettext('Start after creation'),!empty($pconfig['nowstart']) ? true : false,gettext('Start the container after creation(May be overridden by later bastille releases).'),'',false); + //html_checkbox2('nowstart',gettext('Start after creation'),!empty($pconfig['nowstart']) ? true : false,gettext('Start the container after creation(May be overridden by later bastille releases).'),'',false); html_checkbox2('autostart',gettext('Auto start on boot'),!empty($pconfig['autostart']) ? true : false,gettext('Automatically start the container at boot time.'),'',false); ?> diff --git a/gui/bastille_manager_jconf.php b/gui/bastille_manager_jconf.php index dc76943..52c425f 100644 --- a/gui/bastille_manager_jconf.php +++ b/gui/bastille_manager_jconf.php @@ -62,10 +62,11 @@ endif; $pgtitle = [gtext('Extensions'),gtext('Bastille'),gtext('Configuration'), $container]; $jail_config = "$jail_dir/$container/jail.conf"; +$item = $pconfig['jailname']; // Get some jail system settings. $is_vnet = exec("/usr/bin/grep '.*vnet;' $jail_config"); -$pconfig['autostart'] = exec("/usr/bin/grep -w '{$container}_AUTO_START=\"YES\"' $bastille_config"); +$pconfig['autostart'] = exec("/usr/bin/grep -w 'boot=\"on\"' {$jail_dir}/{$item}/{$jail_settings}"); // Get some jail config parameters. // This could be done with a nice php preg loop in the future. @@ -124,17 +125,19 @@ if ($_POST): $input_errors[] = gtext("A valid hostname must be specified, it can't be left blank."); endif; - if(isset($_POST['ipv4'])): - if(!preg_match('/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))?$/', $pconfig['ipv4'])): - $input_errors[] = gtext("A valid IPv4 address must be specified."); - endif; - endif; + // Disable this IP validation check since bastille jail.conf syntax has changed recently. + //if(isset($_POST['ipv4'])): + // if(!preg_match('/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))?$/', $pconfig['ipv4'])): + // $input_errors[] = gtext("A valid IPv4 address must be specified."); + // endif; + //endif; - if(isset($_POST['ipv6'])): - if(!preg_match('/^(([a-fA-F0-9:]+$)|([a-fA-F0-9:]+\/[0-9]{1,3}$))/', $pconfig['ipv6'])): - $input_errors[] = gtext("A valid IPv6 address must be specified."); - endif; - endif; + // Disable this IP validation check since bastille jail.conf syntax has changed recently. + //if(isset($_POST['ipv6'])): + // if(!preg_match('/^(([a-fA-F0-9:]+$)|([a-fA-F0-9:]+\/[0-9]{1,3}$))/', $pconfig['ipv6'])): + // $input_errors[] = gtext("A valid IPv6 address must be specified."); + // endif; + //endif; if(isset($_POST['securelevel'])): if(!preg_match('/^[0-3]$/', $pconfig['securelevel'])): @@ -249,7 +252,7 @@ if ($_POST): if (isset($_POST['ipv4']) && $_POST['ipv4']): if($jail_ipv4_def !== $jail_ipv4): - $cmd = "/usr/bin/sed -i '' 's|.*ip4.addr.*=.*;| ip4.addr = $jail_ipv4;|' $jail_config"; + $cmd = "/usr/bin/sed -i '' 's/.*ip4.addr.*=.*;/ ip4.addr = $jail_ipv4;/' $jail_config"; unset($output,$retval);mwexec2($cmd,$output,$retval); if($retval == 0): //$savemsg .= gtext("IPv4 changed successfully."); @@ -261,7 +264,7 @@ if ($_POST): if (isset($_POST['ipv6']) && $_POST['ipv6']): if($jail_ipv6_def !== $jail_ipv6): - $cmd = "/usr/bin/sed -i '' 's|.*ip6.addr.*=.*;| ip6.addr = $jail_ipv6;|' $jail_config"; + $cmd = "/usr/bin/sed -i '' 's/.*ip6.addr.*=.*;/ ip6.addr = $jail_ipv6;/' $jail_config"; unset($output,$retval);mwexec2($cmd,$output,$retval); if($retval == 0): //$savemsg .= gtext("IPv6 changed successfully."); @@ -336,11 +339,12 @@ if ($_POST): endif; if (isset($_POST['autostart']) && $_POST['autostart']): - if($jail_name_def !== $jail_name): - // Remove obsolete variable. - exec("/usr/sbin/sysrc -f $configfile -x {$jail_name_def}_AUTO_START"); - endif; - $cmd = ("/usr/sbin/sysrc -f $configfile {$jail_name}_AUTO_START=\"YES\""); + //if($jail_name_def !== $jail_name): + // // Remove obsolete variable. + // exec("/usr/sbin/sysrc -f $configfile -x {$jail_name_def}_AUTO_START"); + //endif; + //$cmd = ("/usr/sbin/sysrc -f $configfile {$jail_name}_AUTO_START=\"YES\""); + $cmd = ("/usr/sbin/sysrc -f {$jail_dir}/{$item}/{$jail_settings} boot=\"on\""); unset($output,$retval);mwexec2($cmd,$output,$retval); if($retval == 0): //$savemsg .= gtext("Autostart changed successfully."); @@ -348,12 +352,13 @@ if ($_POST): $input_errors[] = gtext("Failed to enable autostart."); endif; else: - if($jail_name_def !== $jail_name): - // Remove obsolete variable. - exec("/usr/sbin/sysrc -f $configfile -x {$jail_name_def}_AUTO_START"); - endif; - if(exec("/usr/sbin/sysrc -f $configfile -qn {$jail_name}_AUTO_START")): - $cmd = ("/usr/sbin/sysrc -f $configfile -x {$jail_name}_AUTO_START"); + //if($jail_name_def !== $jail_name): + // // Remove obsolete variable. + // exec("/usr/sbin/sysrc -f $configfile -x {$jail_name_def}_AUTO_START"); + //endif; + if(exec("/usr/sbin/sysrc -f {$jail_dir}/{$item}/{$jail_settings} -qn boot")): + //$cmd = ("/usr/sbin/sysrc -f $configfile -x {$jail_name}_AUTO_START"); + $cmd = ("/usr/sbin/sysrc -f {$jail_dir}/{$item}/{$jail_settings} boot=\"off\""); unset($output,$retval);mwexec2($cmd,$output,$retval); if($retval == 0): //$savemsg .= gtext("Autostart changed successfully."); @@ -442,6 +447,7 @@ endif; . gtext('For additional information about the jail configuration file, check the FreeBSD documentation') . '.'; html_remark("note", gtext('Note'), $helpinghand); + html_remark("note", gtext("Warning"), sprintf(gtext("Please be careful here as no input validation will be performed."))); ?> diff --git a/gui/bastille_manager_util.php b/gui/bastille_manager_util.php index b4db349..52ccc84 100644 --- a/gui/bastille_manager_util.php +++ b/gui/bastille_manager_util.php @@ -284,7 +284,8 @@ if($_POST): $container['jailname'] = $_POST['jailname']; $confirm_name = $pconfig['confirmname']; $item = $container['jailname']; - $cmd = ("/usr/sbin/sysrc -f {$configfile} {$item}_AUTO_START=\"YES\""); + //$cmd = ("/usr/sbin/sysrc -f {$configfile} {$item}_AUTO_START=\"YES\""); + $cmd = ("/usr/sbin/sysrc -f {$jail_dir}/{$item}/{$jail_settings} boot=\"on\""); unset($output,$retval);mwexec2($cmd,$output,$retval); if($retval == 0): header('Location: bastille_manager_gui.php'); @@ -303,8 +304,9 @@ if($_POST): $container['jailname'] = $_POST['jailname']; $confirm_name = $pconfig['confirmname']; $item = $container['jailname']; - if(exec("/usr/sbin/sysrc -f $configfile -qn {$item}_AUTO_START")): - $cmd = ("/usr/sbin/sysrc -f $configfile -x {$item}_AUTO_START"); + if(exec("/usr/sbin/sysrc -f {$jail_dir}/{$item}/{$jail_settings} -qn boot")): + //$cmd = ("/usr/sbin/sysrc -f $configfile -x {$item}_AUTO_START"); + $cmd = ("/usr/sbin/sysrc -f {$jail_dir}/{$item}/{$jail_settings} boot=\"off\""); unset($output,$retval);mwexec2($cmd,$output,$retval); if($retval == 0): header('Location: bastille_manager_gui.php'); diff --git a/version b/version index 633becb..1027df1 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.44 +1.1.45 From ae9c3b62e558d9d880594359a0ac07f5916b4333 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Fri, 5 Sep 2025 17:13:11 -0400 Subject: [PATCH 14/80] Display jail IP using bastille list buil-in command --- CHANGELOG | 1 + gui/bastille_manager-lib.inc | 6 +++--- version | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 7e64849..645ead8 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.1.46......Display jail IP using bastille list buil-in command. 1.1.45......Code update for recent bastille boot settings changes. 1.1.44......Fix bastille version display under maintenance tab. 1.1.43......Update: Finish adding support for 14.3 release. diff --git a/gui/bastille_manager-lib.inc b/gui/bastille_manager-lib.inc index b81545f..20dfdca 100644 --- a/gui/bastille_manager-lib.inc +++ b/gui/bastille_manager-lib.inc @@ -223,9 +223,9 @@ function get_jail_infos() { if (!$r['id']): $r['id'] = "-"; endif; - // Set the IPv4 on the running jails. - //$r['ip'] = exec("/usr/sbin/jls | /usr/bin/grep {$item} | /usr/bin/awk '{print $2}'"); - $r['ip'] = exec("/usr/bin/grep -w 'ip4.addr' {$jail_dir}/{$item}/jail.conf | /usr/bin/awk '{print $3}' | /usr/bin/tr -d ';'"); + // Set the IP address on the running jails using bastille list command instead. + //$r['ip'] = exec("/usr/bin/grep -w 'ip4.addr' {$jail_dir}/{$item}/jail.conf | /usr/bin/awk '{print $3}' | /usr/bin/tr -d ';'"); + $r['ip'] = exec("/usr/local/bin/bastille list {$item} | awk '{print $7}' | sed 1d"); if (!$r['ip']): $r['ip'] = exec("/usr/bin/grep -w 'ip6.addr' {$jail_dir}/{$item}/jail.conf | /usr/bin/awk '{print $3}' | /usr/bin/tr -d ';'"); endif; diff --git a/version b/version index 1027df1..b1468fd 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.45 +1.1.46 From 71ca5390d2defd7cae7d14cfdf7840bc926f0c3f Mon Sep 17 00:00:00 2001 From: JRGTH Date: Fri, 5 Sep 2025 21:52:05 -0400 Subject: [PATCH 15/80] Cosmetic changes and improvements --- CHANGELOG | 1 + gui/bastille_manager-lib.inc | 24 ++++++++++++++++++++---- gui/bastille_manager_jconf.php | 20 +++++++++++++++++++- version | 2 +- 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 645ead8..fbe65b0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.1.47......Cosmetic changes and improvements. 1.1.46......Display jail IP using bastille list buil-in command. 1.1.45......Code update for recent bastille boot settings changes. 1.1.44......Fix bastille version display under maintenance tab. diff --git a/gui/bastille_manager-lib.inc b/gui/bastille_manager-lib.inc index 20dfdca..256102d 100644 --- a/gui/bastille_manager-lib.inc +++ b/gui/bastille_manager-lib.inc @@ -243,11 +243,27 @@ function get_jail_infos() { elseif (!$r['rel']): $r['rel'] = "-"; endif; - // Display interfaces. - $r['nic'] = exec("/usr/bin/grep -wE 'interface.*=.*;|vnet.interface.*=.*;' {$jail_dir}/{$item}/jail.conf | /usr/bin/awk '{print $3}' | /usr/bin/tr -d ';'"); - if (!$r['nic']): - $r['nic'] = "-"; + + // Display interface name for VNET jails. + if (exec("/usr/bin/grep -w '.*vnet.interface.*=.*;' {$jail_dir}/{$item}/jail.conf")): + $r['nic'] = exec("/usr/bin/grep -w '.*vnet.interface.*=.*;' {$jail_dir}/{$item}/jail.conf | /usr/bin/awk '{print $3}' | /usr/bin/tr -d ';'"); + if (!$r['nic']): + $r['nic'] = "-"; + endif; + // Display interface name from the previous jail.conf syntax for simple shared IP jails. + elseif (exec("/usr/bin/grep -w '.*interface.*=.*;' {$jail_dir}/{$item}/jail.conf")): + $r['nic'] = exec("/usr/bin/grep -w '.*interface.*=.*;' {$jail_dir}/{$item}/jail.conf | /usr/bin/awk '{print $3}' | /usr/bin/tr -d ';'"); + if (!$r['nic']): + $r['nic'] = "-"; + endif; + // Display interface name from the new jail.conf syntax for simple shared IP jails. + elseif (exec("/usr/bin/grep -w '.*ip4.addr.*=.*|.*' {$jail_dir}/{$item}/jail.conf")): + $r['nic'] = exec("/usr/bin/grep -w '.*ip4.addr.*=.*|.*' {$jail_dir}/{$item}/jail.conf | cut -d'|' -f1 | awk '{print $3}'"); + if (!$r['nic']): + $r['nic'] = "-"; + endif; endif; + // Display path. $r['path'] = exec("/usr/bin/grep -w 'path' {$jail_dir}/{$item}/jail.conf | /usr/bin/awk '{print $3}' | /usr/bin/tr -d ';'"); if (!$r['path']): diff --git a/gui/bastille_manager_jconf.php b/gui/bastille_manager_jconf.php index 52c425f..d3f66d1 100644 --- a/gui/bastille_manager_jconf.php +++ b/gui/bastille_manager_jconf.php @@ -79,6 +79,7 @@ $pconfig['securelevel'] = exec("/usr/bin/grep '.*securelevel.*=' $jail_config | $pconfig['devfs_ruleset'] = exec("/usr/bin/grep '.*devfs_ruleset.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); $pconfig['enforce_statfs'] = exec("/usr/bin/grep '.*enforce_statfs.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); $pconfig['vnet_interface'] = exec("/usr/bin/grep '.*vnet.interface.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); +$pconfig['boot_prio'] = exec("/usr/local/bin/bastille config {$item} get priority"); // Set the jail config default parameters. $jail_name_def = $pconfig['jname']; @@ -193,6 +194,9 @@ if ($_POST): if(isset($pconfig['vnet_interface'])): $jail_vnet_interface = $pconfig['vnet_interface']; endif; + if(isset($pconfig['boot_prio'])): + $jail_boot_prio = $pconfig['boot_prio']; + endif; // Check if the config has changed for each parameter. // This could be done with a nice foreach loop in the future. @@ -235,6 +239,7 @@ if ($_POST): // Skip jail running check. $retval = "1"; endif; + if($retval == 0): $input_errors[] = gtext("This jail is running, please stop it before making jail.conf changes."); else: @@ -368,6 +373,18 @@ if ($_POST): endif; endif; + if (isset($_POST['boot_prio']) || $_POST['boot_prio']): + if($jail_boot_prio_def !== $jail_boot_prio): + $cmd = "/usr/local/bin/bastille config {$item} set priority $jail_boot_prio"; + unset($output,$retval);mwexec2($cmd,$output,$retval); + if($retval == 0): + //$savemsg .= gtext("Priority changed successfully."); + else: + $input_errors[] = gtext("Failed to save priority ."); + endif; + endif; + endif; + if (isset($_POST['jname']) && $_POST['jname']): if($jail_name_def !== $jail_name): $cmd = "/usr/local/bin/bastille rename $jail_name_def $jail_name"; @@ -424,13 +441,14 @@ endif; html_inputbox("enforce_statfs", gtext("enforce_statfs"), $pconfig['enforce_statfs'], gtext("This determines what information processes in a jail are able to get about mount points. Affects the behaviour of the following syscalls: statfs, fstatfs, getfsstat and fhstatfs, default is 2."), false, 20); //endif; if ($is_vnet): - html_inputbox("vnet_interface", gtext("VNET Interface"), $pconfig['vnet_interface'], gtext("Set the VNET interface manually, usually should not be changed unless renaming the interface or moving jail from host."), false, 20); + html_inputbox("vnet_interface", gtext("VNET Interface"), $pconfig['vnet_interface'], gtext("Set the VNET interface manually, usually should not be changed unless renaming the interface or moving jail from host, Note: manual edit of the jail rc.conf file may be required."), false, 20); endif; ?> diff --git a/version b/version index b1468fd..d388d61 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.46 +1.1.47 From ed3fc8b716e0b8d1bc8061d2a300b07d2bf80fb7 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Fri, 5 Sep 2025 23:42:52 -0400 Subject: [PATCH 16/80] Add action to set priority value from utilities --- CHANGELOG | 1 + gui/bastille_manager_util.php | 41 +++++++++++++++++++++++++++++++++++ version | 2 +- 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index fbe65b0..e0216b9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.1.48......Add action to set priority value from utilities. 1.1.47......Cosmetic changes and improvements. 1.1.46......Display jail IP using bastille list buil-in command. 1.1.45......Code update for recent bastille boot settings changes. diff --git a/gui/bastille_manager_util.php b/gui/bastille_manager_util.php index 52ccc84..a6312e4 100644 --- a/gui/bastille_manager_util.php +++ b/gui/bastille_manager_util.php @@ -318,6 +318,31 @@ if($_POST): endif; break; + case 'priority': + // Input validation required + if(empty($input_errors)): + $container = []; + $container['uuid'] = $_POST['uuid']; + $container['jailname'] = $_POST['jailname']; + $set_priority = $pconfig['prioritynumber']; + $item = $container['jailname']; + if(exec("/usr/sbin/sysrc -f {$jail_dir}/{$item}/{$jail_settings} -qn priority")): + if (is_numeric($set_priority)): + $cmd = ("/usr/local/bin/bastille config {$item} set priority {$set_priority}"); + unset($output,$retval);mwexec2($cmd,$output,$retval); + if($retval == 0): + header('Location: bastille_manager_gui.php'); + exit; + else: + $input_errors[] = gtext("Failed to set priority."); + endif; + else: + $input_errors[] = gtext("Priority value must be a number."); + endif; + endif; + endif; + break; + case 'fstab': // Input validation not required if(empty($input_errors)): @@ -458,33 +483,44 @@ function action_change() { showElementById('backup_tr', 'show'); showElementById('format_tr', 'show'); showElementById('safemode_tr', 'show'); + showElementById('prioritynumber_tr','hide'); break; case "clone": showElementById('newname_tr','show'); showElementById('newipaddr_tr','show'); showElementById('clonestop_tr','show'); + showElementById('prioritynumber_tr','hide'); break; case "update": showElementById('confirmname_tr','hide'); showElementById('nowstop_tr','hide'); showElementById('update_base_tr','show'); showElementById('update_jail_tr','show'); + showElementById('prioritynumber_tr','hide'); break; case "base": showElementById('confirmname_tr','hide'); showElementById('nowstop_tr','hide'); showElementById('jail_release_tr', 'show'); showElementById('release_tr','show'); + showElementById('prioritynumber_tr','hide'); break; case "autoboot": showElementById('confirmname_tr','hide'); showElementById('nowstop_tr','hide'); showElementById('auto_boot_tr', 'show'); + showElementById('prioritynumber_tr','hide'); break; case "noauto": showElementById('confirmname_tr','hide'); showElementById('nowstop_tr','hide'); showElementById('no_autoboot_tr', 'show'); + showElementById('prioritynumber_tr','hide'); + break; + case "priority": + showElementById('confirmname_tr','hide'); + showElementById('nowstop_tr','hide'); + showElementById('prioritynumber_tr','show'); break; case "fstab": showElementById('confirmname_tr','hide'); @@ -495,15 +531,18 @@ function action_change() { showElementById('readonly_tr','show'); showElementById('createdir_tr','show'); showElementById('automount_tr','show'); + showElementById('prioritynumber_tr','hide'); break; case "delete": showElementById('confirmname_tr','show'); showElementById('nowstop_tr','show'); + showElementById('prioritynumber_tr','hide'); break; case "advanced": showElementById('confirmname_tr','hide'); showElementById('nowstop_tr','hide'); showElementById('advanced_tr','show'); + showElementById('prioritynumber_tr','hide'); break; default: break; @@ -577,6 +616,7 @@ $document->render(); 'base' => gettext('Release'), 'autoboot' => gettext('Autoboot'), 'noauto' => gettext('Noauto'), + 'priority' => gettext('Priority'), 'fstab' => gettext('Fstab'), 'delete' => gettext('Destroy'), 'advanced' => gettext('Advanced'), @@ -605,6 +645,7 @@ $document->render(); html_checkbox2('safemode',gettext('Safe ZFS export'),!empty($pconfig['safemode']) ? true : false,gettext('Safely stop and start a ZFS jail before the exporting process, this has no effect on .TGZ/TXZ since the jail should be stopped regardless.'),'',false); endif; html_inputbox2('confirmname',gettext('Enter name for confirmation'),!empty($pconfig['confirmname']),'',true,30); + html_inputbox2('prioritynumber',gettext('Enter priority value'),!empty($pconfig['prioritynumber']),'',true,30); html_checkbox2('nowstop',gettext('Stop container'),!empty($pconfig['nowstop']) ? true : false,gettext('Stop the container if running before deletion.'),'',false); html_inputbox2('newname',gettext('Enter a name for the new container'),!empty($pconfig['newname']),'',true,30); html_inputbox2('newipaddr',gettext('Enter a IP address for the new container'),!empty($pconfig['newipaddr']),'',true,30); diff --git a/version b/version index d388d61..a8646df 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.47 +1.1.48 From 8a2e33b3b460ac047bf25fc439fa99a94e15e031 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sat, 6 Sep 2025 00:31:46 -0400 Subject: [PATCH 17/80] Disable basic interface to comply with bastille new syntax --- CHANGELOG | 1 + gui/bastille_manager_jconf.php | 50 +++++++++++++++++----------------- version | 2 +- 3 files changed, 27 insertions(+), 26 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index e0216b9..e604897 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.1.49......Disable basic interface to comply with bastille new syntax. 1.1.48......Add action to set priority value from utilities. 1.1.47......Cosmetic changes and improvements. 1.1.46......Display jail IP using bastille list buil-in command. diff --git a/gui/bastille_manager_jconf.php b/gui/bastille_manager_jconf.php index d3f66d1..1323f4d 100644 --- a/gui/bastille_manager_jconf.php +++ b/gui/bastille_manager_jconf.php @@ -74,7 +74,7 @@ $pconfig['jname'] = "$container"; $pconfig['hostname'] = exec("/usr/bin/grep '.*host.hostname.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); $pconfig['ipv4'] = exec("/usr/bin/grep '.*ip4.addr.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); $pconfig['ipv6'] = exec("/usr/bin/grep '.*ip6.addr.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); -$pconfig['interface'] = exec("/usr/bin/grep '.*interface.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); +//$pconfig['interface'] = exec("/usr/bin/grep '.*interface.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); $pconfig['securelevel'] = exec("/usr/bin/grep '.*securelevel.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); $pconfig['devfs_ruleset'] = exec("/usr/bin/grep '.*devfs_ruleset.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); $pconfig['enforce_statfs'] = exec("/usr/bin/grep '.*enforce_statfs.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); @@ -86,11 +86,12 @@ $jail_name_def = $pconfig['jname']; $jail_hostname_def = $pconfig['hostname']; $jail_ipv4_def = $pconfig['ipv4']; $jail_ipv6_def = $pconfig['ipv6']; -$jail_interface_def = $pconfig['interface']; +//$jail_interface_def = $pconfig['interface']; $jail_securelevel_def = $pconfig['securelevel']; $jail_devfs_ruleset_def = $pconfig['devfs_ruleset']; $jail_enforce_statfs_def = $pconfig['enforce_statfs']; $jail_vnet_interface_def = $pconfig['vnet_interface']; +$jail_boot_prio_def = $pconfig['boot_prio']; // Check if is a Linux jail. $is_linux_jail = exec("/usr/bin/grep linsysfs {$jail_dir}/{$jail_name_def}/fstab"); @@ -179,9 +180,9 @@ if ($_POST): if(isset($pconfig['ipv6'])): $jail_ipv6 = $pconfig['ipv6']; endif; - if(isset($pconfig['interface'])): - $jail_interface = $pconfig['interface']; - endif; + //if(isset($pconfig['interface'])): + // $jail_interface = $pconfig['interface']; + //endif; if(isset($pconfig['securelevel'])): $jail_securelevel = $pconfig['securelevel']; endif; @@ -212,9 +213,9 @@ if ($_POST): if(isset($_POST['ipv6']) && ($jail_ipv6_def !== $jail_ipv6)): $is_changed = "1"; endif; - if(isset($_POST['interface']) && ($jail_interface_def !== $jail_interface)): - $is_changed = "1"; - endif; + //if(isset($_POST['interface']) && ($jail_interface_def !== $jail_interface)): + // $is_changed = "1"; + //endif; // Don't check "securelevel" if Linux jail. if(!$is_linux_jail): if($jail_securelevel_def !== $jail_securelevel): @@ -279,19 +280,19 @@ if ($_POST): endif; endif; - if (isset($_POST['interface']) && $_POST['interface']): - if($jail_interface_def !== $jail_interface): - if ($_POST['interface'] !== 'Config'): - $cmd = "/usr/bin/sed -i '' 's|.*interface.*=.*;| interface = $jail_interface;|' $jail_config"; - unset($output,$retval);mwexec2($cmd,$output,$retval); - if($retval == 0): - //$savemsg .= gtext("Interface changed successfully."); - else: - $input_errors[] = gtext("Failed to save interface."); - endif; - endif; - endif; - endif; + //if (isset($_POST['interface']) && $_POST['interface']): + // if($jail_interface_def !== $jail_interface): + // if ($_POST['interface'] !== 'Config'): + // $cmd = "/usr/bin/sed -i '' 's|.*interface.*=.*;| interface = $jail_interface;|' $jail_config"; + // unset($output,$retval);mwexec2($cmd,$output,$retval); + // if($retval == 0): + // //$savemsg .= gtext("Interface changed successfully."); + // else: + // $input_errors[] = gtext("Failed to save interface."); + // endif; + // endif; + // endif; + //endif; if (isset($_POST['vnet_interface']) && $_POST['vnet_interface']): if($jail_vnet_interface_def !== $jail_vnet_interface): @@ -422,7 +423,6 @@ endif; $a_action = $l_interfaces; html_titleline2(gtext("Jail Configuration")); html_inputbox("jname", gtext("Name"), $pconfig['jname'], gtext("Set the desired jail name, for example: jail_1. Warning: renaming a jail will also rename the directory/dataset."), true, 40); - html_inputbox("hostname", gtext("Hostname"), $pconfig['hostname'], gtext("Set the desired jail hostname, for example: jail.com, not to be confused with the jail name."), true, 40); if ($jail_ipv4_def): html_inputbox("ipv4", gtext("IPv4"), $pconfig['ipv4'], gtext("Set the desired jail IPv4 address, for example: 192.168.1.100, or 192.168.1.100/24."), true, 40); @@ -430,9 +430,9 @@ endif; if ($jail_ipv6_def): html_inputbox("ipv6", gtext("IPv6"), $pconfig['ipv6'], gtext("Set the desired jail IPv4 address, for example: 2001:cdba::3257:9652, or 2001:cdba::3257:9652/64."), true, 40); endif; - if (!$is_vnet): - html_combobox('interface', gtext('Interface'),$pconfig['interface'], $a_action, gtext("Set the network interface available from the dropdown menu, usually should not be changed unless replacing/renaming interface or moving jail from host."), true, false, 'action_change()'); - endif; + //if (!$is_vnet): + // html_combobox('interface', gtext('Interface'),$pconfig['interface'], $a_action, gtext("Set the network interface available from the dropdown menu, usually should not be changed unless replacing/renaming interface or moving jail from host."), true, false, 'action_change()'); + //endif; if(!$is_linux_jail): html_inputbox("securelevel", gtext("securelevel"), $pconfig['securelevel'], gtext("The value of the jail's kern.securelevel. A jail never has a lower securelevel than its parent system, but by setting this parameter it may have a higher one, default is 2."), false, 20); endif; diff --git a/version b/version index a8646df..8ac3ef6 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.48 +1.1.49 From fb04fe048ee066dba51a361c9a2b1da882d9ed8b Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sun, 7 Sep 2025 02:35:28 -0400 Subject: [PATCH 18/80] Disable linux_compat due incompatibility/missing depends This feature is temporarily disabled due incompatibility/missing dependencies with later XigmaNAS releases. --- CHANGELOG | 1 + bastille-init | 4 ++++ version | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index e604897..14a31fc 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.1.50......Disable linux_compat due incompatibility with later releases. 1.1.49......Disable basic interface to comply with bastille new syntax. 1.1.48......Add action to set priority value from utilities. 1.1.47......Cosmetic changes and improvements. diff --git a/bastille-init b/bastille-init index 9ce7458..88037ec 100644 --- a/bastille-init +++ b/bastille-init @@ -1366,6 +1366,10 @@ bastille_init() linux_compat() { + # Feature temporarily disabled. + echo "This feature is temporarily disabled due incompatibility with later ${PRDPRODUCT} releases." + exit 1 + if ping -c1 -t5 freebsd.org > /dev/null; then # Manually enable Linux compatibility(Experimental). if ! sysrc -f ${CWDIR}${EXTCONF} -qn LINUX_COMPAT_SUPPORT | grep -q "YES"; then diff --git a/version b/version index 8ac3ef6..da44c7f 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.49 +1.1.50 From 1970b3539bcc7aa98a9c9ac74652375d2a4e2b3d Mon Sep 17 00:00:00 2001 From: JRGTH Date: Mon, 8 Sep 2025 00:23:52 -0400 Subject: [PATCH 19/80] Code update and improvements Code update and improvements, update jail config/util WebGUI pages and bastille-init. --- CHANGELOG | 1 + bastille-init | 38 ++++++++-- gui/bastille_manager_jconf.php | 59 ++++++++++++--- gui/bastille_manager_util.php | 127 ++++++++------------------------- version | 2 +- 5 files changed, 116 insertions(+), 111 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 14a31fc..93234d4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.1.51......Code update/improvements, update jail config/util pages and bastille-init. 1.1.50......Disable linux_compat due incompatibility with later releases. 1.1.49......Disable basic interface to comply with bastille new syntax. 1.1.48......Add action to set priority value from utilities. diff --git a/bastille-init b/bastille-init index 88037ec..c162010 100644 --- a/bastille-init +++ b/bastille-init @@ -669,10 +669,19 @@ jail_update() echo "Can't determine '${TARGET}' version." exit 1 else - env PAGER="/bin/cat" ${FREEBSD_UPDATE}/freebsd-update --not-running-from-cron -f ${FREEBSD_UPDATE}/freebsd-update.conf \ + if [ -n "${_forceopt}" ]; then + echo "Performing a forced jail update..." + else + echo "Performing a jail update..." + fi + env PAGER="/bin/cat" ${FREEBSD_UPDATE}/freebsd-update ${_forceopt} --not-running-from-cron -f ${FREEBSD_UPDATE}/freebsd-update.conf \ -d ${CWDIR}/freebsd-update -b "${bastille_jailsdir}/${TARGET}/root" fetch --currently-running "${CURRENT_VERSION}" ${FREEBSD_UPDATE}/freebsd-update --not-running-from-cron -f ${FREEBSD_UPDATE}/freebsd-update.conf \ -d ${CWDIR}/freebsd-update -b "${bastille_jailsdir}/${TARGET}/root" install --currently-running "${CURRENT_VERSION}" + + echo "Setting OS release for ${TARGET}." + CURRENT_VERSION=$(jexec -l ${TARGET} freebsd-version) + bastille config ${TARGET} set osrelease ${CURRENT_VERSION} fi else echo "Container not running." @@ -689,11 +698,18 @@ jail_update() fi else if [ -d "${bastille_releasesdir}/${TARGET}" ]; then + if [ -n "${_forceopt}" ]; then + echo "Performing a forced base update..." + else + echo "Performing a base update..." + fi # Update container base(affects base child containers). - env PAGER="/bin/cat" ${FREEBSD_UPDATE}/freebsd-update --not-running-from-cron -f ${FREEBSD_UPDATE}/freebsd-update.conf \ + env PAGER="/bin/cat" ${FREEBSD_UPDATE}/freebsd-update ${_forceopt} --not-running-from-cron -f ${FREEBSD_UPDATE}/freebsd-update.conf \ -d ${CWDIR}/freebsd-update -b "${bastille_releasesdir}/${TARGET}" fetch --currently-running "${TARGET}" ${FREEBSD_UPDATE}/freebsd-update --not-running-from-cron -f ${FREEBSD_UPDATE}/freebsd-update.conf \ -d ${CWDIR}/freebsd-update -b "${bastille_releasesdir}/${TARGET}" install --currently-running "${TARGET}" + + echo "Please manually set OS release on jail.conf for the required jails." else echo "${TARGET} not found. See bootstrap." exit 1 @@ -1431,6 +1447,15 @@ update|--update) echo "Usage: ${SCRIPTNAME} [update|--update] [container] | [release]" exit 1 fi + _forceopt= + jail_update + ;; +update_force|--update-force) + if [ $# -gt 2 ] || [ $# -lt 2 ]; then + echo "Usage: ${SCRIPTNAME} [update_force|--update-force] [container] | [release]" + exit 1 + fi + _forceopt="-F" jail_update ;; clean|--clean) @@ -1469,10 +1494,11 @@ while getopts ":ospruxUvgtZh" option; do echo echo "Advanced Usage: ${SCRIPTNAME} [option] [container] [release] | [newrelease]" echo "Options:" - echo " update|--update Update a container/release to base -pX release." - echo " upgrade|--upgrade Upgrade a container/release to X.Y-RELEASE." - echo " install|--install Finish installing pending updates on container/release." - echo " clean|--clean Cleanup the FreeBSD update/upgrade cached files/folders." + echo " update|--update Update a container/release to base -pX release." + echo " update_force|--update-force Update a container/release to base -pX release forcefully." + echo " upgrade|--upgrade Upgrade a container/release to X.Y-RELEASE." + echo " install|--install Finish installing pending updates on container/release." + echo " clean|--clean Cleanup the FreeBSD update/upgrade cached files/folders." echo "" echo "" echo "Experimental:" diff --git a/gui/bastille_manager_jconf.php b/gui/bastille_manager_jconf.php index 1323f4d..1180579 100644 --- a/gui/bastille_manager_jconf.php +++ b/gui/bastille_manager_jconf.php @@ -78,6 +78,7 @@ $pconfig['ipv6'] = exec("/usr/bin/grep '.*ip6.addr.*=' $jail_config | cut -d '=' $pconfig['securelevel'] = exec("/usr/bin/grep '.*securelevel.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); $pconfig['devfs_ruleset'] = exec("/usr/bin/grep '.*devfs_ruleset.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); $pconfig['enforce_statfs'] = exec("/usr/bin/grep '.*enforce_statfs.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); +$pconfig['osrelease'] = exec("/usr/local/bin/bastille config {$item} get osrelease | cut -d '=' -f2 | tr -d ' ;'"); $pconfig['vnet_interface'] = exec("/usr/bin/grep '.*vnet.interface.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); $pconfig['boot_prio'] = exec("/usr/local/bin/bastille config {$item} get priority"); @@ -90,6 +91,7 @@ $jail_ipv6_def = $pconfig['ipv6']; $jail_securelevel_def = $pconfig['securelevel']; $jail_devfs_ruleset_def = $pconfig['devfs_ruleset']; $jail_enforce_statfs_def = $pconfig['enforce_statfs']; +$jail_osrelease_def = $pconfig['osrelease']; $jail_vnet_interface_def = $pconfig['vnet_interface']; $jail_boot_prio_def = $pconfig['boot_prio']; @@ -142,20 +144,44 @@ if ($_POST): //endif; if(isset($_POST['securelevel'])): - if(!preg_match('/^[0-3]$/', $pconfig['securelevel'])): - $input_errors[] = gtext("A valid number must be specified for securelevel, between 0-3."); + if(!is_numeric($pconfig['securelevel'])): + $input_errors[] = gtext("This parameter must be a number."); + else: + if(!preg_match('/^[0-3]$/', $pconfig['securelevel'])): + $input_errors[] = gtext("A valid number must be specified for securelevel, between 0-3."); + endif; endif; endif; if(isset($_POST['devfs_ruleset'])): - if(!preg_match('/^([0-9]{1,3})$/', $pconfig['devfs_ruleset'])): - $input_errors[] = gtext("A valid number must be specified for devfs_ruleset."); + if(!is_numeric($pconfig['devfs_ruleset'])): + $input_errors[] = gtext("This parameter must be a number."); + else: + if(!preg_match('/^([0-9]{1,3})$/', $pconfig['devfs_ruleset'])): + $input_errors[] = gtext("A valid number must be specified for devfs_ruleset."); + endif; endif; endif; if(isset($_POST['enforce_statfs'])): - if(!preg_match('/^[0-2]$/', $pconfig['enforce_statfs'])): - $input_errors[] = gtext("A valid number must be specified for enforce_statfs, between 0-2."); + if(!is_numeric($pconfig['enforce_statfs'])): + $input_errors[] = gtext("This parameter must be a number."); + else: + if(!preg_match('/^[0-2]$/', $pconfig['enforce_statfs'])): + $input_errors[] = gtext("A valid number must be specified for enforce_statfs, between 0-2."); + endif; + endif; + endif; + + if(isset($_POST['osrelease'])): + if(!is_string($pconfig['osrelease'])): + $input_errors[] = gtext("This parameter must be a string."); + endif; + endif; + + if(isset($_POST['boot_prio'])): + if(!is_numeric($pconfig['boot_prio'])): + $input_errors[] = gtext("This parameter must be a number."); endif; endif; @@ -192,6 +218,9 @@ if ($_POST): if(isset($pconfig['enforce_statfs'])): $jail_enforce_statfs = $pconfig['enforce_statfs']; endif; + if(isset($pconfig['osrelease'])): + $jail_osrelease = $pconfig['osrelease']; + endif; if(isset($pconfig['vnet_interface'])): $jail_vnet_interface = $pconfig['vnet_interface']; endif; @@ -199,7 +228,8 @@ if ($_POST): $jail_boot_prio = $pconfig['boot_prio']; endif; - // Check if the config has changed for each parameter. + // Check if the config has changed for each parameters. + // This jails wide changes requires the jail to be already stopped. // This could be done with a nice foreach loop in the future. if($jail_name_def !== $jail_name): $is_changed = "1"; @@ -242,7 +272,7 @@ if ($_POST): endif; if($retval == 0): - $input_errors[] = gtext("This jail is running, please stop it before making jail.conf changes."); + $input_errors[] = gtext("This jail is running, please stop it before making jail.conf wide changes."); else: if (isset($_POST['hostname']) && $_POST['hostname']): if($jail_hostname_def !== $jail_hostname): @@ -344,6 +374,18 @@ if ($_POST): endif; endif; + if (isset($_POST['osrelease']) || $_POST['osrelease']): + if($jail_osrelease_def !== $jail_osrelease): + $cmd = "/usr/local/bin/bastille config {$item} set osrelease $jail_osrelease"; + unset($output,$retval);mwexec2($cmd,$output,$retval); + if($retval == 0): + //$savemsg .= gtext("Osrelease changed successfully."); + else: + $input_errors[] = gtext("Failed to save osrelease."); + endif; + endif; + endif; + if (isset($_POST['autostart']) && $_POST['autostart']): //if($jail_name_def !== $jail_name): // // Remove obsolete variable. @@ -439,6 +481,7 @@ endif; html_inputbox("devfs_ruleset", gtext("devfs_ruleset"), $pconfig['devfs_ruleset'], gtext("The number of the devfs ruleset that is enforced for mounting devfs in this jail. A value of zero means no ruleset is enforced. default is 4, on VNET jails default is 13."), false, 20); //if(!$is_linux_jail): html_inputbox("enforce_statfs", gtext("enforce_statfs"), $pconfig['enforce_statfs'], gtext("This determines what information processes in a jail are able to get about mount points. Affects the behaviour of the following syscalls: statfs, fstatfs, getfsstat and fhstatfs, default is 2."), false, 20); + html_inputbox("osrelease", gtext("osrelease"), $pconfig['osrelease'], gtext("This sets the jail OS release, this parameter must be a string."), false, 20); //endif; if ($is_vnet): html_inputbox("vnet_interface", gtext("VNET Interface"), $pconfig['vnet_interface'], gtext("Set the VNET interface manually, usually should not be changed unless renaming the interface or moving jail from host, Note: manual edit of the jail rc.conf file may be required."), false, 20); diff --git a/gui/bastille_manager_util.php b/gui/bastille_manager_util.php index a6312e4..139d46d 100644 --- a/gui/bastille_manager_util.php +++ b/gui/bastille_manager_util.php @@ -115,7 +115,6 @@ if($_POST): $bastille_version = get_version_bastille(); $bastille_version_min = "0920210714"; $bastille_version_format = str_replace(".", "", $bastille_version); - $bastille_bin_path = "/usr/local/bin"; $export_option = ""; $skip_safemode = ""; @@ -152,25 +151,21 @@ if($_POST): endif; endif; - if($bastille_version_format >= $bastille_version_min): if ($zfs_activated == "YES"): if ($pconfig['format'] == "default"): $export_format = "--xz"; - $cmd = ("$bastille_bin_path/bastille export $export_option $export_format '{$item}'"); + $cmd = ("/usr/local/bin/bastille export $export_option $export_format '{$item}'"); else: - $cmd = ("$bastille_bin_path/bastille export $export_option $user_export_format '{$item}'"); + $cmd = ("/usr/local/bin/bastille export $export_option $user_export_format '{$item}'"); endif; else: if ($pconfig['format'] == "default"): $export_format = "--txz"; - $cmd = ("$bastille_bin_path/bastille export $export_format '{$item}'"); + $cmd = ("/usr/local/bin/bastille export $export_format '{$item}'"); else: - $cmd = ("$bastille_bin_path/bastille export $user_export_format '{$item}'"); + $cmd = ("/usr/local/bin/bastille export $user_export_format '{$item}'"); endif; endif; - else: - $cmd = ("$bastille_bin_path/bastille export '{$item}'"); - endif; unset($output,$retval);mwexec2($cmd,$output,$retval); if($retval == 0): @@ -225,9 +220,17 @@ if($_POST): $current_release = exec("/usr/bin/grep '\-RELEASE' {$jail_dir}/{$item}/fstab | awk '{print $1}' | grep -o '[^/]*$'"); if ($_POST['update_base']): - $cmd = ("/usr/local/sbin/bastille-init update '{$current_release}'"); + if ($_POST['update_base_force']): + $cmd = ("/usr/local/sbin/bastille-init update_force '{$current_release}'"); + else: + $cmd = ("/usr/local/sbin/bastille-init update '{$current_release}'"); + endif; elseif ($_POST['update_jail']): - $cmd = ("/usr/local/sbin/bastille-init update '{$item}'"); + if ($_POST['update_jail_force']): + $cmd = ("/usr/local/sbin/bastille-init update_force '{$item}'"); + else: + $cmd = ("/usr/local/sbin/bastille-init update '{$item}'"); + endif; else: $input_errors[] = sprintf(gtext("Failed to update container %s."),$item); break; @@ -236,7 +239,14 @@ if($_POST): unset($output,$retval);mwexec2($cmd,$output,$retval); if($retval == 0): $update_release = exec("/usr/sbin/jexec -l {$item} freebsd-version"); - $savemsg .= sprintf(gtext("Container release updated to %s successfully."),$update_release); + if (($_POST['update_jail_force']) || ($_POST['update_base_force'])): + $savemsg .= sprintf(gtext("Container release forcefully updated to %s successfully."),$update_release); + else: + $savemsg .= sprintf(gtext("Container release updated to %s successfully."),$update_release); + endif; + if ($_POST['update_base']): + exec("/usr/local/bin/bastille config {$item} set osrelease $update_release"); + endif; exec("echo '{$date}: {$application}: Container release updated to {$update_release} successfully for {$item}' >> {$logfile}"); //header('Location: bastille_manager_gui.php'); //exit; @@ -248,34 +258,6 @@ if($_POST): endif; break; - case 'base': - // Input validation not required - if(empty($input_errors)): - $container = []; - $container['uuid'] = $_POST['uuid']; - $container['jailname'] = $_POST['jailname']; - $item = $container['jailname']; - $current_release = exec("/usr/bin/grep '\-RELEASE' {$jail_dir}/{$item}/fstab | awk '{print $1}' | grep -o '[^/]*$'"); - $new_release = $pconfig['release']; - - if(!$current_release): - $savemsg .= gtext("This is a thick container and should be interactively upgraded through the command line."); - else: - $cmd = ("/usr/local/sbin/bastille-init --upgrade {$item} {$current_release} {$new_release}"); - unset($output,$retval);mwexec2($cmd,$output,$retval); - if($retval == 0): - $savemsg .= sprintf(gtext("Container base release changed to %s successfully."),$new_release); - exec("echo '{$date}: {$application}: Container base release changed to {$new_release} on {$item} successfully' >> {$logfile}"); - //header('Location: bastille_manager_gui.php'); - //exit; - else: - $input_errors[] = sprintf(gtext("Failed to change container base release to %s, either it is running or is not a thin container."),$new_release); - exec("echo '{$date}: {$application}: Failed to change container base release to {$new_release} on {$item}' >> {$logfile}"); - endif; - endif; - endif; - break; - case 'autoboot': // Input validation not required if(empty($input_errors)): @@ -403,7 +385,7 @@ if($_POST): break; case 'delete': - // Delete a contained + // Delete a container if(empty($input_errors)): $container = []; $container['uuid'] = $_POST['uuid']; @@ -462,10 +444,10 @@ function action_change() { showElementById('readonly_tr', 'hide'); showElementById('createdir_tr', 'hide'); showElementById('automount_tr', 'hide'); - showElementById('jail_release_tr', 'hide'); - showElementById('release_tr','hide'); showElementById('update_base_tr','hide'); showElementById('update_jail_tr','hide'); + showElementById('update_base_force_tr', 'hide'); + showElementById('update_jail_force_tr', 'hide'); showElementById('newname_tr', 'hide'); showElementById('newipaddr_tr', 'hide'); showElementById('clonestop_tr', 'hide'); @@ -474,75 +456,48 @@ function action_change() { showElementById('backup_tr', 'hide'); showElementById('format_tr', 'hide'); showElementById('safemode_tr', 'hide'); - //showElementById('dateadd_tr','hide'); + showElementById('prioritynumber_tr','hide'); var action = document.iform.action.value; switch (action) { case "backup": - showElementById('confirmname_tr','hide'); - showElementById('nowstop_tr','hide'); showElementById('backup_tr', 'show'); showElementById('format_tr', 'show'); showElementById('safemode_tr', 'show'); - showElementById('prioritynumber_tr','hide'); break; case "clone": showElementById('newname_tr','show'); showElementById('newipaddr_tr','show'); showElementById('clonestop_tr','show'); - showElementById('prioritynumber_tr','hide'); break; case "update": - showElementById('confirmname_tr','hide'); - showElementById('nowstop_tr','hide'); showElementById('update_base_tr','show'); showElementById('update_jail_tr','show'); - showElementById('prioritynumber_tr','hide'); - break; - case "base": - showElementById('confirmname_tr','hide'); - showElementById('nowstop_tr','hide'); - showElementById('jail_release_tr', 'show'); - showElementById('release_tr','show'); - showElementById('prioritynumber_tr','hide'); + showElementById('update_base_force_tr', 'show'); + showElementById('update_jail_force_tr', 'show'); break; case "autoboot": - showElementById('confirmname_tr','hide'); - showElementById('nowstop_tr','hide'); showElementById('auto_boot_tr', 'show'); - showElementById('prioritynumber_tr','hide'); break; case "noauto": - showElementById('confirmname_tr','hide'); - showElementById('nowstop_tr','hide'); showElementById('no_autoboot_tr', 'show'); - showElementById('prioritynumber_tr','hide'); break; case "priority": - showElementById('confirmname_tr','hide'); - showElementById('nowstop_tr','hide'); showElementById('prioritynumber_tr','show'); break; case "fstab": - showElementById('confirmname_tr','hide'); - showElementById('nowstop_tr','hide'); showElementById('source_path_tr','show'); showElementById('target_path_tr','show'); showElementById('path_check_tr','show'); showElementById('readonly_tr','show'); showElementById('createdir_tr','show'); showElementById('automount_tr','show'); - showElementById('prioritynumber_tr','hide'); break; case "delete": showElementById('confirmname_tr','show'); showElementById('nowstop_tr','show'); - showElementById('prioritynumber_tr','hide'); break; case "advanced": - showElementById('confirmname_tr','hide'); - showElementById('nowstop_tr','hide'); showElementById('advanced_tr','show'); - showElementById('prioritynumber_tr','hide'); break; default: break; @@ -589,23 +544,8 @@ $document->render(); /dev/null"); - $current_release = ""; - $disable_base_change = "no"; - $current_release = exec("/usr/bin/grep '\-RELEASE' {$jail_dir}/{$pconfig['jailname']}/fstab | awk '{print $1}' | grep -o '[^/]*$'"); + $is_thinjail = exec("/usr/bin/grep -w '/.*/.bastille' {$jail_dir}/{$pconfig['jailname']}/fstab"); - if (!$current_release): - $current_release = exec("/usr/bin/grep 'releng' {$jail_dir}/{$pconfig['jailname']}/root/COPYRIGHT | cut -d '/' -f2"); - if(!$current_release): - //Assume is a running thickjail. - $current_release = exec("/usr/sbin/jexec {$pconfig['jailname']} freebsd-version 2>/dev/null"); - endif; - $disable_base_change = "yes"; - if (!$current_release): - $current_release = "-"; - endif; - endif; $pconfig['source_path'] = ""; $pconfig['target_path'] = "{$rootfolder}/jails/{$pconfig['jailname']}/root/mnt/"; html_text2('jailname',gettext('Container name:'),htmlspecialchars($pconfig['jailname'])); @@ -613,7 +553,6 @@ $document->render(); 'backup' => gettext('Backup'), 'clone' => gettext('Clone'), 'update' => gettext('Update'), - 'base' => gettext('Release'), 'autoboot' => gettext('Autoboot'), 'noauto' => gettext('Noauto'), 'priority' => gettext('Priority'), @@ -659,18 +598,14 @@ $document->render(); html_checkbox2('createdir',gettext('Create Target Directory'),!empty($pconfig['createdir']) ? true : true,gettext('Create target directory if missing (recommended).'),'',true); if ($is_thinjail): html_checkbox2('update_base',gettext('Base update confirm'),!empty($pconfig['update_base']) ? true : false,gettext('This is a thin container, therefore the base release will be updated, this affects child containers.'),'',true); + html_checkbox2('update_base_force',gettext('Container update force confirm:'),!empty($pconfig['update_base']) ? true : false,gettext('This will perform a forced base update, this affects child containers.'),'',true); else: html_checkbox2('update_jail',gettext('Container update confirm:'),!empty($pconfig['update_jail']) ? true : false,gettext('This is a thick container, therefore the update will be performed within its root, current containers are not affected.'),'',true); + html_checkbox2('update_jail_force',gettext('Container update force confirm:'),!empty($pconfig['update_jail']) ? true : false,gettext('This will perform a forced jail update, current containers are not affected.'),'',true); endif; - html_text2('jail_release',gettext('Current base release:'),htmlspecialchars($current_release)); html_text2('auto_boot',gettext('Enable container auto-startup'),htmlspecialchars("This will cause the container to automatically start each time the system restart.")); html_text2('no_autoboot',gettext('Disable container auto-startup'),htmlspecialchars("This will disable the container automatic startup.")); html_text2('backup',gettext('Export container'),htmlspecialchars("This will export a container to a compressed file/image, please execute `bastille export` for more info in regards exporting formats, Default is .XZ on ZFS setups or .TXZ otherwise, For faster compressed backups consider .GZ/.TGZ.")); - - if ($disable_base_change == "no"): - html_combobox2('release',gettext('New base release'),!empty($pconfig['release']),$b_action,gettext("Warning: This will change current shared base to the selected base on the thin container only, the user is responsible for package updates and/or general incompatibilities issues, or use the command line for native upgrade."),true,false,); - endif; - //html_checkbox2('dateadd',gettext('Date'),!empty($pconfig['dateadd']) ? true : false,gettext('Append the date in the following format: ITEM-XXXX-XX-XX-XXXXXX.'),'',false); ?> diff --git a/version b/version index da44c7f..3baec79 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.50 +1.1.51 From 9c3b8634a7b1932bdcb56f5d33a4165d5a289ea8 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Mon, 8 Sep 2025 00:28:16 -0400 Subject: [PATCH 20/80] Fix typo --- gui/bastille_manager_util.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/bastille_manager_util.php b/gui/bastille_manager_util.php index 139d46d..77cf1fa 100644 --- a/gui/bastille_manager_util.php +++ b/gui/bastille_manager_util.php @@ -598,7 +598,7 @@ $document->render(); html_checkbox2('createdir',gettext('Create Target Directory'),!empty($pconfig['createdir']) ? true : true,gettext('Create target directory if missing (recommended).'),'',true); if ($is_thinjail): html_checkbox2('update_base',gettext('Base update confirm'),!empty($pconfig['update_base']) ? true : false,gettext('This is a thin container, therefore the base release will be updated, this affects child containers.'),'',true); - html_checkbox2('update_base_force',gettext('Container update force confirm:'),!empty($pconfig['update_base']) ? true : false,gettext('This will perform a forced base update, this affects child containers.'),'',true); + html_checkbox2('update_base_force',gettext('Base update force confirm:'),!empty($pconfig['update_base']) ? true : false,gettext('This will perform a forced base update, this affects child containers.'),'',true); else: html_checkbox2('update_jail',gettext('Container update confirm:'),!empty($pconfig['update_jail']) ? true : false,gettext('This is a thick container, therefore the update will be performed within its root, current containers are not affected.'),'',true); html_checkbox2('update_jail_force',gettext('Container update force confirm:'),!empty($pconfig['update_jail']) ? true : false,gettext('This will perform a forced jail update, current containers are not affected.'),'',true); From 98cf9d85f047192271f21e964f87d902309cde1d Mon Sep 17 00:00:00 2001 From: JRGTH Date: Mon, 8 Sep 2025 01:52:27 -0400 Subject: [PATCH 21/80] Re-add release change and code improvements --- CHANGELOG | 1 + bastille-init | 43 +++++++++++++++++++++----- gui/bastille_manager_util.php | 57 +++++++++++++++++++++++++++++++++++ version | 2 +- 4 files changed, 95 insertions(+), 8 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 93234d4..5014ca4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.1.52......Re-add Thin jail release change and code improvements. 1.1.51......Code update/improvements, update jail config/util pages and bastille-init. 1.1.50......Disable linux_compat due incompatibility with later releases. 1.1.49......Disable basic interface to comply with bastille new syntax. diff --git a/bastille-init b/bastille-init index c162010..65ffe1a 100644 --- a/bastille-init +++ b/bastille-init @@ -727,10 +727,15 @@ release_upgrade() exit 0 fi # Upgrade a release base. + if [ -n "${_forceopt}" ]; then + echo "Performing a forced release upgrade..." + else + echo "Performing a release upgrade..." + fi echo "=> Run the command below several times when asked to finish installing updates." echo "bastille-init install ${TARGET}" echo - env PAGER="/bin/cat" ${FREEBSD_UPDATE}/freebsd-update --not-running-from-cron -f ${FREEBSD_UPDATE}/freebsd-update.conf \ + env PAGER="/bin/cat" ${FREEBSD_UPDATE}/freebsd-update ${_forceopt} --not-running-from-cron -f ${FREEBSD_UPDATE}/freebsd-update.conf \ -d ${CWDIR}/freebsd-update -b "${bastille_releasesdir}/${TARGET}" --currently-running "${TARGET}" -r ${RELEASE} upgrade echo echo "=> Please run: 'bastille-init install ${TARGET}' to finish installing updates." @@ -847,11 +852,16 @@ thickjail_upgrade() if [ -f "${bastille_jailsdir}/${TARGET}/root/COPYRIGHT" ]; then if [ "$(jls name | grep -w "${TARGET}")" ]; then # Upgrade a thick container. + if [ -n "${_forceopt}" ]; then + echo "Performing a forced jail upgrade..." + else + echo "Performing a jail upgrade..." + fi echo "=> Run the command below several times when asked to finish installing updates." echo "bastille-init install ${TARGET}" echo CURRENT_VERSION=$(jexec -l ${TARGET} freebsd-version) - env PAGER="/bin/cat" ${FREEBSD_UPDATE}/freebsd-update --not-running-from-cron -f ${FREEBSD_UPDATE}/freebsd-update.conf \ + env PAGER="/bin/cat" ${FREEBSD_UPDATE}/freebsd-update ${_forceopt} --not-running-from-cron -f ${FREEBSD_UPDATE}/freebsd-update.conf \ -d ${CWDIR}/freebsd-update -b "${bastille_jailsdir}/${TARGET}/root" --currently-running "${CURRENT_VERSION}" -r ${RELEASE} upgrade echo echo "=> Please run: 'bastille-init install ${TARGET}' to finish installing updates." @@ -1441,6 +1451,24 @@ upgrade|--upgrade) fi release_change fi + _forceopt= + ;; +upgrade_force|--upgrade-force) + # Check container type to upgrade + if [ -z "${NEWRELEASE}" ]; then + if [ $# -gt 3 ] || [ $# -lt 3 ]; then + echo "Usage: ${SCRIPTNAME} [upgrade_force|--upgrade-force] [container|release] [release]" + exit 1 + fi + thickjail_upgrade + else + if [ $# -gt 4 ] || [ $# -lt 4 ]; then + echo "Usage: ${SCRIPTNAME} [upgrade_force|--upgrade-force] [container] [release] [newrelease]" + exit 1 + fi + release_change + fi + _forceopt="-F" ;; update|--update) if [ $# -gt 2 ] || [ $# -lt 2 ]; then @@ -1494,11 +1522,12 @@ while getopts ":ospruxUvgtZh" option; do echo echo "Advanced Usage: ${SCRIPTNAME} [option] [container] [release] | [newrelease]" echo "Options:" - echo " update|--update Update a container/release to base -pX release." - echo " update_force|--update-force Update a container/release to base -pX release forcefully." - echo " upgrade|--upgrade Upgrade a container/release to X.Y-RELEASE." - echo " install|--install Finish installing pending updates on container/release." - echo " clean|--clean Cleanup the FreeBSD update/upgrade cached files/folders." + echo " update|--update Update a container/release to base -pX release." + echo " update_force|--update-force Update a container/release to base -pX release forcefully." + echo " upgrade|--upgrade Upgrade a container/release to X.Y-RELEASE." + echo " upgrade_force|--upgrade-force Upgrade a container/release to X.Y-RELEASE. forcefully" + echo " install|--install Finish installing pending updates on container/release." + echo " clean|--clean Cleanup the FreeBSD update/upgrade cached files/folders." echo "" echo "" echo "Experimental:" diff --git a/gui/bastille_manager_util.php b/gui/bastille_manager_util.php index 77cf1fa..3c0b7fe 100644 --- a/gui/bastille_manager_util.php +++ b/gui/bastille_manager_util.php @@ -258,6 +258,35 @@ if($_POST): endif; break; + case 'base': + // Input validation not required + if(empty($input_errors)): + $container = []; + $container['uuid'] = $_POST['uuid']; + $container['jailname'] = $_POST['jailname']; + $item = $container['jailname']; + $current_release = exec("/usr/bin/grep '\-RELEASE' {$jail_dir}/{$item}/fstab | awk '{print $1}' | grep -o '[^/]*$'"); + $new_release = $pconfig['release']; + + if(!$current_release): + $savemsg .= gtext("This is a thick container and should be interactively upgraded through the command line."); + else: + $cmd = ("/usr/local/sbin/bastille-init --upgrade {$item} {$current_release} {$new_release}"); + unset($output,$retval);mwexec2($cmd,$output,$retval); + if($retval == 0): + $savemsg .= sprintf(gtext("Container base release changed to %s successfully."),$new_release); + exec("/usr/local/bin/bastille config {$item} set osrelease $new_release"); + exec("echo '{$date}: {$application}: Container base release changed to {$new_release} on {$item} successfully' >> {$logfile}"); + //header('Location: bastille_manager_gui.php'); + //exit; + else: + $input_errors[] = sprintf(gtext("Failed to change container base release to %s, either it is running or is not a thin container."),$new_release); + exec("echo '{$date}: {$application}: Failed to change container base release to {$new_release} on {$item}' >> {$logfile}"); + endif; + endif; + endif; + break; + case 'autoboot': // Input validation not required if(empty($input_errors)): @@ -444,6 +473,8 @@ function action_change() { showElementById('readonly_tr', 'hide'); showElementById('createdir_tr', 'hide'); showElementById('automount_tr', 'hide'); + showElementById('jail_release_tr', 'hide'); + showElementById('release_tr','hide'); showElementById('update_base_tr','hide'); showElementById('update_jail_tr','hide'); showElementById('update_base_force_tr', 'hide'); @@ -475,6 +506,10 @@ function action_change() { showElementById('update_base_force_tr', 'show'); showElementById('update_jail_force_tr', 'show'); break; + case "base": + showElementById('jail_release_tr', 'show'); + showElementById('release_tr','show'); + break; case "autoboot": showElementById('auto_boot_tr', 'show'); break; @@ -545,7 +580,23 @@ $document->render(); /dev/null"); + $current_release = ""; + $disable_base_change = "no"; + $current_release = exec("/usr/bin/grep '\-RELEASE' {$jail_dir}/{$pconfig['jailname']}/fstab | awk '{print $1}' | grep -o '[^/]*$'"); $is_thinjail = exec("/usr/bin/grep -w '/.*/.bastille' {$jail_dir}/{$pconfig['jailname']}/fstab"); + if (!$current_release): + $current_release = exec("/usr/bin/grep 'releng' {$jail_dir}/{$pconfig['jailname']}/root/COPYRIGHT | cut -d '/' -f2"); + if(!$current_release): + //Assume is a running thickjail. + $current_release = exec("/usr/sbin/jexec {$pconfig['jailname']} freebsd-version 2>/dev/null"); + endif; + $disable_base_change = "yes"; + if (!$current_release): + $current_release = "-"; + endif; + endif; $pconfig['source_path'] = ""; $pconfig['target_path'] = "{$rootfolder}/jails/{$pconfig['jailname']}/root/mnt/"; html_text2('jailname',gettext('Container name:'),htmlspecialchars($pconfig['jailname'])); @@ -553,6 +604,7 @@ $document->render(); 'backup' => gettext('Backup'), 'clone' => gettext('Clone'), 'update' => gettext('Update'), + 'base' => gettext('Release'), 'autoboot' => gettext('Autoboot'), 'noauto' => gettext('Noauto'), 'priority' => gettext('Priority'), @@ -603,9 +655,14 @@ $document->render(); html_checkbox2('update_jail',gettext('Container update confirm:'),!empty($pconfig['update_jail']) ? true : false,gettext('This is a thick container, therefore the update will be performed within its root, current containers are not affected.'),'',true); html_checkbox2('update_jail_force',gettext('Container update force confirm:'),!empty($pconfig['update_jail']) ? true : false,gettext('This will perform a forced jail update, current containers are not affected.'),'',true); endif; + html_text2('jail_release',gettext('Current base release:'),htmlspecialchars($current_release)); html_text2('auto_boot',gettext('Enable container auto-startup'),htmlspecialchars("This will cause the container to automatically start each time the system restart.")); html_text2('no_autoboot',gettext('Disable container auto-startup'),htmlspecialchars("This will disable the container automatic startup.")); html_text2('backup',gettext('Export container'),htmlspecialchars("This will export a container to a compressed file/image, please execute `bastille export` for more info in regards exporting formats, Default is .XZ on ZFS setups or .TXZ otherwise, For faster compressed backups consider .GZ/.TGZ.")); + + if ($disable_base_change == "no"): + html_combobox2('release',gettext('New base release'),!empty($pconfig['release']),$b_action,gettext("Warning: This will change current shared base to the selected base on the thin container only, the user is responsible for package updates and/or general incompatibilities issues, or use the command line for native upgrade."),true,false,); + endif; ?> diff --git a/version b/version index 3baec79..cf6931b 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.51 +1.1.52 From c041aa4711f369a6f71f57e65962e964880caa45 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Mon, 8 Sep 2025 02:19:30 -0400 Subject: [PATCH 22/80] Handle osrelease parameter update in bastille-init --- CHANGELOG | 1 + bastille-init | 2 ++ gui/bastille_manager_util.php | 1 - version | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 5014ca4..1ee20fc 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.1.53......Code changes, handle osrelease parameter update in bastille-init. 1.1.52......Re-add Thin jail release change and code improvements. 1.1.51......Code update/improvements, update jail config/util pages and bastille-init. 1.1.50......Disable linux_compat due incompatibility with later releases. diff --git a/bastille-init b/bastille-init index 65ffe1a..79418be 100644 --- a/bastille-init +++ b/bastille-init @@ -793,6 +793,8 @@ release_change() # If the previous conditions meets, proceed with the container base upgrade. sed -i '' "s/${RELEASE}/${NEWRELEASE}/g" ${bastille_jailsdir}/${TARGET}/fstab echo "${TARGET} release changed to ${NEWRELEASE}." + echo "Setting OS release for ${TARGET}." + bastille config ${TARGET} set osrelease ${NEWRELEASE} elif cat "${bastille_jailsdir}/${TARGET}/fstab" | grep "${NEWRELEASE}" | grep -qw "/.*/.bastille"; then echo "${TARGET} already using ${NEWRELEASE}." exit 0 diff --git a/gui/bastille_manager_util.php b/gui/bastille_manager_util.php index 3c0b7fe..0d77c19 100644 --- a/gui/bastille_manager_util.php +++ b/gui/bastille_manager_util.php @@ -275,7 +275,6 @@ if($_POST): unset($output,$retval);mwexec2($cmd,$output,$retval); if($retval == 0): $savemsg .= sprintf(gtext("Container base release changed to %s successfully."),$new_release); - exec("/usr/local/bin/bastille config {$item} set osrelease $new_release"); exec("echo '{$date}: {$application}: Container base release changed to {$new_release} on {$item} successfully' >> {$logfile}"); //header('Location: bastille_manager_gui.php'); //exit; diff --git a/version b/version index cf6931b..36a0393 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.52 +1.1.53 From 65585053cf8bf47a04ee5e3407c2b58bb3e4ccff Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sat, 13 Sep 2025 06:00:28 -0400 Subject: [PATCH 23/80] Re-add Linux jails, WebGUI fixes and improvements Re-add Linux jail feature, overall WebGUI fixes and improvements. --- CHANGELOG | 1 + LICENSE | 2 +- bastille-init | 475 ++++++++++++++++++--------- gui/bastille_manager-lib.inc | 46 ++- gui/bastille_manager_add.php | 18 +- gui/bastille_manager_config.php | 8 +- gui/bastille_manager_editor.php | 2 +- gui/bastille_manager_gui.php | 33 +- gui/bastille_manager_info.php | 8 +- gui/bastille_manager_jconf.php | 8 +- gui/bastille_manager_maintenance.php | 12 +- gui/bastille_manager_tarballs.php | 67 ++-- gui/bastille_manager_util.php | 8 +- unionfs.sh | 130 +++----- version | 2 +- 15 files changed, 516 insertions(+), 304 deletions(-) mode change 100755 => 100644 unionfs.sh diff --git a/CHANGELOG b/CHANGELOG index 1ee20fc..0de422c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.00......Re-add Linux jail feature, WebGUI fixes and overall improvements. 1.1.53......Code changes, handle osrelease parameter update in bastille-init. 1.1.52......Re-add Thin jail release change and code improvements. 1.1.51......Code update/improvements, update jail config/util pages and bastille-init. diff --git a/LICENSE b/LICENSE index 85f2386..39f2630 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ --------------------------------------------------------- - Copyright (c) 2019, José Rivera + Copyright (c) 2019-2025, Jose Rivera All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/bastille-init b/bastille-init index 79418be..16570cd 100644 --- a/bastille-init +++ b/bastille-init @@ -9,7 +9,7 @@ # Debug script #set -x -# Copyright (c) 2019-2024, José Rivera (joserprg@gmail.com). +# Copyright (c) 2019-2025, Jose Rivera (joserprg@gmail.com). # All rights reserved. # Redistribution and use in source and binary forms, with or without @@ -43,14 +43,11 @@ PATH=${PATH}:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin CWDIR=$(dirname $(realpath $0)) # Global variables. -CWDIR_TRIM="" -BASTILLE_ZFS_ZPOOL_MOUNTPOINT="" -BASTILLE_ZFS_ZPOOL_MOUNTPOINT_TRIM="" -REQUIRED_UPDATE="" PLATFORM=$(uname -m) PRODUCT=$(uname -i) PRDVERSION=$(uname -r | cut -d '-' -f1 | tr -d '.') HOSTVERSION=$(freebsd-version | cut -d '-' -f1) +BASTILLE_DIR=$(echo "${CWDIR}" | grep -o '[^/]*$') PRDPLATFORM=$(cat /etc/platform) PRDPRODUCT=$(cat /etc/prd.name) SCRIPTNAME=$(basename $0) @@ -58,6 +55,7 @@ CONFIG="/cf/conf/config.xml" PRDNAME="Bastille" APPNAME="bastille" EXTLOGFILE="${CWDIR}/log/bastille_ext.log" +EXTLOCKFILE="/tmp/bastille_ext.lock" FULLAPPNAME="${APPNAME}-dist" WWWPATH="/usr/local/www" PKGCACHE="/var/cache/pkg" @@ -82,27 +80,42 @@ BASTILLE_VERSION="https://raw.githubusercontent.com/BastilleBSD/${APPNAME}/${BRA GITURL="https://github.com/JRGTH/xigmanas-${APPNAME}-extension/archive/${BRANCH}.zip" VERFILE="https://raw.githubusercontent.com/JRGTH/xigmanas-${APPNAME}-extension/${BRANCH}/version" URL_FREEBSD="http://ftp.freebsd.org/pub/FreeBSD/releases/" +URL_FREEBSD_OLD="https://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/" URL_HARDENEDBSD="https://installers.hardenedbsd.org/pub/" URL_MIDNIGHTBSD="https://www.midnightbsd.org/ftp/MidnightBSD/releases/" OPT="${1}" +ARG="${2}" -# Bastille required +# Load bastille configuration file. if [ -f "${BASTILLECONF}" ]; then . /${BASTILLECONF} - if [ "${bastille_zfs_enable}" = "YES" -o "${bastille_zfs_enable}" = "yes" ]; then - if [ -n "${bastille_zfs_prefix}" ] && [ -n "${bastille_zfs_zpool}" ]; then - # Always enforce ZFS activation below "/mnt/" from the extension. - if echo "${CWDIR}" | grep -q '/mnt/'; then - CWDIR_TRIM=$(echo "${CWDIR}" | sed "s|/mnt/||;s|/${bastille_zfs_prefix}||") - fi +else + . /${INSTALLPATH}/${BASTILLECONF} +fi - BASTILLE_ZFS_ZPOOL_MOUNTPOINT=$(zfs get -H -o value mountpoint "${bastille_zfs_zpool}") - BASTILLE_ZFS_ZPOOL_MOUNTPOINT_TRIM="" - if echo "${BASTILLE_ZFS_ZPOOL_MOUNTPOINT}" | grep -q '/mnt/'; then - BASTILLE_ZFS_ZPOOL_MOUNTPOINT_TRIM=$(echo "${BASTILLE_ZFS_ZPOOL_MOUNTPOINT}" | sed "s|/mnt/||;s|/${bastille_zfs_prefix}||") - fi +# Unset variables. +REQUIRED_UPDATE= +CWDIR_TRIM= +BASTILLE_ZFS_PREFIX_TRIM= +BASTILLE_ZFS_ZPOOL_MOUNTPOINT= +BASTILLE_ZFS_ZPOOL_MOUNTPOINT_TRIM= + +# Get extension ZFS config info. +if [ "${bastille_zfs_enable}" = "YES" ] || [ "${bastille_zfs_enable}" = "yes" ]; then + if [ -n "${bastille_zfs_prefix}" ] && [ -n "${bastille_zfs_zpool}" ]; then + # Always enforce ZFS activation below "/mnt/" from the extension. + if echo "${CWDIR}" | grep -q '/mnt/'; then + CWDIR_TRIM=$(echo "${CWDIR}" | sed "s|/mnt/||;s|/${bastille_zfs_prefix}||") fi + BASTILLE_ZFS_ZPOOL_MOUNTPOINT=$(zfs get -H -o value mountpoint "${bastille_zfs_zpool}" 2>/dev/null) + if echo "${BASTILLE_ZFS_ZPOOL_MOUNTPOINT}" | grep -q '/mnt/'; then + BASTILLE_ZFS_ZPOOL_MOUNTPOINT_TRIM=$(echo "${BASTILLE_ZFS_ZPOOL_MOUNTPOINT}" | sed "s|/mnt/||;s|/${bastille_zfs_prefix}||") + fi + BASTILLE_ZFS_PREFIX_TRIM=$(echo "${bastille_zfs_prefix}" | sed "s|/${BASTILLE_DIR}||") fi + # Check bastille ZFS config match on disk ZFS config. + BASTILLE_CONFIG_DISK=$(zfs list -H "${bastille_prefix}" 2>/dev/null | awk '{print $1}') + BASTILLE_CONFIG_FILE=$(echo "${bastille_zfs_zpool}/${bastille_zfs_prefix}") fi error_notify() @@ -117,7 +130,7 @@ runtime_config() { # Run-time configuration and checks. if [ -f "${INSTALLPATH}/${BASTILLECONF}" ]; then - if ! sysrc -f ${BASTILLECONF} -qn bastille_prefix | grep -q "${CWDIR}"; then + if ! sysrc -f ${BASTILLECONF} -qc bastille_prefix="${CWDIR}"; then sysrc -f ${INSTALLPATH}/${BASTILLECONF} bastille_prefix="${CWDIR}" >/dev/null 2>&1 fi fi @@ -404,19 +417,11 @@ sys_symlinkdir() ln -fhs ${INSTALLPATH}${USRLOCAL}/etc/${APPNAME} ${USRLOCAL}/etc/${APPNAME} fi - # Link bastille config file. - #if [ -f "${INSTALLPATH}${USRLOCAL}/etc/${APPNAME}/${APPNAME}.conf.sample" ]; then - # cd ${INSTALLPATH}${USRLOCAL}/etc/${APPNAME} - # if [ ! -f "${APPNAME}.conf" ]; then - # cp ${APPNAME}.conf.sample ${APPNAME}.conf - # fi - #else - if [ -f "${BASTILLECONF_EXT}" ]; then - if [ ! -f "${INSTALLPATH}${USRLOCAL}/etc/${APPNAME}/${APPNAME}.conf" ]; then - cp ${BASTILLECONF_EXT} ${INSTALLPATH}${USRLOCAL}/etc/${APPNAME}/${APPNAME}.conf - fi + if [ -f "${BASTILLECONF_EXT}" ]; then + if [ ! -f "${INSTALLPATH}${USRLOCAL}/etc/${APPNAME}/${APPNAME}.conf" ]; then + cp ${BASTILLECONF_EXT} ${INSTALLPATH}${USRLOCAL}/etc/${APPNAME}/${APPNAME}.conf fi - #fi + fi # Copy bastille shared. if [ -d "${INSTALLPATH}${USRLOCAL}/share/${APPNAME}" ]; then @@ -515,16 +520,14 @@ postinit_cmd() touch ${CWDIR}/postinit || error_notify "Error: A problem has occurred while creating the postinit file." chmod +x ${CWDIR}/postinit if [ "${PRDVERSION}" -ge "110" ]; then - # Generate php script for start/stop commands. + # Generate php script only for start command for extension version 1.2 and later. cat << EOF > ${CWDIR}/postinit EOF fi @@ -616,6 +605,8 @@ gui_enable() else error_notify "Error: Extension gui files not found." fi + + exit 0 } gui_disable() @@ -639,13 +630,15 @@ gui_disable() rm -r ${WWWPATH}/ext fi fi + + exit 0 } jail_update() { # Workaround since XigmaNAS does not ship with freebsd-update command. - if [ "${PRDPRODUCT}" = "XigmaNAS" -o "${PRDPRODUCT}" = "NAS4Free" ]; then + if [ "${PRDPRODUCT}" = "XigmaNAS" ] || [ "${PRDPRODUCT}" = "NAS4Free" ]; then if [ ! -d "${FREEBSD_UPDATE}" ]; then echo "Not supported on ${PRDPRODUCT} platform." exit 1 @@ -834,7 +827,7 @@ thickjail_upgrade() { # Workaround since XigmaNAS does not ship with freebsd-update command. - if [ "${PRDPRODUCT}" = "XigmaNAS" -o "${PRDPRODUCT}" = "NAS4Free" ]; then + if [ "${PRDPRODUCT}" = "XigmaNAS" ] || [ "${PRDPRODUCT}" = "NAS4Free" ]; then if [ ! -d "${FREEBSD_UPDATE}" ]; then echo "Not supported on ${PRDPRODUCT} platform." exit 1 @@ -891,7 +884,7 @@ thickjail_install() { # Workaround since XigmaNAS does not ship with freebsd-update command. - if [ "${PRDPRODUCT}" = "XigmaNAS" -o "${PRDPRODUCT}" = "NAS4Free" ]; then + if [ "${PRDPRODUCT}" = "XigmaNAS" ] || [ "${PRDPRODUCT}" = "NAS4Free" ]; then if [ ! -d "${FREEBSD_UPDATE}" ]; then echo "Not supported on ${PRDPRODUCT} platform." exit 1 @@ -937,12 +930,7 @@ zfs_activate() # Check if ZFS is already configured. # Always enforce ZFS activation below "/mnt/" from the extension. if echo "${BASTILLE_ZFS_ZPOOL_MOUNTPOINT_TRIM}" | grep -qw "${CWDIR_TRIM}$"; then - - BASTILLE_DIR=$(echo "${CWDIR}" | grep -o '[^/]*$') - if [ "${bastille_zfs_prefix}" != "${BASTILLE_DIR}" ]; then - error_notify "Invalid ZFS configuration." - fi - if zfs list "${bastille_zfs_zpool}/${BASTILLE_DIR}" > /dev/null 2>&1; then + if zfs list "${bastille_zfs_zpool}/${bastille_zfs_prefix}" > /dev/null 2>&1; then echo "Bastille ZFS is already configured." sysrc -f ${CWDIR}${EXTCONF} ZFS_ACTIVATED="YES" >/dev/null 2>&1 exit 0 @@ -958,23 +946,26 @@ zfs_activate() echo "Enabling ZFS on ${PRDNAME} Extension..." # Confirm before conversion. - while : - do - read -p "Do you really wish to enable ZFS for ${PRDNAME} Extension? [y/N]:" yn - case ${yn} in - [Yy]) break;; - [Nn]) exit 0;; - esac - done + while :; do + read -p "Do you really want to enable ZFS for ${PRDNAME} Extension? [y/N]:" _yn + case ${_yn} in + [Yy]) + break + ;; + [Nn]) + exit 0 + ;; + esac + done echo "Proceeding..." if [ "${bastille_zfs_enable}" = "YES" ]; then - if [ ! -z "${bastille_zfs_zpool}" ]; then + if [ -n "${bastille_zfs_zpool}" ]; then if zfs list "${bastille_zfs_zpool}" > /dev/null 2>&1; then - if ! zfs list "${bastille_zfs_zpool}/${BASTILLE_DIR}" > /dev/null 2>&1; then - echo "Renaming existing '${BASTILLE_DIR}' directory" + if ! zfs list "${bastille_zfs_zpool}/${bastille_zfs_prefix}" > /dev/null 2>&1; then + echo "Renaming existing '${BASTILLE_DIR}' directory..." mv ${CWDIR} ${CWDIR}.old - echo "Creating a new ZFS dataset for '${BASTILLE_DIR}'" + echo "Creating a new ZFS dataset for '${BASTILLE_DIR}'..." zfs create ${bastille_zfs_options} ${bastille_zfs_zpool}/${bastille_zfs_prefix} if [ $? -ne 0 ]; then MSG="Failed to enable ZFS, reverting changes." @@ -990,7 +981,7 @@ zfs_activate() echo "Bastille ZFS is already configured." fi else - error_notify "ERROR: ${bastille_zfs_zpool} is not a ZFS pool/dataset." + error_notify "ERROR: ${bastille_zfs_zpool} is not a ZFS pool." fi else error_notify "Bastille ZPOOL is not set." @@ -1021,11 +1012,40 @@ pkg_upgrade() reset_install() { + # Confirm for addon config reset. + while :; do + read -p "Do you really want to proceed with the ${PRDNAME} Extension config reset? [y/N]:" _yn + case ${_yn} in + [Yy]) + break + ;; + [Nn]) + exit 0 + ;; + esac + done + echo "Proceeding..." + + # Check for running jails before config reset. + for _jail in $(bastille list jail); do + if jls -j ${_jail} >/dev/null 2>&1; then + echo "Looks like there are running bastille jails, aborting." + exit 1 + fi + done + # Reset the extension environment. echo "Removing extension files..." + if [ -f "${CWDIR}/conf/bastille_config" ]; then - rm -rf ${CWDIR}/conf/bastille_config + echo "Backup current extension config file." + if [ -f "${CWDIR}/conf/bastille_config.old" ]; then + # Remove previous backup file. + rm -f ${CWDIR}/conf/bastille_config.old + fi + mv -vf ${CWDIR}/conf/bastille_config ${CWDIR}/conf/bastille_config.old fi + if [ -d "${CWDIR}/${FULLAPPNAME}" ]; then rm -rf ${CWDIR}/${FULLAPPNAME} fi @@ -1036,56 +1056,68 @@ reset_install() rm -f ${CWDIR}/version fi + sleep 3 + # Set default config. - sysrc -f ${CWDIR}${EXTCONF} GUI_ENABLE=YES INSTALL_DIR=${CWDIR} >/dev/null 2>&1 + touch ${CWDIR}/conf/bastille_config + sysrc -f ${CWDIR}${EXTCONF} GUI_ENABLE="YES" >/dev/null 2>&1 + sysrc -f ${CWDIR}${EXTCONF} INSTALL_DIR="${CWDIR}" >/dev/null 2>&1 + sysrc -f ${CWDIR}${EXTCONF} BASTILLE_CONFIG="${CWDIR}/${FULLAPPNAME}${BASTILLECONF}" >/dev/null 2>&1 + sysrc -f ${CWDIR}${EXTCONF} BACKUP_DIR="${CWDIR}/backups" >/dev/null 2>&1 + sysrc -f ${CWDIR}${EXTCONF} ZFS_SUPPORT="NO" >/dev/null 2>&1 echo "" echo "*************************************************************************************************************" echo "* The configuration was reset, please go to [Extensions > Bastille > Configuration] to configure bastille. *" - echo "* Alternatively you can edit the '/usr/local/etc/bastille/bastille.conf' file manually. *" + echo "* Alternatively you can edit the 'addon/bastille-dist/usr/local/etc/bastille/bastille.conf' file manually. *" echo "*************************************************************************************************************" echo "" - echo "Notice: If Linux Jail support was enabled, please execute the below command to re-enable it:" + echo "Notice: If Linux Jail support was enabled, please execute the below command to manually re-enable it:" echo "==> sysrc -f ${CWDIR}${EXTCONF} LINUX_COMPAT_SUPPORT=\"YES\"" echo "" + + # Tell Bastille Extension that config was reset. + touch ${CWDIR}/conf/config_reset.lock } remove_addon() { # Confirm for addon removal. - while : - do - read -p "Do you wish to proceed with the ${FULLAPPNAME} removal? [y/N]:" yn - case ${yn} in - [Yy]) break;; - [Nn]) exit 0;; - esac - done + while :; do + read -p "Do you want to proceed with the ${FULLAPPNAME} removal? [y/N]:" _yn + case ${_yn} in + [Yy]) break + ;; + [Nn]) exit 0 + ;; + esac + done echo "Proceeding..." - # Check for working platform and remove symlinks. - if [ "${PRDPLATFORM}" = "x64-embedded" ] || [ "${PRDPLATFORM}" = "x64-full" ]; then - if [ -d "${USRLOCAL}/share/licenses/${APPNAME}-*" ]; then - rm -rf ${USRLOCAL}/share/licenses/${APPNAME}-* - fi - if [ -d $"{USRLOCAL}/share/locale-bastille" ]; then - rm -rf ${USRLOCAL}/share/locale-bastille - fi - if [ -f "${USRLOCAL}/etc/rc.d/${APPNAME}" ]; then - rm -f ${USRLOCAL}/etc/rc.d/${APPNAME} - fi - if [ -f "${USRLOCAL}/etc/${APPNAME}.conf" ]; then - rm -f ${USRLOCAL}/etc/${APPNAME}.conf - fi - if [ -f "${BASTILLEPATH}/${APPNAME}" ]; then - rm -f ${BASTILLEPATH}/${APPNAME} - fi - if [ -f "${USRLOCAL}/sbin/${APPNAME}-init" ]; then - rm -rf ${USRLOCAL}/sbin/${APPNAME}-init - fi - if [ -d "${VARLOG}/${APPNAME}" ]; then - rm -rf ${VARLOG}/${APPNAME} - fi + # Check and disable extension unionfs in case it is enabled. + ${CWDIR}/unionfs.sh unionfs_off + + # Check and remove extension files/symlinks. + if [ -d "${USRLOCAL}/share/licenses/${APPNAME}-*" ]; then + rm -rf ${USRLOCAL}/share/licenses/${APPNAME}-* + fi + if [ -d "${USRLOCAL}/share/locale-bastille" ]; then + rm -rf ${USRLOCAL}/share/locale-bastille + fi + if [ -f "${USRLOCAL}/etc/rc.d/${APPNAME}" ]; then + rm -f ${USRLOCAL}/etc/rc.d/${APPNAME} + fi + if [ -f "${USRLOCAL}/etc/${APPNAME}" ]; then + rm -f ${USRLOCAL}/etc/${APPNAME} + fi + if [ -f "${BASTILLEPATH}/${APPNAME}" ]; then + rm -f ${BASTILLEPATH}/${APPNAME} + fi + if [ -f "${BASTILLEPATH}/${APPNAME}-init" ]; then + rm -rf ${BASTILLEPATH}/${APPNAME}-init + fi + if [ -d "${VARLOG}/${APPNAME}" ]; then + rm -rf ${VARLOG}/${APPNAME} fi # Remove extension and GUI components. @@ -1112,21 +1144,22 @@ remove_addon() # Remove addon related files and folders only- # to protect any user-created custom files- # as well as for the containers dirs/files. - FILES="conf download freebsd-update gui locale-bastille log bastille-dist LICENSE README.md postinit CHANGELOG version bastille-init" + FILES="bastille-dist conf download freebsd-update gui locale-bastille log system CHANGELOG LICENSE README.md bastille-init postinit unionfs.sh version" for FILE in ${FILES}; do if [ -f "${CWDIR}/${FILE}" ] || [ -d "${CWDIR}/${FILE}" ]; then rm -rf ${CWDIR}/${FILE} fi done - BIN_FILES="/usr/local/bin/ar /usr/local/bin/jib /usr/sbin/setfib /usr/bin/sum /usr/bin/diff3 /usr/bin/makewhatis" + # Remove this files since they are not part of the base. + BIN_FILES="/usr/bin/ar /usr/local/bin/jib /usr/sbin/setfib /usr/bin/sum /usr/bin/diff3 /usr/bin/makewhatis" for FILE in ${BIN_FILES}; do if [ -f "${FILE}" ]; then rm -rf ${FILE} fi done - # Don't remove this files on 13.x versions since they are part of the base. + # Don't remove this files on 13.x and later versions since they are part of the base. if [ "$(freebsd-version | cut -d '.' -f1)" -le 12 ]; then PF_FILES="/sbin/pfctl /sbin/pfilctl /sbin/pflogd /etc/pf.os" for FILE in ${PF_FILES}; do @@ -1159,31 +1192,27 @@ get_versions() ext_start() { - if sysrc -f ${CWDIR}${EXTCONF} -qn LINUX_COMPAT_SUPPORT | grep -q "YES"; then + if sysrc -f ${CWDIR}${EXTCONF} -qc LINUX_COMPAT_SUPPORT=YES; then ${CWDIR}/unionfs.sh load_kmods - ${CWDIR}/unionfs.sh unionfs_on fi # Start bastille jails. if [ -d "${CWDIR}/jails" ]; then - JAIL_LIST=$(bastille list jail) - # This loop is for backward compatibility only. - for jail in ${JAIL_LIST}; do - if grep -qw "${jail}_AUTO_START=\"YES\"" ${CWDIR}${EXTCONF}; then - if ! jls | sed "1 d" | awk '{print $3}' | grep -qw ${jail}; then - bastille start ${jail} - fi - fi - done - - # Required for embedded platforms. + # Required for embedded platforms due late startup. if [ "${PRDPLATFORM}" = "x64-embedded" ]; then if sysrc -qc bastille_enable=YES; then - service bastille start + if [ ! -f "${EXTLOCKFILE}" ]; then + service bastille start + fi fi fi fi + # Create extension lock file after boot. + if [ ! -f "${EXTLOCKFILE}" ]; then + touch ${EXTLOCKFILE} + fi + if [ $? -eq 0 ]; then MSG="script has been started successfully!" logger -t ${SCRIPTNAME} ${MSG} @@ -1195,12 +1224,37 @@ ext_start() fi } +zfs_support_enabled() +{ + sysrc -f ${CWDIR}${EXTCONF} ZFS_SUPPORT="YES" >/dev/null 2>&1 + sysrc -f ${CWDIR}${EXTCONF} ZFS_ACTIVATED="YES" >/dev/null 2>&1 +} + +zfs_support_error() +{ + echo "WARNING: Invalid ZFS configuration." + sysrc -f ${CWDIR}${EXTCONF} ZFS_SUPPORT="ERR" >/dev/null 2>&1 + sysrc -f ${CWDIR}${EXTCONF} -x ZFS_ACTIVATED >/dev/null 2>&1 +} + +zfs_support_avail() +{ + echo "WARNING: ZFS support available but not enabled." + sysrc -f ${CWDIR}${EXTCONF} ZFS_SUPPORT="AVA" >/dev/null 2>&1 +} + +zfs_support_disabled() +{ + sysrc -f ${CWDIR}${EXTCONF} ZFS_SUPPORT="NO" >/dev/null 2>&1 + sysrc -f ${CWDIR}${EXTCONF} -x ZFS_ACTIVATED >/dev/null 2>&1 +} + rc_params() { # Bastille required parameters. # Set bastille prefix. - if ! sysrc -f ${BASTILLECONF} -qn bastille_prefix | grep -q "${CWDIR}"; then + if ! sysrc -f ${BASTILLECONF} -qc bastille_prefix="${CWDIR}"; then sysrc -f ${BASTILLECONF} bastille_prefix="${CWDIR}" >/dev/null 2>&1 fi @@ -1216,13 +1270,13 @@ rc_params() fi # Set bastille.conf location. - if ! sysrc -f ${CWDIR}${EXTCONF} -n BASTILLE_CONFIG 2>/dev/null | grep -q "${CWDIR}/${FULLAPPNAME}${BASTILLECONF}"; then + if ! sysrc -f ${CWDIR}${EXTCONF} -qc BASTILLE_CONFIG="${CWDIR}/${FULLAPPNAME}${BASTILLECONF}"; then sysrc -f ${CWDIR}${EXTCONF} BASTILLE_CONFIG="${CWDIR}/${FULLAPPNAME}${BASTILLECONF}" >/dev/null 2>&1 fi # Default first network interface. ACTIVE_NETIF=$(ifconfig | grep "UP,BROADCAST" | awk -F":" '{print $1}' | sed 1q) - if ! sysrc -f ${BASTILLECONF} -qn bastille_network_shared | grep -q "${ACTIVE_NETIF}" >/dev/null 2>&1; then + if ! sysrc -f ${BASTILLECONF} -qc bastille_network_shared="${ACTIVE_NETIF}" >/dev/null 2>&1; then #echo "" >> ${BASTILLECONF} && echo "## default network interface" >> ${BASTILLECONF} sysrc -f ${BASTILLECONF} bastille_network_shared="${ACTIVE_NETIF}" >/dev/null 2>&1 else @@ -1233,33 +1287,64 @@ rc_params() fi fi - # Do't start containers by default. - #if ! sysrc -qn bastille_enable >/dev/null 2>&1; then - # sysrc bastille_enable="NO" >/dev/null 2>&1 - #fi + # Check if extension config was reset. + if [ -f "${CWDIR}/conf/config_reset.lock" ]; then + zfs_support_error + echo "WARNING: ${PRDNAME} Extension config was reset." + rm ${CWDIR}/conf/config_reset.lock + fi - # Check if sane ZFS is enabled in this setup. + # Check for sane ZFS parameters in this setup. if [ "${bastille_zfs_enable}" = "YES" ]; then if [ -n "${bastille_zfs_zpool}" ]; then - if zfs list "${bastille_zfs_zpool}" > /dev/null 2>&1; then - BASTILLE_DIR=$(echo ${CWDIR} | grep -o '[^/]*$') - if zfs list "${bastille_zfs_zpool}/${BASTILLE_DIR}" > /dev/null 2>&1; then - sysrc -f ${CWDIR}${EXTCONF} ZFS_SUPPORT="YES" >/dev/null 2>&1 - else - if echo "${BASTILLE_ZFS_ZPOOL_MOUNTPOINT_TRIM}" | grep -qw "${CWDIR_TRIM}$"; then - sysrc -f ${CWDIR}${EXTCONF} ZFS_SUPPORT="AVA" >/dev/null 2>&1 + if zfs list "${bastille_zfs_zpool}" >/dev/null 2>&1; then + + # Check bastille ZFS config match on disk ZFS config if activation is already enabled in the config file. + if sysrc -f ${CWDIR}${EXTCONF} -qc ZFS_SUPPORT=YES && sysrc -f ${CWDIR}${EXTCONF} -qc ZFS_ACTIVATED=YES; then + if [ "${BASTILLE_CONFIG_DISK}" != "${BASTILLE_CONFIG_FILE}" ]; then + zfs_support_error + exit 1 else - sysrc -f ${CWDIR}${EXTCONF} ZFS_SUPPORT="ERR" >/dev/null 2>&1 + # Check and don't allow child datasets in bastille_zfs_zpool. + if echo "${bastille_zfs_zpool}" | grep -q '\/'; then + zfs_support_error + exit 1 + fi fi fi + + # Perform some checks against on-disk and file configurations. + if zfs list "${bastille_zfs_zpool}/${BASTILLE_ZFS_PREFIX_TRIM}/${BASTILLE_DIR}" >/dev/null 2>&1; then + # Looks like ZFS support is already configured, then set parameters. + zfs_support_enabled + elif zfs list "${bastille_zfs_zpool}" >/dev/null 2>&1 && \ + [ "${bastille_zfs_prefix}" = "${BASTILLE_ZFS_PREFIX_TRIM}/${BASTILLE_DIR}" ]; then + # Looks like ZFS support is available for activation. + zfs_support_avail + elif zfs list "${bastille_zfs_zpool}/${BASTILLE_DIR}" >/dev/null 2>&1; then + zfs_support_enabled + elif zfs list "${bastille_zfs_zpool}" >/dev/null 2>&1 && \ + [ "${BASTILLE_ZFS_PREFIX_TRIM}" = "${BASTILLE_DIR}" ]; then + # Looks like ZFS support is available for activation. + zfs_support_avail + elif zfs list "${bastille_zfs_zpool}/${BASTILLE_DIR}" >/dev/null 2>&1; then + zfs_support_enabled + else + zfs_support_error + fi else - sysrc -f ${CWDIR}${EXTCONF} ZFS_SUPPORT="ERR" >/dev/null 2>&1 + zfs_support_error fi else - sysrc -f ${CWDIR}${EXTCONF} ZFS_SUPPORT="ERR" >/dev/null 2>&1 + zfs_support_error fi else - sysrc -f ${CWDIR}${EXTCONF} ZFS_SUPPORT="NO" >/dev/null 2>&1 + # Check for orphaned configuration and/or config reset. + if zfs list -H "${CWDIR}" >/dev/null 2>&1; then + zfs_support_error + else + zfs_support_disabled + fi fi # Enable bastille in /etc/rc.conf @@ -1347,9 +1432,7 @@ bastille_stop() { # Stop all bastille containers. echo "${PRDNAME} Extension: Stopping all containers..." - if ! sysrc -qc bastille_enable=YES; then - bastille stop ALL - fi + bastille stop ALL if [ $? -eq 0 ]; then exit 0 else @@ -1389,21 +1472,19 @@ bastille_init() gui_start rc_params ext_start - } -linux_compat() +linux_compat_enable() { - # Feature temporarily disabled. - echo "This feature is temporarily disabled due incompatibility with later ${PRDPRODUCT} releases." - exit 1 - + # Experimental feature. if ping -c1 -t5 freebsd.org > /dev/null; then # Manually enable Linux compatibility(Experimental). - if ! sysrc -f ${CWDIR}${EXTCONF} -qn LINUX_COMPAT_SUPPORT | grep -q "YES"; then - ${CWDIR}/unionfs.sh fetch_pkg && ${CWDIR}/unionfs.sh load_kmods && ${CWDIR}/unionfs.sh unionfs_on && sysrc -f ${CWDIR}${EXTCONF} LINUX_COMPAT_SUPPORT="YES" >/dev/null 2>&1 + if ! sysrc -f ${CWDIR}${EXTCONF} -qc LINUX_COMPAT_SUPPORT=YES; then + echo "Enabling Linux compatibility support..." + #${CWDIR}/unionfs.sh fetch_pkg && ${CWDIR}/unionfs.sh load_kmods && ${CWDIR}/unionfs.sh unionfs_on && sysrc -f ${CWDIR}${EXTCONF} LINUX_COMPAT_SUPPORT="YES" >/dev/null 2>&1 + ${CWDIR}/unionfs.sh fetch_debootstrap && ${CWDIR}/unionfs.sh load_kmods && sysrc -f ${CWDIR}${EXTCONF} LINUX_COMPAT_SUPPORT="YES" >/dev/null 2>&1 else - echo "Already enabled." + echo "Linux compatibility already enabled." fi exit 0 else @@ -1412,13 +1493,80 @@ linux_compat() fi } +bootstrap_dist() +{ + # Workaround since XigmaNAS does not ship with debootstrap command. + if sysrc -f ${CWDIR}${EXTCONF} -qc LINUX_COMPAT_SUPPORT=YES; then + # List of tested/working Linux distributions on FreeBSD 14.x. + LINUX_FLAVORS="ubuntu-bionic ubuntu-focal ubuntu-jammy" + if [ -n "${LINUX_DIST}" ]; then + for _linux_flavor in ${LINUX_FLAVORS}; do + + if [ "${LINUX_DIST}" = "${_linux_flavor}" ]; then + LINUX_FLAVOR="${_linux_flavor}" + break + fi + + done + fi + + if [ -z "${LINUX_FLAVOR}" ]; then + echo "Available Linux flavors:" + echo "${LINUX_FLAVORS}" + exit 1 + fi + + # Enable debootstrap environment. + ${CWDIR}/unionfs.sh unionfs_on + + # Bootstrap Linux flavor using bastille. + bastille bootstrap ${_linux_flavor} + + # Disable debootstrap environment. + ${CWDIR}/unionfs.sh unionfs_off + + else + echo "Linux compatibility disabled." + exit 1 + fi + + exit 0 +} + +update_debootstrap() +{ + # Update debootstrap and dependencies. + if sysrc -f ${CWDIR}${EXTCONF} -qc LINUX_COMPAT_SUPPORT=YES; then + ${CWDIR}/unionfs.sh update_debootstrap + else + echo "Linux compatibility disabled." + exit 1 + fi + + exit 0 +} + linux_compat_disable() { - if sysrc -f ${CWDIR}${EXTCONF} -qn LINUX_COMPAT_SUPPORT | grep -q "YES"; then - echo "Disabling Linux jail compatibility support..." + if sysrc -f ${CWDIR}${EXTCONF} -qc LINUX_COMPAT_SUPPORT=YES; then + echo "Disabling Linux compatibility support..." sysrc -f ${CWDIR}${EXTCONF} -x LINUX_COMPAT_SUPPORT - echo "Done!, server reboot is recommended." + ${CWDIR}/unionfs.sh unionfs_off + ${CWDIR}/unionfs.sh unload_kmods + + if [ -d "${CWDIR}/system/usr" ]; then + echo "Removing debootstrap environment..." + rm -rf ${CWDIR}/system/usr + if [ -d "${CWDIR}/system/var" ]; then + rm -rf ${CWDIR}/system/var + fi + fi + echo "Done!, please reboot server now." + else + echo "Linux compatibility disabled." + exit 1 fi + exit 0 } @@ -1495,7 +1643,14 @@ clean|--clean) exit 0 ;; linux_compat) - linux_compat + linux_compat_enable + ;; +bootstrap) + LINUX_DIST="${ARG}" + bootstrap_dist + ;; +update_debootstrap) + update_debootstrap ;; linux_compat_disable) linux_compat_disable @@ -1505,7 +1660,7 @@ bastillebsd_update) ;; esac -while getopts ":ospruxUvgtZh" option; do +while getopts "ospruxUvgtZh" option; do case ${option} in [h]) echo "Usage: ${SCRIPTNAME} -[option] | [container] | [path]"; echo "Options:" @@ -1539,6 +1694,8 @@ while getopts ":ospruxUvgtZh" option; do echo "" echo "Support:" echo "To update BastilleBSD core files only to the latest patches and fixes, please execute: \"${SCRIPTNAME} bastillebsd_update\"" + echo "To bootstrap a Linux distribution please execute: \"${SCRIPTNAME} bootstrap linux_flavor\"" + echo "To update debootstrap package and dependencies please execute: \"${SCRIPTNAME} update_debootstrap\"" echo ""; exit 0;; [o]) OBI_INSTALL="ON";; # To prevent nested PHP-CGI call for installation with OBI. [s]) bastille_start;; @@ -1548,8 +1705,8 @@ while getopts ":ospruxUvgtZh" option; do [x]) reset_install;; [U]) remove_addon;; [v]) get_versions;; - [g]) gui_enable; exit 0 ;; # For enable the addon gui. - [t]) gui_disable; exit 0 ;; # For disable the addon gui. + [g]) gui_enable;; # Enable the addon gui. + [t]) gui_disable;; # Disable the addon gui. [Z]) zfs_activate;; #[L]) linux_compat;; [?]) echo "Invalid option, -h for usage."; exit 1;; diff --git a/gui/bastille_manager-lib.inc b/gui/bastille_manager-lib.inc index 256102d..18b292e 100644 --- a/gui/bastille_manager-lib.inc +++ b/gui/bastille_manager-lib.inc @@ -2,7 +2,7 @@ /* bastille_manager-lib.inc - Copyright (c) 2019-2020 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2025 Jose Rivera (joserprg@gmail.com). All rights reserved. Redistribution and use in source and binary forms, with or without @@ -70,15 +70,17 @@ $linux_compat_support = exec("/usr/bin/grep 'LINUX_COMPAT_SUPPORT=' $configfile $jail_settings = "settings.conf"; // Ensure the root directory is configured. -if ($rootfolder == "") +if ($rootfolder == ""): $input_errors[] = gtext("Extension installed with fault"); -else { +else: // Initialize locales. $textdomain = "/usr/local/share/locale"; $textdomain_bastille = "/usr/local/share/locale-bastille"; - if (!is_link($textdomain_bastille)) { mwexec("ln -s {$rootfolder}/locale-bastille {$textdomain_bastille}", true); } + if (!is_link($textdomain_bastille)): + mwexec("ln -s {$rootfolder}/locale-bastille {$textdomain_bastille}", true); + endif; bindtextdomain("xigmanas", $textdomain_bastille); -} +endif; if (is_file("{$rootfolder}/postinit")) unlink("{$rootfolder}/postinit"); // Check releases dir. @@ -90,18 +92,17 @@ function is_dir_empty($reldir) { // Get bastille version function get_version_bastille() { global $tarballversion, $prdname; - if (is_file("{$tarballversion}")) { + if (is_file("{$tarballversion}")): // For some reason bastille bin version value isn't double quoted anymore so we can't use the old delimiter. // we will keep the old line for reference. //exec("/usr/bin/grep 'BASTILLE_VERSION=' {$tarballversion} | cut -d'\"' -f2", $result); exec("/usr/bin/grep 'BASTILLE_VERSION=' {$tarballversion} | cut -d'=' -f2", $result); return ($result[0] ?? ''); - } - else { + else: exec("/usr/local/bin/{$prdname} version | awk 'NR==1'", $result); return ($result[0] ?? ''); - } + endif; } // Initial install banner @@ -148,7 +149,9 @@ function get_state_zfs() { function get_all_release_list() { global $rootfolder; global $g; - exec("/bin/echo; /bin/ls {$rootfolder}/releases 2>/dev/null | /usr/bin/tr -s ' ' '\n'",$relinfo); + // Don't show Linux base releases under create jail page for now. + #exec("/bin/echo; /bin/ls {$rootfolder}/releases 2>/dev/null | /usr/bin/tr -s ' ' '\n'",$relinfo); + exec("/bin/echo; /bin/ls {$rootfolder}/releases | grep RELEASE 2>/dev/null | /usr/bin/tr -s ' ' '\n'",$relinfo); array_shift($relinfo); $rellist = []; foreach($relinfo as $rel): @@ -223,6 +226,7 @@ function get_jail_infos() { if (!$r['id']): $r['id'] = "-"; endif; + // Set the IP address on the running jails using bastille list command instead. //$r['ip'] = exec("/usr/bin/grep -w 'ip4.addr' {$jail_dir}/{$item}/jail.conf | /usr/bin/awk '{print $3}' | /usr/bin/tr -d ';'"); $r['ip'] = exec("/usr/local/bin/bastille list {$item} | awk '{print $7}' | sed 1d"); @@ -236,11 +240,18 @@ function get_jail_infos() { if (!$r['ip']): $r['ip'] = "-"; endif; + // Display release. $r['rel'] = exec("/usr/sbin/jexec {$item} freebsd-version 2>/dev/null"); if (!$r['rel']): - $r['rel'] = exec("/usr/sbin/jexec {$item} uname -o 2>/dev/null"); - elseif (!$r['rel']): + if(is_file("{$jail_dir}/{$item}/root/etc/os-release")): + $r['rel'] = exec("/bin/cat {$jail_dir}/{$item}/root/etc/os-release | grep 'PRETTY_NAME=' | tr -d 'PRETTY_NAME=\"'"); + else: + $r['rel'] = exec("/usr/sbin/jexec {$item} uname -o 2>/dev/null"); + endif; + endif; + // We can't get release version info or jail stopped. + if (!$r['rel']): $r['rel'] = "-"; endif; @@ -269,16 +280,18 @@ function get_jail_infos() { if (!$r['path']): $r['path'] = "-"; endif; + // Display auto-start settings. //$jail_autostart = exec("/usr/bin/grep -w {$item}_AUTO_START $configfile | cut -d'=' -f2 | tr -d '\"'"); $jail_autostart = exec("/usr/bin/grep -w boot {$jail_dir}/{$item}/settings.conf | cut -d'=' -f2 | tr -d '\"'"); - if ($jail_autostart == 'on') { + if ($jail_autostart == 'on'): $r['boot'] = $img_path['ena']; - } elseif ($jail_autostart == 'off') { + elseif ($jail_autostart == 'off'): $r['boot'] = $img_path['dis']; - } else { + else: $r['boot'] = $img_path['dis']; - } + endif; + // Display running status icons. $jail_running = exec("/usr/sbin/jls name | /usr/bin/awk '/^{$item}\$/'"); if ($jail_running): @@ -286,6 +299,7 @@ function get_jail_infos() { else: $r['stat'] = $img_path['dis']; endif; + // Display custom template icons if available. $template_icon = "{$jail_dir}/{$item}/plugin_icon.png"; if(file_exists($template_icon)): diff --git a/gui/bastille_manager_add.php b/gui/bastille_manager_add.php index bf80cd4..fcf71fc 100644 --- a/gui/bastille_manager_add.php +++ b/gui/bastille_manager_add.php @@ -2,7 +2,7 @@ /* bastille_manager_add.php - Copyright (c) 2019 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2025 Jose Rivera (joserprg@gmail.com). All rights reserved. Portions of XigmaNAS® (https://www.xigmanas.com). @@ -59,6 +59,12 @@ if(!get_all_release_list()): $prerequisites_ok = false; endif; +$zfs_status = get_state_zfs(); +if($zfs_status == "Invalid ZFS configuration"): + // Warning if invalid ZFS configuration. + $input_errors[] = gtext("WARNING: Invalid ZFS configuration detected."); +endif; + if($_POST): global $jail_dir; global $configfile; @@ -69,6 +75,12 @@ if($_POST): exit; endif; if(isset($_POST['Create']) && $_POST['Create']): + $zfs_status = get_state_zfs(); + if($zfs_status == "Invalid ZFS configuration"): + // Abort jail creation if invalid ZFS configuration. + $input_errors[] = gtext("Cannot create jail with an invalid ZFS configuration."); + else: + $jname = $pconfig['jailname']; $ipaddr = $pconfig['ipaddress']; $release = $pconfig['release']; @@ -142,6 +154,8 @@ if($_POST): $errormsg .= gtext(" <<< Failed to create container."); endif; endif; + + endif; endif; endif; @@ -316,7 +330,7 @@ $document->render(); endif; html_checkbox2('emptyjail',gettext('Create an empty container'),!empty($pconfig['emptyjail']) ? true : false,gettext('This are ideal for custom builds, experimenting with unsupported RELEASES or Linux jails.'),'',false,false,'emptyjail_change()'); if($linux_compat_support == "YES"): - html_checkbox2('linuxjail',gettext('Create a Linux container'),!empty($pconfig['linuxjail']) ? true : false,gettext('This will create a Linux container, this is highly experimental and for testing purposes.'),'',false,false,'linuxjail_change()'); + //html_checkbox2('linuxjail',gettext('Create a Linux container'),!empty($pconfig['linuxjail']) ? true : false,gettext('This will create a Linux container, this is highly experimental and for testing purposes.'),'',false,false,'linuxjail_change()'); endif; endif; //html_checkbox2('nowstart',gettext('Start after creation'),!empty($pconfig['nowstart']) ? true : false,gettext('Start the container after creation(May be overridden by later bastille releases).'),'',false); diff --git a/gui/bastille_manager_config.php b/gui/bastille_manager_config.php index 1f85530..2ea7ed6 100644 --- a/gui/bastille_manager_config.php +++ b/gui/bastille_manager_config.php @@ -2,7 +2,7 @@ /* bastille_manager_config.php - Copyright (c) 2019 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2025 Jose Rivera (joserprg@gmail.com). All rights reserved. Copyright (c) 2018 Andreas Schmidhuber @@ -64,6 +64,12 @@ if(!initial_install_banner()): $prerequisites_ok = false; endif; +$zfs_status = get_state_zfs(); +if($zfs_status == "Invalid ZFS configuration"): + // Warning if invalid ZFS configuration. + $input_errors[] = gtext("WARNING: Invalid ZFS configuration detected."); +endif; + function htmlInput($name, $title, $value="", $size=80) { $result = ""; return $result; diff --git a/gui/bastille_manager_editor.php b/gui/bastille_manager_editor.php index 616ebbd..4f096f9 100644 --- a/gui/bastille_manager_editor.php +++ b/gui/bastille_manager_editor.php @@ -2,7 +2,7 @@ /* bastille_manager_editor.php - Copyright (c) 2019 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2025 Jose Rivera (joserprg@gmail.com). All rights reserved. Portions of XigmaNAS® (https://www.xigmanas.com). diff --git a/gui/bastille_manager_gui.php b/gui/bastille_manager_gui.php index fedbbd0..dc5abae 100644 --- a/gui/bastille_manager_gui.php +++ b/gui/bastille_manager_gui.php @@ -2,7 +2,7 @@ /* bastille_manager_gui.php - Copyright (c) 2019-2020 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2025 Jose Rivera (joserprg@gmail.com). All rights reserved. Portions of XigmaNAS® (https://www.xigmanas.com). @@ -53,11 +53,13 @@ $gt_record_mod = gtext('Utilities'); $gt_selection_start = gtext('Start Selected'); $gt_selection_stop = gtext('Stop Selected'); $gt_selection_restart = gtext('Restart Selected'); +$gt_selection_autoboot = gtext('Auto-boot Selected'); $gt_record_conf = gtext('Jail Configuration'); $gt_record_inf = gtext('Information'); $gt_selection_start_confirm = gtext('Do you really want to start selected jail(s)?'); $gt_selection_stop_confirm = gtext('Do you want to stop the selected jail(s)?'); $gt_selection_restart_confirm = gtext('Do you want to restart the selected jail(s)?'); +$gt_selection_autoboot_confirm = gtext('Do you want to set auto-boot on selected jail(s)?'); $img_path = [ 'add' => 'images/add.png', 'mod' => 'images/edit.png', @@ -90,6 +92,12 @@ if(!initial_install_banner()): $prerequisites_ok = false; endif; +$zfs_status = get_state_zfs(); +if($zfs_status == "Invalid ZFS configuration"): + // Warning if invalid ZFS configuration. + $input_errors[] = gtext("WARNING: Invalid ZFS configuration detected."); +endif; + if($_POST): if(isset($_POST['apply']) && $_POST['apply']): $ret = array('output' => [], 'retval' => 0); @@ -159,6 +167,24 @@ if($_POST): endif; endforeach; endif; + +if(isset($_POST['autoboot_selected_jail']) && $_POST['autoboot_selected_jail']): + $checkbox_member_array = isset($_POST[$checkbox_member_name]) ? $_POST[$checkbox_member_name] : []; + foreach($checkbox_member_array as $checkbox_member_record): + if(false !== ($index = array_search_ex($checkbox_member_record, $sphere_array, 'jailname'))): + if(!isset($sphere_array[$index]['protected'])): + $cmd = ("/usr/local/bin/bastille config {$checkbox_member_record} set boot on"); + $return_val = mwexec($cmd); + if($return_val == 0): + //$savemsg .= gtext("Jail(s) restarted successfully."); + header($sphere_header); + else: + $errormsg .= gtext("Failed to restart jail(s)."); + endif; + endif; + endif; + endforeach; + endif; endif; $pgtitle = [gtext("Extensions"), gtext('Bastille')]; @@ -177,6 +203,9 @@ $(window).on("load", function() { $("#restart_selected_jail").click(function () { return confirm(''); }); + $("#autoboot_selected_jail").click(function () { + return confirm(''); + }); // Disable action buttons. disableactionbuttons(true); @@ -192,6 +221,7 @@ function disableactionbuttons(ab_disable) { $("#start_selected_jail").prop("disabled", ab_disable); $("#stop_selected_jail").prop("disabled", ab_disable); $("#restart_selected_jail").prop("disabled", ab_disable); + $("#autoboot_selected_jail").prop("disabled", ab_disable); } function controlactionbuttons(ego, triggerbyname) { @@ -362,6 +392,7 @@ $document->render(); + &1"; diff --git a/gui/bastille_manager_jconf.php b/gui/bastille_manager_jconf.php index 1180579..97a405f 100644 --- a/gui/bastille_manager_jconf.php +++ b/gui/bastille_manager_jconf.php @@ -2,7 +2,7 @@ /* bastille_manager_jconf.inc - Copyright (c) 2020 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2025 Jose Rivera (joserprg@gmail.com). All rights reserved. Redistribution and use in source and binary forms, with or without @@ -34,6 +34,12 @@ require_once 'auth.inc'; require_once 'guiconfig.inc'; require_once("bastille_manager-lib.inc"); +$zfs_status = get_state_zfs(); +if($zfs_status == "Invalid ZFS configuration"): + // Warning if invalid ZFS configuration. + $input_errors[] = gtext("WARNING: Invalid ZFS configuration detected."); +endif; + if (isset($_GET['uuid'])) $uuid = $_GET['uuid']; if (isset($_POST['uuid'])) diff --git a/gui/bastille_manager_maintenance.php b/gui/bastille_manager_maintenance.php index c2a8c85..d8748e5 100644 --- a/gui/bastille_manager_maintenance.php +++ b/gui/bastille_manager_maintenance.php @@ -2,7 +2,7 @@ /* bastille_manager_maintenance.php - Copyright (c) 2019-2020 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2025 Jose Rivera (joserprg@gmail.com). All rights reserved. Copyright (c) 2016 Andreas Schmidhuber @@ -54,6 +54,12 @@ if(!initial_install_banner()): $prerequisites_ok = false; endif; +$zfs_status = get_state_zfs(); +if($zfs_status == "Invalid ZFS configuration"): + // Warning if invalid ZFS configuration. + $input_errors[] = gtext("WARNING: Invalid ZFS configuration detected."); +endif; + // For legacy product versions. $legacy_check = mwexec("/bin/cat /etc/prd.version | cut -d'.' -f1 | /usr/bin/grep '10'", true); if ($legacy_check == 0) { @@ -120,8 +126,8 @@ if ($_POST) { $uninstall_cmd = "echo 'y' | /usr/local/sbin/bastille-init -U"; mwexec($uninstall_cmd, true); if (is_link("/usr/local/share/{$prdname}")) mwexec("rm /usr/local/share/{$prdname}", true); - if (is_link("/var/cache/pkg")) mwexec("rm /var/cache/pkg", true); - if (is_link("/var/db/pkg")) mwexec("rm /var/db/pkg && mkdir /var/db/pkg", true); + //if (is_link("/var/cache/pkg")) mwexec("rm /var/cache/pkg", true); + //if (is_link("/var/db/pkg")) mwexec("rm /var/db/pkg && mkdir /var/db/pkg", true); // Remove start postinit cmd in later product versions. if (is_array($config['rc']) && is_array($config['rc']['param'])) { diff --git a/gui/bastille_manager_tarballs.php b/gui/bastille_manager_tarballs.php index 39edf0a..1dca4c3 100644 --- a/gui/bastille_manager_tarballs.php +++ b/gui/bastille_manager_tarballs.php @@ -2,7 +2,7 @@ /* bastille_manager_tarballs.php - Copyright (c) 2019 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2025 Jose Rivera (joserprg@gmail.com). All rights reserved. Portions of XigmaNAS® (https://www.xigmanas.com). @@ -67,6 +67,13 @@ function get_rel_list() { endif; return $result; } + +$zfs_status = get_state_zfs(); +if($zfs_status == "Invalid ZFS configuration"): + // Warning if invalid ZFS configuration. + $input_errors[] = gtext("WARNING: Invalid ZFS configuration detected."); +endif; + $rel_list = get_rel_list(); $sphere_array = $rel_list; @@ -76,26 +83,17 @@ if ($linux_compat_support == "YES"): '14.2-RELEASE' => gettext('14.2-RELEASE'), '14.1-RELEASE' => gettext('14.1-RELEASE'), '14.0-RELEASE' => gettext('14.0-RELEASE'), + '13.5-RELEASE' => gettext('13.4-RELEASE'), '13.4-RELEASE' => gettext('13.4-RELEASE'), - '13.3-RELEASE' => gettext('13.3-RELEASE'), - '13.2-RELEASE' => gettext('13.2-RELEASE'), - '13.1-RELEASE' => gettext('13.1-RELEASE'), - '13.0-RELEASE' => gettext('13.0-RELEASE'), - '12.4-RELEASE' => gettext('12.4-RELEASE'), - '12.3-RELEASE' => gettext('12.3-RELEASE'), - '12.2-RELEASE' => gettext('12.2-RELEASE'), - '12.1-RELEASE' => gettext('12.1-RELEASE'), - '12.0-RELEASE' => gettext('12.0-RELEASE'), - '11.4-RELEASE' => gettext('11.4-RELEASE'), - '11.3-RELEASE' => gettext('11.3-RELEASE'), - '11.2-RELEASE' => gettext('11.2-RELEASE'), - 'ubuntu-jammy' => gettext('Ubuntu-Jammy'), - 'ubuntu-focal' => gettext('Ubuntu-Focal'), - 'ubuntu-bionic' => gettext('Ubuntu-Bionic'), - 'debian-bookworm' => gettext('Debian-Bookworm'), - 'debian-bullseye' => gettext('Debian-Bullseye'), - 'debian-buster' => gettext('Debian-Buster'), - //'debian-stretch' => gettext('Debian-Stretch'), -> Obsolete, removed from bastille boostrap. + // Linux base release bootstrap is allowed from command-line. + //'ubuntu-jammy' => gettext('Ubuntu-noble'), + //'ubuntu-jammy' => gettext('Ubuntu-Jammy'), + //'ubuntu-focal' => gettext('Ubuntu-Focal'), + //'ubuntu-bionic' => gettext('Ubuntu-Bionic'), + //'debian-bookworm' => gettext('Debian-Bookworm'), + //'debian-bullseye' => gettext('Debian-Bullseye'), + //'debian-buster' => gettext('Debian-Buster'), + //'debian-stretch' => gettext('Debian-Stretch'), ]; else: $a_action = [ @@ -103,19 +101,8 @@ else: '14.2-RELEASE' => gettext('14.2-RELEASE'), '14.1-RELEASE' => gettext('14.1-RELEASE'), '14.0-RELEASE' => gettext('14.0-RELEASE'), + '13.5-RELEASE' => gettext('13.4-RELEASE'), '13.4-RELEASE' => gettext('13.4-RELEASE'), - '13.3-RELEASE' => gettext('13.3-RELEASE'), - '13.2-RELEASE' => gettext('13.2-RELEASE'), - '13.1-RELEASE' => gettext('13.1-RELEASE'), - '13.0-RELEASE' => gettext('13.0-RELEASE'), - '12.4-RELEASE' => gettext('12.4-RELEASE'), - '12.3-RELEASE' => gettext('12.3-RELEASE'), - '12.2-RELEASE' => gettext('12.2-RELEASE'), - '12.1-RELEASE' => gettext('12.1-RELEASE'), - '12.0-RELEASE' => gettext('12.0-RELEASE'), - '11.4-RELEASE' => gettext('11.4-RELEASE'), - '11.3-RELEASE' => gettext('11.3-RELEASE'), - '11.2-RELEASE' => gettext('11.2-RELEASE'), ]; endif; @@ -137,6 +124,7 @@ if($_POST): $check_release = ("{$rootfolder}/releases/{$get_release}"); $cmd = sprintf('/bin/echo "Y" | /usr/local/bin/bastille bootstrap %1$s > %2$s',$get_release,$logevent); $base_mandatory = "base"; + $zfs_status = get_state_zfs(); //unset($lib32,$ports,$src); if (isset($_POST['lib32'])): @@ -150,12 +138,12 @@ if($_POST): endif; $opt_tarballs = "$lib32 $ports $src"; - // FreeBSD base release check. - //if(file_exists($check_release)): - // $savemsg .= sprintf(gtext('%s base appears to be already extracted.'),$get_release); - //else: - // Download a FreeBSD base release. - if ($_POST['Download']): + // Download a FreeBSD base release. + if ($_POST['Download']): + if($zfs_status == "Invalid ZFS configuration"): + // Abort bootstrap if invalid ZFS configuration. + $input_errors[] = gtext("Cannot bootstrap with an invalid ZFS configuration."); + else: $savemsg = ""; $errormsg = ""; if ($opt_tarballs): @@ -179,8 +167,9 @@ if($_POST): else: $errormsg .= sprintf(gtext('%s Failed to download and/or extract release base.'),$get_release); endif; + endif; - //endif; + endif; endif; if (isset($_POST['Destroy']) && $_POST['Destroy']): diff --git a/gui/bastille_manager_util.php b/gui/bastille_manager_util.php index 0d77c19..2304b29 100644 --- a/gui/bastille_manager_util.php +++ b/gui/bastille_manager_util.php @@ -2,7 +2,7 @@ /* bastille_manager_util.php - Copyright (c) 2019 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2025 Jose Rivera (joserprg@gmail.com). All rights reserved. Portions of XigmaNAS® (https://www.xigmanas.com). @@ -39,6 +39,12 @@ require_once 'auth.inc'; require_once 'guiconfig.inc'; require_once("bastille_manager-lib.inc"); +$zfs_status = get_state_zfs(); +if($zfs_status == "Invalid ZFS configuration"): + // Warning if invalid ZFS configuration. + $input_errors[] = gtext("WARNING: Invalid ZFS configuration detected."); +endif; + if(isset($_GET['uuid'])): $uuid = $_GET['uuid']; endif; diff --git a/unionfs.sh b/unionfs.sh old mode 100755 new mode 100644 index c719ce9..34df33e --- a/unionfs.sh +++ b/unionfs.sh @@ -10,7 +10,7 @@ # Debug script #set -x -# Copyright (c) 2019-2024, José Rivera (joserprg@gmail.com). +# Copyright (c) 2019-2025, Jose Rivera (joserprg@gmail.com). # All rights reserved. # Redistribution and use in source and binary forms, with or without @@ -51,20 +51,8 @@ error_notify() { # Log/notify message on error and exit. MSG="${*}" logger -t "${SCRIPTNAME}" "${MSG}" - echo -e "${MSG}" >&2; exit 1 -} - -platform_check() -{ - # Check for working platform. - if [ "${PRDPLATFORM}" = "x64-embedded" ]; then - pkg_symlink - else - if [ -d "/var/cache/pkg" ]; then - echo "Cleaning the pkg cache." - pkg clean -y -a - fi - fi + echo -e "${MSG}" >&2 + exit 1 } load_kmods() { @@ -79,7 +67,7 @@ load_kmods() { # Skip already loaded known modules. for _req_kmod in ${required_mods}; do - if ! sysrc -f /boot/loader.conf -qn ${_req_kmod}_load=YES | grep -q "YES"; then + if ! sysrc -f /boot/loader.conf -qc ${_req_kmod}_load=YES; then sysrc -f /boot/loader.conf ${_req_kmod}_load=YES fi if ! kldstat -m ${_req_kmod} >/dev/null 2>&1; then @@ -95,66 +83,45 @@ load_kmods() { kldload -v ${_lin_kmod} fi done - if ! sysrc -qn linux_enable=YES | grep -q "YES"; then + if ! sysrc -qc linux_enable=YES; then sysrc linux_enable=YES fi } -pkg_symlink() { - if ! sysrc -f ${CWDIR}${EXTCONF} -qn LINUX_COMPAT_SUPPORT | grep -q "YES"; then - echo "Creating pkg environment for embedded platforms." +unload_kmods() { + required_mods="fdescfs linprocfs linsysfs tmpfs" + linuxarc_mods="linux linux64" - if [ -d "/var/cache/pkg" ]; then - if [ ! -L "/var/cache/pkg" ]; then - rm -R /var/cache/pkg - mkdir -p ${CWDIR}/system/cache/pkg - ln -vFs ${CWDIR}/system/cache/pkg /var/cache/pkg - fi - else - mkdir -m 0755 -p /var/cache - mkdir -p ${CWDIR}/system/cache/pkg - ln -vFs ${CWDIR}/system/cache/pkg /var/cache/pkg + for _req_kmod in ${required_mods}; do + if sysrc -f /boot/loader.conf -qc ${_req_kmod}_load=YES; then + echo "Unset kernel module: ${_req_kmod}" + sysrc -f /boot/loader.conf -x ${_req_kmod}_load fi + done - if [ -d "/var/db/pkg" ]; then - if [ ! -L "/var/db/pkg" ]; then - rm -R /var/db/pkg - mkdir -p ${CWDIR}/system/pkg/db - ln -vFs ${CWDIR}/system/pkg/db /var/db/pkg - fi - else - mkdir -p ${CWDIR}/system/pkg/db - ln -vFs ${CWDIR}/system/pkg/db /var/db/pkg - fi + if sysrc -qc linux_enable=YES; then + echo "Unset linux_enable" + sysrc -x linux_enable fi } fetch_pkg() { - if ! sysrc -f ${CWDIR}${EXTCONF} -qn LINUX_COMPAT_SUPPORT | grep -q "YES"; then - echo "Fetching required packages." + echo "Fetching required packages." + # Fetch deboostrap and dependency packages. + pkg fetch -y -d -o ${CWDIR}/system/ debootstrap || error_notify "Error while fetching packages, exiting." - # Skip existing packages/ports bundled with XigmaNAS. - #PKGLIST="#bash #ca_root_nss debootstrap #gettext-runtime glib gmp gnugrep gnugpg gnutls #indexinfo libassuan #libedit #libffi libgcrypt libgpg-error #libiconv libidn2 libksba libtasn1 libunistring libxml2 mpdecimal nettle npth p11-kit #pcre perl5 pinentry pinentry-curses #python38 #readline #sqlite3 tpm-emulator #trousers ubuntu-keyring wget" - PKGLIST="debootstrap glib gmp gnugrep gnupg gnutls libassuan libgcrypt libgpg-error libidn2 libksba libtasn1 libunistring libxml2 mpdecimal nettle npth p11-kit perl5 pinentry pinentry-curses tpm-emulator ubuntu-keyring wget" + extract_pkg +} - for pkg in ${PKGLIST}; do - pkg fetch -y "${pkg}" || error_notify "Error while fetching required [${pkg}] package, exiting." - done - - extract_pkg +fetch_debootstrap() { + if ! sysrc -f ${CWDIR}${EXTCONF} -qc LINUX_COMPAT_SUPPORT=YES; then + fetch_pkg fi } extract_pkg() { echo "Extracting required packages." - - if [ "${PRDPLATFORM}" = "x64-embedded" ]; then - FILELIST=$(find "${CWDIR}/system/cache/pkg" -type f) - LINKLIST=$(find "${CWDIR}/system/cache/pkg" -type l) - else - FILELIST=$(find "/var/cache/pkg" -type f) - LINKLIST=$(find "/var/cache/pkg" -type l) - fi + FILELIST=$(find "${CWDIR}/system/All" -type f) for item in ${FILELIST}; do if [ -f "${item}" ]; then @@ -163,59 +130,68 @@ extract_pkg() { fi done - # Clean leftovers pkg symlinks - if [ "${PRDPLATFORM}" = "x64-embedded" ]; then - for item in ${LINKLIST}; do - if [ -L "${item}" ]; then - rm -rf ${item} - fi - done - else - echo "Cleaning the pkg cache." - pkg clean -y -a + if [ -d "${CWDIR}/system/All" ]; then + rm -r ${CWDIR}/system/All fi if [ ! -d "${CWDIR}/templates" ]; then mkdir -p ${CWDIR}/templates fi + + if [ ! -d "${CWDIR}/system/var/run" ]; then + mkdir -p ${CWDIR}/system/var/run + fi + + echo "Done." } unionfs_on() { if ! df | grep -q "${CWDIR}/system/usr/local"; then - echo "Enabling UnionFS mount for ${CWDIR}/system/usr/local." - mount_unionfs -o below ${CWDIR}/system/usr/local /usr/local + echo "Enabling UnionFS for ${CWDIR}/system/usr/local." + mount_unionfs -o above ${CWDIR}/system/usr/local /usr/local fi if ! df | grep -q "${CWDIR}/system/var/run"; then - echo "Enabling UnionFS mount for ${CWDIR}/system/var/run." - mount_unionfs -o below ${CWDIR}/system/var/run /var/run + echo "Enabling UnionFS for ${CWDIR}/system/var/run." + mount_unionfs -o avobe ${CWDIR}/system/var/run /var/run fi } unionfs_off() { if df | grep -q "${CWDIR}/system/usr/local"; then - echo "Disabling UnionFS mounts for ${CWDIR}/system/usr/local." + echo "Disabling UnionFS for ${CWDIR}/system/usr/local." umount -f /usr/local fi if df | grep -q "${CWDIR}/system/var/run"; then - echo "Disabling UnionFS mounts for ${CWDIR}/system/var/run." + echo "Disabling UnionFS for ${CWDIR}/system/var/run." umount -f /var/run fi } +update_debootstrap() { + echo "Updating debootstrap..." + unionfs_off + fetch_pkg +} + case "${1}" in - fetch_pkg) - platform_check - fetch_pkg + fetch_debootstrap) + fetch_debootstrap ;; load_kmods) load_kmods ;; + unload_kmods) + unload_kmods + ;; unionfs_on) unionfs_on ;; unionfs_off) unionfs_off ;; + update_debootstrap) + update_debootstrap + ;; esac diff --git a/version b/version index 36a0393..0abd29d 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.53 +1.2.00 From 746c5914092017622fc70906f4010a3ae3144b8f Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sat, 13 Sep 2025 06:10:46 -0400 Subject: [PATCH 24/80] Set executable property --- bastille-init | 0 unionfs.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 bastille-init mode change 100644 => 100755 unionfs.sh diff --git a/bastille-init b/bastille-init old mode 100644 new mode 100755 diff --git a/unionfs.sh b/unionfs.sh old mode 100644 new mode 100755 From 8a98bc7f2b62a617a28b01bfc815b2298c87eb12 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sat, 13 Sep 2025 12:11:30 -0400 Subject: [PATCH 25/80] Fix extension script missing statement preventing for new installs Fix extension script missing statement preventing for new installs. --- CHANGELOG | 1 + bastille-init | 2 +- version | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 0de422c..cf184b8 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.01......Fix extension script missing statement preventing for new installs. 1.2.00......Re-add Linux jail feature, WebGUI fixes and overall improvements. 1.1.53......Code changes, handle osrelease parameter update in bastille-init. 1.1.52......Re-add Thin jail release change and code improvements. diff --git a/bastille-init b/bastille-init index 16570cd..a564603 100755 --- a/bastille-init +++ b/bastille-init @@ -89,7 +89,7 @@ ARG="${2}" # Load bastille configuration file. if [ -f "${BASTILLECONF}" ]; then . /${BASTILLECONF} -else +elif [ -f "${BASTILLECONF}" ]; then . /${INSTALLPATH}/${BASTILLECONF} fi diff --git a/version b/version index 0abd29d..aa9e242 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.00 +1.2.01 From 50e465f5e22135aa246facbd04e21135ed1c485e Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sun, 14 Sep 2025 05:30:35 -0400 Subject: [PATCH 26/80] always execute extension script after upgrade Always execute extension script after upgrade from WebGUI, code changes. --- CHANGELOG | 1 + bastille-init | 37 +++++++++++++++++++--------- gui/bastille_manager_maintenance.php | 3 +++ version | 2 +- 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index cf184b8..00874e1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.02......Always execute extension script after upgrade from WebGUI, code changes. 1.2.01......Fix extension script missing statement preventing for new installs. 1.2.00......Re-add Linux jail feature, WebGUI fixes and overall improvements. 1.1.53......Code changes, handle osrelease parameter update in bastille-init. diff --git a/bastille-init b/bastille-init index a564603..546c6bf 100755 --- a/bastille-init +++ b/bastille-init @@ -111,7 +111,7 @@ if [ "${bastille_zfs_enable}" = "YES" ] || [ "${bastille_zfs_enable}" = "yes" ]; if echo "${BASTILLE_ZFS_ZPOOL_MOUNTPOINT}" | grep -q '/mnt/'; then BASTILLE_ZFS_ZPOOL_MOUNTPOINT_TRIM=$(echo "${BASTILLE_ZFS_ZPOOL_MOUNTPOINT}" | sed "s|/mnt/||;s|/${bastille_zfs_prefix}||") fi - BASTILLE_ZFS_PREFIX_TRIM=$(echo "${bastille_zfs_prefix}" | sed "s|/${BASTILLE_DIR}||") + BASTILLE_ZFS_PREFIX_TRIM=$(echo "${bastille_zfs_prefix}" | sed "s|/${APPNAME}||") fi # Check bastille ZFS config match on disk ZFS config. BASTILLE_CONFIG_DISK=$(zfs list -H "${bastille_prefix}" 2>/dev/null | awk '{print $1}') @@ -308,6 +308,8 @@ extension_upgrade() # Compare version files and fetch latest package if available. if [ -f "${CWDIR}/update/version" ]; then + UPDATEVER_FULL=$(cat ${CWDIR}/update/version) + CURRENTVER_FULL=$(cat ${CWDIR}/version) UPDATEVER=$(cat ${CWDIR}/update/version | tr -d .) CURRENTVER=$(cat ${CWDIR}/version | tr -d .) if [ "${UPDATEVER}" -gt "${CURRENTVER}" ]; then @@ -325,6 +327,11 @@ extension_upgrade() echo "${DATE}: Extension upgraded to ${UPDATEVERSION}" >> ${EXTLOGFILE} echo "Extension upgraded to version ${UPDATEVERSION}" echo "Extension package upgrade completed!" + if [ "${CURRENTVER}" -le "1153" ]; then + echo "***********************************************************************************" + echo "* WARNING: System reboot is required when upgrading from v${CURRENTVER_FULL} to v${UPDATEVER_FULL} *" + echo "***********************************************************************************" + fi else echo "Extension is on the latest version!" rm -R ${CWDIR}/update @@ -1299,35 +1306,41 @@ rc_params() if [ -n "${bastille_zfs_zpool}" ]; then if zfs list "${bastille_zfs_zpool}" >/dev/null 2>&1; then + # Check and don't allow child datasets in bastille_zfs_zpool. + if echo "${bastille_zfs_zpool}" | grep -q '\/'; then + zfs_support_error + exit 1 + fi + + # Check and make sure bastille_zfs_prefix end with "bastille". + if ! echo "${bastille_zfs_prefix}" | grep -qw "${APPNAME}"; then + zfs_support_error + exit 1 + fi + # Check bastille ZFS config match on disk ZFS config if activation is already enabled in the config file. if sysrc -f ${CWDIR}${EXTCONF} -qc ZFS_SUPPORT=YES && sysrc -f ${CWDIR}${EXTCONF} -qc ZFS_ACTIVATED=YES; then if [ "${BASTILLE_CONFIG_DISK}" != "${BASTILLE_CONFIG_FILE}" ]; then zfs_support_error exit 1 - else - # Check and don't allow child datasets in bastille_zfs_zpool. - if echo "${bastille_zfs_zpool}" | grep -q '\/'; then - zfs_support_error - exit 1 - fi fi fi # Perform some checks against on-disk and file configurations. - if zfs list "${bastille_zfs_zpool}/${BASTILLE_ZFS_PREFIX_TRIM}/${BASTILLE_DIR}" >/dev/null 2>&1; then + if zfs list "${bastille_zfs_zpool}/${BASTILLE_ZFS_PREFIX_TRIM}/${APPNAME}" >/dev/null 2>&1; then # Looks like ZFS support is already configured, then set parameters. zfs_support_enabled elif zfs list "${bastille_zfs_zpool}" >/dev/null 2>&1 && \ - [ "${bastille_zfs_prefix}" = "${BASTILLE_ZFS_PREFIX_TRIM}/${BASTILLE_DIR}" ]; then + [ "${bastille_zfs_prefix}" = "${BASTILLE_ZFS_PREFIX_TRIM}/${APPNAME}" ]; then # Looks like ZFS support is available for activation. zfs_support_avail - elif zfs list "${bastille_zfs_zpool}/${BASTILLE_DIR}" >/dev/null 2>&1; then + elif zfs list "${bastille_zfs_zpool}/${APPNAME}" >/dev/null 2>&1; then zfs_support_enabled elif zfs list "${bastille_zfs_zpool}" >/dev/null 2>&1 && \ - [ "${BASTILLE_ZFS_PREFIX_TRIM}" = "${BASTILLE_DIR}" ]; then + [ "${BASTILLE_ZFS_PREFIX_TRIM}" = "${APPNAME}" ]; then # Looks like ZFS support is available for activation. zfs_support_avail - elif zfs list "${bastille_zfs_zpool}/${BASTILLE_DIR}" >/dev/null 2>&1; then + elif zfs list "${bastille_zfs_zpool}/${APPNAME}" >/dev/null 2>&1; then zfs_support_enabled else zfs_support_error diff --git a/gui/bastille_manager_maintenance.php b/gui/bastille_manager_maintenance.php index d8748e5..d441f56 100644 --- a/gui/bastille_manager_maintenance.php +++ b/gui/bastille_manager_maintenance.php @@ -85,6 +85,9 @@ if ($_POST) { $output = []; exec($cmd,$output,$return_val); if($return_val == 0): + // Execute extension script after upgrade for convenience. + // This will cause the script to early trigger zfs config checks. + exec("{$rootfolder}/bastille-init"); ob_start(); include("{$logevent}"); $ausgabe = ob_get_contents(); diff --git a/version b/version index aa9e242..5ab1bb5 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.01 +1.2.02 From d70bc5a15b7502ca3281dc01c5cc2e0d2b598bc2 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sun, 14 Sep 2025 08:03:36 -0400 Subject: [PATCH 27/80] Added post upgrade function for convenience, cleanup Added post upgrade function for convenience, cleanup obsolete code. --- CHANGELOG | 1 + bastille-init | 19 +++++++++++++++++++ gui/bastille_manager_maintenance.php | 3 --- version | 2 +- 4 files changed, 21 insertions(+), 4 deletions(-) mode change 100755 => 100644 bastille-init diff --git a/CHANGELOG b/CHANGELOG index 00874e1..410762c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.03......Added post upgrade function for convenience, cleanup obsolete code. 1.2.02......Always execute extension script after upgrade from WebGUI, code changes. 1.2.01......Fix extension script missing statement preventing for new installs. 1.2.00......Re-add Linux jail feature, WebGUI fixes and overall improvements. diff --git a/bastille-init b/bastille-init old mode 100755 new mode 100644 index 546c6bf..b0507e5 --- a/bastille-init +++ b/bastille-init @@ -332,6 +332,8 @@ extension_upgrade() echo "* WARNING: System reboot is required when upgrading from v${CURRENTVER_FULL} to v${UPDATEVER_FULL} *" echo "***********************************************************************************" fi + # Tell the extension was upgraded. + sysrc -f ${CWDIR}${EXTCONF} EXTENSION_UPGRADED="1" >/dev/null 2>&1 else echo "Extension is on the latest version!" rm -R ${CWDIR}/update @@ -1197,6 +1199,22 @@ get_versions() exit 0 } +post_upgrade() +{ + # Check/apply for required/pending updates/fixes if any. + # This file will be removed after success execution. + if sysrc -f ${CWDIR}${EXTCONF} -qc EXTENSION_UPGRADED=1; then + if [ -f "${CWDIR}/post_upgrade.sh" ]; then + echo "Executing post_upgrade.sh file..." + ${CWDIR}/post_upgrade.sh + sleep 5 + else + echo "Nothing to do." + fi + sysrc -f ${CWDIR}${EXTCONF} EXTENSION_UPGRADED="0" >/dev/null 2>&1 + fi +} + ext_start() { if sysrc -f ${CWDIR}${EXTCONF} -qc LINUX_COMPAT_SUPPORT=YES; then @@ -1221,6 +1239,7 @@ ext_start() fi if [ $? -eq 0 ]; then + post_upgrade MSG="script has been started successfully!" logger -t ${SCRIPTNAME} ${MSG} exit 0 diff --git a/gui/bastille_manager_maintenance.php b/gui/bastille_manager_maintenance.php index d441f56..d8748e5 100644 --- a/gui/bastille_manager_maintenance.php +++ b/gui/bastille_manager_maintenance.php @@ -85,9 +85,6 @@ if ($_POST) { $output = []; exec($cmd,$output,$return_val); if($return_val == 0): - // Execute extension script after upgrade for convenience. - // This will cause the script to early trigger zfs config checks. - exec("{$rootfolder}/bastille-init"); ob_start(); include("{$logevent}"); $ausgabe = ob_get_contents(); diff --git a/version b/version index 5ab1bb5..77ccbba 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.02 +1.2.03 From 7362708895f8aa71dad5b679d41affdeea1ee778 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Mon, 15 Sep 2025 20:14:46 -0400 Subject: [PATCH 28/80] Fix for missing variable, thanks to tga Fix for missing variable affecting embedded platforms, thanks to @tga. --- CHANGELOG | 1 + bastille-init | 2 +- version | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 410762c..9ca655f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.04......Fix for missing variable affecting embedded platforms, thanks to tga. 1.2.03......Added post upgrade function for convenience, cleanup obsolete code. 1.2.02......Always execute extension script after upgrade from WebGUI, code changes. 1.2.01......Fix extension script missing statement preventing for new installs. diff --git a/bastille-init b/bastille-init index b0507e5..179a34d 100644 --- a/bastille-init +++ b/bastille-init @@ -89,7 +89,7 @@ ARG="${2}" # Load bastille configuration file. if [ -f "${BASTILLECONF}" ]; then . /${BASTILLECONF} -elif [ -f "${BASTILLECONF}" ]; then +elif [ -f "${INSTALLPATH}/${BASTILLECONF}" ]; then . /${INSTALLPATH}/${BASTILLECONF} fi diff --git a/version b/version index 77ccbba..6189d86 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.03 +1.2.04 From 4664d71f31716af38046001a59b68e2c57078596 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Tue, 16 Sep 2025 08:21:56 -0400 Subject: [PATCH 29/80] Mount unionfs for pkg while fetching debootstrap Mount unionfs for pkg while fetching `debootstrap` packages --- CHANGELOG | 1 + unionfs.sh | 20 +++++++++++++++++++- version | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) mode change 100755 => 100644 unionfs.sh diff --git a/CHANGELOG b/CHANGELOG index 9ca655f..b612730 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.05......Mount unionfs for pkg while fetching debootstrap packages. 1.2.04......Fix for missing variable affecting embedded platforms, thanks to tga. 1.2.03......Added post upgrade function for convenience, cleanup obsolete code. 1.2.02......Always execute extension script after upgrade from WebGUI, code changes. diff --git a/unionfs.sh b/unionfs.sh old mode 100755 new mode 100644 index 34df33e..814273e --- a/unionfs.sh +++ b/unionfs.sh @@ -106,9 +106,27 @@ unload_kmods() { } fetch_pkg() { + if [ ! -d "/var/db/pkg" ]; then + mkdir -p "/var/db/pkg" + fi + if [ ! -d "${CWDIR}/system/var/db/pkg" ]; then + mkdir -p ${CWDIR}/system/var/db/pkg + fi + + if ! df | grep -q "${CWDIR}/system/var/db/pkg"; then + echo "Enabling UnionFS for ${CWDIR}/system/var/db/pkg." + mount_unionfs -o avobe ${CWDIR}/system/var/db/pkg /var/db/pkg + fi + echo "Fetching required packages." # Fetch deboostrap and dependency packages. pkg fetch -y -d -o ${CWDIR}/system/ debootstrap || error_notify "Error while fetching packages, exiting." + echo "Done." + + if df | grep -q "${CWDIR}/system/var/db/pkg"; then + echo "Disabling UnionFS for ${CWDIR}/system/var/db/pkg." + umount -f /var/db/pkg + fi extract_pkg } @@ -150,7 +168,7 @@ unionfs_on() { echo "Enabling UnionFS for ${CWDIR}/system/usr/local." mount_unionfs -o above ${CWDIR}/system/usr/local /usr/local fi - + if ! df | grep -q "${CWDIR}/system/var/run"; then echo "Enabling UnionFS for ${CWDIR}/system/var/run." mount_unionfs -o avobe ${CWDIR}/system/var/run /var/run diff --git a/version b/version index 6189d86..14ca448 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.04 +1.2.05 From ba81b6943bbb455df0ea798f777c929f95d8ed02 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Wed, 17 Sep 2025 03:37:11 -0400 Subject: [PATCH 30/80] Code changes, symlink files in embedded platforms Code changes, symlink bundled files in embedded platforms, set file permissions. --- CHANGELOG | 1 + bastille-init | 71 ++++++++++-------- .../system/freebsd-update/14.3/freebsd-update | 0 conf/system/include/14.3/ar | Bin conf/system/include/14.3/diff3 | Bin conf/system/include/14.3/jib | 0 conf/system/include/14.3/makewhatis | Bin conf/system/include/14.3/pfctl | Bin conf/system/include/14.3/pfilctl | Bin conf/system/include/14.3/pflogd | Bin conf/system/include/14.3/setfib | Bin conf/system/include/14.3/sum | Bin unionfs.sh | 0 version | 2 +- 14 files changed, 43 insertions(+), 31 deletions(-) mode change 100644 => 100755 conf/system/freebsd-update/14.3/freebsd-update mode change 100644 => 100755 conf/system/include/14.3/ar mode change 100644 => 100755 conf/system/include/14.3/diff3 mode change 100644 => 100755 conf/system/include/14.3/jib mode change 100644 => 100755 conf/system/include/14.3/makewhatis mode change 100644 => 100755 conf/system/include/14.3/pfctl mode change 100644 => 100755 conf/system/include/14.3/pfilctl mode change 100644 => 100755 conf/system/include/14.3/pflogd mode change 100644 => 100755 conf/system/include/14.3/setfib mode change 100644 => 100755 conf/system/include/14.3/sum mode change 100644 => 100755 unionfs.sh diff --git a/CHANGELOG b/CHANGELOG index b612730..ac4e9ef 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.06......Code changes, symlink bundled files in embedded platforms. 1.2.05......Mount unionfs for pkg while fetching debootstrap packages. 1.2.04......Fix for missing variable affecting embedded platforms, thanks to tga. 1.2.03......Added post upgrade function for convenience, cleanup obsolete code. diff --git a/bastille-init b/bastille-init index 179a34d..93311a8 100644 --- a/bastille-init +++ b/bastille-init @@ -343,9 +343,13 @@ extension_upgrade() create_addon_env() { - # Set bastille dir required permissions. + # Set bastille dir/files required permissions. chmod 0750 ${CWDIR} + if [ -f "${CWDIR}/unionfs.sh" ]; then + chmod 0755 ${CWDIR}/unionfs.sh + fi + # Create required directories. if [ ! -d "${CWDIR}/backups" ]; then mkdir -p ${CWDIR}/backups @@ -448,35 +452,42 @@ include_files() if [ "$(freebsd-version | cut -d '.' -f1)" -ge 12 ]; then sysrc -f ${CWDIR}${EXTCONF} VNET_ENABLE="YES" >/dev/null 2>&1 # Include missing system files. - if [ ! -f "/usr/bin/ar" ]; then - if [ -f "${SYSTEM_INCLUDE}/ar" ]; then - install -m 0555 ${SYSTEM_INCLUDE}/ar /usr/bin/ar - fi - fi - if [ ! -f "/usr/local/bin/jib" ]; then - if [ -f "${SYSTEM_INCLUDE}/jib" ]; then - install -m 0544 ${SYSTEM_INCLUDE}/jib /usr/local/bin/jib - fi - fi - if [ ! -f "/usr/sbin/setfib" ]; then - if [ -f "${SYSTEM_INCLUDE}/setfib" ]; then - install -m 0555 ${SYSTEM_INCLUDE}/setfib /usr/sbin/setfib - fi - fi - if [ ! -f "/usr/bin/sum" ]; then - if [ -f "${SYSTEM_INCLUDE}/sum" ]; then - install -m 0555 ${SYSTEM_INCLUDE}/sum /usr/bin/sum - fi - fi - if [ ! -f "/usr/bin/diff3" ]; then - if [ -f "${SYSTEM_INCLUDE}/diff3" ]; then - install -m 0555 ${SYSTEM_INCLUDE}/diff3 /usr/bin/diff3 - fi - fi - if [ ! -f "/usr/bin/makewhatis" ]; then - if [ -f "${SYSTEM_INCLUDE}/makewhatis" ]; then - install -m 0555 ${SYSTEM_INCLUDE}/makewhatis /usr/bin/makewhatis - fi + # Symlink the files in embedded platforms. + USRBIN_FILES="ar diff3 makewhatis setfib sum" + LOCALBIN_FILES="jib" + if [ "${PRDPLATFORM}" = "x64-embedded" ]; then + for _usrbin_file in ${USRBIN_FILES}; do + if [ -f "/usr/bin/${_usrbin_file}" ] && [ ! -L "/usr/bin/${_usrbin_file}" ]; then + rm -r /usr/bin/${_usrbin_file} + fi + if [ ! -f "/usr/bin/${_usrbin_file}" ]; then + chmod 0555 "${SYSTEM_INCLUDE}/${_usrbin_file}" + ln -fhs ${SYSTEM_INCLUDE}/${_usrbin_file} /usr/bin/${_usrbin_file} + fi + done + for _localbin_file in ${LOCALBIN_FILES}; do + if [ -f "/usr/local/bin/${_localbin_file}" ] && [ ! -L "/usr/local/bin/${_localbin_file}" ]; then + rm -r /usr/local/bin/${_localbin_file} + fi + if [ ! -f "/usr/bin/${_localbin_file}" ]; then + chmod 0555 "${SYSTEM_INCLUDE}/${_localbin_file}" + ln -fhs ${SYSTEM_INCLUDE}/${_localbin_file} /usr/local/bin/${_localbin_file} + fi + done + else + # Install the files in full platforms natively. + for _usrbin_file in ${USRBIN_FILES}; do + if [ ! -f "/usr/bin/${_usrbin_file}" ]; then + install -m 0555 "${SYSTEM_INCLUDE}/${_usrbin_file}" /usr/bin/${_usrbin_file} + fi + done + for _localbin_file in ${LOCALBIN_FILES}; do + if [ ! -f "/usr/local/bin/${_localbin_file}" ]; then + if [ -f "${SYSTEM_INCLUDE}/${_localbin_file}" ]; then + install -m 0544 ${SYSTEM_INCLUDE}/${_localbin_file} /usr/local/bin/${_localbin_file} + fi + fi + done fi else sysrc -f ${CWDIR}${EXTCONF} VNET_ENABLE="NO" >/dev/null 2>&1 diff --git a/conf/system/freebsd-update/14.3/freebsd-update b/conf/system/freebsd-update/14.3/freebsd-update old mode 100644 new mode 100755 diff --git a/conf/system/include/14.3/ar b/conf/system/include/14.3/ar old mode 100644 new mode 100755 diff --git a/conf/system/include/14.3/diff3 b/conf/system/include/14.3/diff3 old mode 100644 new mode 100755 diff --git a/conf/system/include/14.3/jib b/conf/system/include/14.3/jib old mode 100644 new mode 100755 diff --git a/conf/system/include/14.3/makewhatis b/conf/system/include/14.3/makewhatis old mode 100644 new mode 100755 diff --git a/conf/system/include/14.3/pfctl b/conf/system/include/14.3/pfctl old mode 100644 new mode 100755 diff --git a/conf/system/include/14.3/pfilctl b/conf/system/include/14.3/pfilctl old mode 100644 new mode 100755 diff --git a/conf/system/include/14.3/pflogd b/conf/system/include/14.3/pflogd old mode 100644 new mode 100755 diff --git a/conf/system/include/14.3/setfib b/conf/system/include/14.3/setfib old mode 100644 new mode 100755 diff --git a/conf/system/include/14.3/sum b/conf/system/include/14.3/sum old mode 100644 new mode 100755 diff --git a/unionfs.sh b/unionfs.sh old mode 100644 new mode 100755 diff --git a/version b/version index 14ca448..a499c27 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.05 +1.2.06 From 21eaa96e26eff9ac0e65ee271f04fedc32950108 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Wed, 17 Sep 2025 03:41:57 -0400 Subject: [PATCH 31/80] Minor cosmetic/wording changes. --- CHANGELOG | 1 + bastille-init | 2 +- version | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index ac4e9ef..17778aa 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.07......Minor cosmetic/wording changes. 1.2.06......Code changes, symlink bundled files in embedded platforms. 1.2.05......Mount unionfs for pkg while fetching debootstrap packages. 1.2.04......Fix for missing variable affecting embedded platforms, thanks to tga. diff --git a/bastille-init b/bastille-init index 93311a8..5bb3ab0 100644 --- a/bastille-init +++ b/bastille-init @@ -1220,7 +1220,7 @@ post_upgrade() ${CWDIR}/post_upgrade.sh sleep 5 else - echo "Nothing to do." + echo "No post upgrade changes pending." fi sysrc -f ${CWDIR}${EXTCONF} EXTENSION_UPGRADED="0" >/dev/null 2>&1 fi diff --git a/version b/version index a499c27..d7c81ce 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.06 +1.2.07 From 9a6ef9031e3e37fbb7624eab48340fd8bf009688 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Wed, 17 Sep 2025 07:56:11 -0400 Subject: [PATCH 32/80] Code cleanup, remove unnecessary statement --- CHANGELOG | 1 + bastille-init | 4 +--- version | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) mode change 100644 => 100755 bastille-init diff --git a/CHANGELOG b/CHANGELOG index 17778aa..1dda772 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.08......Code cleanup, remove unnecessary statement. 1.2.07......Minor cosmetic/wording changes. 1.2.06......Code changes, symlink bundled files in embedded platforms. 1.2.05......Mount unionfs for pkg while fetching debootstrap packages. diff --git a/bastille-init b/bastille-init old mode 100644 new mode 100755 index 5bb3ab0..88ad118 --- a/bastille-init +++ b/bastille-init @@ -483,9 +483,7 @@ include_files() done for _localbin_file in ${LOCALBIN_FILES}; do if [ ! -f "/usr/local/bin/${_localbin_file}" ]; then - if [ -f "${SYSTEM_INCLUDE}/${_localbin_file}" ]; then - install -m 0544 ${SYSTEM_INCLUDE}/${_localbin_file} /usr/local/bin/${_localbin_file} - fi + install -m 0544 ${SYSTEM_INCLUDE}/${_localbin_file} /usr/local/bin/${_localbin_file} fi done fi diff --git a/version b/version index d7c81ce..81ca9ab 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.07 +1.2.08 From 3a24390b0d418b7c50fabefc3ba465e2e5264295 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Tue, 23 Sep 2025 11:12:05 -0400 Subject: [PATCH 33/80] Add Debian keyring and minor code changes --- CHANGELOG | 1 + bastille-init | 2 ++ unionfs.sh | 2 +- version | 2 +- 4 files changed, 5 insertions(+), 2 deletions(-) mode change 100755 => 100644 bastille-init mode change 100755 => 100644 unionfs.sh diff --git a/CHANGELOG b/CHANGELOG index 1dda772..96f793b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.09......Add Debian keyring and minor code changes. 1.2.08......Code cleanup, remove unnecessary statement. 1.2.07......Minor cosmetic/wording changes. 1.2.06......Code changes, symlink bundled files in embedded platforms. diff --git a/bastille-init b/bastille-init old mode 100755 new mode 100644 index 88ad118..f014c1e --- a/bastille-init +++ b/bastille-init @@ -1539,6 +1539,7 @@ bootstrap_dist() # Workaround since XigmaNAS does not ship with debootstrap command. if sysrc -f ${CWDIR}${EXTCONF} -qc LINUX_COMPAT_SUPPORT=YES; then # List of tested/working Linux distributions on FreeBSD 14.x. + #LINUX_FLAVORS="ubuntu-bionic ubuntu-focal ubuntu-jammy ubuntu-noble debian-buster debian-bullseye debian-bookworm" LINUX_FLAVORS="ubuntu-bionic ubuntu-focal ubuntu-jammy" if [ -n "${LINUX_DIST}" ]; then for _linux_flavor in ${LINUX_FLAVORS}; do @@ -1554,6 +1555,7 @@ bootstrap_dist() if [ -z "${LINUX_FLAVOR}" ]; then echo "Available Linux flavors:" echo "${LINUX_FLAVORS}" + echo -e "\nTo fetch latest debootstrap/keyring packages run 'bastille-init update_debootstrap'" exit 1 fi diff --git a/unionfs.sh b/unionfs.sh old mode 100755 new mode 100644 index 814273e..9ccc38e --- a/unionfs.sh +++ b/unionfs.sh @@ -120,7 +120,7 @@ fetch_pkg() { echo "Fetching required packages." # Fetch deboostrap and dependency packages. - pkg fetch -y -d -o ${CWDIR}/system/ debootstrap || error_notify "Error while fetching packages, exiting." + pkg fetch -y -d -o ${CWDIR}/system/ debootstrap debian-keyring || error_notify "Error while fetching packages, exiting." echo "Done." if df | grep -q "${CWDIR}/system/var/db/pkg"; then diff --git a/version b/version index 81ca9ab..5ee34e6 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.08 +1.2.09 From d60abe962dc05210ab142d1832642fff46549eba Mon Sep 17 00:00:00 2001 From: JRGTH Date: Tue, 23 Sep 2025 14:42:53 -0400 Subject: [PATCH 34/80] Minor code improvements and cleanup --- CHANGELOG | 1 + bastille-init | 6 +++--- unionfs.sh | 40 +++++++++++++++++++++++++++++++--------- version | 2 +- 4 files changed, 36 insertions(+), 13 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 96f793b..f296b60 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.10......Minor code improvements and cleanup. 1.2.09......Add Debian keyring and minor code changes. 1.2.08......Code cleanup, remove unnecessary statement. 1.2.07......Minor cosmetic/wording changes. diff --git a/bastille-init b/bastille-init index f014c1e..73c2106 100644 --- a/bastille-init +++ b/bastille-init @@ -1568,9 +1568,9 @@ bootstrap_dist() # Disable debootstrap environment. ${CWDIR}/unionfs.sh unionfs_off - else - echo "Linux compatibility disabled." - exit 1 + else + echo "Linux compatibility disabled." + exit 1 fi exit 0 diff --git a/unionfs.sh b/unionfs.sh index 9ccc38e..c01a004 100644 --- a/unionfs.sh +++ b/unionfs.sh @@ -52,6 +52,7 @@ error_notify() { MSG="${*}" logger -t "${SCRIPTNAME}" "${MSG}" echo -e "${MSG}" >&2 + unionfs_disable exit 1 } @@ -105,6 +106,31 @@ unload_kmods() { fi } +unionfs_disable() { + # Check and disable uniofs mounts on error. + unionfs_pkgoff + unionfs_off +} + +unionfs_pkgon() { + if ! df | grep -q "${CWDIR}/system/var/db/pkg"; then + echo "Enabling UnionFS for ${CWDIR}/system/var/db/pkg." + mount_unionfs -o avobe ${CWDIR}/system/var/db/pkg /var/db/pkg + fi +} + +unionfs_pkgoff() { + if df | grep -q "${CWDIR}/system/var/db/pkg"; then + echo "Disabling UnionFS for ${CWDIR}/system/var/db/pkg." + umount -f /var/db/pkg + fi +} + +fetch_cmd() { + PKG_LIST="debootstrap debian-keyring" + pkg fetch -y -d -o ${CWDIR}/system/ ${PKG_LIST} +} + fetch_pkg() { if [ ! -d "/var/db/pkg" ]; then mkdir -p "/var/db/pkg" @@ -113,20 +139,16 @@ fetch_pkg() { mkdir -p ${CWDIR}/system/var/db/pkg fi - if ! df | grep -q "${CWDIR}/system/var/db/pkg"; then - echo "Enabling UnionFS for ${CWDIR}/system/var/db/pkg." - mount_unionfs -o avobe ${CWDIR}/system/var/db/pkg /var/db/pkg - fi + unionfs_pkgon echo "Fetching required packages." # Fetch deboostrap and dependency packages. - pkg fetch -y -d -o ${CWDIR}/system/ debootstrap debian-keyring || error_notify "Error while fetching packages, exiting." + fetch_cmd || echo "Cleaning addon stale pkg db" + rm -rf ${CWDIR}/system/var/db/pkg/* + fetch_cmd || error_notify "Error while fetching packages, exiting." echo "Done." - if df | grep -q "${CWDIR}/system/var/db/pkg"; then - echo "Disabling UnionFS for ${CWDIR}/system/var/db/pkg." - umount -f /var/db/pkg - fi + unionfs_pkgoff extract_pkg } diff --git a/version b/version index 5ee34e6..963ed7c 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.09 +1.2.10 From c6d769e4d54ffcfec7fee50ec1a8eb34dbb30155 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sun, 28 Sep 2025 03:56:14 -0400 Subject: [PATCH 35/80] Add all bastille Linux flavors bootstrap options --- bastille-init | 3 +-- unionfs.sh | 9 +++++++-- version | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/bastille-init b/bastille-init index 73c2106..369b004 100644 --- a/bastille-init +++ b/bastille-init @@ -1539,8 +1539,7 @@ bootstrap_dist() # Workaround since XigmaNAS does not ship with debootstrap command. if sysrc -f ${CWDIR}${EXTCONF} -qc LINUX_COMPAT_SUPPORT=YES; then # List of tested/working Linux distributions on FreeBSD 14.x. - #LINUX_FLAVORS="ubuntu-bionic ubuntu-focal ubuntu-jammy ubuntu-noble debian-buster debian-bullseye debian-bookworm" - LINUX_FLAVORS="ubuntu-bionic ubuntu-focal ubuntu-jammy" + LINUX_FLAVORS="ubuntu-bionic ubuntu-focal ubuntu-jammy ubuntu-noble debian-buster debian-bullseye debian-bookworm" if [ -n "${LINUX_DIST}" ]; then for _linux_flavor in ${LINUX_FLAVORS}; do diff --git a/unionfs.sh b/unionfs.sh index c01a004..1d1321e 100644 --- a/unionfs.sh +++ b/unionfs.sh @@ -52,7 +52,7 @@ error_notify() { MSG="${*}" logger -t "${SCRIPTNAME}" "${MSG}" echo -e "${MSG}" >&2 - unionfs_disable + posterror_exec exit 1 } @@ -106,6 +106,11 @@ unload_kmods() { fi } +posterror_exec() { + # Commands to be executed post errors. + unionfs_disable +} + unionfs_disable() { # Check and disable uniofs mounts on error. unionfs_pkgoff @@ -143,7 +148,7 @@ fetch_pkg() { echo "Fetching required packages." # Fetch deboostrap and dependency packages. - fetch_cmd || echo "Cleaning addon stale pkg db" + fetch_cmd || echo "Cleaning addon stale pkg db and retry..." rm -rf ${CWDIR}/system/var/db/pkg/* fetch_cmd || error_notify "Error while fetching packages, exiting." echo "Done." diff --git a/version b/version index 963ed7c..c114700 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.10 +1.2.11 From 3e8e2305ae3d678ac31c804c9fb674bb9a17ccf5 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sun, 28 Sep 2025 04:21:28 -0400 Subject: [PATCH 36/80] Minor code improvements, clean stale pkg on error Minor code improvements, clean stale pkg files on error. --- CHANGELOG | 2 ++ unionfs.sh | 5 +++++ version | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index f296b60..348f421 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,8 @@ ====================== Version Description +1.2.12......Minor code improvements, clean stale pkg files on error. +1.2.11......Add all bastille Linux flavors bootstrap options. 1.2.10......Minor code improvements and cleanup. 1.2.09......Add Debian keyring and minor code changes. 1.2.08......Code cleanup, remove unnecessary statement. diff --git a/unionfs.sh b/unionfs.sh index 1d1321e..165c484 100644 --- a/unionfs.sh +++ b/unionfs.sh @@ -109,6 +109,11 @@ unload_kmods() { posterror_exec() { # Commands to be executed post errors. unionfs_disable + + # Clean for stale pkg. + if [ -d "${CWDIR}/system/All" ]; then + rm -r ${CWDIR}/system/All + fi } unionfs_disable() { diff --git a/version b/version index c114700..f2ae0b4 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.11 +1.2.12 From fb036a29da3a5f59822899c605c4ea666254992b Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sun, 5 Oct 2025 01:06:40 -0400 Subject: [PATCH 37/80] Fallback for custom bastille prefix name Fallback for custom bastille prefix name, for example capitalized "Bastille" prefix. --- CHANGELOG | 1 + bastille-init | 19 ++++++++++++------- unionfs.sh | 0 version | 2 +- 4 files changed, 14 insertions(+), 8 deletions(-) mode change 100644 => 100755 bastille-init mode change 100644 => 100755 unionfs.sh diff --git a/CHANGELOG b/CHANGELOG index 348f421..8868d3f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.13... ..Fallback for custom bastille prefix name. 1.2.12......Minor code improvements, clean stale pkg files on error. 1.2.11......Add all bastille Linux flavors bootstrap options. 1.2.10......Minor code improvements and cleanup. diff --git a/bastille-init b/bastille-init old mode 100644 new mode 100755 index 369b004..0fca6a7 --- a/bastille-init +++ b/bastille-init @@ -103,6 +103,11 @@ BASTILLE_ZFS_ZPOOL_MOUNTPOINT_TRIM= # Get extension ZFS config info. if [ "${bastille_zfs_enable}" = "YES" ] || [ "${bastille_zfs_enable}" = "yes" ]; then if [ -n "${bastille_zfs_prefix}" ] && [ -n "${bastille_zfs_zpool}" ]; then + DAFAULT_BASTILLE_PREFIX="${APPNAME}" + if [ "${CWDIR##*/}" != "${APPNAME}" ]; then + # Assume custom bastille prefix. + DAFAULT_BASTILLE_PREFIX="${CWDIR##*/}" + fi # Always enforce ZFS activation below "/mnt/" from the extension. if echo "${CWDIR}" | grep -q '/mnt/'; then CWDIR_TRIM=$(echo "${CWDIR}" | sed "s|/mnt/||;s|/${bastille_zfs_prefix}||") @@ -111,7 +116,7 @@ if [ "${bastille_zfs_enable}" = "YES" ] || [ "${bastille_zfs_enable}" = "yes" ]; if echo "${BASTILLE_ZFS_ZPOOL_MOUNTPOINT}" | grep -q '/mnt/'; then BASTILLE_ZFS_ZPOOL_MOUNTPOINT_TRIM=$(echo "${BASTILLE_ZFS_ZPOOL_MOUNTPOINT}" | sed "s|/mnt/||;s|/${bastille_zfs_prefix}||") fi - BASTILLE_ZFS_PREFIX_TRIM=$(echo "${bastille_zfs_prefix}" | sed "s|/${APPNAME}||") + BASTILLE_ZFS_PREFIX_TRIM=$(echo "${bastille_zfs_prefix}" | sed "s|/${DAFAULT_BASTILLE_PREFIX}||") fi # Check bastille ZFS config match on disk ZFS config. BASTILLE_CONFIG_DISK=$(zfs list -H "${bastille_prefix}" 2>/dev/null | awk '{print $1}') @@ -1341,7 +1346,7 @@ rc_params() fi # Check and make sure bastille_zfs_prefix end with "bastille". - if ! echo "${bastille_zfs_prefix}" | grep -qw "${APPNAME}"; then + if ! echo "${bastille_zfs_prefix}" | grep -qw "${DAFAULT_BASTILLE_PREFIX}"; then zfs_support_error exit 1 fi @@ -1355,20 +1360,20 @@ rc_params() fi # Perform some checks against on-disk and file configurations. - if zfs list "${bastille_zfs_zpool}/${BASTILLE_ZFS_PREFIX_TRIM}/${APPNAME}" >/dev/null 2>&1; then + if zfs list "${bastille_zfs_zpool}/${BASTILLE_ZFS_PREFIX_TRIM}/${DAFAULT_BASTILLE_PREFIX}" >/dev/null 2>&1; then # Looks like ZFS support is already configured, then set parameters. zfs_support_enabled elif zfs list "${bastille_zfs_zpool}" >/dev/null 2>&1 && \ - [ "${bastille_zfs_prefix}" = "${BASTILLE_ZFS_PREFIX_TRIM}/${APPNAME}" ]; then + [ "${bastille_zfs_prefix}" = "${BASTILLE_ZFS_PREFIX_TRIM}/${DAFAULT_BASTILLE_PREFIX}" ]; then # Looks like ZFS support is available for activation. zfs_support_avail - elif zfs list "${bastille_zfs_zpool}/${APPNAME}" >/dev/null 2>&1; then + elif zfs list "${bastille_zfs_zpool}/${DAFAULT_BASTILLE_PREFIX}" >/dev/null 2>&1; then zfs_support_enabled elif zfs list "${bastille_zfs_zpool}" >/dev/null 2>&1 && \ - [ "${BASTILLE_ZFS_PREFIX_TRIM}" = "${APPNAME}" ]; then + [ "${BASTILLE_ZFS_PREFIX_TRIM}" = "${DAFAULT_BASTILLE_PREFIX}" ]; then # Looks like ZFS support is available for activation. zfs_support_avail - elif zfs list "${bastille_zfs_zpool}/${APPNAME}" >/dev/null 2>&1; then + elif zfs list "${bastille_zfs_zpool}/${DAFAULT_BASTILLE_PREFIX}" >/dev/null 2>&1; then zfs_support_enabled else zfs_support_error diff --git a/unionfs.sh b/unionfs.sh old mode 100644 new mode 100755 diff --git a/version b/version index f2ae0b4..0b1f1ed 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.12 +1.2.13 From 4b0745ce64f92dbd4f77f81ad2e3f231fd5ded06 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sun, 5 Oct 2025 02:26:29 -0400 Subject: [PATCH 38/80] Make sure bastille-prefix ends with bastille --- CHANGELOG | 1 + bastille-init | 5 ++++- version | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 8868d3f..cac0a66 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.14......Make sure bastille-prefix ends with bastille. 1.2.13... ..Fallback for custom bastille prefix name. 1.2.12......Minor code improvements, clean stale pkg files on error. 1.2.11......Add all bastille Linux flavors bootstrap options. diff --git a/bastille-init b/bastille-init index 0fca6a7..f1ac1e2 100755 --- a/bastille-init +++ b/bastille-init @@ -1346,7 +1346,10 @@ rc_params() fi # Check and make sure bastille_zfs_prefix end with "bastille". - if ! echo "${bastille_zfs_prefix}" | grep -qw "${DAFAULT_BASTILLE_PREFIX}"; then + if echo "${DAFAULT_BASTILLE_PREFIX}" | ! grep -iq "${APPNAME}"; then + zfs_support_error + exit 1 + elif ! echo "${bastille_zfs_prefix}" | grep -qw "${DAFAULT_BASTILLE_PREFIX}"; then zfs_support_error exit 1 fi diff --git a/version b/version index 0b1f1ed..fd9d1a5 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.13 +1.2.14 From fcfe6b47b4bbc1c89aa308927e7fdbec2c31cee4 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sun, 5 Oct 2025 02:54:23 -0400 Subject: [PATCH 39/80] Minor code changes/improvements --- CHANGELOG | 1 + bastille-init | 4 ++-- version | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index cac0a66..2509bbb 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.15......Minor code changes/improvements. 1.2.14......Make sure bastille-prefix ends with bastille. 1.2.13... ..Fallback for custom bastille prefix name. 1.2.12......Minor code improvements, clean stale pkg files on error. diff --git a/bastille-init b/bastille-init index f1ac1e2..e93f2e4 100755 --- a/bastille-init +++ b/bastille-init @@ -1220,8 +1220,8 @@ post_upgrade() if sysrc -f ${CWDIR}${EXTCONF} -qc EXTENSION_UPGRADED=1; then if [ -f "${CWDIR}/post_upgrade.sh" ]; then echo "Executing post_upgrade.sh file..." - ${CWDIR}/post_upgrade.sh - sleep 5 + chmod +x ${CWDIR}/post_upgrade.sh && ${CWDIR}/post_upgrade.sh + sleep 3 else echo "No post upgrade changes pending." fi diff --git a/version b/version index fd9d1a5..1fc5b82 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.14 +1.2.15 From 9c10025dfd61650f3257a41fbbcdcbb815d475a8 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Mon, 13 Oct 2025 06:14:09 -0400 Subject: [PATCH 40/80] Disable zfs warnings if bastille_zfs_enable = NO Disable zfs activation warnings if bastille_zfs_enable is set to NO --- CHANGELOG | 1 + bastille-init | 4 ++-- version | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) mode change 100755 => 100644 bastille-init diff --git a/CHANGELOG b/CHANGELOG index 2509bbb..07ed111 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.16......Disable zfs activation warnings if bastille_zfs_enable is set to NO. 1.2.15......Minor code changes/improvements. 1.2.14......Make sure bastille-prefix ends with bastille. 1.2.13... ..Fallback for custom bastille prefix name. diff --git a/bastille-init b/bastille-init old mode 100755 new mode 100644 index e93f2e4..1716eb6 --- a/bastille-init +++ b/bastille-init @@ -1286,7 +1286,7 @@ zfs_support_avail() zfs_support_disabled() { sysrc -f ${CWDIR}${EXTCONF} ZFS_SUPPORT="NO" >/dev/null 2>&1 - sysrc -f ${CWDIR}${EXTCONF} -x ZFS_ACTIVATED >/dev/null 2>&1 + sysrc -f ${CWDIR}${EXTCONF} ZFS_ACTIVATED="NO" >/dev/null 2>&1 } rc_params() @@ -1389,7 +1389,7 @@ rc_params() fi else # Check for orphaned configuration and/or config reset. - if zfs list -H "${CWDIR}" >/dev/null 2>&1; then + if zfs list -H "${CWDIR}" | awk '{print $1}' | grep -qw "${DAFAULT_BASTILLE_PREFIX}"; then zfs_support_error else zfs_support_disabled diff --git a/version b/version index 1fc5b82..f69752a 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.15 +1.2.16 From 0e3ceeee70c80d2cd6a2339b44a92ee6ab76ddf3 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Mon, 13 Oct 2025 07:33:21 -0400 Subject: [PATCH 41/80] Check if bastille_zfs_enable is actually set to NO Check if bastille_zfs_enable is actually set to NO before zfs disable --- CHANGELOG | 1 + bastille-init | 4 +++- version | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) mode change 100644 => 100755 bastille-init diff --git a/CHANGELOG b/CHANGELOG index 07ed111..7653e77 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.17......Check if bastille_zfs_enable is actually set to NO before zfs disable. 1.2.16......Disable zfs activation warnings if bastille_zfs_enable is set to NO. 1.2.15......Minor code changes/improvements. 1.2.14......Make sure bastille-prefix ends with bastille. diff --git a/bastille-init b/bastille-init old mode 100644 new mode 100755 index 1716eb6..857fea8 --- a/bastille-init +++ b/bastille-init @@ -1392,7 +1392,9 @@ rc_params() if zfs list -H "${CWDIR}" | awk '{print $1}' | grep -qw "${DAFAULT_BASTILLE_PREFIX}"; then zfs_support_error else - zfs_support_disabled + if [ "${bastille_zfs_enable}" = "NO" ] || [ "${bastille_zfs_enable}" = "no" ]; then + zfs_support_disabled + fi fi fi diff --git a/version b/version index f69752a..b66183a 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.16 +1.2.17 From 307999ab54cf48a312489a603dfd796587ece9ad Mon Sep 17 00:00:00 2001 From: JRGTH Date: Thu, 16 Oct 2025 19:52:32 -0400 Subject: [PATCH 42/80] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2b25869..5032784 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,6 @@ **Credits:** - Christer Edwards (cedwards) Bastille, J.M. Rivera (JRGTH) XigmaNAS Add-on. + Christer Edwards (cedwards) Bastille, J.M. Rivera (JRGTH) Bastille and XigmaNAS Add-on. Additional information on Bastille: http://bastillebsd.org/ From 901983378c43448c6720921d832283db20a2fb55 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sat, 18 Oct 2025 13:52:29 -0400 Subject: [PATCH 43/80] Fix typo in tarballs download page, thanks to Lux --- CHANGELOG | 1 + gui/bastille_manager_tarballs.php | 2 +- version | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 7653e77..1581869 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.18......Fix typo in tarballs download page, thanks to Lux. 1.2.17......Check if bastille_zfs_enable is actually set to NO before zfs disable. 1.2.16......Disable zfs activation warnings if bastille_zfs_enable is set to NO. 1.2.15......Minor code changes/improvements. diff --git a/gui/bastille_manager_tarballs.php b/gui/bastille_manager_tarballs.php index 1dca4c3..4c4576f 100644 --- a/gui/bastille_manager_tarballs.php +++ b/gui/bastille_manager_tarballs.php @@ -83,7 +83,7 @@ if ($linux_compat_support == "YES"): '14.2-RELEASE' => gettext('14.2-RELEASE'), '14.1-RELEASE' => gettext('14.1-RELEASE'), '14.0-RELEASE' => gettext('14.0-RELEASE'), - '13.5-RELEASE' => gettext('13.4-RELEASE'), + '13.5-RELEASE' => gettext('13.5-RELEASE'), '13.4-RELEASE' => gettext('13.4-RELEASE'), // Linux base release bootstrap is allowed from command-line. //'ubuntu-jammy' => gettext('Ubuntu-noble'), diff --git a/version b/version index b66183a..591bdbc 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.17 +1.2.18 From 7e325df51b940250fa7995bc0248c410fdd36688 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sat, 18 Oct 2025 14:17:43 -0400 Subject: [PATCH 44/80] Update bastille_manager_tarballs.php --- gui/bastille_manager_tarballs.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/bastille_manager_tarballs.php b/gui/bastille_manager_tarballs.php index 4c4576f..e6a893c 100644 --- a/gui/bastille_manager_tarballs.php +++ b/gui/bastille_manager_tarballs.php @@ -86,7 +86,7 @@ if ($linux_compat_support == "YES"): '13.5-RELEASE' => gettext('13.5-RELEASE'), '13.4-RELEASE' => gettext('13.4-RELEASE'), // Linux base release bootstrap is allowed from command-line. - //'ubuntu-jammy' => gettext('Ubuntu-noble'), + //'ubuntu-noble' => gettext('Ubuntu-noble'), //'ubuntu-jammy' => gettext('Ubuntu-Jammy'), //'ubuntu-focal' => gettext('Ubuntu-Focal'), //'ubuntu-bionic' => gettext('Ubuntu-Bionic'), From 05e89da69d79295b43425fdabc8ede6989e447cd Mon Sep 17 00:00:00 2001 From: JRGTH Date: Tue, 21 Oct 2025 10:05:03 -0400 Subject: [PATCH 45/80] Fix typo in tarballs and cleanup, thanks to Lux --- CHANGELOG | 1 + gui/bastille_manager_editor.php | 4 ++-- gui/bastille_manager_maintenance.php | 10 +++++----- gui/bastille_manager_tarballs.php | 8 ++++---- gui/bastille_manager_util.php | 4 ++-- version | 2 +- 6 files changed, 15 insertions(+), 14 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 1581869..c0f95b0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.19......Fix typo in tarballs page and cleanup, thanks to Lux. 1.2.18......Fix typo in tarballs download page, thanks to Lux. 1.2.17......Check if bastille_zfs_enable is actually set to NO before zfs disable. 1.2.16......Disable zfs activation warnings if bastille_zfs_enable is set to NO. diff --git a/gui/bastille_manager_editor.php b/gui/bastille_manager_editor.php index 4f096f9..8b5d2fe 100644 --- a/gui/bastille_manager_editor.php +++ b/gui/bastille_manager_editor.php @@ -60,7 +60,7 @@ if(isset($_POST['submit'])) { } else { $savemsg = sprintf('%s %s', gtext('File not found'), $savetopath); $content = ''; - $savetopath = ''; + $savetopath = ''; } } break; @@ -128,7 +128,7 @@ $(window).on("load", function() { -


+
+
  • + + "; + echo ""; // loop through configuration $firstSection = true; // prevent first html_separator in loop - if (is_array($configArray) && !empty($configArray)) + if (is_array($configArray) && !empty($configArray)) foreach($configArray as $key => $line) { // traverse array, key = section $nameTag = str_replace(["[", "]", "."], "", $key); // create tag for post jump address and config changes if (is_array($line)) { diff --git a/gui/bastille_manager_editor.php b/gui/bastille_manager_editor.php index 8b5d2fe..9f1ba47 100644 --- a/gui/bastille_manager_editor.php +++ b/gui/bastille_manager_editor.php @@ -2,7 +2,7 @@ /* bastille_manager_editor.php - Copyright (c) 2019-2025 Jose Rivera (joserprg@gmail.com). + Copyright (c) 2019-2025 José Rivera (joserprg@gmail.com). All rights reserved. Portions of XigmaNAS® (https://www.xigmanas.com). diff --git a/gui/bastille_manager_gui.php b/gui/bastille_manager_gui.php index dc5abae..c3f828e 100644 --- a/gui/bastille_manager_gui.php +++ b/gui/bastille_manager_gui.php @@ -2,7 +2,7 @@ /* bastille_manager_gui.php - Copyright (c) 2019-2025 Jose Rivera (joserprg@gmail.com). + Copyright (c) 2019-2025 José Rivera (joserprg@gmail.com). All rights reserved. Portions of XigmaNAS® (https://www.xigmanas.com). diff --git a/gui/bastille_manager_info.php b/gui/bastille_manager_info.php index b78a67d..20607cf 100644 --- a/gui/bastille_manager_info.php +++ b/gui/bastille_manager_info.php @@ -2,7 +2,7 @@ /* bastille_manager_info.php - Copyright (c) 2019-2025 Jose Rivera (joserprg@gmail.com). + Copyright (c) 2019-2025 José Rivera (joserprg@gmail.com). All rights reserved. Portions of XigmaNAS® (https://www.xigmanas.com). @@ -147,7 +147,7 @@ $document->render();
    -
      -
    • +
        +
      • -
      • -
      -
    "; if (!empty($input_errors)) print_input_errors($input_errors); if (!empty($savemsg)) print_info_box($savemsg); - echo "
    - + gettext('13.4-RELEASE'), // Linux base release bootstrap is allowed from command-line. //'ubuntu-noble' => gettext('Ubuntu-noble'), - //'ubuntu-jammy' => gettext('Ubuntu-Jammy'), + //'ubuntu-jammy' => gettext('Ubuntu-Jammy'), //'ubuntu-focal' => gettext('Ubuntu-Focal'), //'ubuntu-bionic' => gettext('Ubuntu-Bionic'), //'debian-bookworm' => gettext('Debian-Bookworm'), @@ -203,7 +203,7 @@ if($_POST): // Do not delete base releases with containers child. if ($check_used): $errormsg .= sprintf(gtext('%s base appears to have containers child.'),$get_release); - else: + else: // Delete the FreeBSD base release/directory. if ($_POST['Destroy']): unset($output,$retval);mwexec2($cmd,$output,$retval); diff --git a/gui/bastille_manager_util.php b/gui/bastille_manager_util.php index 80505b4..ab71b33 100644 --- a/gui/bastille_manager_util.php +++ b/gui/bastille_manager_util.php @@ -2,7 +2,7 @@ /* bastille_manager_util.php - Copyright (c) 2019-2025 Jose Rivera (joserprg@gmail.com). + Copyright (c) 2019-2025 José Rivera (joserprg@gmail.com). All rights reserved. Portions of XigmaNAS® (https://www.xigmanas.com). diff --git a/unionfs.sh b/unionfs.sh index 8f2d89e..a60ddc2 100755 --- a/unionfs.sh +++ b/unionfs.sh @@ -10,7 +10,7 @@ # Debug script #set -x -# Copyright (c) 2019-2025, Jose Rivera (joserprg@gmail.com). +# Copyright (c) 2019-2025, José Rivera (joserprg@gmail.com). # All rights reserved. # Redistribution and use in source and binary forms, with or without diff --git a/version b/version index 8060c02..cba64f4 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.25 +1.2.26 From 5de394ffa8e7c7f6225c85dbe5e91e166816f038 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Wed, 19 Nov 2025 02:21:15 -0400 Subject: [PATCH 53/80] Minor cosmetic/wording changes --- CHANGELOG | 1 + gui/bastille_manager_util.php | 4 ++-- version | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index f0d66b3..2a3b325 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.27......Minor cosmetic/wording changes. 1.2.26......Minor cosmetic/wording changes. 1.2.25......Add 'etcupdate' missing command, update bundled files. 1.2.24......Minor code changes/improvements. diff --git a/gui/bastille_manager_util.php b/gui/bastille_manager_util.php index ab71b33..b866fdb 100644 --- a/gui/bastille_manager_util.php +++ b/gui/bastille_manager_util.php @@ -246,9 +246,9 @@ if($_POST): if($retval == 0): $update_release = exec("/usr/sbin/jexec -l {$item} freebsd-version"); if (($_POST['update_jail_force']) || ($_POST['update_base_force'])): - $savemsg .= sprintf(gtext("Container release forcefully updated to %s successfully."),$update_release); + $savemsg .= sprintf(gtext("Container release forcefully updated to %s successfully, a restart is required to apply pending changes."),$update_release); else: - $savemsg .= sprintf(gtext("Container release updated to %s successfully."),$update_release); + $savemsg .= sprintf(gtext("Container release updated to %s successfully, a restart is required to apply pending changes."),$update_release); endif; if ($_POST['update_base']): exec("/usr/local/bin/bastille config {$item} set osrelease $update_release"); diff --git a/version b/version index cba64f4..3b781da 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.26 +1.2.27 From 0f42237da9d29c17c0b33c48417a2b41dfa388d1 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sun, 23 Nov 2025 09:44:17 -0400 Subject: [PATCH 54/80] Minor cosmetic/wording changes --- CHANGELOG | 1 + gui/bastille_manager_maintenance.php | 2 +- version | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 2a3b325..7d9d7e0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.28......Minor cosmetic/wording changes. 1.2.27......Minor cosmetic/wording changes. 1.2.26......Minor cosmetic/wording changes. 1.2.25......Add 'etcupdate' missing command, update bundled files. diff --git a/gui/bastille_manager_maintenance.php b/gui/bastille_manager_maintenance.php index 9f1edaa..e2ad18a 100644 --- a/gui/bastille_manager_maintenance.php +++ b/gui/bastille_manager_maintenance.php @@ -364,7 +364,7 @@ $(document).ready(function(){
    " value=""/> " value="" /> - " value="" /> + " value="" /> " value="" />
    diff --git a/version b/version index 3b781da..f6b839d 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.27 +1.2.28 From 8005ac109f144f9a5ccb4aabdd11f25f08dc5ccf Mon Sep 17 00:00:00 2001 From: tschettervictor <85497460+tschettervictor@users.noreply.github.com> Date: Wed, 24 Dec 2025 15:15:45 -0700 Subject: [PATCH 55/80] =?UTF-8?q?=E2=80=94-safe=20>=20=E2=80=94-auto=20for?= =?UTF-8?q?=20backups?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gui/bastille_manager_util.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/bastille_manager_util.php b/gui/bastille_manager_util.php index b866fdb..e50d200 100644 --- a/gui/bastille_manager_util.php +++ b/gui/bastille_manager_util.php @@ -152,7 +152,7 @@ if($_POST): if ($zfs_activated == "YES"): if($pconfig['safemode']): if(!$skip_safemode): - $export_option = "--safe"; + $export_option = "--auto"; endif; endif; endif; From df2d5a8f86816f7ea303c7bf3d2c355b5bfa17f7 Mon Sep 17 00:00:00 2001 From: tschettervictor <85497460+tschettervictor@users.noreply.github.com> Date: Wed, 24 Dec 2025 15:18:51 -0700 Subject: [PATCH 56/80] 1.2.29 --- CHANGELOG | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 7d9d7e0..4b7d418 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,8 +1,9 @@ -====================== +====================== = Extension Bastille = ====================== Version Description +1.2.29......Fix jail backup. 1.2.28......Minor cosmetic/wording changes. 1.2.27......Minor cosmetic/wording changes. 1.2.26......Minor cosmetic/wording changes. From 759d1d061d9da34716d8bf05418d2f32f04804e8 Mon Sep 17 00:00:00 2001 From: tschettervictor <85497460+tschettervictor@users.noreply.github.com> Date: Wed, 24 Dec 2025 15:19:03 -0700 Subject: [PATCH 57/80] Update version --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index f6b839d..550c9e9 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.28 +1.2.29 From 2610a95a70d6a5ffeede2a3f5c6c24311f466397 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Thu, 25 Dec 2025 02:39:22 -0400 Subject: [PATCH 58/80] Add auto/live export modes, add ZST compression. This update adds auto and live export modes, also adds support for the fast lossless ZSTD compression algorithm. --- CHANGELOG | 1 + bastille-init | 112 +++++++++++++++++++--------------- conf/system/include/14.3/zstd | Bin 0 -> 950704 bytes gui/bastille_manager_util.php | 45 ++++++++++---- version | 2 +- 5 files changed, 98 insertions(+), 62 deletions(-) mode change 100755 => 100644 bastille-init create mode 100644 conf/system/include/14.3/zstd diff --git a/CHANGELOG b/CHANGELOG index 4b7d418..1f1df45 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.2.30......Add auto and live export modes, add ZST compression support. 1.2.29......Fix jail backup. 1.2.28......Minor cosmetic/wording changes. 1.2.27......Minor cosmetic/wording changes. diff --git a/bastille-init b/bastille-init old mode 100755 new mode 100644 index ba47f84..fcbada6 --- a/bastille-init +++ b/bastille-init @@ -145,58 +145,62 @@ error_notify() runtime_config() { # Run-time configuration and checks. - if [ -f "${INSTALLPATH}/${BASTILLECONF}" ]; then - if ! sysrc -f ${BASTILLECONF} -qc bastille_prefix="${CWDIR}"; then - sysrc -f ${INSTALLPATH}/${BASTILLECONF} bastille_prefix="${CWDIR}" >/dev/null 2>&1 - fi - fi + if [ -d "${INSTALLPATH}" ]; then - # Check for required directories and files. - if [ ! -d "${CWDIR}/backups" ]; then - mkdir -p ${CWDIR}/backups - fi - if [ ! -d "${CWDIR}/conf" ]; then - mkdir -p ${CWDIR}/conf - fi - if [ ! -d "${CWDIR}/log" ]; then - mkdir -p ${CWDIR}/log - fi - if [ ! -d "${CWDIR}/locale-bastille" ]; then - mkdir -p ${CWDIR}/locale-bastille - fi - if [ ! -d "${CWDIR}/freebsd-update" ]; then - mkdir ${CWDIR}/freebsd-update - fi - if [ ! -f "${CWDIR}${BASTILLECONFFILE}" ]; then - touch ${CWDIR}${BASTILLECONFFILE} - fi - if [ ! -d "${CWDIR}/system" ]; then - mkdir -p ${CWDIR}/system - fi - - # Check for permissions. - if [ -f "${FREEBSD_UPDATE}/freebsd-update" ]; then - FREEBSD_UPDATE_PERMS=$(stat -f "%Op" ${FREEBSD_UPDATE}/freebsd-update) - if [ "${FREEBSD_UPDATE_PERMS}" != 100555 ]; then - chmod 0555 ${FREEBSD_UPDATE}/freebsd-update - fi - fi - - # Workaround to check for host /tmp sane permissions. - # This is because after working with Linux jails, this may be changed to 0777 but XigmaNAS wants 1777. - if grep -qw '\"chmod\ 777\ /tmp\"' ${INSTALLPATH}/usr/local/share/bastille/create.sh; then - sed -i '' 's|\"chmod\ 777\ /tmp\"|\"chmod\ 1777\ /tmp\"|g' ${INSTALLPATH}/usr/local/share/bastille/create.sh - else - if [ -d "/tmp" ]; then - TMP_PERMS=$(stat -f "%Op" "/tmp") - if [ "${TMP_PERMS}" != "41777" ]; then - chmod 1777 /tmp + if [ -f "${INSTALLPATH}/${BASTILLECONF}" ]; then + if ! sysrc -f ${BASTILLECONF} -qc bastille_prefix="${CWDIR}"; then + sysrc -f ${INSTALLPATH}/${BASTILLECONF} bastille_prefix="${CWDIR}" >/dev/null 2>&1 fi fi - fi - # Check and append new config parameters. - update_config + # Check for required directories and files. + if [ ! -d "${CWDIR}/backups" ]; then + mkdir -p ${CWDIR}/backups + fi + if [ ! -d "${CWDIR}/conf" ]; then + mkdir -p ${CWDIR}/conf + fi + if [ ! -d "${CWDIR}/log" ]; then + mkdir -p ${CWDIR}/log + fi + if [ ! -d "${CWDIR}/locale-bastille" ]; then + mkdir -p ${CWDIR}/locale-bastille + fi + if [ ! -d "${CWDIR}/freebsd-update" ]; then + mkdir ${CWDIR}/freebsd-update + fi + if [ ! -f "${CWDIR}${BASTILLECONFFILE}" ]; then + touch ${CWDIR}${BASTILLECONFFILE} + fi + if [ ! -d "${CWDIR}/system" ]; then + mkdir -p ${CWDIR}/system + fi + + # Check for permissions. + if [ -f "${FREEBSD_UPDATE}/freebsd-update" ]; then + FREEBSD_UPDATE_PERMS=$(stat -f "%Op" ${FREEBSD_UPDATE}/freebsd-update) + if [ "${FREEBSD_UPDATE_PERMS}" != 100555 ]; then + chmod 0555 ${FREEBSD_UPDATE}/freebsd-update + fi + fi + + # Workaround to check for host /tmp sane permissions. + # This is because after working with Linux jails, this may be changed to 0777 but XigmaNAS wants 1777. + if grep -qw '\"chmod\ 777\ /tmp\"' ${INSTALLPATH}/usr/local/share/bastille/create.sh; then + sed -i '' 's|\"chmod\ 777\ /tmp\"|\"chmod\ 1777\ /tmp\"|g' ${INSTALLPATH}/usr/local/share/bastille/create.sh + else + if [ -d "/tmp" ]; then + TMP_PERMS=$(stat -f "%Op" "/tmp") + if [ "${TMP_PERMS}" != "41777" ]; then + chmod 1777 /tmp + fi + fi + fi + + # Check and append new config parameters. + update_config + + fi } bastille_initial_download() @@ -469,7 +473,7 @@ include_files() sysrc -f ${CWDIR}${EXTCONF} VNET_ENABLE="YES" >/dev/null 2>&1 # Include missing system files. # Symlink the files in embedded platforms. - USRBIN_FILES="ar diff3 makewhatis setfib sum" + USRBIN_FILES="ar diff3 makewhatis setfib sum zstd" USRSBIN_FILES="etcupdate" LOCALBIN_FILES="jib" if [ "${PRDPLATFORM}" = "x64-embedded" ]; then @@ -1042,7 +1046,7 @@ zfs_activate() else error_notify "Invalid ZFS configuration." fi - sysrc -f ${CWDIR}${EXTCONF} ZFS_ACTIVATED="YES" >/dev/null 2>&1 + zfs_support_enabled exit 0 } @@ -1504,6 +1508,14 @@ update_config() sysrc -f ${INSTALLPATH}/${BASTILLECONF} bastille_template_vlan="default/vlan" fi + # Compress/Decompress parameters. + if ! grep -qw 'bastille_compress_zst_options=' ${INSTALLPATH}/${BASTILLECONF}; then + sysrc -f ${INSTALLPATH}/${BASTILLECONF} bastille_compress_zst_options="-3 -v" + fi + if ! grep -qw 'bastille_decompress_zst_options=' ${INSTALLPATH}/${BASTILLECONF}; then + sysrc -f ${INSTALLPATH}/${BASTILLECONF} bastille_decompress_zst_options="-k -d -c -v" + fi + # Remove deprecated parameters based on minimum version. if grep -qw 'bastille_jail_interface' ${INSTALLPATH}/${BASTILLECONF}; then sysrc -f ${INSTALLPATH}/${BASTILLECONF} -x bastille_jail_interface diff --git a/conf/system/include/14.3/zstd b/conf/system/include/14.3/zstd new file mode 100644 index 0000000000000000000000000000000000000000..b9deb336832734ab84ce6941fce343e2b7e62f16 GIT binary patch literal 950704 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∨$S$s3tqo!Vq|EFidCwz(ZebZ3u+at3hRX-Y$7q}9%59~N)>SW?Gp=@v=r+0>xH83 zpP2Bq6z93rZ)u*38yJXN^yTMuaq?Hy5)*j>y<9rX(GITQ9y-0jm(bYBsJL~>FMBKS8!o`>chjqk-LV@{Jf=PiH4+Fj@`u(lUM32A|cFZ#4} z7s{}97t7!6#n||o-V4Fm=A1@M1h*Fk=AstLk~U&t7%)%ub(~@>ar5Wl(M$tP%W%MGt-Uf#?Z0Um&%%; zY^~~Z$cV|?`9r0D`SvGN8ct&xqozJHt_AmD-Iu@)TP>))`gU!D!MUQfc~DQh#?W|k z_r49{?LzMxi>mQK?;Fm{u|uq`7xap58SL^6h7*AeuTehb6Mc6EL*vpc9M!a%b%2P7 zrIN(44H`J;r9i289tt170N?EG5BzE7b{YT7-C9qrUNdvMrjkl?lde%o!*Y{`tE5r6 zNnZrdan;-&`rX=sU>VT}x6?BXjFxVM4;LtW*ETF^{)kdbx(7|@N#JqOoH=Pe=Ht#m z!V$&>VX*GQc=*XG2B89w*zs1v^We*L_Os-8q;Qbmn_RdkLn@QuOX8<6=S(2#?&9QJ zBTmr>Seq~MqAac^~2qi@3vf=D{sL? zU;*B$JtIY-b++jKMx=ZDXDakDVN3m0`!hwgr-b~lcHT@xyYSiJp(`@sffiAvk1wx|knf(Y zsS@?hVPaPtww(_8Cq`cV?R=ihs5Of1|MuWfdvj#98c4-C>0OYZ4yDbm9lE!)dvODX z0L6<&q;9zgo+|25AO23Pa4MDZAxO8LVwZ=K`l|?Hn3B?x{t9i%rp0F;kE~WB(tCW( z7+%%;B9$tjD?}ybk=g;MlO*w-s}9m}1-Il$o(QFw0fGXD!UaTiNtE>kOb{ytG zU)>7_iB2<-dQ^fFh7T31H-#R3{VlhHOV^bbys%Wdt8LgNo0XYM|G@TT>5o;4+P=(O z`tOn=Q|gGrK;c60Ye>_$!q_G=*%AFQ|ksssyolCR%ss&(ihJbICBPN3A9f z`V+9XTXI@Z*e!g97LLTZlgy)FN0wrZ=Yc07Ky z?7^b9y29rQ78Y|{7)w@@6&Gq7(-uM?x-oM<)GfPb#{%o>!n@=+=9KcEmGi!Pt7U(V z5y?=rpX~JaAK`V`mnO^K;A9Sc=D*KA{{!~?JKx~tfV^NbvU7`LXB7**%u6F*B&y2J zIJbi>i(&uvS%H^quy+??W%_q`i#J**kDV|^$1xHuz&|Ckw?q>CER(55GEt4BsH~}M zNAewozgQ+Al-jifcB&v?etI~fIGWnt0gdBAJron4f880FTu#d1R!}xijbxx2$v`!d z8RgodHu~Br58^jDZ^@LxGn2J>z9};Nb8?7O%cpK0=5PO#yy9W19puU_ZBdM;`Q3lw z?|uM!uuDKgW&5!`OrZjqe=_^>CZHjxRjpR_1pVdf76H#J9?-Tdt0k7G$Km(k@lUZD z{35nu$@W4XR>%D#U&S){wP2wmFI9p!dgg?s`<&i4;A8!X< zR5;~L(0<-9p>W%T6_~bifmP_6n1V+q6~Kv2WXB8kK~JJ8y==ZQXTK;(LM->-q;MjR zfBG;uIr4Mp(PC#Q9PV~&)&IiY1>^7Q@5#B&F*<2brq*t!R_&=hl18lSqdq_Vj!=i@0ez-Xr`NRopODjgj8M@mM29!(#ehaoEWRy{~VVyGU?QI8rgV1J4bmzr1SoU%_wN)LT>R z51MoIWzt4hFT65c>kKe#Osp9>HsF%w!$4#hDQKI3MSGxVpCo?JTTZTJb;V6rM<28) z&h;X!+O1-<3Kk5M@tvWbm^_?j5}40}${*HoU+-mZ{kk6Ce4rX^5xp1H(Ph&e4f02>mh;39-mgG^U;l3YCj?=gG{J|GS- z!00x`iuHVxUI4U?LDieF<+oiR7|L)I>IYEZ~`jCl7*S7X$@B8#X+fHaG! zVrAeDJ!%Kq-({_Td|vTY+=jjmYKJt13Kd5mPxe1+`l6%jQk_C zXMik`(4SA#*V5_kpN}%1G2*92xDMLg@wVadbiOMQb$>)5wuP>PsJNe6kyFEWdWo!x zCuiK=r;gs-+jnQ&u?*SI%8q&96`7VTd0;Nz7TVlO&Al&U8IF1>>r5V&j%IUxlO1;N z%hU{QzfG=hQP)MJEpz_Ao}v%sQuKSh6#e$xEpHN7p(6g=FMoM$OH;+!U-GN1eA0nm z|E~Sl=sK7B2}@^PCs%o&|71$~NoOe<*9nyfS!OApkSGwpN`)vh4AtZ^q+BY8@IOZA?okx--Ow(S ztcsr!hRglUiq=yB97bHVD$B_%v8T+UI+gW(2LQZpf#*Wfa0a1&F1Z-5GQ5{z-nbiO z2|mNY85c|*($Df|hx~=~O_%uI1nlDRzz91oWV;W{@JE+v)o%*j|KtCDNC)%yw~F{$ zSV+7nzvAqyS+lNoBH#SKTunZXb^TJ*qGDZlE{lfYx^w-OzTTBjmYa{^VX`QThsC|? zv6?hcEsH-Hd<4(3>q!z=bxrS0FO&ERO^|9P|?&3HpgV1W>IaqJh9eGYpaxL?NRnq3TyWk|eefdyS&) z&d3P>;b2^rK}szdiAXRHJ^L_fHHxrTRUFdci`xWT&O`#MsrL9`!XbOv;{idk<%+EP ziQ8%_vsfe&VV~S5pZ=Sq>`z*gJL@#9^7Wi0xF0i79grzNRzA_NB2CO=zOoueuds%RaRxPLZ z$p?_T|2LCZH$1w3eMS74QRbB*v9cYwQd{}^{~yT(;>eQBe~mbvV>9IlwpV2BZPcXp z$)oC3?FjqRhmsJWkF0#F@HYp(m<9zz<8B2LrJw6 zN{Xvp?*RE~bRP^icxXt%%`WA%>QsjLeCf zp^^kmN$OM#6oIBurGm1OdO)};qjI*BpzPR2qv(KBI?Jiy_{A|*K@)i$`tsf2aQ`AC z4OM}&)HqmM)S!~s528D2V&MI^lf6sHyS)UY7K1DSss0_2xnfaq))8c)vnu(p)9u}v z#bA$0WHA^Om*#!AzpFH9f!xS#`)tya}=jukhXQj#|lzx)l8eTxST5 ztRrS-*R;1CN^b65*3_7V0H?Em?G?ZJ$Sp@Vh4v8fOE#!PF_GQrm0I;p5SxTNIA(C* zqRwf-;}wD+(Nc~kYVBql3ou});xc|i;uz!KFX3~vDI66wE-WS50TJ*eLIG!Imx@sE z>H1{lue=Ry@(^yA=8U`;L-4{l*Vx38-vs|0UuJHODKO)wIAdQ*BME}(H=L7e>?Aa- zUqvBlyQ9|vy+HJ11Rz0ahYyX5p9RmW-nq7vi;L%R!+i6P0-ua`9QB z`l+~GZG(HOk^__eRcR~bZbPZA+}87*%5Xs-8U=SPeL{V&v{6EC=zZkkx~>tuqKnYo zsyesaT;yxDY#qYSccaLUk`>TsGp+A|Iqx<^&B(51QJ~2Ymz+rJkYkc5!|bU z>mZv6BIj?`?OG=Y7vT>D3^9y8m*GRjaTftY#8rw~4qplmz5GylPk&uGS3mOg{{SQ% zAxv980VGX6Z*%af@>P0xNmZUJycdWNyQMaCicpTkTj;|0Br($OJ-+BOgbUn>^ZCWD zG9?drFg7ucVnjb|ESt;i)rxJU%aI!{rE7Z!Hv7ZbA(n| zBi&edH7AZ`P0o2FhH$eRlYh^gD7;kW#^58~>ocD!l%IQ_k^{J1{6E0!vWEgPE6W}U z6oP~A%9$g^$2;qJc}reE)t$=8i3{69FMaF)lF(_PwWi(f^X>|MJ_jG=O2~%7DG{qG zkH}ElELRie#oXbCKa@o0;VR_lBo_zoS~X{hgzzJj^TfSOm#$4r5PTu|FQn$Kr-I+0 z@fdBizeF1y7!mQ0v3;XPYeTG2L$x8kQH2TjD8a+*eSBjs5uZ1g9t?^15%G^87V1!} z<6pd1jA+M>QgK^sKLH?mx(-Ox8CMtDbmGY4cUX%d?Kv~i@S059w+e@IsJHU(gpCqA zVs#9^Wo{1RysjZwh$(DxiSXq_!$!%B)h&(*TD9C>O_~#{4<=rHr;{K?xY%}x#fnxv zi8O+?i3`yfobN-I<20shSvJaFaq03!W)Z%rRDv?;ub_FtqR_vWP^)g$jZQh;)C=RG zuZ6#zANq0aozYt7rzK zUb>E23#C>@u!hb(Q(IUYx`*f(jYgE~rtLRha)M%Dau!+(>bCub@!By+Xd`Y|WSbgY z{gu3SKtT3v-nJN-VAe87@)js3C%?9`fhi9}s|(ShlYJ|pEHOuwd(gyrjT=hgU~Afb z^E&Js2RB(Mh6(wan5=(|hqc=JLVniO6zVE`7ZL)4^W()c717vX^+w;RC^v1&aT2RC z(WAV$o-SRdJ?WzdjARUPUI5sdU=XJTR_)M(_oefC82u^O{_W+Ir zROM(?W_KTMWU!bu4+|%3n^*5tngOg<{W`_y-57Cr{7U#{>=T`y!gNLlZ>DX!TO%{|Gw*d-F_Pkq91OPyRoX9brF&-w(T2`3!U*-IErAd)o%uSH3M z>4?N6gF#`Y8CNzY?V;mh-yutVXX+<5*IN<%!&%ai}ABu0&gE^yZrQEu$Qv92W4v*;=#Qp%z-o(q=bf9V-6lQ$#+7@nqL=QLC7 z{9NXookk?s3O$a83E^F0*kkKFjXqBYt6@}3=~Oq^{vBx(2Sg&gKC0?W z{LesuA)q%@)TmTrjV-CR3tenU#Wh1_%pIMPC?Z&;QnjwSwWVQ((5*0JHq5ammTZGdaO1c+Je^#`%*gs{=Ttu#-l)GhlIes4QFq5 z+56&ORu=PL119*VDCZQ3!fd*ieP^O_PFaLPHDce}ne8GDuvbq{z8+(7TAtQ*8Hp5} zP}TPt7>I;T?1c-%wAgLE3wL`)QX6KpzY@yI60F%{$T$8P!A#LuY6k{$_Rhf2-ceP63jDW+H?noi;BDiFO_yoG{tR_938CMl5dN2QI^BTQ+vfkVQibU=z8*zWu3lfR zTvgg5cXx`b3Yc6T@NH)igtJPZy>}3~Cnvkbzvor_q&v8!Jhht&tNOPb&b`BdZi#kT z888y8IdiCgeSQ?~&AF{SuH07eP6J(4&S+3qj=w6s^o~CxP4E8yqI_TMwH}!jm#|$Pf`YUf z`=zO>xP_=Fv(MQl>BLmQ_;0~^7p&J`ZvQq@-F>ZnW7Hh5isFAc}E!>^gA{?-2SL3#PNu) zO9&OC{|=fF6pMMnjw&`l-2Ef3$j6T`*HL={sQ}tB-tK~0;@h$VDv^HaRM1%fh!RH|0Q#-xZr?v&!M`Nzh+C0iwT$!2i4(zY3m%Kjr3p zpZ4rf(|#;hn>@wHDqC%=q?bWNk1wW+L2e2ax##epmz1)`s zi*oRKxbUJ(gE+vP0$w%m5Fp6GD=^m&{y=Fz%-tp&2A_jGPeU93K`@NntGJEk#Y*0u z;!L8qRyU5FePl9}`ml9@CBX0-;o+OrQ*S9qpX_wM4(9^WaZQm2F&baWgAd5%xAQ{>Y_oBi?psFNs$x+pgW8DL&sv@d6^y>)^@AhyS<81|Srb(y( zo`T;Tm4!}%sd@0L0Q`V!K=a_{jt9ECfjD_GPez9qvY)8$z<)wXMczs;!3}00#CiK4 zA|=@=nC~_pc$^QAP_Mw>s!*Vx{9O08LTd8766iPP1$wGc0zEYW`MV>;CCf2OXoi?- zJqBNh9QZNA;E%N95cAtSq0BW%s=;xipHR|-ofx&*z?UPGIRxDv9^S6z>U~99CjY#9 zTXgsikG8Hv$^?3JTF{g@zl*$p~f+ZL$iKuc6><4oQT@K8# z>?^_>DS0E;WC$;|=XM!H{9^jo4{`yQ7(J>-!o#<)V#u}dwOkAPqByJ*}}!i`&bh_^32L4Peth0DarFeO`h?J`GO$J zZ3xaMB1>a_{{CO%OYrV(;v*B#PBJ2JY(pUSJY^*8n-+-w`|ya>bjNEX>d>p{qu`9j zrQ42m6CgadKn3LTB>k_V&3@Kr3T;kbs$c*Dd@{Zq%mH7HMu^whDexsP&E{zY(k$}F zKpK&kUkB0%ahaiS&vipL4tw+rG3Jzbp?uO*d(*k572ri)mgv($b*$vgLU30CiTLo9 zD1QT?_Ah9fc3;UKk-mF`bwJbhBYo%LUrQ-@1ltxa5WRl~OX){}lcn!dODTsn8sI2n z2^!qYT5=#7sQ&#AfPYyo1OMVClZSupEA!I-1Ni?Cd?W{)!fZTZ%(l&TJZHv0kTvpr zIP8!VZ3;U+LVO7|9{}{p_<>Z+#R7gJuzU*qz-?wAKT%Fz0)U151U8|`uyCDzegZGh zb%I=nXv+=46AF}3yun+;3Ct{u9Yf^9c8f+*n$3-j5JNUujEzM2jGt-_(P`iZh7jJ!l$_AEgO`B z%x0PdEi2?R)N@D4AJi)N!1qN=0=KAAiDYlENcj*P2Dcbl*y0u=VZFpH=H-*zV#Juz zZf`|}XKzOfav;;aJ8XZ1%2D63f9zR`epB2W1IHX{B!R)6tXbK!i7mA%Kbz>Er`8by zHVWyr-y@hJh6t>+p;EK*usBOgK=AEE{KZOjT59_r#E8|?I`_29$5Z!i(I*Y(i3w{o zDu+nrv2gbJ@r1Z~4^#6dNf3e^&407bDf?SxUtXQe}3as6>|O7x|v?R!TQiGht| zcFq3=Zi@=e_#v(PD0zSD%f=sBJxs1{Gk!?s_L#ptBqa7# z<3LTZnKC*B`F8buU|1@ZPCQ7yDGm}EU-Hue2G-NRi=;_DC}4}<(@E=r$`hw&E3 zGJv>n4F=c;*jnl$t{O2CRedgM|0Qhwu}uvWCNeTnuR`Hi^iWbgw| z;lHA$p7TtjTF z;B~FwVr?lu!@|khYV`_%>4phjRb)Fu%|~JraxZhK+^YebF1U6szyw`PWnUao#FO#e z8LWV>rVesCfZD-tbKS(L;0C%%NUeCp*(gnmI8RGoNW2=ZB8rs&Y}5!6yu0Nt`d~Vb z&QrybRw)RvaE|F*M>D=Y)~wteaevu%HkYfmM~vV*wAnO*drfDf8j0}lhZIFC`y_vk zk4=N`L6o7w`%FoGSD2KZ5aD|Nect}~-_yQ-fAMc@pXs)AGJE-a;+oiZF=wg&*a?y{ zKc^?FFBQm1R+kIP$)kGxEF=C2nFQrE(jrt_o+nM&2Jxq4GMT#W)MdLy6wS=>LwVgK4*=psGSW+&Ej7j|El>nj(?>VE}DY(T-NG)tNuc#zS!Eb-|Bm_ z{w$~7?;VbC>PM=>19M99E#KtSms(qTtiEIQnWldRb_W$T9B}H(g7^mn@Gofiz3R~a z;oy~f189^EGD@!=$yu>6YD%f;Odey}wdKy_3cGf!dsVMwwfSUHO$sPgWc3Z5TRFas z#JNZmobL454}Dt>j-F?A`Z6DtTLwqAdL!8)_vF3R@?+P|GLtRKIg*RX79rGfU8YUv zH^bw|YR`|`(YNZSm}Kp7t}C`W_FKJg)>k{%`Mtx-oa;ua!vpo7bgnD4I(n?$WAzs_ zeM67fSx%tLYQv?+>go38!8B^f8=c>;CsWmwmFVO5|9w;TO;37pr55yc_$NO4VUyOJZfZAx1*(>aPfc%arJ24%Hx;YXuWU$jThlchDq~ zL#rc0({i81ui{u{hpGHdPu0?ZObb&nj zJ^ko8a=f_zHNqaz^S&%>u_!%9*ohhlX-xW#{HaVP9}vHPcDPrkt)8}p`x4Qx@h?^uh`RP zrN2kXrUaHHkps>U(tF_hlBRxd$5PFL6ON{b-sPCib?dBZZ) zwb5x2R`d0h&)lS2J-N&3dF#XmCwbJKUYuS}nXmqQqvcoXdTIJ6l-}$6t)4eee7#jY zHZpxbrFc)vqq3^8r;N>i_EhiHsrT+kU-j3kuT+oubuhjG1J`o8x>c5zVCMOTpM$d| zvuIDBoqn4#f8A%aydu{h+6;uGcNE@Yf|U;Cp%rrLslr>lCEg|WLqC>V-#_7&E4QZK zm$pv09#^k4%PZoloNogk`hvP8JSQDJ;ntOMYr2`ftnm6!qeZf*+7F2&l0LWa7Hu1; zZZ*m+<<#u4dYoHY4sp?bs8w#g&QHD#gN>Hma%*}}#Wu-br)?4|Rx{GH_>$$pXP%nJ z)}O1_s?)Mhq3|`a0NM|=@tc{i;bdVJjJ_f}xbFnyh~H{=nzrJ-GdF!O(#`EYjLdU$_r0WD0(Jh-P#Q7qS^g--3b^xa(dD0UDU_`q2OG|;KNRAsNs z5j2Txo+D@y&PdaIBOw{KoZ4H`5?>4|ZZv;H-PE*8Cfuowq=jrbwX@PaG}@{CO8THG zC#F-XtVnmMa*SGqI<SMshyX((5bD?jB#4pAhw`^{h@1#wU;sJLtyePi+<^0SKLYW71mZXA?+Q7Akwi4-toK0u7edZW zJ-y6s z7!yPe4%)X?1nuc#gNiYF$|Mu!Cg!l1=<_#BAJ~O>ZP=+EgFYzHMy$ClqU>r|)b5Vj>t_RsVfztT`iJbFG*aXg3VCe`Uld(Q z*jlf2CGjq{c!ZsV(&x!a*mTy2u0v}olwP8BvuH$if^Q z)R%{yx#fW;e37an4gP4=+_7kLHbi9YyI9W4bdR_s>a6b69eiJIDsAO-PE?&W)LBEFHPkuSOxEZ+ z2WmwI_WuLtSM*jgw`j{#dyvadnALNl_S1SYl^!RMY>~;7zubhXY@AC!uzu7<>H|cy z>r2g5A3&Aa#`Y(z&@4vRH!2Sc8x$ju zs90<@LYkDeH1&^sI}guR7w;LPEMegkZMqPK&DjcF2v6m#Q57|_L4aBOtK(la|H}DS znygVqiDb>Vf~cb3$XRqZb5L%i=s}Om4>;bB!$4 ziEB@G+oR_PR*Rw`#2wCtu9LNP(1>h;51t=bd1=h+{tLJ=b>x9ND zgj)1l0LSC$<;qL{j4h4*w=QC^&C*1Wc{F_*3 ze|nt^ues|r)3=8!RmbLxF@3u>$k3Th$Dr#A8b)NFGuFRHWz`q_HE zEKr4ov*vl*AGE8BgSJUoN9?lQ)ulmu1{vHHhzbGB^EcA5Fw7VY*(!zVAznr&)=1JU zG|sY7K1+EB_3}=|INkZB*j{9Wj0f8L$BKO_+vDTeX>?Z5y-vo83lR+|{BqtyY` z*pN}P%Q1pgJLb}svxD}IjNc(Yq#BZzVCo?zw)_2vi6#v}8_7wIe8P0US(=gH~twp<8J<_!O zcAejzJrZ0SAb%oiJ>eMV`-$CyN)k+A5Q@#fvz z^y6oSd7KAE@xZA316POwiS;12YPNR2WJfm}rJ-kJ$MQ(FGOsd5u}jsJ)Q#_utB@cU z^d?mfn_z!?#Vj%(B|}TuK8oxbtSF|%gW0Ao$0POeayj+<61ioaFd4FtamYqjDqkzq zjOqw`o_%~d$94B)Q)4M|<1IZwLaOv3<%Ropr4-hDDm!`ZIf>3lBeOo12OS_Y}~#m**@{c-fA8X0{+ zbVs0hd#uDvhGg+tlo>^c?&5&bEQfcI%$!ZniJbwoz=PO9AKDpMFI|$5M}Jgd8^Tr3 zMvR&iq7tUIwAxBG`7KD{U{FQb<;CPouxW+e1j{FZk}O7IB^-bp-G?$Hu;2&}5j(V; z$RevTTB1bUA~;GdPfhU~p)H!lg?GIvR6J}YuMAsnwn5D!#$+~C_4sI6AH3ihAt91j zNjL~D=DS{3%{oBh2^pZUb5$u{VNp~%RIrA@YBO!1HHQKORcK9}lP(r|vGhYc{ch?~ zd03Fr9htaNzH9AgiS-XY(FH*kLeHCPWiNyLNzc0vm^(-kEkjTO9-Hl5#f164mFOL6 zu%IJE6q(;>x(_wp&ihSCv4>mpe=Jq?TJuS->8Jz{ru)R%jkRd%-3QNZR9~vuZ913D zeMzSMv*zXT&iFM{v>g6>TsP~DHUjZ4i1-dfd~cb9nN+p~5C#P=yumY%LRv`Ren0r2Pt8i-qPT-+*Tr#o~OJRU>3hG$fW1V&jTvC2dzB05EvE)MEK zcC~P^R2SvC5W4~wt94PQi&?r5xYs#9RPK)zrmGU+Bopsbp~#5Igj6jcs+*xdD8U*= zC0^u?HGk`{`mxshRp-wASTZ4>l4sfHze+6BUwxyv$Z>DsDo9_RDbY^|)@#(4mlf`> z8U^l~EbeXfbkNb6KN8va7{bG_VI;6o(TbzT>qoHs=6goK+T#ndf~9g&vD_sE3!mv-#={-i4%GOe9U!4ojU^02-tjqiLs(Xs?vpa2IpS4Fxzas! zbNv`9LpfeS_k=RdUr|7o=<6$rG7$|#6Q{s5AxujUusp()&ZxnZ)=EeIlTXg=|K$B6 z!+f5>|u{Ao3yg&+S&{^QA@^O!V0sq(t$`N{Wq0Fmw^F?uNRrv;z?E8mg#JqrA! zjIea{r+PEEP~d1)H~UR-8w7ZTshla4n9TCLR)_%2j|&2v;12+mpJ6&fio_GfQ8Gp% z>(R&gzX%%FzKiq7Cq-QBmlq{OL%8Y%oX=hexFKKg@_T;~u%Bh$E#HG$uLxMj&sr^l z0K)0Bfu`emwvDL#JK@_a>94l)1d#}cujNh%Ql6_Od#COq2i%;)cfXilieK997o z*r_@^*UufYHolD6ZN!`*8$`Thtx`ME{YI~qMOG(yLek0(tskONEL+(jbB0K+w<7BW zWc40o^`sqNWltk2PH45POP;Yqo9*aUaDNq|1oDk1N~D57SEQ=PSd;;4PQHCHw^0G5 zCH^xr`e{5>WJWzHgD_SD@?fXt{u(J`0Dqn;@&&@hpK+AP2^TuIjkO>G9==AS5kJt$ ziCA!=u<_Zy$Y(7P5MZQ=*Fx|~$PnEeSSkl=6$%rgtl1g8o5;z z|Ex)nSmhzO1Ga;Q;O_Q!MzBEB1~NPZ`%K>pCJ97wq<~e{?df`e*#hc_6_(of*s!N!LnS2%}JfU1D1fCP){(OfC`CN%(~HVgR35-OndZr@1n8sTqi} znZHYh8Z{+XTH8{V51;=X1XGe{q+T`t!2TgcBtJ}!v5ItCkVKc zN9<{*KWc>9=v2l>l6Tzz2jOOR4m~2R~i;Py6!+`aEo}_NhoH39dOP~j)abz2T zjKau70q4FmS>?peEDku4GbQB9{lPQIvlTp(mE#R(mRZ>m5H!fx{ z+>g}PGqiqaV6~`kIL4MN(nVmkkgN2?94dMdXd;P`XUeCOo4fa}!F8}mapMhmAQo-J zb5v;HklPL&&!&4cJ^H~51@!3T7(%HxevzX`)`m$knfG7dX~UeSR-r{>R#Mmh8V5kn z#|;glwc((AIL2yWkzXFUWKj`?@<(76Qj-uzh9v=Q89G0YML|i!1!&NnS|_g>cIst z6=#un!s6lFMd4Ut9AzyPn_#t}f*sUwmbFfr;)|bFFdD?+c*>DcRDf;n>Y`0DQpQu( z`|@qqS;<_PwkuR7==^9eX92~t$s@=DPAx2>?l0vj6z^qf_#T%+f@2;?9s76T1{=oe z>$+GbA4u)z&iI`mHn+?5Z7ERA>`6VV-dZFcz2Pd=ojJr4Q3udaMev*e;$EoSC`EG; z7ROd>kt|c__lwd*dyy25)u~UUaI96-#~mpcRB?Z!QdKw`l$WvdxD;!})i@Q9_O$_A z2cHw*8lKPOC8Jd+OHSm$llh@@cEqU#)uxo2PVLxmWoMXe3j|&>nq4)g4dX(#=n*3B zncYW^lMel(t0*!R1L+x=246vUXl)8kZXH7^?RL^{$EHj+p1x&!v30Dv-Z0khQ}_Qq zGeYE9TLPJmIqxcC{iN*ytNQ|SOUJek<=x?dM$TF%ogQfFYoq~leiF1LR_mBEGCy&q z3r@sKoavD*#iK4#r-S0doGG08F_U_XKPNA{wa3ldw?klU$>SAqhYZ`m93#h|Kz2ul zP4~>tZe+yVkvuc9-MoDdDcCxZf3}m|4|l)qAnE{oHc^_O(tt9RL5}>%T9fuEl-KgP zxhA*dhC-R$`&n|6|E7fH?b$4EF`xVu{xt&`Zrt{qK+O-${+Ey z5%dg6D^%Iec2!n*N5bS8tY%a@9S^NZAH4}Gx(jT3vPV1=}udr zmT#%P8@Z8eUn>-f5P`+4Znlz8YPlGC)YDdv%?!dvUN!CKQt$qhjtC1n)@rl}$qS?U zlUC~pHrjBT-Y3XDnn!c+lhfZ#RQkKi{$;C7&rn+1^#NUs^TBBl_RwDG3d<_uixCMf z8ETVr{L4S6YlIV=wn}&HBIz0=DcPobw@rE%qU}eeN2syZNhM+D^t`+~F(>cN_(?y0 zi$S(pm=KhK)bZzK`_9l_2 z@PRF0aKuh1@zPf62&1``9+5XYUV$!9ILTVcd>pY~z!V;}Ur5dRu^2vk*qrelC?T98 z{)Ot+_|l;Br84h@0I~$H*r6X6yc)6Ji`u`7+PhO1PyySdqNHc1tzr8W6r+jPY4Zl0 zNsPoKYK^)-l^QZvO3hxa-nCOz{+?=@s=VVzg_TDtiNZRmVvrKY)?P_x(5-bc302z- zYa0L!M4%muuLPOkk_0I3iP~vEr7^YbUbPmKJzO;HB57L7az*-IQP=>GH?o9h|JQPc zOpw@%-?*Buz*ns1>MQQz@!)$au|3~M6i$-xXd*cw_MNHz*k zaE%tMYo!QV+19xirT?fNxOjnb;2@-=YP5~#f+Y{hpXod)&~G|7`prwuiq(gk+61V> zOqM)H;wVuz6>ZqFzX;oQv=thKEIe} ztj*(~4y#o-(7<6g8!|nG0xqPMi%V8*?%)D_as?wvprc3`?xfwzFJXYd;|7 zW%e75r4YXz2q@}xA|`n1shimY#ne{+-sI0w!m9TgCYd-1qQvLYYQ7x5lmqd|W!YmiTo7p5 zTKCClSv8{m3m=$1IlKRk~NwjhhAUg{ddqwz{Q#IA)mqlBxg3X z=dW~zVXK-KWjnb2TkUm1%v=0Spn({B{9EI9MQoL;Ib{DCY0FU#k9V1n~Sj;$nzT9Rn20`4Juf5cH$;k6SVlfFeH++Qh}=ERWjTr7P+=>QFB`>gA}tNWNq5L?sZe>YRH%W`1JqN2(6Y zJtG1Ouj~*;QoF5uU8mXR8c#rbGh*)+SH6!Zg;E943j!XtU%IC#8(*4@uLw*_wXWdP*gushE7HrW zNQ5@etuU;wQAZ)ZL)@yV42j#U+)L}_#PrQv?h!q85rH_gGTFG5zRO<(Bcr3c;;60| z&68EjzT9Xwt(Tb)NgY<-T7Mk@rA7HS*MxU-%~JZk!MrZhcVE4LsPmmhrUGdxc6(wc zx>jJ)StLtkEc5UD>3G%|-IV!6em@fJk}nWZ9KEZwLn_Ktl1fcpG@Zq=XEfq0k`1GX z9*qo^JfC`SG1?g?+RBTpEI`+wD-%pBmxBIE1Qkb@g;Q|uL5NtvvyBnAf=mty->62` z$cjHB4RxhnbmTKo2B%SQm>{l%PIOv3Ip!4sJa)$aP?fy-M3@ndE1DY+|u@TnEF zPyWVl3)*j0cKD749EJQR#AsU{8UP$?q`eo+0QFH>b9uAhpU&+48xNqm{7_#Cx271R!Vu85cP z*KVy@DM(->w#$pGwA?QYHmf!nEoENM++yZQbxgu*7WON(aQTR$^jAbM1z}~x+`9&w z?$qN9yT>(WeOoF;bts%`mTKBDA4!d+X$hoU@Hdg*WWbpI0ABk+V=4ltH>AaUec+JV z#=*C^%@85G+pc}jSfEa1D$`d83JLpmez2Eu3}5mCMNf$j16m6e1@rPNXX_X$ zUexmJ`A!RXqLh@E%uCc}Tn6a^qh%hG&GnSN-X(?A!;Yj`avf(B``w7WB{lYY(!*D! z`?AWf;U>HyB=Zd@j%>Hu2Qkq=V@c3%Z%?1rdi9{z$%D0N^ zvrHHTyh?!2X%#gqW;WAl6_qSRisy5OtDHu4TSBiZW+QRS8RqJ0`57laU?53fF1 zF5`;JcXK-J&k?+*~~YX>F;uvv={-at8e^~(D;3svj)ni;q0bp)u!0hglCCVy&OLy?EXepFac}5Gzy26;BHiHM@JH+GUDFq3s>!mZ;H57-~UY52p-P- z5(#?HN?)wpcsh8rnAk05)t>knrVG93f0DKB!SLWG+o+iyZKd$!Q53gh8DAL#0GmZ6 z7fSONej;OkLi?SBj142D$AyhTuAirj<{!$qFh~K%m0=MLplR)72KSiR7mVfyxGj1J zYrh(pote`VeGg|lqGXSm5w$yIJUaDww4ZW3&{D?QWI&>B9RspG-Vt$sP}ofdgZ3y8lwp+(CpZAUXWg zH}sr7#ho+?ucg5ejIiOVZSgfx7il&>fAVB+=Eu@rneB|x-#;2LK1=(hQ?UwQpl2wH z1*yxddO=39rLZ2Ls)yh^ELmmFz(1L5i4j+|AK6Jx;-`mwd%~4TArG00?_BB;HfMCJ z6KRE1tgllqDhV!?g)kAR1}fz|Cio94$Vqik`=AJQK32gf{2Bu{q<#bJDydGfhh>ao z)JM{%FE^qOWr<_@6eM~y!6>c9NqAI9P#ZIdS!$Hlf!Z@9^u$d0nO4qEv=sZ>0wILD zKUoAS1+(;rRqIM)Q54e0<_<-bqFZf6m>_R$rme`4x0Hg42^ORmi<#ZtlS}u=Nk~%&qjIrU@ zP)@k?BDL_-hP12Q(UqqCT@mvmgVz_yK>9Y6%b71td?Jw*lkKay95$}P%M?et&{374 zBW%B#{-Rt@Cci7~zn-5|?@|`&dH9$0`N`|sj~}9=`Sq>w)Dl^Dn9f6@tZN5%(UyHaOBRJjI0i z32DT)RW6{3?J-@&kJz?_2L7$or|%XAfTcz8vZnR9r{g07$>s{tMykl4~Uem_E2{cH3`Jm~l_VRIAfAI0q>f?t} z-!9I5{0jAPxh@}X`LukTFONpC=&04JHx{}H$On3Kx1|34%3Kw_3>(>Y6hv9;=2RW4nwy})$8mJW@ zr)p=aSQ_a(Swx%k+)U$j-NuXXd(tw={q8L8v%g^(V@etCM(kl<#Ft2J72j&q?I5^n&fS&n7onN3zg;2PzpLHiPh)!;DK1DY z+qo6?{UzYU8KEaCM1%@B(~1N3gB4=X4meRi6k2pe?eC5X35CbfWUMERFxwxvzgoaS zc~DWi$XXleTTu|Xht}1P31r1gc;{s6zUb1T*lF4Z7=KqeBnH@VBkK|bu4?1KWVotZ zd++zfCo2E<2e*W)_TZ{s?LQpzU}eG?7>u2Sfn2j(#o{kc-l8F8+>-a(cc#-QbXr85d@b<}>F;w*%&|r3f8i+gs&h*HB@`Ml@oUw^WOEzxT<3Aw@iOEARo*$odEt0A zXw-GGE5wKm_Y|2kHw9($rPXnq%f$`prg>#D2@PFbW_+=f_WB!$KKHg?)EZ@V0_2MM zol;+UqJA-olF(L;srGZ2`!LL?ZObYUtHV8lc^iNCDs-ktGzeA zU2zu=2C(OSMP8tsE$8mMK2(PrSheBO-5135T%5Xbd|_u2i<}@_wwHU=M$0#N9IqPL z{epCTuq$A-vHPW0b_#95AxQR3vHD4ip@4lG2z9c_?D;Rsu=m)8<9*>Vfls^-RSR?4AUcvh-5dl5+A@JWDGXxv1)u8tbdW?h_TtQNew%LiB-Q z_uCb1z+2R9t~f|dQKux}OfC&Gej8zDG4>xUIPQR542wK|IZJ~Xis>;7>7+}ihn zNB0qFdf48rPzd;C(I3LD>gN?lxd0(&3(QD1uY}-}9Jn&Pta8-@lxlcvbrx_E-mr+m zUNVm!?)ULInp$;pZg?d4i`d#br4KOWE=pb&BnJ?p_I@KF`_R!kxC(6*L%~@m?Eb3) ze`k$2=!Bgog>r<(zmECMZ!G+w3^9UoB|!(#b}W)G2g*Fv)kFA5?SBQ`Endt|WHHG$ z>pRIrR=>kfFN&A&6IoJ<(B;P<7~hi?Pj$NwPy@1lxiU}U(%*x!dk#spte&OAzW5ca zLO)bXGuH>%p4T;)78lRCh1_tDc>NSIrFWGCp5YJ=+tED((y!a!_1lwv z8tpr!_>AeSN^#L?R5LCw^vx*?x4%wK+yg1QIp2%)I-XM817!t9*7yD5BhEIt%0qDL za*+etW3sdQa}m3XO)Jdvho0bY)#li(d{3MztOJ8%XLC?ERI(DvZjZkmsibD&mHj=# z$S5+1GKO-*2+9EJL%)okK2&2DuKI2KcX@UM{>vDt4HNYfh4O2-`4r>QC0Oe`QL%z9 zGHEH>%J*MzMC>7dPpNhJ?7Awlt}HDdkNWLtHDRdAJ3&ig1TRlw1U!6>Sw+@zE_>R{Td*-Z|vf zX9=`bCmy3>?G}OYg1k4^_hjHs+Bf1X6E21vDPrWVruDLhQj%oSStgtgh-9S74D?`0Z=qoGCIOF^Tp)n$xSQM@?h%qkXBs{K;x69;)hwf!+3V)=|} zDO}m^$sBB%aC9Y(s)TN2PBYzA$`EYtQMSc+RahDbHy%N|{nT0W`k7$!QMdUO?g#H6wWP z{tt*JWB+mh=H>D_$Im;N1M$i>UdilBee%8&^_lh|%q=@-re`5EEBqu}iuHD#_Wpc; zx3u?XitPq!O1xpdqJ>+;-ID#r2}ru9>9p4MKE!L%@h0IuP?`nI4=V$~hH$vTQ9Sp&++W8rID#?@c+0&V*TH@2^;ZhLc3b=w<5s{MWJXk8~= zEsD*C{bcZr`iobk(Y%Vw{S_4(3xzX^cHCVzmVrv0JC+5V9YVT%wm7{=KdjuF#A&ks z#lgnHFLB{c{GzavY++|c)cxwzPz=DtU#MxlZzvwEjKQ`+ z+I8^Gnq+Y3AYW0AaODe_Pmbr>tNmf@WKzgoQMB?eVe2?!ct9HF zSW1hZXp6#>&o!L~)TC!SXr-vXMYE8QjUlG9ZU7+meZL>f;6yHTJ@-qw-^07d>bsi0Ia&!#dxFlKvXFZtsvM-I zZ6us7jku3?GP>IPZv}wQwi}TRW%rFPX6s^>F6wkqt&4HGDAz@)E{b$^FM+qF_$kL zzYkUw*dX&7uy!M2SR85Yk~6Ne1Arqr zQEsTRZHxgdORp71nz!c+ly9uJC*sH*!JC4O#7On4AX}@6yM_smd=}^rtt&o{Z;N7m z@1~Z{$+5nKfVc8ictg2;Nq7(uIxTMH+bT{8d>@TLp6~sm@I8DT zQcwTU<9lP^duZE~tT~^x91D-FVm=g>cLAe`OMgDDTo}_3?ZbmnOf2@Hdr9)r^oj5b{8K` zbeP>c!4t?%HZuG`Yz(XPwSNZIuw1{0GSupkNJFG6>%!wjw(MRZQfWY<&ZuJvI@7_$ zYFamHCz}$Cc~w@Q-WQ36H8W(j&_DC;og!_r#i)4eaRhPX(b3S3(bwY!8FeqkCE}Kk zD511NKlZ8rNXlc+N=&1^EXo53FY`+GzK}D`A8koR=TkQpCs@VmNt?9@>xqGs)JM9j-9s9fvbj0#ULVUc& z?&oXV3B@*+iudN6AN9R9Al}hw#5-bB)Gq6A7txLc4TE+cv5tc7ZEQq8fEncgagK=2 zKnSmwVN82Sq+!3vBK`i*NF-?;J*uWN1WFS><#_#APmb16nGm9PLyYo5v<@QmXC&x1 zBJM*%H0XWeNMOB;ZqNw5BhvJ!C5oDiQuKo}p&b+}7f+OHQzTpD+x*YNzmkcei|;pFast_^ zWC`6fN>MF{RzJAWpN*HM zrr_@drm%55k99)7$h-rwsRP}f7d5J~YoEA(PUBD0+gsrj7+1DAR>{7$+mn)ay`|QKG>t&IP(WHd}^#$REC=M_z^4 z5YNP>%`#O5Go8ASCsq7B!XAvy=~y`~3n<<|2m~iI7L^_@KZO735(b1vhJg{hT^kkH zk1Z$oDiG{|Oiuf;F11&G9tPXzTP-CDyLO`PNd6}uyOWiF5Fs(Ltm$#@ZqaM{b_k{{ zvUSKV7V;bm^;AdIR5GelkR7iI!%Yw_uOBL)trpHbOp&*|Rya zI_%q4>)hh^*Eq%eyTM;v%TF0CB~Sx{pS`l-EO&`uud#lcb*Rf~zmR=0HSL)plKx_* z;K5YctE0BbzG1qLN{~6E-Ktk4LSEk*u?Z7fj*28g9uYX6*Ofq>hT6NVU1HA(R6*A! zzgP9#%`@ksFYZ;Aob4I%+rJWUuO=!~-<&F>uHL}oKJFf`udZ<-eu>gH(1fExIiWGw zDv{crH)@au_GK83vNdHg95sim-ZGRPMXeh9TWsSU0~1I+#xNCz$` zJJds==6y`h4lGT$rdUa)@6DbFN)e?O`Mfzq=Ff|-Ct&$j^lB^7Mq0j8(ANq|CuixyCCgdqK#dE=n zDIppUuHv*PYsXME-$%}nGN^)2aih2*;wqJB>KvI#X9W8S55`M!Dn%BGzI#3V=wBZa zLjx!X*uS%v{g$Z@i`wvgy7|>5xo&oPhFfKF5@*xze?@LhD~0k(tU^&xNW9(laqTfl zyEF(x8p?whQEDp56otY(ObuQ=eTW^3c~*kSG*dO6}mNZRP1CaC1UDyt_7vzKrNMh59m|bAxYm zraT`8@3P72sppY{^6IkA?w6gbSeIPucTRWiFQ&x|b#=q1LT>EVkQv8TQlKzkReI?Rp3A^R|~90#%J=f=w!BER)&<13Y2A`VJ?VJB_crO%%`+(Lf~<=(9|f(r@$H zcAmjo=Bsb2myCTx5Pg+vncq6D=($lwgxXzGqCnQ4hvRkUG{mSKazMrR@2uKBmmD7F z)Q6JF3z^|W(e_s%rudg11To|HVOH@}_`6+YL{`CG2%x%@aH#PyG$XJ9v?1NiarT=T z_v5s7goHP;B4eFQc+L1yB!IJN-BxMlwj3`qt+yI8WosMdRl+2kuBK;DgG62R#diel z$F{1We0FQGvY(o}-h^90%b<2|!mW^fR3OP7_*B@K+>^5?MVzmqUduDAwkoP$FX-%B zC&y65mq<}1@!5#d<|G6)g~OtqlAc0q`;)5K4rHq$K-0-OCM5Ws#*eHCnL@Z`L5|Km+yM69RsNAIo|m`y%y*nzOO7a_Ky^2Ym}yGpw2xjn`#pf3FY5suNiAB5+&c3ni+IaMKw>Wx9z`=5J@)T-hLN$ zy3wXR6GG-6@;kmMwIH6@*OZxg^A0)eT4g$|rTqGN zC~2)2PQf2a%lo(}e@Uy^I|?{UR&YW5Tu>B?JFwj$fUPP-&Rl%8+}w;F0Z-Tn8o%W< zKj5YJqAceWjS11Aq=Glb??eH`YC1co>>l4ezQB#yIezq^s*Z804!>=Q_XQK9bVK=N z0euFBrvk%MtJ5eH5%z1iP{W0qYURlNoS=z)IqK8Y$}fuDp&4usk36R=**vQb@D^DoP4J|K)WpyF=B{I+@G?q}Sq6;HZS*g&4QvZ`0S zH7DpkhoBp%!k52hN9N2^@=|RiE2WuOy9U_G{!ff#{kAXcWZGP&9HoNxvH|8Y<(g|N zgECI@qB>p)ghO~nR+vd7OgTZily;5ZiQ4XI@q>qjlqU8mC@@0L*{wp+wadU>6oE~f z1@>~lxhd6rTfhDE6!3W*ACmvO@Hywn4+Ec3p8Egc^JH1?|1TiyV&1V2vOI24V!V<4U=1)DSiPshMTkAuNa`6yLX8l;L9%T^LJ5 zA8PW;M&mdmSVCZBQBx3qxJO4F4y+gDHBph(+pkC6FANJ?ul0nRHp$8rncKHU4v1Fu zoXW(TxP+FmU>E63C*ma(Gdj^t@d(>OBEJ0*-%$wh=P+={Bc{EeoM1-?a9wQ?`_^&% zo5;Uvt|7qH)@`X30j^dHaJ6?(H(p4G=E{<;Lyqz1(FLED)eTONi7t~-kd4KsgZsvwvJCCG1x@rGD;U~32X|@8isSW&QHZM&hNB{V4;-- z1^dZFEck2wA!XExCHAz&eoL&ZpPPkRVpqXb%R*4hGKMvrOYCQqb_ATK?xV1kM=;T+ z7m4>Fqbh4+?lp22ayG~S=}FQYMEOGet!jvq=1L}9yNeoQbrfcFl6)6&yh{pObB`xw zndUiN*{ReF;tc1G5E^8qw%tYsaT;y?k*`@p@6BGHRP59bP;>fM9pfp1kZ^sv0AjSD&ux{`GUDM-vsQOX-@>8*H@ zsIkUem#s_P`@A0MLj9Ty<<02V{_Q4@e-w=G#W<&U`a(6n>v{Hn(D?oj8P&6Y_rarj z%?xoNIJG^xPEkyPv*6-F;Jf3Zmvo{mnVwHIBl4>i;K#JtSzB(kB^4)u+(Iz@+drsJ z7hF;igFf8%l(50qMBez2-@E0*eDB7oN&&QCB^Hj<7pB81&hFm{`QRDddWv5rRdF3jvT;Y|n z#+Bz9b$QinsbQA<)X7h^{FKX2X&`x(N^L|bN+Z$6D9@w;{vFD`R!1Z=oV~tWrY-%f zZ}_-qlUv!15{zm?BPK2K zYPC{GN-PR7(6LOpKnChuULG(~!}Ul7?EeVaUsXdj`#b;LL&fS+q9+_YK|65*yw6O} zy}!`jKQnz+W8wK~kr%{d5!CX_>S2QhoSVc@~qA zfPSO@UA6<_)T{iOa=9GEEYN%dgbtO&rT-$%!`aw4Nk{h?PwRy1(h8=dD1H%6MlwyZ zcr3^3NhXO1eCQz0jo3fRWiitV4J?h_sZUK4;4e(1)}<6jeQZ@pmGVtqyG!|&{74e1 zMeN7tQ6#NKe&sLoE9HK40{zIPPb=(ITSO0tX-^+#PnnpyeW}<(3Nx$a$Cvz+I>>MT z``D;uNaQb7dD5FF%%`{hm9@mBtg8b)g!(o%OZHc%F6j1<2W((6bbO;EHCO=Os5X3~ z$b5-!Q~=*7?+o9l0KQS`?7*Djq&I}+W{r8>YZ z^6nHAkhR3sLe(^7oKx*5t821$l5`PcxU!0Or>l}j;a>%DTS0MRC(!+YOozCyi+?Dnc`H97x!0f!&Rj8n*rgYYur z1*!AW_wmX}{@GsoI_z70{li=^YuYUuOu_>t+U{PLF3gbKt21ODN*qyME`-jvYbT`w zi*tQ1NE*0Jk_NW7(S%&z$rz~|<8rQP1^quo=DkLd3~3 zGdk?n`ap2phLVIC6re|c>t34k&Ht+gly#UtNaZYMV!h0h;zMMT+Mt$?e=Kp zj{1?Dsx2i)2hHsd5G-MAXz5-3;?5>Z=jA0baHAdlw$a=`+npBa0SbnAdBka{mNqBb zkaM$<%Lm1O!=*YdMJ}IQ8vlv4aklC#u4PyGBbTVQsVA#iW=SWTy-@DPVo}7B!mTJa z&Sa%5b-GhZ0cHrNX(O@iPA$BCNRbo$w%&GV63Q%DD;f~wfEF1*VG)K|IhmfSb9KvY zIVexqI$))9C&I)%47`dOuSoLlROUD}T4A1zA1g6pjwDmG=?9jOu0Of>?V>DcrjQ;qK!9m z5J5`>6w<%Qe1FR4#N8?7}OY0hFXPwh=oyGp7xs!1Aet@HEEayeOoWG9y|IQqkKiZ*9I&jMBQk_P398c$+uBSZ+ z@H4;?E7)lfUj;ljR^Vc~lCaCG#CaA>WNzY1P4@9NnzC4&-^jQtNbCairP->+Q)V;W zsE6^dPLh$xi1!vw3+5%)GLlQw^z7kU>fNh7_w1ATMa~~ite0SGKuLk7Gvo%GNIVa? zi2IMFW9LE%^{`Lz?90a$Eko-QVKE23d5H;UrZ!YE}N zCB8XMqk7R2@ldF)*xxo?Ztxc4>r~CCFNJ zsf=aB`T0^VN?PNR-1lSi(a{WwmxQxq>U~_;8a7ru0F~zok@eTfrEvBIiK==YCd>3< zDv}z$6eiq8|9$P6b&*Vg=g^S(1TT2U z_n!wuLmrmg19>2ImORDMWq%NN^#u`|pcxT+LWLNbh3D{CwbyQ|ZGNLG{fMmgnk|nK)yd$4UALU0J2s|aF z+VX?Uu!{SPQM?M|ST0~meh(>>=T|>k1noCdodIEex%a&nV>d^5gGwTfqhT2Ptcrn9 z;B287GurdRx{ImLMyZL;HQX(q(=CXd=d`Lw298j)h%?)tIfLOBQ8zO=sZw3g132yD zGT(YYgy;5m(QMkJ*th5piJlYHJeXgfPLl-Q$V*C>i(kti z28rNWPQ72UnIR#CeYkzIycTD6p}(?QffzHaE%48gc)<`voWKC7h;uDZw`WG=_RQcJ zDs(z0+FimR%#cBlnB0{CeCl_`hDR=WK(5IO9>02ZU%C&$Q4>pU&7ghn=7=3{b<`Yt z_5~3LBu+4RAG-)dj=uwXt2dm-$5CIpjv*^pFXHb!D1JB5(xR0oCzEKGtX-svRSJM$ zC6Pu)c-8|^pMz30hW?nnf#;nq6MVo!$v`uQ$+aF8$Op!d^!mq-BL z=LV_VjD#GZr-)Q`Mv2#VxsqfJORlB|iInN6N*Je78K+A2H*`lU_Ykc}3|yiQ_=Gul zog@s3*nkp*IbkBE6U1$1pI55j*`P{e}~cDqR3USl1Q4l(cZ{7$Y{S{`VPfDMHB|; zx*lJYgE7G8@iG|}=YevH%z1_J2lHFOw$~HX=lN!V&egHc65>Z@9-2V{)lT{efqyno z{wxGVM$sJXNH+tG$9?gj;Lwn*VBr)QR`0d{#oqhJM^&B)-^dA`?uX7U4dSD*cS-p~8Tn-9#KIp;q2&+ERf>%M*xC_fk2 zUTaE{Z1t)X)@o{`r`ACx-?Vlmc9M!X>2NC(-kc{Hhrp5lF5-_S7sLG=1VxY!!h5`6 z#U`nt*fL#=NF8~c@dHB;O}R7iXQ*10>^5>!*V1p2jhOZs( zq~@@1XV~8rw#3T&J)zxK;(RG9Loh~6-5zbakUf&-$o8@-|j+tFfe!2VG~@-(a#Q66iEwDh9}bXfd!OG!8Bv0!ES zBg2I`T4D|d*O}J6Mds-68m?EER;VabedH3n4pQWXQGUa2B>z6AyX;vMoFWTjj^3hh z6iE@(w&AxdO7w-y^VD-JI8X;DF!)6Lh3>hp_%*>7C8)JaoS<40c(G4s+mbUu{dhJe zr}0e*X)1Xw*S+C8i?0P&V_fy3i05$>y!h)QV zqJhS+w4Xka6>tXKe;Z#~fC*E%{ZivTS@L|h=dCE&4(kT+xZg~z{ z%N`f7jnle^#73uL_jTk%Cb~Imc0>;+Z{_Vi<%zT`+Imbk3F1I_T~1&fwTr%<{3->- z-=gLu7*qOy01894Q>=xUAQ1yoTRu>_;@_t&_i!Otk95pz=khfIPz>h~1#!bq$QP;0 z++Tb7LV8%tEAofJU91Bv%;`Duke(5SN+1MlRv9wNi?tj+(kd)?H-7X<9pEU~{Qec; zuyaqIIq^pr>J!{x`MEqJ9(c!m%hRaC<`M?nHEK=H3^$wR$5JUEpmw+c33wz1&f-OQt82*IVor3kGh})!y@$xI zs+fe+^Rv;fyKw@VX$d(+J)fz6;#PKi+0sB%rpT|PNXT`Vp25hO{6Z%GQ^In0NLX%( z#!d2)co#Xt6>5TdC$hD1fV7v%Vj82}ECz&>s?fQomV2~Xd|;`d;!2L#Z2zvr2iGw$ zdhf0QP{OESw13!l{)PAW7Q_OX551MO4g3G5E&nC`WLZ1s>lQZ59mGP{Ys(0;t#T#F zZkEH>JrjkY?b`xTG60ih3m!^-hbj!or(69^u0Zu`wGGr+*h#!@s>LSv6v4Xn+E6Z4 z=ehPl%vPT@2b>iISPu&XWManmj_6Jw-yw##+s#C#o4B#(0d071)KoDjz+Wv0mkPdp zDUd(NYHiq)Fnt6LxU*IWkyew0bfvzX0ZEn(=X`>u@V+|1fIBNgDm*wRJ0fmL{2vT! z-NTV4|EZ1Y05Q-hdg#aB-L4etvkSAJur)gpdlbh(#EG?Daw z8ojvrCd1lJI%F93mD_Y|a#*9-8)>=Xk}I5+V)u_?-v>$5G{dWW%I?hfv7Xo#^pNK_Ewaa7HNd*N zBknr4mo6t*dOTQrl(pRw)HWQ~>yGrp1*`5z|ANLq!O7UQa{AnzI;UxXL^^Q24;Xo@ z*;7_K{`_F|?r4!4ks%b@ky~3xl&KcLFftQsl*lk5)I^H|wcY`Qy~jVq6CIM8IzM3X zn@HJm0}mD{IF!%4=w#F4eMm=gE<*^oKfKAC)DQIzYAPyuNw2EQ;U+by^0~>eGUV#r zTJ@Kutn?xsPhKQN`s}|f|B&@>9%b4Ww|raHRGhF{m>xxt{7>Wyfmk*{u$-ISGvLON z4=7hDmHLwx;u6(D5;rjBP`X*Geh0Ke1kAWSry*d^fv83|VSSvR`da3^X3ZfpHCdEn zjc0;bW?OFr5ZDFq$gv39T~FpU>X<+sLHn+bpnd=8p#3FT>~nPGYZvq3 z;!HO!7m~`%utDDojov8amIG9twNca($y=zyEy7}adJ)&4jPmdiu{k1OL)c9N+RcLv}-fvE%ZV^b84xzoGgE6$Xz z%}BG;9#V9-dF{f%2rP&PCP@J8!r_2ssP2&0_V(xO3x5zTBKHCiZ}%sWIkNSX1R9S6 z_ziL=&ejk*L6*f&ggPe%fbtn^iE8MKM)gLJ&Ev&9vYP&P+eeB6%5|YwW4;nej_c94 zqL3n()aigd+~oZ3X%<;YiG=2hH8Qz7q6b4wjk04?BS~K-vb4-^Qn}&yi){h^n%3fc z(<(z$je=tAS@Ffs#s|eP^Ktk)ggB_+n&N+@Zqpwv)|UQ>-V)i{b>9x*qG6YpDrP=W zoP?iKY`i!R@zQZ#ifs`-J125KzxS%&i{*Fpu1uhpOtI*^}UCtA&|@o)F`{7;cA_mb6IdYbAXn zQZ#YEr6zE0HrD{1!m2xOznzWHb>@LW;b_?8w9^x*4QrR7(rao;F`qg zsno98(WGWrRb%2$N9NN#Ep`rfr1Nh5KUMV`R;E3Ib1N2Yvr6j&i&iBUydk@t5Ff`3 z-(Di>07)xMUlL^q0JACV`9Qbo^}2V6R~Lf$M}+CyF^*HnoLa*p2#d4CDU4tx7Ps?2 z6VxFZpKo0ksJ(@JLy`V@GG)#5P5uIQ`Ab@jC=5eQ+Z54^EosS#BF+3eXQ?+*ND1BB zD%wb&1c6Q4Tppw|Z$aC9iKistl-SXExMH8tw@3rY6-wW?EyadbrBfTZz%DhN`crRu zC;L}q0i!TJ%@=bI*O@w&(PROxN|6bC9MX!ECX-WeOKOOF$c5eq56NJ_8y3k_o$?lC zNSj!Hh+!%GbqsN*;4cg^i^gW;#VY<+DL4QF{71!vL}hIF}fSZ ztJDqSHScSJWR-kdk=2Ynmx1jFDN|{RbSW34Lj|vg5KT%bmpbM)Z5Gr=N)SM!U)ubk zv_jTnwlfRb9P*q(G%TWQHyQ!4T(Y4F#NWDJZkMs4hwQ*oOCk*R3P+H2?o!cQ&{utZ zsW{K;?FEeH$OI zfkAtQHzZErIfQiChR9m3gjLq_4@5`Ja7qRQoQ2|1eNvB|JOuA`8EB+Txh-Qwa)2ZL z)E86mI4IR_7q9AgWSq-y8LdYkAl8e9ze^&yG-f=jg}r{Lf=DhqyVF}=M!XjM1c>*U zc79A?gO3Sp@UiaSyJ)Zka)Hmc_DNiWgW~!%r7+-3Lkit-MwV*97<`%^ge$@!TSb|{ zYYeGtXFoSs0S?pTOl&4HbrXH<5T~(C1A$oam=4HUG31555lyA6(3(BWy0^Hmz3Klq z)_Ypz=UMMkO8x)q{YBRsEp#dHfSYs)U{6d6`RhIp$Yv4EGpU=%PkM*~WGmgvS1BmML7cf#t@^M*Fb?y%Y`6F%b}_!VF;8SF46E6PU_B<**u7; zPY-;c^R#HOCF0A<@4!~L!Ti)gSDkJ`>^A>eilo>mh$r#T9P-==nO7(#D5C}iS+wzhSPh^!1sr>A1LFcZ$Ea_Km zdj&HmZcN>ii8?~fGNQa9Is&geW@J{TH3(Uy%bql$+eTZohWaskiS|#&PQw)PZd`pm z+ALq_@=%T7u8VRw!3}e?y_YXCR4wcWZ=M=lwME{lQhi(<2SC)@{w8hdPv};#I*tU1 z3&zyctKcTE7rmtBaN{44@ER9G<%4Ot_hD7E0SvYBe1tD z64t`Ps%1h+VmkiE)~<9@o)qfQV58;OL^tJ+aS1cm+u>d1g=$hM>hdY!W|mfEdy+Hv zWNdbqFB5B%jRb?X3N~(Szz+U~Q1yw`vPy6faOx|xP)5Qf~ zdZ~N>zeCU@O)sMoAcP2^Em%cp)gqOYI;y90k=~UI@pX0&W;lgsu9w$hZSlxIF-dB5 zea$F_Wyu!~&>Mp}p42z_eMtQV7UY62DVe$!#bLAj&VWt!=`N`dE#WbqS#|CEVr|#U zv4{|E%bw?!cs@{t99uFtN~`&nEcpgvw}8lGJ%|s))K!qg{OM0?fiU!++QP94Lf*PC zoB>Pe~g=CRj7V&W@$oJV|rJLlSWhGItpF=si#+&nEa*A(;8g8cEG^p5+|-OQc?yk$?zpWrGEArGDJJ|akj0(W_oTrTZ8 zn{$Xzg+ktKOpTRaZkx6`=TOCHCSdt%ywp>T9ChR`Stiv?RBuQ)dv(D)aiwO^+7j~0 z!X|DWNe&BzJ!JWOHRP&it_0xG@``q!Bac?SpDOzR{?Jb;hDGIfV83g!5UN$b!E2v{ z(t&ERk`kBhGXORD8+qpZIcE%C*3<4JJe`?RcM`V9NSVjiXUZh}2bPXKlOV@R`Abd| z1IV+%ORM%H*U5lb@=Ce>!n@*MsW`JM=F$(-`o$0UVj0VrRry10_{xFP(uzuTZN(&| zb!d~Uzx?O^1i9h#`-59bB2+fTW@q2d5}j%i-+~4I@O$^qBzZ%7TWA;2;toN-2NDxa zq{Gy<29G6Kz&pD4Utc&qo*@SUr`C@4{jtOB@Ll3*+@Eo5PyGWR>rS%^xk!(I8U^IN z*Ii^@wCHX}&Wwt9g?x3PiR!h51@1oFjurMq^|HWTW~;bmEqj&fYHr0a@q7F>yOaiG z->A6dq^>v=Rf#GxaHFzH#1CaLT&97zH1Mf7PS%y$AUH)#rX6em^#Km1^{CiKh*XSj zD{P3K`Jf1n{T$@${-{Em9a=K6$4 zQ_kMlz3B$Us69h1Fq~2tbYWo+rAS@)Ut-7G03NX8*DuXtNAR7XM3>8{WV6HU-0SZ7 z6@1AbwlJa$Vf8BTtkbGjaxVkhVgI3uEX0s=@{2&sF^2L#c)i1YU0aro?FL}o21ncd=FXsQVv2@;l*0lihce?uQ} z+}X`*)jEneWR;V~FZ-q;thxjxRS`jSm8V+;DkgZJheY*+!BVj64Ek`7koH-yj3fA}4s z+QrmYP;U_Y&ZS87I`7&S5i>g z#@%;&1UsmirA^byqz8uQWpm=)qZZ{iPMbhXu@rH&?=EH#_e%Yd{ieY73@p*Wm}zAoSK3yFs+JH%Cu6`!oo<73p2;|oJK^`CyW7u zQ>6%ksRlQ#XK>rhiFah1jLYEeU~tnHXIT2m2Pa@1GmAZr2+

    &>ARtW+^623%?rj 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

    3`nn%3{gJOY;;iLo;KauW{j~ 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∾y0 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 literal 0 HcmV?d00001 diff --git a/gui/bastille_manager_util.php b/gui/bastille_manager_util.php index e50d200..0281a29 100644 --- a/gui/bastille_manager_util.php +++ b/gui/bastille_manager_util.php @@ -122,7 +122,8 @@ if($_POST): $bastille_version_min = "0920210714"; $bastille_version_format = str_replace(".", "", $bastille_version); $export_option = ""; - $skip_safemode = ""; + #$skip_safemode = ""; + $skip_livemode = ""; if(isset($_POST['format'])): $export_format = $_POST['format']; @@ -138,21 +139,35 @@ if($_POST): break; case 'tgz': $user_export_format = "--tgz"; - $skip_safemode = "yes"; + #$skip_safemode = "yes"; + $skip_livemode = "yes"; break; case 'txz': $user_export_format = "--txz"; - $skip_safemode = "yes"; + #$skip_safemode = "yes"; + $skip_livemode = "yes"; + break; + case 'tzst': + $user_export_format = "--tzst"; + #$skip_safemode = "yes"; + $skip_livemode = "yes"; break; case 'xz': $user_export_format = "--xz"; break; + case 'zst': + $user_export_format = "--zst"; + break; endswitch; + if($pconfig['safemode']): + $export_option = "--auto"; + endif; + if ($zfs_activated == "YES"): - if($pconfig['safemode']): - if(!$skip_safemode): - $export_option = "--auto"; + if($pconfig['livemode']): + if(!$export_option): + $export_option = "--live"; endif; endif; endif; @@ -167,9 +182,9 @@ if($_POST): else: if ($pconfig['format'] == "default"): $export_format = "--txz"; - $cmd = ("/usr/local/bin/bastille export $export_format '{$item}'"); + $cmd = ("/usr/local/bin/bastille export $export_option $export_format '{$item}'"); else: - $cmd = ("/usr/local/bin/bastille export $user_export_format '{$item}'"); + $cmd = ("/usr/local/bin/bastille export $export_option $user_export_format '{$item}'"); endif; endif; @@ -492,6 +507,7 @@ function action_change() { showElementById('backup_tr', 'hide'); showElementById('format_tr', 'hide'); showElementById('safemode_tr', 'hide'); + showElementById('livemode_tr', 'hide'); showElementById('prioritynumber_tr','hide'); var action = document.iform.action.value; switch (action) { @@ -499,6 +515,7 @@ function action_change() { showElementById('backup_tr', 'show'); showElementById('format_tr', 'show'); showElementById('safemode_tr', 'show'); + showElementById('livemode_tr', 'show'); break; case "clone": showElementById('newname_tr','show'); @@ -625,20 +642,26 @@ $document->render(); 'raw' => gettext('RAW'), 'tgz' => gettext('TGZ'), 'txz' => gettext('TXZ'), + 'tzst' => gettext('TZST'), 'xz' => gettext('XZ'), + 'zst' => gettext('ZST'), ]; else: $c_action = [ 'default' => gettext('Default'), 'tgz' => gettext('TGZ'), 'txz' => gettext('TXZ'), + 'tzst' => gettext('TZST'), ]; endif; html_combobox2('action',gettext('Action'),!empty($pconfig['action']),$a_action,'',true,false,'action_change()'); html_combobox2('format',gettext('Archive format'),!empty($pconfig['format']),$c_action,'',true,false); if ($zfs_activated == "YES"): - html_checkbox2('safemode',gettext('Safe ZFS export'),!empty($pconfig['safemode']) ? true : false,gettext('Safely stop and start a ZFS jail before the exporting process, this has no effect on .TGZ/TXZ since the jail should be stopped regardless.'),'',false); + html_checkbox2('safemode',gettext('Safe Jail export'),!empty($pconfig['safemode']) ? true : false,gettext('Safely stop and start the jail before the exporting process.'),'',false); + html_checkbox2('livemode',gettext('Live ZFS export'),!empty($pconfig['livemode']) ? true : false,gettext('Export a running ZFS jail, safe export overrides this option, this has no effect on .TGZ/TXZ/TZST since the jail should be stopped regardless.'),'',false); + else: + html_checkbox2('safemode',gettext('Safe Jail export'),!empty($pconfig['safemode']) ? true : false,gettext('Safely stop and start the jail before the exporting process.'),'',false); endif; html_inputbox2('confirmname',gettext('Enter name for confirmation'),!empty($pconfig['confirmname']),'',true,30); html_inputbox2('prioritynumber',gettext('Enter priority value'),!empty($pconfig['prioritynumber']),'',true,30); @@ -649,7 +672,7 @@ $document->render(); html_filechooser("source_path",gtext("Source Data Directory"),!empty($pconfig['source_path']), gtext("Source data directory to be shared, full path here, if the path contain spaces they will be automatically escaped with the ASCII \"\\040\" octal code."), !empty($source_path), false, 60); html_filechooser("target_path",gtext("Target Data Directory"),!empty($pconfig['target_path']), gtext("Target data directory to be mapped, full path to jail here, if the path contain spaces they will be automatically escaped with the ASCII \"\\040\" octal code."), !empty($target_path), false, 60); html_checkbox2("path_check", gettext("Source/Target path check"),!empty($pconfig['path_check']) ? true : false, gettext("If this option is selected no examination of the source/target directory paths will be performed."), "".gettext("Please use this option only if you know what you are doing here!")."", false); - html_checkbox2('advanced',gettext('Advanced jail configuration Files'),!empty($pconfig['advanced']) ? true : false,gettext('I want to edit the jail files manually, Warning: It is recommended to stop the jail before config edit to prevent issues.'),'',true); + html_checkbox2('advanced',gettext('Advanced jail configuration Files'),!empty($pconfig['advanced']) ? true : false,gettext('I want to edit the jail files manually, Warning: It is recommended to stop the jail before editing the config to prevent issues.'),'',true); html_checkbox2('readonly',gettext('Read-Only Mode'),!empty($pconfig['readonly']) ? true : false,gettext('Set target directory in Read-Only mode.'),'',true); html_checkbox2('automount',gettext('Auto-mount Nullfs'),!empty($pconfig['automount']) ? true : false,gettext('Auto-mount the nullfs mountpoint if the container is already running.'),'',true); html_checkbox2('createdir',gettext('Create Target Directory'),!empty($pconfig['createdir']) ? true : true,gettext('Create target directory if missing (recommended).'),'',true); @@ -664,7 +687,7 @@ $document->render(); html_text2('jail_release',gettext('Current base release:'),htmlspecialchars($current_release)); html_text2('auto_boot',gettext('Enable container auto-startup'),htmlspecialchars("This will cause the container to automatically start each time the system restart.")); html_text2('no_autoboot',gettext('Disable container auto-startup'),htmlspecialchars("This will disable the container automatic startup.")); - html_text2('backup',gettext('Export container'),htmlspecialchars("This will export a container to a compressed file/image, please execute `bastille export` for more info in regards exporting formats, Default is .XZ on ZFS setups or .TXZ otherwise, For faster compressed backups consider .GZ/.TGZ.")); + html_text2('backup',gettext('Export container'),htmlspecialchars("This will export a container to a compressed file/image, please execute `bastille export` for more info in regards exporting formats, Default is .XZ on ZFS setups or .TXZ otherwise, For faster compressed backups consider .ZST/.TZST or .GZ/.TGZ")); if ($disable_base_change == "no"): html_combobox2('release',gettext('New base release'),!empty($pconfig['release']),$b_action,gettext("Warning: This will change current shared base to the selected base on the thin container only, the user is responsible for package updates and/or general incompatibilities issues, or use the command line for native upgrade."),true,false,); diff --git a/version b/version index 550c9e9..d20e748 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.29 +1.2.30 From 17da884cb2d33e3ac89c1ee6b40d0e6e0d31f016 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Thu, 25 Dec 2025 03:20:47 -0400 Subject: [PATCH 59/80] Minor cosmetic/wording changes --- CHANGELOG | 1 + gui/bastille_manager_maintenance.php | 2 +- version | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 1f1df45..1281ca8 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.3.31......Minor cosmetic/wording changes. 1.2.30......Add auto and live export modes, add ZST compression support. 1.2.29......Fix jail backup. 1.2.28......Minor cosmetic/wording changes. diff --git a/gui/bastille_manager_maintenance.php b/gui/bastille_manager_maintenance.php index e2ad18a..2cf08a1 100644 --- a/gui/bastille_manager_maintenance.php +++ b/gui/bastille_manager_maintenance.php @@ -359,7 +359,7 @@ $(document).ready(function(){ html_checkbox2('zfs_activate',gtext('ZFS support activation'),'' ? true : false,gtext('Check this to activate ZFS support or leave unchecked to dismiss (requires ZFS support to be available/enabled), this is a one time option and this row will disappear after clicking Save button or page refresh.'),'',false); endif; ?> - +

    " value=""/> diff --git a/version b/version index d20e748..0848465 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.30 +1.2.31 From 9c8043a71fa0b7b96993519b7aa6c3e832dc57c3 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Wed, 21 Jan 2026 14:02:01 -0400 Subject: [PATCH 60/80] Code improvements/fixes and dashboard cosmetic changes --- CHANGELOG | 3 +- LICENSE | 2 +- bastille-init | 2 +- gui/bastille_manager-lib.inc | 119 ++++++++++++++------------- gui/bastille_manager_add.php | 2 +- gui/bastille_manager_config.php | 2 +- gui/bastille_manager_editor.php | 2 +- gui/bastille_manager_gui.php | 45 ++++++---- gui/bastille_manager_info.php | 2 +- gui/bastille_manager_jconf.php | 2 +- gui/bastille_manager_maintenance.php | 2 +- gui/bastille_manager_tarballs.php | 2 +- gui/bastille_manager_util.php | 2 +- unionfs.sh | 2 +- version | 2 +- 15 files changed, 102 insertions(+), 89 deletions(-) mode change 100755 => 100644 unionfs.sh diff --git a/CHANGELOG b/CHANGELOG index 1281ca8..5e20f9b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,7 +3,8 @@ ====================== Version Description -1.3.31......Minor cosmetic/wording changes. +1.3.00......Code improvements/fixes and dashboard cosmetic changes. +1.2.31......Minor cosmetic/wording changes. 1.2.30......Add auto and live export modes, add ZST compression support. 1.2.29......Fix jail backup. 1.2.28......Minor cosmetic/wording changes. diff --git a/LICENSE b/LICENSE index 39f2630..5800f1c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ --------------------------------------------------------- - Copyright (c) 2019-2025, Jose Rivera + Copyright (c) 2019-2026, Jose Rivera All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/bastille-init b/bastille-init index fcbada6..7348000 100644 --- a/bastille-init +++ b/bastille-init @@ -9,7 +9,7 @@ # Debug script #set -x -# Copyright (c) 2019-2025, José Rivera (joserprg@gmail.com). +# Copyright (c) 2019-2026, José Rivera (joserprg@gmail.com). # All rights reserved. # Redistribution and use in source and binary forms, with or without diff --git a/gui/bastille_manager-lib.inc b/gui/bastille_manager-lib.inc index 906fe78..98581a4 100644 --- a/gui/bastille_manager-lib.inc +++ b/gui/bastille_manager-lib.inc @@ -2,7 +2,7 @@ /* bastille_manager-lib.inc - Copyright (c) 2019-2025 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2026 José Rivera (joserprg@gmail.com). All rights reserved. Redistribution and use in source and binary forms, with or without @@ -219,87 +219,90 @@ function get_jail_infos() { $r['name'] = '-'; endif; $r['jailname'] = $r['name']; - - // Set the JID on the running jails. $item = $r['jailname']; - $r['id'] = exec("/usr/sbin/jls | /usr/bin/awk '/{$item}\ /{print $1}'"); + + # Get some jail infos from 'bastille list' then dump data to temporary file. + # JID Name Boot Prio State Type IP_Address Published_Ports Release Tags + $jail_info = "bastille list | grep -w $item | while read _jid _name _boot _prio _state _type _ip _ports _release _tag; do \ + echo \$_jid \$_name \$_boot \$_prio \$_state \$_type \$_ip \$_ports \$_release \$_tag > /tmp/jail.$item.state; done"; + exec("$jail_info"); + $jid = exec("cat /tmp/jail.$item.state | awk '{print $1}'"); + $boot = exec("cat /tmp/jail.$item.state | awk '{print $3}'"); + $prio = exec("cat /tmp/jail.$item.state | awk '{print $4}'"); + $state = exec("cat /tmp/jail.$item.state | awk '{print $5}'"); + $type = exec("cat /tmp/jail.$item.state | awk '{print $6}'"); + $ipvx = exec("cat /tmp/jail.$item.state | awk '{print $7}'"); + $ports = exec("cat /tmp/jail.$item.state | awk '{print $8}'"); + $release = exec("cat /tmp/jail.$item.state | awk '{print $9}'"); + $tags = exec("cat /tmp/jail.$item.state | awk '{print $10}'"); + + // Set the jail JID. + $r['id'] = $jid; if (!$r['id']): $r['id'] = "-"; endif; - // Set the IP address on the running jails using bastille list command instead. - //$r['ip'] = exec("/usr/bin/grep -w 'ip4.addr' {$jail_dir}/{$item}/jail.conf | /usr/bin/awk '{print $3}' | /usr/bin/tr -d ';'"); - $r['ip'] = exec("/usr/local/bin/bastille list {$item} | awk '{print $7}' | sed 1d"); - if (!$r['ip']): - $r['ip'] = exec("/usr/bin/grep -w 'ip6.addr' {$jail_dir}/{$item}/jail.conf | /usr/bin/awk '{print $3}' | /usr/bin/tr -d ';'"); + // Set the jail Boot. + $r['boot'] = $boot; + if (!$r['boot']): + $r['boot'] = "-"; endif; - // Try to get ip from vnet config. - if(!$r['ip']): - $r['ip'] = exec("/usr/local/bin/bastille cmd {$item} cat /etc/rc.conf | /usr/bin/grep 'ifconfig_vnet0=' | cut -d'\"' -f2 | sed 's/inet //'"); + + // Set the jail Prio. + $r['prio'] = $prio; + if (!$r['prio']): + $r['prio'] = "-"; endif; + + // Set the jail State. + $r['state'] = $state; + if (!$r['state']): + $r['state'] = "-"; + endif; + + // Set the jail Type. + $r['type'] = $type; + if (!$r['type']): + $r['type'] = "-"; + endif; + + // Set the jail IP Address. + $r['ip'] = $ipvx; if (!$r['ip']): $r['ip'] = "-"; endif; - // Display release. - $r['rel'] = exec("/usr/sbin/jexec {$item} freebsd-version 2>/dev/null"); - if (!$r['rel']): - if(is_file("{$jail_dir}/{$item}/root/etc/os-release")): - $r['rel'] = exec("/bin/cat {$jail_dir}/{$item}/root/etc/os-release | grep 'PRETTY_NAME=' | tr -d 'PRETTY_NAME=\"'"); - else: - $r['rel'] = exec("/usr/sbin/jexec {$item} uname -o 2>/dev/null"); - endif; + // Set the jail Published Ports. + $r['ports'] = $ports; + if (!$r['ports']): + $r['ports'] = "-"; endif; - // We can't get release version info or jail stopped. + + // Set the jail Release. + $r['rel'] = $release; if (!$r['rel']): $r['rel'] = "-"; endif; - // Display interface name for VNET jails. - if (exec("/usr/bin/grep -w '.*vnet.interface.*=.*;' {$jail_dir}/{$item}/jail.conf")): - $r['nic'] = exec("/usr/bin/grep -w '.*vnet.interface.*=.*;' {$jail_dir}/{$item}/jail.conf | /usr/bin/awk '{print $3}' | /usr/bin/tr -d ';'"); - if (!$r['nic']): - $r['nic'] = "-"; - endif; - // Display interface name from the previous jail.conf syntax for simple shared IP jails. - elseif (exec("/usr/bin/grep -w '.*interface.*=.*;' {$jail_dir}/{$item}/jail.conf")): - $r['nic'] = exec("/usr/bin/grep -w '.*interface.*=.*;' {$jail_dir}/{$item}/jail.conf | /usr/bin/awk '{print $3}' | /usr/bin/tr -d ';'"); - if (!$r['nic']): - $r['nic'] = "-"; - endif; - // Display interface name from the new jail.conf syntax for simple shared IP jails. - elseif (exec("/usr/bin/grep -w '.*ip4.addr.*=.*|.*' {$jail_dir}/{$item}/jail.conf")): - $r['nic'] = exec("/usr/bin/grep -w '.*ip4.addr.*=.*|.*' {$jail_dir}/{$item}/jail.conf | cut -d'|' -f1 | awk '{print $3}'"); - if (!$r['nic']): - $r['nic'] = "-"; - endif; - endif; - - // Display path. - $r['path'] = exec("/usr/bin/grep -w 'path' {$jail_dir}/{$item}/jail.conf | /usr/bin/awk '{print $3}' | /usr/bin/tr -d ';'"); - if (!$r['path']): - $r['path'] = "-"; - endif; - - // Display auto-start settings. - //$jail_autostart = exec("/usr/bin/grep -w {$item}_AUTO_START $configfile | cut -d'=' -f2 | tr -d '\"'"); - $jail_autostart = exec("/usr/bin/grep -w boot {$jail_dir}/{$item}/settings.conf | cut -d'=' -f2 | tr -d '\"'"); - if ($jail_autostart == 'on'): - $r['boot'] = $img_path['ena']; - elseif ($jail_autostart == 'off'): - $r['boot'] = $img_path['dis']; - else: - $r['boot'] = $img_path['dis']; + // Set the jail Tags. + $r['tags'] = $tags; + if (!$r['tags']): + $r['tags'] = "-"; endif; // Display running status icons. - $jail_running = exec("/usr/sbin/jls name | /usr/bin/awk '/^{$item}\$/'"); - if ($jail_running): + if ($state == "Up"): $r['stat'] = $img_path['ena']; else: $r['stat'] = $img_path['dis']; endif; + # Cleanup temporary file. + $info_tmpfile = "/tmp/jail.$item.state"; + if(is_file("$info_tmpfile")): + unlink("$info_tmpfile"); + endif; + // Display custom template icons if available. $template_icon = "{$jail_dir}/{$item}/plugin_icon.png"; if(file_exists($template_icon)): diff --git a/gui/bastille_manager_add.php b/gui/bastille_manager_add.php index 06e9bf8..cb11c48 100644 --- a/gui/bastille_manager_add.php +++ b/gui/bastille_manager_add.php @@ -2,7 +2,7 @@ /* bastille_manager_add.php - Copyright (c) 2019-2025 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2026 José Rivera (joserprg@gmail.com). All rights reserved. Portions of XigmaNAS® (https://www.xigmanas.com). diff --git a/gui/bastille_manager_config.php b/gui/bastille_manager_config.php index 09d49fc..8f3c422 100644 --- a/gui/bastille_manager_config.php +++ b/gui/bastille_manager_config.php @@ -2,7 +2,7 @@ /* bastille_manager_config.php - Copyright (c) 2019-2025 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2026 José Rivera (joserprg@gmail.com). All rights reserved. Copyright (c) 2018 Andreas Schmidhuber diff --git a/gui/bastille_manager_editor.php b/gui/bastille_manager_editor.php index 9f1ba47..0b20b38 100644 --- a/gui/bastille_manager_editor.php +++ b/gui/bastille_manager_editor.php @@ -2,7 +2,7 @@ /* bastille_manager_editor.php - Copyright (c) 2019-2025 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2026 José Rivera (joserprg@gmail.com). All rights reserved. Portions of XigmaNAS® (https://www.xigmanas.com). diff --git a/gui/bastille_manager_gui.php b/gui/bastille_manager_gui.php index c3f828e..2d868e3 100644 --- a/gui/bastille_manager_gui.php +++ b/gui/bastille_manager_gui.php @@ -2,7 +2,7 @@ /* bastille_manager_gui.php - Copyright (c) 2019-2025 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2026 José Rivera (joserprg@gmail.com). All rights reserved. Portions of XigmaNAS® (https://www.xigmanas.com). @@ -284,32 +284,38 @@ $document->render(); - - - + + + + + + + + - - - - + + - - - - + + + + + + + @@ -338,12 +344,15 @@ $document->render(); ?> - + + + + + + - - - + - + diff --git a/gui/bastille_manager_info.php b/gui/bastille_manager_info.php index 20607cf..ef8e620 100644 --- a/gui/bastille_manager_info.php +++ b/gui/bastille_manager_info.php @@ -2,7 +2,7 @@ /* bastille_manager_info.php - Copyright (c) 2019-2025 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2026 José Rivera (joserprg@gmail.com). All rights reserved. Portions of XigmaNAS® (https://www.xigmanas.com). diff --git a/gui/bastille_manager_jconf.php b/gui/bastille_manager_jconf.php index beb8aed..366f2a4 100644 --- a/gui/bastille_manager_jconf.php +++ b/gui/bastille_manager_jconf.php @@ -2,7 +2,7 @@ /* bastille_manager_jconf.inc - Copyright (c) 2019-2025 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2026 José Rivera (joserprg@gmail.com). All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/gui/bastille_manager_maintenance.php b/gui/bastille_manager_maintenance.php index 2cf08a1..50e3f20 100644 --- a/gui/bastille_manager_maintenance.php +++ b/gui/bastille_manager_maintenance.php @@ -2,7 +2,7 @@ /* bastille_manager_maintenance.php - Copyright (c) 2019-2025 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2026 José Rivera (joserprg@gmail.com). All rights reserved. Copyright (c) 2016 Andreas Schmidhuber diff --git a/gui/bastille_manager_tarballs.php b/gui/bastille_manager_tarballs.php index 13c8c0e..0041eee 100644 --- a/gui/bastille_manager_tarballs.php +++ b/gui/bastille_manager_tarballs.php @@ -2,7 +2,7 @@ /* bastille_manager_tarballs.php - Copyright (c) 2019-2025 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2026 José Rivera (joserprg@gmail.com). All rights reserved. Portions of XigmaNAS® (https://www.xigmanas.com). diff --git a/gui/bastille_manager_util.php b/gui/bastille_manager_util.php index 0281a29..545897d 100644 --- a/gui/bastille_manager_util.php +++ b/gui/bastille_manager_util.php @@ -2,7 +2,7 @@ /* bastille_manager_util.php - Copyright (c) 2019-2025 José Rivera (joserprg@gmail.com). + Copyright (c) 2019-2026 José Rivera (joserprg@gmail.com). All rights reserved. Portions of XigmaNAS® (https://www.xigmanas.com). diff --git a/unionfs.sh b/unionfs.sh old mode 100755 new mode 100644 index a60ddc2..66d4234 --- a/unionfs.sh +++ b/unionfs.sh @@ -10,7 +10,7 @@ # Debug script #set -x -# Copyright (c) 2019-2025, José Rivera (joserprg@gmail.com). +# Copyright (c) 2019-2026, José Rivera (joserprg@gmail.com). # All rights reserved. # Redistribution and use in source and binary forms, with or without diff --git a/version b/version index 0848465..608c196 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.2.31 +1.3.00 From d818e9a96cc8f729c82fc8e36807db35598ba775 Mon Sep 17 00:00:00 2001 From: JRGTH Date: Thu, 5 Feb 2026 23:59:40 -0400 Subject: [PATCH 61/80] Check/update bastille config parameters on runtime --- CHANGELOG | 1 + bastille-init | 19 +++++++++++++++++++ conf/bastille.conf.ext | 10 ++++++++-- version | 2 +- 4 files changed, 29 insertions(+), 3 deletions(-) mode change 100644 => 100755 bastille-init diff --git a/CHANGELOG b/CHANGELOG index 5e20f9b..e773877 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.3.01......Check/update bastille config parameters on runtime. 1.3.00......Code improvements/fixes and dashboard cosmetic changes. 1.2.31......Minor cosmetic/wording changes. 1.2.30......Add auto and live export modes, add ZST compression support. diff --git a/bastille-init b/bastille-init old mode 100644 new mode 100755 index 7348000..b86582a --- a/bastille-init +++ b/bastille-init @@ -1516,6 +1516,25 @@ update_config() sysrc -f ${INSTALLPATH}/${BASTILLECONF} bastille_decompress_zst_options="-k -d -c -v" fi + # Check/append pkgbase parameters. + if ! grep -qw 'bastille_pkgbase_packages=' ${INSTALLPATH}/${BASTILLECONF}; then + sysrc -f ${INSTALLPATH}/${BASTILLECONF} bastille_pkgbase_packages="base-jail" + fi + + # Check/append monitor parameters. + if ! grep -qw 'bastille_monitor_cron_path=' ${INSTALLPATH}/${BASTILLECONF}; then + sysrc -f ${INSTALLPATH}/${BASTILLECONF} bastille_monitor_cron_path="/usr/local/etc/cron.d/bastille-monitor" + fi + if ! grep -qw 'bastille_monitor_cron=' ${INSTALLPATH}/${BASTILLECONF}; then + sysrc -f ${INSTALLPATH}/${BASTILLECONF} bastille_monitor_cron="*/5 * * * * root /usr/local/bin/bastille monitor ALL >/dev/null 2>&1" + fi + if ! grep -qw 'bastille_monitor_logfile=' ${INSTALLPATH}/${BASTILLECONF}; then + sysrc -f ${INSTALLPATH}/${BASTILLECONF} bastille_monitor_logfile="\${bastille_logsdir}/monitor.log" + fi + if ! grep -qw 'bastille_monitor_healthchecks=' ${INSTALLPATH}/${BASTILLECONF}; then + sysrc -f ${INSTALLPATH}/${BASTILLECONF} bastille_monitor_healthchecks="" + fi + # Remove deprecated parameters based on minimum version. if grep -qw 'bastille_jail_interface' ${INSTALLPATH}/${BASTILLECONF}; then sysrc -f ${INSTALLPATH}/${BASTILLECONF} -x bastille_jail_interface diff --git a/conf/bastille.conf.ext b/conf/bastille.conf.ext index c7bee76..8b131f0 100644 --- a/conf/bastille.conf.ext +++ b/conf/bastille.conf.ext @@ -9,12 +9,12 @@ bastille_logsdir="${bastille_prefix}/logs" bastille_pf_conf="${bastille_prefix}/pf.conf" bastille_sharedir="/usr/local/share/bastille" bastille_bootstrap_archives="base" +bastille_pkgbase_packages="base-jail" bastille_tzdata="etc/UTC" bastille_resolv_conf="/etc/resolv.conf" bastille_url_freebsd="http://ftp.freebsd.org/pub/FreeBSD/releases/" bastille_url_hardenedbsd="https://installers.hardenedbsd.org/pub/" bastille_url_midnightbsd="https://www.midnightbsd.org/ftp/MidnightBSD/releases/" -bastille_url_midnightbsd="https://www.midnightbsd.org/ftp/MidnightBSD/releases/" bastille_zfs_enable="" bastille_zfs_zpool="" bastille_zfs_prefix="bastille" @@ -23,13 +23,15 @@ bastille_compress_xz_options="-0 -v" bastille_decompress_xz_options="-c -d -v" bastille_compress_gz_options="-1 -v" bastille_decompress_gz_options="-k -d -c -v" +bastille_compress_zst_options="-3 -v" +bastille_decompress_zst_options="-k -d -c -v" bastille_network_vnet_type="if_bridge" bastille_network_loopback="" bastille_network_pf_ext_if="ext_if" bastille_network_pf_table="jails" bastille_network_shared="" bastille_network_gateway="" -bastille_network_gateway6="" +bastille_network_gateway6="" bastille_template_base="default/base" bastille_template_empty="" bastille_template_thick="default/thick" @@ -37,3 +39,7 @@ bastille_template_clone="default/clone" bastille_template_thin="default/thin" bastille_template_vnet="default/vnet" bastille_template_vlan="default/vlan" +bastille_monitor_cron_path="/usr/local/etc/cron.d/bastille-monitor" +bastille_monitor_cron="*/5 * * * * root /usr/local/bin/bastille monitor ALL >/dev/null 2>&1" +bastille_monitor_logfile="${bastille_logsdir}/monitor.log" +bastille_monitor_healthchecks="" diff --git a/version b/version index 608c196..a430cae 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.3.00 +1.3.01 From 126beefd6f686f95d030e9d2a2fd7120b9bb73d7 Mon Sep 17 00:00:00 2001 From: rubn Date: Sun, 15 Feb 2026 03:31:37 +0100 Subject: [PATCH 62/80] bastille_manager_gui.php --- gui/bastille_manager_gui.php | 224 +++++++++++++++++++++++++++++------ 1 file changed, 191 insertions(+), 33 deletions(-) diff --git a/gui/bastille_manager_gui.php b/gui/bastille_manager_gui.php index 2d868e3..7d1b0e4 100644 --- a/gui/bastille_manager_gui.php +++ b/gui/bastille_manager_gui.php @@ -39,6 +39,73 @@ require_once 'auth.inc'; require_once 'guiconfig.inc'; require_once 'bastille_manager-lib.inc'; +function mwexec_parallel($commands) { + $processes = []; + $results = []; + + foreach ($commands as $key => $command) { + $descriptors = [ + 0 => ['pipe', 'r'], // stdin + 1 => ['pipe', 'w'], // stdout + 2 => ['pipe', 'w'] // stderr + ]; + + $process = proc_open($command, $descriptors, $pipes); + + if (is_resource($process)) { + + stream_set_blocking($pipes[1], false); + stream_set_blocking($pipes[2], false); + + $processes[$key] = [ + 'process' => $process, + 'pipes' => $pipes, + 'command' => $command + ]; + } + } + + $timeout = 30; + $start_time = time(); + + foreach ($processes as $key => $proc) { + $elapsed = time() - $start_time; + if ($elapsed < $timeout) { + + $stdout = stream_get_contents($proc['pipes'][1]); + $stderr = stream_get_contents($proc['pipes'][2]); + + fclose($proc['pipes'][0]); + fclose($proc['pipes'][1]); + fclose($proc['pipes'][2]); + + $return_code = proc_close($proc['process']); + + $results[$key] = [ + 'return_code' => $return_code, + 'stdout' => $stdout, + 'stderr' => $stderr + ]; + } else { + proc_terminate($proc['process']); + proc_close($proc['process']); + + $results[$key] = [ + 'return_code' => -1, + 'stdout' => '', + 'stderr' => 'Command timeout' + ]; + } + } + + return $results; +} + +function mwexec_background($command) { + $command = $command . ' > /dev/null 2>&1 &'; + exec($command); +} + $sphere_scriptname = basename(__FILE__); $sphere_scriptname_child = 'bastille_manager_util.php'; $sphere_header = 'Location: '.$sphere_scriptname; @@ -116,74 +183,165 @@ if($_POST): if(isset($_POST['start_selected_jail']) && $_POST['start_selected_jail']): $checkbox_member_array = isset($_POST[$checkbox_member_name]) ? $_POST[$checkbox_member_name] : []; + $commands = []; + $jail_names = []; + foreach($checkbox_member_array as $checkbox_member_record): if(false !== ($index = array_search_ex($checkbox_member_record, $sphere_array, 'jailname'))): if(!isset($sphere_array[$index]['protected'])): - $cmd = ("/usr/local/bin/bastille start {$checkbox_member_record}"); - $return_val = mwexec($cmd); - if($return_val == 0): - //$savemsg .= gtext("Jail(s) started successfully."); - header($sphere_header); - else: - $errormsg .= gtext("Failed to start jail(s)."); - endif; + $commands[] = "/usr/local/bin/bastille start {$checkbox_member_record}"; + $jail_names[] = $checkbox_member_record; endif; endif; endforeach; + + if (!empty($commands)): + + $results = mwexec_parallel($commands); + + $success_count = 0; + $fail_count = 0; + + foreach ($results as $result): + if ($result['return_code'] == 0): + $success_count++; + else: + $fail_count++; + endif; + endforeach; + + if (function_exists('invalidate_jail_cache')) { + invalidate_jail_cache(); + } + + if ($fail_count > 0): + $errormsg = sprintf(gtext("Started %d jail(s), failed %d jail(s)."), $success_count, $fail_count); + else: + $savemsg = sprintf(gtext("%d jail(s) started successfully."), $success_count); + endif; + + header($sphere_header); + endif; endif; if(isset($_POST['stop_selected_jail']) && $_POST['stop_selected_jail']): $checkbox_member_array = isset($_POST[$checkbox_member_name]) ? $_POST[$checkbox_member_name] : []; + $commands = []; + foreach($checkbox_member_array as $checkbox_member_record): if(false !== ($index = array_search_ex($checkbox_member_record, $sphere_array, 'jailname'))): if(!isset($sphere_array[$index]['protected'])): - $cmd = ("/usr/local/bin/bastille stop {$checkbox_member_record}"); - $return_val = mwexec($cmd); - if($return_val == 0): - //$savemsg .= gtext("Jail(s) stopped successfully."); - header($sphere_header); - else: - $errormsg .= gtext("Failed to stop jail(s)."); - endif; + $commands[] = "/usr/local/bin/bastille stop {$checkbox_member_record}"; endif; endif; endforeach; + + if (!empty($commands)): + $results = mwexec_parallel($commands); + + $success_count = 0; + $fail_count = 0; + + foreach ($results as $result): + if ($result['return_code'] == 0): + $success_count++; + else: + $fail_count++; + endif; + endforeach; + + if (function_exists('invalidate_jail_cache')) { + invalidate_jail_cache(); + } + + if ($fail_count > 0): + $errormsg = sprintf(gtext("Stopped %d jail(s), failed %d jail(s)."), $success_count, $fail_count); + else: + $savemsg = sprintf(gtext("%d jail(s) stopped successfully."), $success_count); + endif; + + header($sphere_header); + endif; endif; if(isset($_POST['restart_selected_jail']) && $_POST['restart_selected_jail']): $checkbox_member_array = isset($_POST[$checkbox_member_name]) ? $_POST[$checkbox_member_name] : []; + $commands = []; + foreach($checkbox_member_array as $checkbox_member_record): if(false !== ($index = array_search_ex($checkbox_member_record, $sphere_array, 'jailname'))): if(!isset($sphere_array[$index]['protected'])): - $cmd = ("/usr/local/bin/bastille restart {$checkbox_member_record}"); - $return_val = mwexec($cmd); - if($return_val == 0): - //$savemsg .= gtext("Jail(s) restarted successfully."); - header($sphere_header); - else: - $errormsg .= gtext("Failed to restart jail(s)."); - endif; + $commands[] = "/usr/local/bin/bastille restart {$checkbox_member_record}"; endif; endif; endforeach; + + if (!empty($commands)): + $results = mwexec_parallel($commands); + + $success_count = 0; + $fail_count = 0; + + foreach ($results as $result): + if ($result['return_code'] == 0): + $success_count++; + else: + $fail_count++; + endif; + endforeach; + + if (function_exists('invalidate_jail_cache')) { + invalidate_jail_cache(); + } + + if ($fail_count > 0): + $errormsg = sprintf(gtext("Restarted %d jail(s), failed %d jail(s)."), $success_count, $fail_count); + else: + $savemsg = sprintf(gtext("%d jail(s) restarted successfully."), $success_count); + endif; + + header($sphere_header); + endif; endif; -if(isset($_POST['autoboot_selected_jail']) && $_POST['autoboot_selected_jail']): + if(isset($_POST['autoboot_selected_jail']) && $_POST['autoboot_selected_jail']): $checkbox_member_array = isset($_POST[$checkbox_member_name]) ? $_POST[$checkbox_member_name] : []; + $commands = []; + foreach($checkbox_member_array as $checkbox_member_record): if(false !== ($index = array_search_ex($checkbox_member_record, $sphere_array, 'jailname'))): if(!isset($sphere_array[$index]['protected'])): - $cmd = ("/usr/local/bin/bastille config {$checkbox_member_record} set boot on"); - $return_val = mwexec($cmd); - if($return_val == 0): - //$savemsg .= gtext("Jail(s) restarted successfully."); - header($sphere_header); - else: - $errormsg .= gtext("Failed to restart jail(s)."); - endif; + $commands[] = "/usr/local/bin/bastille config {$checkbox_member_record} set boot on"; endif; endif; endforeach; + + if (!empty($commands)): + $results = mwexec_parallel($commands); + + $success_count = 0; + $fail_count = 0; + + foreach ($results as $result): + if ($result['return_code'] == 0): + $success_count++; + else: + $fail_count++; + endif; + endforeach; + + if (function_exists('invalidate_jail_cache')) { + invalidate_jail_cache(); + } + + if ($fail_count > 0): + $errormsg = sprintf(gtext("Set autoboot on %d jail(s), failed %d jail(s)."), $success_count, $fail_count); + else: + $savemsg = sprintf(gtext("Autoboot set on %d jail(s) successfully."), $success_count); + endif; + + header($sphere_header); + endif; endif; endif; From ae6fcb9892420160c98802c4734b4f17c7ccece0 Mon Sep 17 00:00:00 2001 From: rubn Date: Sun, 15 Feb 2026 03:41:09 +0100 Subject: [PATCH 63/80] updated bastille_manager-lib.inc --- gui/bastille_manager-lib.inc | 265 ++++++++++++++++++++--------------- 1 file changed, 151 insertions(+), 114 deletions(-) diff --git a/gui/bastille_manager-lib.inc b/gui/bastille_manager-lib.inc index 98581a4..a5c788e 100644 --- a/gui/bastille_manager-lib.inc +++ b/gui/bastille_manager-lib.inc @@ -30,16 +30,18 @@ SUCH DAMAGE. */ + require_once 'super_fun.inc'; require_once 'globals.inc'; require_once 'array.inc'; require_once 'system.inc'; -// Initialize some variables. -// TODO: Some infos can be gathered with- -// internal PHP functions rather than external shell commands. +// ===== OPTIMIZATION: Cache Configuration ===== +define('JAIL_INFO_CACHE_TIME', 5); // seconds +define('JAIL_INFO_CACHE_FILE', '/tmp/bastille_jail_info_cache.json'); +// ============================================= -//$rootfolder = dirname($config['rc']['postinit']['cmd'][$i]); +// Initialize some variables. $prdname = "bastille"; $application = "Bastille Manager"; $restore_name = "restore"; @@ -93,10 +95,6 @@ function is_dir_empty($reldir) { function get_version_bastille() { global $tarballversion, $prdname; if (is_file("{$tarballversion}")): - // For some reason bastille bin version value isn't double quoted anymore so we can't use the old delimiter. - // we will keep the old line for reference. - - //exec("/usr/bin/grep 'BASTILLE_VERSION=' {$tarballversion} | cut -d'\"' -f2", $result); exec("/usr/bin/grep 'BASTILLE_VERSION=' {$tarballversion} | cut -d'=' -f2", $result); return ($result[0] ?? ''); else: @@ -107,7 +105,6 @@ function get_version_bastille() { // Initial install banner function initial_install_banner() { - // Never display this if bastille is already bootstraped/activated. global $rootfolder; global $zfs_activated; $is_activated = ""; @@ -149,8 +146,6 @@ function get_state_zfs() { function get_all_release_list() { global $rootfolder; global $g; - // Don't show Linux base releases under create jail page for now. - #exec("/bin/echo; /bin/ls {$rootfolder}/releases 2>/dev/null | /usr/bin/tr -s ' ' '\n'",$relinfo); exec("/bin/echo; /bin/ls {$rootfolder}/releases | grep RELEASE 2>/dev/null | /usr/bin/tr -s ' ' '\n'",$relinfo); array_shift($relinfo); $rellist = []; @@ -196,133 +191,175 @@ foreach($a_interface as $k_interface => $ifinfo): $l_interfaces[$k_interface] = $k_interface; endforeach; -// Get jail infos. +// ===== CACHE FUNCTIONS ===== +function is_cache_valid() { + if (!file_exists(JAIL_INFO_CACHE_FILE)) { + return false; + } + $cache_age = time() - filemtime(JAIL_INFO_CACHE_FILE); + return $cache_age < JAIL_INFO_CACHE_TIME; +} + +function get_cached_jail_info() { + if (!is_cache_valid()) { + return null; + } + $cache_data = @file_get_contents(JAIL_INFO_CACHE_FILE); + if ($cache_data === false) { + return null; + } + return json_decode($cache_data, true); +} + +function save_jail_info_cache($data) { + @file_put_contents(JAIL_INFO_CACHE_FILE, json_encode($data)); +} + +function invalidate_jail_cache() { + @unlink(JAIL_INFO_CACHE_FILE); +} + +// ===== OPTIMIZED: Get jail infos ===== +// Get jail infos - OPTIMIZED VERSION function get_jail_infos() { global $img_path; global $image_dir; global $configfile; global $jail_dir; + + // Try cache first + $cached = get_cached_jail_info(); + if ($cached !== null) { + return $cached; + } + $result = []; - if(is_dir($jail_dir)): - $cmd = '/usr/local/bin/bastille list jail 2>&1'; - else: - $cmd = ":"; - endif; - mwexec2($cmd,$rawdata); - foreach($rawdata as $line): - $a = preg_split('/\t/',$line); + + if (!is_dir($jail_dir)) { + return $result; + } + + // OPTIMIZATION: Get bastille list ONCE and parse all jails + // Format: JID Name Boot Prio State Type IP_Address Published_Ports Release Tags + $cmd = '/usr/local/bin/bastille list 2>&1'; + mwexec2($cmd, $rawdata); + + // Build a lookup table from bastille list output + $jail_data_map = []; + $header_skipped = false; + + foreach ($rawdata as $line) { + // Skip header line + if (!$header_skipped) { + $header_skipped = true; + continue; + } + + // Parse fields: JID Name Boot Prio State Type IP Ports Release Tags + $fields = preg_split('/\s+/', trim($line), 10); + + if (count($fields) >= 6) { + $name = $fields[1]; + $jail_data_map[$name] = [ + 'jid' => $fields[0], + 'boot' => $fields[2], + 'prio' => $fields[3], + 'state' => $fields[4], + 'type' => $fields[5], + 'ip' => $fields[6] ?? '-', + 'ports' => $fields[7] ?? '-', + 'release' => $fields[8] ?? '-', + 'tags' => $fields[9] ?? '-' + ]; + } + } + + // Now process each jail from bastille list jail (for jail names) + $cmd = '/usr/local/bin/bastille list jail 2>&1'; + mwexec2($cmd, $jail_names); + + foreach ($jail_names as $line) { + $a = preg_split('/\t/', $line); $r = []; $name = $a[0]; - if(preg_match('/(.*)/', $name, $m)): + + if (preg_match('/(.*)/', $name, $m)) { $r['name'] = $m[1]; - else: + } else { $r['name'] = '-'; - endif; + } + $r['jailname'] = $r['name']; $item = $r['jailname']; - # Get some jail infos from 'bastille list' then dump data to temporary file. - # JID Name Boot Prio State Type IP_Address Published_Ports Release Tags - $jail_info = "bastille list | grep -w $item | while read _jid _name _boot _prio _state _type _ip _ports _release _tag; do \ - echo \$_jid \$_name \$_boot \$_prio \$_state \$_type \$_ip \$_ports \$_release \$_tag > /tmp/jail.$item.state; done"; - exec("$jail_info"); - $jid = exec("cat /tmp/jail.$item.state | awk '{print $1}'"); - $boot = exec("cat /tmp/jail.$item.state | awk '{print $3}'"); - $prio = exec("cat /tmp/jail.$item.state | awk '{print $4}'"); - $state = exec("cat /tmp/jail.$item.state | awk '{print $5}'"); - $type = exec("cat /tmp/jail.$item.state | awk '{print $6}'"); - $ipvx = exec("cat /tmp/jail.$item.state | awk '{print $7}'"); - $ports = exec("cat /tmp/jail.$item.state | awk '{print $8}'"); - $release = exec("cat /tmp/jail.$item.state | awk '{print $9}'"); - $tags = exec("cat /tmp/jail.$item.state | awk '{print $10}'"); + // Get data from our lookup table instead of executing bastille list again + if (isset($jail_data_map[$item])) { + $jail_data = $jail_data_map[$item]; - // Set the jail JID. - $r['id'] = $jid; - if (!$r['id']): - $r['id'] = "-"; - endif; + $r['id'] = $jail_data['jid']; + $r['boot'] = $jail_data['boot']; + $r['prio'] = $jail_data['prio']; + $r['state'] = $jail_data['state']; + $r['type'] = $jail_data['type']; + $r['ip'] = $jail_data['ip']; + $r['ports'] = $jail_data['ports']; + $r['rel'] = $jail_data['release']; + $r['tags'] = $jail_data['tags']; + } else { + // Fallback if jail not in bastille list output + $r['id'] = '-'; + $r['boot'] = '-'; + $r['prio'] = '-'; + $r['state'] = '-'; + $r['type'] = '-'; + $r['ip'] = '-'; + $r['ports'] = '-'; + $r['rel'] = '-'; + $r['tags'] = '-'; + } - // Set the jail Boot. - $r['boot'] = $boot; - if (!$r['boot']): - $r['boot'] = "-"; - endif; + // Set defaults for empty values + if (!$r['id']) $r['id'] = "-"; + if (!$r['boot']) $r['boot'] = "-"; + if (!$r['prio']) $r['prio'] = "-"; + if (!$r['state']) $r['state'] = "-"; + if (!$r['type']) $r['type'] = "-"; + if (!$r['ip']) $r['ip'] = "-"; + if (!$r['ports']) $r['ports'] = "-"; + if (!$r['rel']) $r['rel'] = "-"; + if (!$r['tags']) $r['tags'] = "-"; - // Set the jail Prio. - $r['prio'] = $prio; - if (!$r['prio']): - $r['prio'] = "-"; - endif; - - // Set the jail State. - $r['state'] = $state; - if (!$r['state']): - $r['state'] = "-"; - endif; - - // Set the jail Type. - $r['type'] = $type; - if (!$r['type']): - $r['type'] = "-"; - endif; - - // Set the jail IP Address. - $r['ip'] = $ipvx; - if (!$r['ip']): - $r['ip'] = "-"; - endif; - - // Set the jail Published Ports. - $r['ports'] = $ports; - if (!$r['ports']): - $r['ports'] = "-"; - endif; - - // Set the jail Release. - $r['rel'] = $release; - if (!$r['rel']): - $r['rel'] = "-"; - endif; - - // Set the jail Tags. - $r['tags'] = $tags; - if (!$r['tags']): - $r['tags'] = "-"; - endif; - - // Display running status icons. - if ($state == "Up"): + // Display running status icons + if ($r['state'] == "Up") { $r['stat'] = $img_path['ena']; - else: + } else { $r['stat'] = $img_path['dis']; - endif; + } - # Cleanup temporary file. - $info_tmpfile = "/tmp/jail.$item.state"; - if(is_file("$info_tmpfile")): - unlink("$info_tmpfile"); - endif; - - // Display custom template icons if available. + // Display custom template icons if available $template_icon = "{$jail_dir}/{$item}/plugin_icon.png"; - if(file_exists($template_icon)): - if(!file_exists("{$image_dir}/{$item}_icon.png")): - copy("$template_icon", "{$image_dir}/{$item}_icon.png"); - endif; + if (file_exists($template_icon)) { + if (!file_exists("{$image_dir}/{$item}_icon.png")) { + @copy("$template_icon", "{$image_dir}/{$item}_icon.png"); + } $r['logo'] = "{$image_dir}/{$item}_icon.png"; - else: - $template_icon = exec("/usr/bin/grep linsysfs {$jail_dir}/{$item}/fstab"); - if($template_icon): - // Display standard Linux icon. + } else { + $template_icon = exec("/usr/bin/grep linsysfs {$jail_dir}/{$item}/fstab 2>/dev/null"); + if ($template_icon) { + // Display standard Linux icon $r['logo'] = "{$image_dir}/linux_icon.png"; - else: - // Display standard FreeBSD icon. + } else { + // Display standard FreeBSD icon $r['logo'] = "{$image_dir}/bsd_icon.png"; - endif; - endif; + } + } $result[] = $r; - endforeach; + } + + // Save to cache + save_jail_info_cache($result); + return $result; } -?> +?> \ No newline at end of file From b267ad2740e51f29470ce4cf2aed63169f3cbbbc Mon Sep 17 00:00:00 2001 From: JRGTH Date: Sun, 15 Feb 2026 13:32:25 -0400 Subject: [PATCH 64/80] Performance and code improvements, thanks to rucko24 --- CHANGELOG | 1 + version | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index e773877..35c4a55 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ====================== Version Description +1.4.00......Performance and code improvements, thanks to rucko24. 1.3.01......Check/update bastille config parameters on runtime. 1.3.00......Code improvements/fixes and dashboard cosmetic changes. 1.2.31......Minor cosmetic/wording changes. diff --git a/version b/version index a430cae..3245500 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.3.01 +1.4.00 From 9df9713ba720084a26de7036a38a723e1122c0fd Mon Sep 17 00:00:00 2001 From: rubn Date: Sun, 15 Feb 2026 20:45:34 +0100 Subject: [PATCH 65/80] :construction: remove { and add comment --- gui/bastille_manager_maintenance.php | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/gui/bastille_manager_maintenance.php b/gui/bastille_manager_maintenance.php index 50e3f20..f74e28a 100644 --- a/gui/bastille_manager_maintenance.php +++ b/gui/bastille_manager_maintenance.php @@ -313,9 +313,6 @@ $(document).ready(function(){
                    @@ -381,7 +390,7 @@ $document->render();
    <?=$gt_record_add;?>
    @@ -385,8 +382,6 @@ $(document).ready(function(){ From 3fb255694655c98b6edf79bb37ec067de65cf0f7 Mon Sep 17 00:00:00 2001 From: rubn Date: Sun, 15 Feb 2026 12:48:21 +0100 Subject: [PATCH 66/80] :construction: autorefresh --- gui/bastille_manager_gui.php | 143 ++++++++++++++++++++++++---- gui/css/bastille-header-refresh.css | 58 +++++++++++ 2 files changed, 183 insertions(+), 18 deletions(-) create mode 100644 gui/css/bastille-header-refresh.css diff --git a/gui/bastille_manager_gui.php b/gui/bastille_manager_gui.php index 7d1b0e4..bbdff46 100644 --- a/gui/bastille_manager_gui.php +++ b/gui/bastille_manager_gui.php @@ -39,6 +39,36 @@ require_once 'auth.inc'; require_once 'guiconfig.inc'; require_once 'bastille_manager-lib.inc'; +// --- START AUTO-REFRESH LOGIC --- +if (isset($_GET['action']) && $_GET['action'] === 'refresh_table') { + error_reporting(0); + ini_set('display_errors', 0); + ob_start(); + + // Force cache invalidation + $cache_file = '/tmp/bastille_jail_info_cache.json'; + if (file_exists($cache_file)) { + if (!@unlink($cache_file)) { + // Try system level delete if PHP fails (permissions) + mwexec("/bin/rm -f " . escapeshellarg($cache_file)); + } + } + + // Fetch fresh data + $jls_list = []; + if (function_exists('get_jail_infos')) { + $jls_list = get_jail_infos(); + } + + // Return JSON + ob_clean(); + header('Content-Type: application/json'); + header('Cache-Control: no-cache'); + echo json_encode(['success' => true, 'jails' => $jls_list ?: []]); + exit; +} +// --- END AUTO-REFRESH LOGIC --- + function mwexec_parallel($commands) { $processes = []; $results = []; @@ -53,7 +83,6 @@ function mwexec_parallel($commands) { $process = proc_open($command, $descriptors, $pipes); if (is_resource($process)) { - stream_set_blocking($pipes[1], false); stream_set_blocking($pipes[2], false); @@ -71,7 +100,6 @@ function mwexec_parallel($commands) { foreach ($processes as $key => $proc) { $elapsed = time() - $start_time; if ($elapsed < $timeout) { - $stdout = stream_get_contents($proc['pipes'][1]); $stderr = stream_get_contents($proc['pipes'][2]); @@ -102,8 +130,8 @@ function mwexec_parallel($commands) { } function mwexec_background($command) { - $command = $command . ' > /dev/null 2>&1 &'; - exec($command); + $command = $command . ' > /dev/null 2>&1 &'; + exec($command); } $sphere_scriptname = basename(__FILE__); @@ -184,19 +212,16 @@ if($_POST): if(isset($_POST['start_selected_jail']) && $_POST['start_selected_jail']): $checkbox_member_array = isset($_POST[$checkbox_member_name]) ? $_POST[$checkbox_member_name] : []; $commands = []; - $jail_names = []; foreach($checkbox_member_array as $checkbox_member_record): if(false !== ($index = array_search_ex($checkbox_member_record, $sphere_array, 'jailname'))): if(!isset($sphere_array[$index]['protected'])): $commands[] = "/usr/local/bin/bastille start {$checkbox_member_record}"; - $jail_names[] = $checkbox_member_record; endif; endif; endforeach; if (!empty($commands)): - $results = mwexec_parallel($commands); $success_count = 0; @@ -345,7 +370,7 @@ if($_POST): endif; endif; -$pgtitle = [gtext("Extensions"), gtext('Bastille')]; +$pgtitle = [gtext("Extensions"), gtext('Bastille'), gtext('Manager')]; include 'fbegin.inc'; ?> render(); - -
    + + +
    + Last update: just now + +
    + @@ -533,6 +638,7 @@ $document->render(); endif; endif; ?> + @@ -562,8 +668,9 @@ $document->render();
    <?=$gt_record_conf?>
    \ No newline at end of file diff --git a/gui/css/bastille-header-refresh.css b/gui/css/bastille-header-refresh.css new file mode 100644 index 0000000..91a947f --- /dev/null +++ b/gui/css/bastille-header-refresh.css @@ -0,0 +1,58 @@ +/* bastille_manager.css + Estilo NATIVO (Minimalista) +*/ + +#refresh-controls { + /* Fondo transparente y sin bordes para integrarse con el tema */ + background: transparent; + border: none; + padding: 10px 0; + margin-bottom: 5px; + + /* Alineación a la derecha */ + display: flex; + justify-content: flex-end; + align-items: center; + gap: 15px; + + /* Fuente estándar del sistema */ + font-size: 13px; + color: inherit; +} + +#refresh-status { + /* Color de texto por defecto del tema (negro/gris) */ + color: inherit; + margin-right: 5px; + + /* Coloca el texto a la izquierda de los botones */ + order: -1; +} + +/* Pequeño spinner azul discreto solo cuando actualiza */ +#refresh-status.updating .refresh-spinner { + display: inline-block; + width: 10px; + height: 10px; + border: 2px solid #ccc; + border-top-color: #007bff; + border-radius: 50%; + animation: spin 1s linear infinite; + margin-right: 5px; +} + +/* Animación del spinner */ +@keyframes spin { + to { transform: rotate(360deg); } +} + +/* Asegurar que los iconos de la tabla estén centrados verticalmente */ +.area_data_selection tbody td img { + vertical-align: middle; +} + +/* Centrado perfecto para los checkboxes */ +.lcelc { + text-align: center; + vertical-align: middle; +} \ No newline at end of file From 5b430f81c8f872dc4f06b2d05e9b96db311aa045 Mon Sep 17 00:00:00 2001 From: rubn Date: Sun, 15 Feb 2026 21:07:16 +0100 Subject: [PATCH 67/80] added .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..723ef36 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea \ No newline at end of file From 2e67d7252f35249b02cd3cad486e85be4a86b106 Mon Sep 17 00:00:00 2001 From: rubn Date: Sun, 15 Feb 2026 21:52:30 +0100 Subject: [PATCH 68/80] Enhance manager auto-refresh with interval control and selection persistence This update improves the auto-refresh functionality on the Bastille manager page. It introduces a dropdown menu allowing users to select the refresh interval or disable it. Additionally, jail selections are now preserved across automatic refreshes, and action buttons are updated accordingly. --- gui/bastille_manager_gui.php | 72 ++++++++++++++++++++++++++++++++---- 1 file changed, 64 insertions(+), 8 deletions(-) diff --git a/gui/bastille_manager_gui.php b/gui/bastille_manager_gui.php index bbdff46..7243760 100644 --- a/gui/bastille_manager_gui.php +++ b/gui/bastille_manager_gui.php @@ -373,6 +373,31 @@ endif; $pgtitle = [gtext("Extensions"), gtext('Bastille'), gtext('Manager')]; include 'fbegin.inc'; ?> + + render();
    - +
    - + + + + + + + + + + + + - - - - - - - - - - - Date: Mon, 16 Feb 2026 03:24:56 +0100 Subject: [PATCH 72/80] :construction: show refresh button --- gui/bastille_manager_gui.php | 7 ++++++- gui/bastille_manager_maintenance.php | 22 +++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/gui/bastille_manager_gui.php b/gui/bastille_manager_gui.php index 6609a67..4437f10 100644 --- a/gui/bastille_manager_gui.php +++ b/gui/bastille_manager_gui.php @@ -476,6 +476,11 @@ $(window).on("load", function() { // --- INICIALIZAR EL RESIZE MANUAL --- initSimpleResize(); + + // --- VISIBILIDAD CONTROLES REFRESH --- + if (localStorage.getItem('bastille_show_refresh_button') === 'true') { + $("#refresh-controls").show(); + } }); function disableactionbuttons(ab_disable) { @@ -685,7 +690,7 @@ $document->render();
    -
    + + + + + + +
    @@ -390,8 +396,6 @@ $(document).ready(function(){ - -
    diff --git a/version b/version index 41e061e..0e6aa1b 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.4.02 +1.4.03 From 9ebfeab85cb2751bb8b7437be3f314d0d41ce7c2 Mon Sep 17 00:00:00 2001 From: rubn Date: Mon, 16 Feb 2026 23:06:03 +0100 Subject: [PATCH 76/80] :construction: added fetch, persist width --- gui/bastille_manager-lib.inc | 4 ++ gui/bastille_manager_gui.php | 88 +++++++++++++++++++++++++++------- gui/bastille_manager_jconf.php | 18 +++++++ 3 files changed, 94 insertions(+), 16 deletions(-) diff --git a/gui/bastille_manager-lib.inc b/gui/bastille_manager-lib.inc index a5c788e..807910c 100644 --- a/gui/bastille_manager-lib.inc +++ b/gui/bastille_manager-lib.inc @@ -318,6 +318,10 @@ function get_jail_infos() { $r['tags'] = '-'; } + // Get description + $r['description'] = exec("/usr/local/bin/bastille config {$item} get description"); + if (!$r['description']) $r['description'] = "-"; + // Set defaults for empty values if (!$r['id']) $r['id'] = "-"; if (!$r['boot']) $r['boot'] = "-"; diff --git a/gui/bastille_manager_gui.php b/gui/bastille_manager_gui.php index 9a1738c..7053158 100644 --- a/gui/bastille_manager_gui.php +++ b/gui/bastille_manager_gui.php @@ -60,6 +60,8 @@ if (isset($_GET['action']) && $_GET['action'] === 'refresh_table') { ob_start(); // Fetch fresh data + // Note: We rely on the internal caching of get_jail_infos() (5 seconds) + // to avoid overloading the system with 'bastille list' commands if multiple requests occur. $jls_list = []; if (function_exists('get_jail_infos')) { $jls_list = get_jail_infos(); @@ -383,9 +385,10 @@ include 'fbegin.inc'; filter: brightness(150%); } -/* --- SIMPLE RESIZE STYLES --- */ +/* --- ESTILOS DE RESIZE SIMPLE --- */ table.area_data_selection { - table-layout: fixed; + table-layout: fixed; /* Mantiene la cordura del navegador */ + /*width: auto; IMPORTANTE: Auto para empezar */ border-collapse: collapse; } @@ -397,7 +400,7 @@ table.area_data_selection th { text-overflow: ellipsis; } -/* The visible handle */ +/* El tirador visible */ .resizer { position: absolute; top: 0; @@ -448,7 +451,7 @@ $(window).on("load", function() { autoRefresh.interval = parseInt(savedInterval); } // --- REFRESH INIT --- - // Only start if the button is visible (enabled in settings) + // Solo iniciar si el botón está visible (habilitado en configuración) if (localStorage.getItem('bastille_show_refresh_button') === 'true') { $("#refresh-controls").show(); startAutoRefresh(); @@ -469,6 +472,7 @@ $(window).on("load", function() { } }); + // --- INICIALIZAR EL RESIZE MANUAL --- initSimpleResize(); }); @@ -510,16 +514,15 @@ function updateJailTable() { autoRefresh.isUpdating = true; $("#refresh-status").text('Updating...'); - // Backup of checked checkboxes for persistence + // Backup de checkboxes marcados para persistencia autoRefresh.selectedJails = []; $("input[name='[]']:checked").each(function() { autoRefresh.selectedJails.push($(this).val()); }); - $.ajax({ - url: 'bastille_manager_gui.php?action=refresh_table', - dataType: 'json', - success: function(data) { + fetch('bastille_manager_gui.php?action=refresh_table') + .then(response => response.json()) + .then(data => { if (data.success) { var tbody = $(".area_data_selection tbody"); tbody.empty(); @@ -538,6 +541,10 @@ function updateJailTable() { // 2. Data Columns row.append($('').text(jail.id || '-')); row.append($('').text(jail.name || '-')); + + // Description Column + // row.append($('').text(jail.description || '-')); + row.append($('').text(jail.boot || '-')); row.append($('').text(jail.prio || '-')); row.append($('').text(jail.state || '-')); @@ -563,10 +570,18 @@ function updateJailTable() { autoRefresh.lastUpdate = Date.now(); $("#refresh-status").text('Last update: just now'); controlactionbuttons(null, '[]'); + + // Re-aplicar anchos de columna guardados después de actualizar la tabla + applySavedColumnWidths(); } - }, - complete: function() { autoRefresh.isUpdating = false; } - }); + }) + .catch(error => { + console.error('Error fetching jail data:', error); + $("#refresh-status").text('Update failed'); + }) + .finally(() => { + autoRefresh.isUpdating = false; + }); } function startAutoRefresh() { @@ -579,18 +594,23 @@ function stopAutoRefresh() { if (autoRefresh.timerId) clearInterval(autoRefresh.timerId); } -// --- STABLE REDIMENSIONING FUNCTION (without %) --- +// --- FUNCIÓN DE REDIMENSIONADO ESTABLE (Sin %) --- function initSimpleResize() { var $table = $("table.area_data_selection"); var $cols = $table.find('colgroup col'); var $headers = $table.find('thead th'); + // 1. Aplicar anchos guardados al inicio + applySavedColumnWidths(); + + // 2. AÑADIR TIRADORES $headers.each(function(i) { - if (i >= $headers.length - 1) return; // Ignore the last column + if (i >= $headers.length - 1) return; // Ignorar la última columna var $resizer = $('
    '); $(this).append($resizer); }); + // 3. LÓGICA DE ARRASTRE var isResizing = false; var startX = 0; var $currentCol = null; @@ -600,7 +620,7 @@ function initSimpleResize() { e.preventDefault(); e.stopPropagation(); stopAutoRefresh(); - // Convert all columns to fixed pixels when starting to drag + // Convertir todas las columnas a píxeles fijos al iniciar el arrastre $cols.each(function() { var w = $(this).width(); $(this).css('width', w + 'px'); @@ -631,12 +651,46 @@ function initSimpleResize() { isResizing = false; $('.resizer').removeClass('resizing'); $(document).off('mousemove.rsz mouseup.rsz'); + + // Guardar anchos al terminar de redimensionar + saveColumnWidths(); + setTimeout(function() { - startAutoRefresh(); + // Solo reanudar si estaba habilitado + if (localStorage.getItem('bastille_show_refresh_button') === 'true') { + startAutoRefresh(); + } }, 500); }); }); } + +function saveColumnWidths() { + var widths = {}; + var $cols = $("table.area_data_selection colgroup col"); + $cols.each(function(index) { + // Guardamos el ancho en píxeles + widths[index] = $(this).css('width'); + }); + localStorage.setItem('bastille_col_widths', JSON.stringify(widths)); +} + +function applySavedColumnWidths() { + var saved = localStorage.getItem('bastille_col_widths'); + if (saved) { + try { + var widths = JSON.parse(saved); + var $cols = $("table.area_data_selection colgroup col"); + $cols.each(function(index) { + if (widths[index]) { + $(this).css('width', widths[index]); + } + }); + } catch (e) { + console.error("Error parsing saved column widths", e); + } + } +} //]]> render(); + @@ -756,6 +811,7 @@ $document->render();     +       diff --git a/gui/bastille_manager_jconf.php b/gui/bastille_manager_jconf.php index 366f2a4..20b1f6d 100644 --- a/gui/bastille_manager_jconf.php +++ b/gui/bastille_manager_jconf.php @@ -87,6 +87,7 @@ $pconfig['enforce_statfs'] = exec("/usr/bin/grep '.*enforce_statfs.*=' $jail_con $pconfig['osrelease'] = exec("/usr/local/bin/bastille config {$item} get osrelease | cut -d '=' -f2 | tr -d ' ;'"); $pconfig['vnet_interface'] = exec("/usr/bin/grep '.*vnet.interface.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); $pconfig['boot_prio'] = exec("/usr/local/bin/bastille config {$item} get priority"); +$pconfig['description'] = exec("/usr/local/bin/bastille config {$item} get description"); // Set the jail config default parameters. $jail_name_def = $pconfig['jname']; @@ -100,6 +101,7 @@ $jail_enforce_statfs_def = $pconfig['enforce_statfs']; $jail_osrelease_def = $pconfig['osrelease']; $jail_vnet_interface_def = $pconfig['vnet_interface']; $jail_boot_prio_def = $pconfig['boot_prio']; +$jail_description_def = $pconfig['description']; // Check if is a Linux jail. $is_linux_jail = exec("/usr/bin/grep linsysfs {$jail_dir}/{$jail_name_def}/fstab"); @@ -233,6 +235,9 @@ if ($_POST): if(isset($pconfig['boot_prio'])): $jail_boot_prio = $pconfig['boot_prio']; endif; + if(isset($pconfig['description'])): + $jail_description = $pconfig['description']; + endif; // Check if the config has changed for each parameters. // This jails wide changes requires the jail to be already stopped. @@ -434,6 +439,18 @@ if ($_POST): endif; endif; + if (isset($_POST['description']) || $_POST['description']): + if($jail_description_def !== $jail_description): + $cmd = "/usr/local/bin/bastille config {$item} set description \"$jail_description\""; + unset($output,$retval);mwexec2($cmd,$output,$retval); + if($retval == 0): + //$savemsg .= gtext("Description changed successfully."); + else: + $input_errors[] = gtext("Failed to save description."); + endif; + endif; + endif; + if (isset($_POST['jname']) && $_POST['jname']): if($jail_name_def !== $jail_name): $cmd = "/usr/local/bin/bastille rename $jail_name_def $jail_name"; @@ -498,6 +515,7 @@ endif; html_titleline2(gtext("Misc Configuration")); html_checkbox2('autostart',gtext('Autoboot'),!empty($pconfig['autostart']) ? true : false,gtext('Autoboot this jail after system reboot.'),'',false); html_inputbox("boot_prio", gtext("Priority"), $pconfig['boot_prio'], gtext("Set the priority value of the jail. Affects the boot order behaviour."), false, 20); + html_inputbox("description", gtext("Description"), $pconfig['description'], gtext("Set a description for the jail."), false, 40); //html_checkbox2('force_edit',gtext('Force edit'),!empty($pconfig['force_edit']) ? true : false,gtext('Automatically stop and start this jail if is already running.'),'',false); ?> From 0924c28f2518d4c8cf21a98118ad427ae93868d2 Mon Sep 17 00:00:00 2001 From: rubn Date: Mon, 16 Feb 2026 23:26:51 +0100 Subject: [PATCH 77/80] :construction: disable description field --- gui/bastille_manager-lib.inc | 4 ++-- gui/bastille_manager_gui.php | 29 ++++++++++++----------------- gui/bastille_manager_jconf.php | 6 +++--- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/gui/bastille_manager-lib.inc b/gui/bastille_manager-lib.inc index 807910c..b15870d 100644 --- a/gui/bastille_manager-lib.inc +++ b/gui/bastille_manager-lib.inc @@ -319,8 +319,8 @@ function get_jail_infos() { } // Get description - $r['description'] = exec("/usr/local/bin/bastille config {$item} get description"); - if (!$r['description']) $r['description'] = "-"; + // $r['description'] = exec("/usr/local/bin/bastille config {$item} get description"); + // if (!$r['description']) $r['description'] = "-"; // Set defaults for empty values if (!$r['id']) $r['id'] = "-"; diff --git a/gui/bastille_manager_gui.php b/gui/bastille_manager_gui.php index 7053158..8a2b42f 100644 --- a/gui/bastille_manager_gui.php +++ b/gui/bastille_manager_gui.php @@ -60,8 +60,6 @@ if (isset($_GET['action']) && $_GET['action'] === 'refresh_table') { ob_start(); // Fetch fresh data - // Note: We rely on the internal caching of get_jail_infos() (5 seconds) - // to avoid overloading the system with 'bastille list' commands if multiple requests occur. $jls_list = []; if (function_exists('get_jail_infos')) { $jls_list = get_jail_infos(); @@ -450,8 +448,7 @@ $(window).on("load", function() { $("#refresh-interval").val(savedInterval); autoRefresh.interval = parseInt(savedInterval); } - // --- REFRESH INIT --- - // Solo iniciar si el botón está visible (habilitado en configuración) + // --- REFRESH INIT if (localStorage.getItem('bastille_show_refresh_button') === 'true') { $("#refresh-controls").show(); startAutoRefresh(); @@ -472,7 +469,7 @@ $(window).on("load", function() { } }); - // --- INICIALIZAR EL RESIZE MANUAL --- + // --- INITIALIZE MANUAL RESIZE --- initSimpleResize(); }); @@ -541,10 +538,8 @@ function updateJailTable() { // 2. Data Columns row.append($('').text(jail.id || '-')); row.append($('').text(jail.name || '-')); - // Description Column // row.append($('').text(jail.description || '-')); - row.append($('').text(jail.boot || '-')); row.append($('').text(jail.prio || '-')); row.append($('').text(jail.state || '-')); @@ -571,7 +566,7 @@ function updateJailTable() { $("#refresh-status").text('Last update: just now'); controlactionbuttons(null, '[]'); - // Re-aplicar anchos de columna guardados después de actualizar la tabla + // Reapply saved column widths after updating the table applySavedColumnWidths(); } }) @@ -594,23 +589,23 @@ function stopAutoRefresh() { if (autoRefresh.timerId) clearInterval(autoRefresh.timerId); } -// --- FUNCIÓN DE REDIMENSIONADO ESTABLE (Sin %) --- +// --- STABLE REDIMENSIONING FUNCTION (without %) --- function initSimpleResize() { var $table = $("table.area_data_selection"); var $cols = $table.find('colgroup col'); var $headers = $table.find('thead th'); - // 1. Aplicar anchos guardados al inicio + // 1. Apply saved widths at the beginning applySavedColumnWidths(); - // 2. AÑADIR TIRADORES + // 2. ADD HANDLES $headers.each(function(i) { - if (i >= $headers.length - 1) return; // Ignorar la última columna + if (i >= $headers.length - 1) return; // Ignore the last column var $resizer = $('
    '); $(this).append($resizer); }); - // 3. LÓGICA DE ARRASTRE + // 3. DRAG LOGIC var isResizing = false; var startX = 0; var $currentCol = null; @@ -620,7 +615,7 @@ function initSimpleResize() { e.preventDefault(); e.stopPropagation(); stopAutoRefresh(); - // Convertir todas las columnas a píxeles fijos al iniciar el arrastre + // Convert all columns to fixed pixels when starting to drag $cols.each(function() { var w = $(this).width(); $(this).css('width', w + 'px'); @@ -652,11 +647,11 @@ function initSimpleResize() { $('.resizer').removeClass('resizing'); $(document).off('mousemove.rsz mouseup.rsz'); - // Guardar anchos al terminar de redimensionar + // Save widths after resizing saveColumnWidths(); setTimeout(function() { - // Solo reanudar si estaba habilitado + // Only resume if enabled if (localStorage.getItem('bastille_show_refresh_button') === 'true') { startAutoRefresh(); } @@ -669,7 +664,7 @@ function saveColumnWidths() { var widths = {}; var $cols = $("table.area_data_selection colgroup col"); $cols.each(function(index) { - // Guardamos el ancho en píxeles + // We save the width in pixels. widths[index] = $(this).css('width'); }); localStorage.setItem('bastille_col_widths', JSON.stringify(widths)); diff --git a/gui/bastille_manager_jconf.php b/gui/bastille_manager_jconf.php index 20b1f6d..fd5b04a 100644 --- a/gui/bastille_manager_jconf.php +++ b/gui/bastille_manager_jconf.php @@ -87,7 +87,7 @@ $pconfig['enforce_statfs'] = exec("/usr/bin/grep '.*enforce_statfs.*=' $jail_con $pconfig['osrelease'] = exec("/usr/local/bin/bastille config {$item} get osrelease | cut -d '=' -f2 | tr -d ' ;'"); $pconfig['vnet_interface'] = exec("/usr/bin/grep '.*vnet.interface.*=' $jail_config | cut -d '=' -f2 | tr -d ' ;'"); $pconfig['boot_prio'] = exec("/usr/local/bin/bastille config {$item} get priority"); -$pconfig['description'] = exec("/usr/local/bin/bastille config {$item} get description"); +// $pconfig['description'] = exec("/usr/local/bin/bastille config {$item} get description"); // Set the jail config default parameters. $jail_name_def = $pconfig['jname']; @@ -101,7 +101,7 @@ $jail_enforce_statfs_def = $pconfig['enforce_statfs']; $jail_osrelease_def = $pconfig['osrelease']; $jail_vnet_interface_def = $pconfig['vnet_interface']; $jail_boot_prio_def = $pconfig['boot_prio']; -$jail_description_def = $pconfig['description']; +// $jail_description_def = $pconfig['description']; // Check if is a Linux jail. $is_linux_jail = exec("/usr/bin/grep linsysfs {$jail_dir}/{$jail_name_def}/fstab"); @@ -515,7 +515,7 @@ endif; html_titleline2(gtext("Misc Configuration")); html_checkbox2('autostart',gtext('Autoboot'),!empty($pconfig['autostart']) ? true : false,gtext('Autoboot this jail after system reboot.'),'',false); html_inputbox("boot_prio", gtext("Priority"), $pconfig['boot_prio'], gtext("Set the priority value of the jail. Affects the boot order behaviour."), false, 20); - html_inputbox("description", gtext("Description"), $pconfig['description'], gtext("Set a description for the jail."), false, 40); + // html_inputbox("description", gtext("Description"), $pconfig['description'], gtext("Set a description for the jail."), false, 40); //html_checkbox2('force_edit',gtext('Force edit'),!empty($pconfig['force_edit']) ? true : false,gtext('Automatically stop and start this jail if is already running.'),'',false); ?> From 49f7ecf84827b91ff98460118f91077288b3bdfe Mon Sep 17 00:00:00 2001 From: tschettervictor <85497460+tschettervictor@users.noreply.github.com> Date: Tue, 17 Feb 2026 08:04:38 -0700 Subject: [PATCH 78/80] Show install steps in readme --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 5032784..3b62e15 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,14 @@ This is the XigmaNAS Bastille Extension to create and manage FreeBSD Jails/Containers. +**Install** + +``` +mkdir -p /mnt/tank/extensions/bastille +cd /mnt/tank/extensions/bastille +fetch --no-verify-peer https://raw.githubusercontent.com/JRGTH/xigmanas-bastille-extension/master/bastille-init && chmod +x bastille-init && ./bastille-init && echo "=> Done!" +``` + **Credits:** Christer Edwards (cedwards) Bastille, J.M. Rivera (JRGTH) Bastille and XigmaNAS Add-on. From 6a3474a768ed7ebe310cce1ce8d043e91a5f0a07 Mon Sep 17 00:00:00 2001 From: rubn Date: Tue, 17 Feb 2026 17:40:03 +0100 Subject: [PATCH 79/80] :construction: spinner and column fix --- gui/bastille_manager_gui.php | 139 +++++++++++++++++++++++++++-------- 1 file changed, 107 insertions(+), 32 deletions(-) diff --git a/gui/bastille_manager_gui.php b/gui/bastille_manager_gui.php index 9a1738c..54572f1 100644 --- a/gui/bastille_manager_gui.php +++ b/gui/bastille_manager_gui.php @@ -366,7 +366,34 @@ $pgtitle = [gtext("Extensions"), gtext('Bastille'), gtext('Manager')]; include 'fbegin.inc'; ?>