From 7620d61e495aea42091caa3da7fbd68419a06892 Mon Sep 17 00:00:00 2001 From: Jose Date: Sun, 2 Feb 2020 02:42:22 -0400 Subject: [PATCH 1/7] Add HardenedBSD CURRENT and LATEST download options, and code improvements --- usr/local/etc/bastille/bastille.conf | 4 +- usr/local/share/bastille/bootstrap.sh | 101 +++++++++++++++----------- usr/local/share/bastille/create.sh | 56 ++++++++------ usr/local/share/bastille/destroy.sh | 82 +++++++++++---------- usr/local/share/bastille/list.sh | 2 +- 5 files changed, 142 insertions(+), 103 deletions(-) diff --git a/usr/local/etc/bastille/bastille.conf b/usr/local/etc/bastille/bastille.conf index 1eec0c9d..6503ae06 100644 --- a/usr/local/etc/bastille/bastille.conf +++ b/usr/local/etc/bastille/bastille.conf @@ -24,8 +24,8 @@ bastille_tzdata="etc/UTC" ## default bastille_resolv_conf="/etc/resolv.conf" ## default: "/etc/resolv.conf" ## bootstrap urls -bastille_url_freebsd="http://ftp.freebsd.org/pub/FreeBSD/releases/" ## default: "http://ftp.freebsd.org/pub/FreeBSD/releases/" -bastille_url_hardenedbsd="https://installer.hardenedbsd.org/pub/HardenedBSD/releases/" ## default: "https://installer.hardenedbsd.org/pub/HardenedBSD/releases/" +bastille_url_freebsd="http://ftp.freebsd.org/pub/FreeBSD/releases/" ## default: "http://ftp.freebsd.org/pub/FreeBSD/releases/" +bastille_url_hardenedbsd="http://installer.hardenedbsd.org/pub/hardenedbsd/" ## default: "https://installer.hardenedbsd.org/pub/HardenedBSD/releases/" ## ZFS options bastille_zfs_enable="" ## default: "" diff --git a/usr/local/share/bastille/bootstrap.sh b/usr/local/share/bastille/bootstrap.sh index 9627242f..db4e7d08 100644 --- a/usr/local/share/bastille/bootstrap.sh +++ b/usr/local/share/bastille/bootstrap.sh @@ -66,6 +66,21 @@ if [ "${bastille_zfs_enable}" = "YES" ]; then fi fi +validate_release_url() { + ## check upstream url, else switch to alternate url + if [ -n "${NAME_VERIFY}" ]; then + RELEASE="${NAME_VERIFY}" + if ! fetch -qo /dev/null "${UPSTREAM_URL}/MANIFEST" 2>/dev/null; then + ## try an alternate url + UPSTREAM_URL="${UPSTREAM_ALT}" + fi + bootstrap_directories + bootstrap_release + else + usage + fi +} + bootstrap_network_interfaces() { ## test for both options empty @@ -408,50 +423,54 @@ RELEASE="${1}" ## Filter sane release names case "${1}" in *-RELEASE|*-release|*-RC1|*-rc1|*-RC2|*-rc2) -## check for FreeBSD releases name -NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '^([1-9]{2,2})\.[0-9](-RELEASE|-RC[1-2])$' | tr '[:lower:]' '[:upper:]') -if [ -n "${NAME_VERIFY}" ]; then - RELEASE="${NAME_VERIFY}" - UPSTREAM_URL="${bastille_url_freebsd}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${RELEASE}" - if ! fetch -qo /dev/null "${UPSTREAM_URL}/MANIFEST" 2>/dev/null; then - ## try an alternate url - UPSTREAM_URL="ftp://ftp.freebsd.org/pub/FreeBSD/releases/${HW_MACHINE}/${HW_MACHINE_ARCH}/${RELEASE}" - fi - bootstrap_directories - bootstrap_release -else - usage -fi + ## check for FreeBSD releases name + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '^([1-9]{2,2})\.[0-9](-RELEASE|-RC[1-2])$' | tr '[:lower:]' '[:upper:]') + UPSTREAM_URL="${bastille_url_freebsd}${HW_MACHINE}/${HW_MACHINE_ARCH}/${RELEASE}" + UPSTREAM_ALT="ftp://ftp.freebsd.org/pub/FreeBSD/releases/${HW_MACHINE}/${HW_MACHINE_ARCH}/${RELEASE}" + validate_release_url ;; *-stable-LAST|*-STABLE-last|*-stable-last|*-STABLE-LAST) -## check for HardenedBSD releases name -NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '^([1-9]{2,2})(-stable-LAST|-STABLE-last|-stable-last|-STABLE-LAST)$' | sed 's/STABLE/stable/g' | sed 's/last/LAST/g') -if [ -n "${NAME_VERIFY}" ]; then - RELEASE="${NAME_VERIFY}" - UPSTREAM_URL="${bastille_url_hardenedbsd}/${HW_MACHINE}/${HW_MACHINE_ARCH}/hardenedbsd-${RELEASE}" - bootstrap_directories - bootstrap_release -else - usage -fi + ## check for HardenedBSD releases name(previous infrastructure, keep for reference) + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '^([1-9]{2,2})(-stable-LAST|-STABLE-last|-stable-last|-STABLE-LAST)$' | sed 's/STABLE/stable/g' | sed 's/last/LAST/g') + UPSTREAM_URL="${bastille_url_hardenedbsd}${HW_MACHINE}/${HW_MACHINE_ARCH}/hardenedbsd-${RELEASE}" + UPSTREAM_ALT="http://ftp.freebsd.org/pub/FreeBSD/releases/" + validate_release_url ;; -*-stable-build-*|*-STABLE-BUILD-*) -## check for HardenedBSD(for current changes) -NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '([0-9]{1,2})(-stable-build|-STABLE-BUILD)-([0-9]{1,2})$' | sed 's/BUILD/build/g' | sed 's/STABLE/stable/g') -NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/-build-[0-9]\{1,2\}//g') -NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-stable-//g') -if [ -n "${NAME_VERIFY}" ]; then - RELEASE="${NAME_VERIFY}" - UPSTREAM_URL="http://installer.hardenedbsd.org/pub/hardenedbsd/${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" - if ! fetch -qo /dev/null "${UPSTREAM_URL}/MANIFEST" 2>/dev/null; then - ## try an alternate url - UPSTREAM_URL="http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" - fi - bootstrap_directories - bootstrap_release -else - usage -fi +*-stable-build-[0-9]*|*-STABLE-BUILD-[0-9]*) + ## check for HardenedBSD(specific stable build releases) + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '([0-9]{1,2})(-stable-build|-STABLE-BUILD)-([0-9]{1,3})$' | sed 's/BUILD/build/g' | sed 's/STABLE/stable/g') + NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/-build-[0-9]\{1,2\}//g') + NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-stable-//g') + UPSTREAM_URL="${bastille_url_hardenedbsd}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" + UPSTREAM_ALT="http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" + validate_release_url + ;; +*-stable-build-latest|*-STABLE-BUILD-LATEST) + ## check for HardenedBSD(latest stable build release) + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '([0-9]{1,2})(-stable-build-latest|-STABLE-BUILD-LATEST)$' | sed 's/STABLE/stable/g' | sed 's/build/BUILD/g' | sed 's/latest/LATEST/g') + NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/-BUILD-LATEST//g') + NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-stable-//g') + UPSTREAM_URL="${bastille_url_hardenedbsd}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" + UPSTREAM_URL="http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" + validate_release_url + ;; +*-current-build-[0-9]*|*-CURRENT-BUILD-[0-9]*) + ## check for HardenedBSD(specific current build releases) + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '([0-9]{1,2})(-current-build|-CURRENT-BUILD)-([0-9]{1,3})$' | sed 's/BUILD/build/g' | sed 's/CURRENT/current/g') + NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-current-.*/current/g') + NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-current-//g') + UPSTREAM_URL="${bastille_url_hardenedbsd}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" + UPSTREAM_ALT="http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" + validate_release_url + ;; +*-current-build-latest|*-CURRENT-BUILD-LATEST) + ## check for HardenedBSD(latest current build release) + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '([0-9]{1,2})(-current-build-latest|-CURRENT-BUILD-LATEST)$' | sed 's/CURRENT/current/g' | sed 's/build/BUILD/g' | sed 's/latest/LATEST/g') + NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-current-.*/current/g') + NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-current-//g') + UPSTREAM_URL="${bastille_url_hardenedbsd}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" + UPSTREAM_ALT="http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" + validate_release_url ;; http?://github.com/*/*|http?://gitlab.com/*/*) BASTILLE_TEMPLATE_URL=${1} diff --git a/usr/local/share/bastille/create.sh b/usr/local/share/bastille/create.sh index d3104f28..d0984fc2 100644 --- a/usr/local/share/bastille/create.sh +++ b/usr/local/share/bastille/create.sh @@ -96,6 +96,15 @@ validate_netconf() { fi } +validate_release() { + ## check release name match, else show usage + if [ -n "${NAME_VERIFY}" ]; then + RELEASE="${NAME_VERIFY}" + else + usage + fi +} + create_jail() { bastille_jail_base="${bastille_jailsdir}/${NAME}/root/.bastille" ## dir bastille_jail_template="${bastille_jailsdir}/${NAME}/root/.template" ## dir @@ -327,31 +336,34 @@ fi ## verify release case "${RELEASE}" in *-RELEASE|*-release|*-RC1|*-rc1|*-RC2|*-rc2) -## check for FreeBSD releases name -NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '^([1-9]{2,2})\.[0-9](-RELEASE|-RC[1-2])$' | tr '[:lower:]' '[:upper:]') -if [ -n "${NAME_VERIFY}" ]; then - RELEASE="${NAME_VERIFY}" -else - usage -fi + ## check for FreeBSD releases name + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '^([1-9]{2,2})\.[0-9](-RELEASE|-RC[1-2])$' | tr '[:lower:]' '[:upper:]') + validate_release ;; *-stable-LAST|*-STABLE-last|*-stable-last|*-STABLE-LAST) -## check for HardenedBSD releases name -NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '^([1-9]{2,2})(-stable-LAST|-STABLE-last|-stable-last|-STABLE-LAST)$' | sed 's/STABLE/stable/g' | sed 's/last/LAST/g') -if [ -n "${NAME_VERIFY}" ]; then - RELEASE="${NAME_VERIFY}" -else - usage -fi + ## check for HardenedBSD releases name(previous infrastructure) + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '^([1-9]{2,2})(-stable-LAST|-STABLE-last|-stable-last|-STABLE-LAST)$' | sed 's/STABLE/stable/g' | sed 's/last/LAST/g') + validate_release ;; -*-stable-build-*|*-STABLE-BUILD-*) -## check for HardenedBSD(for current changes) -NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '([0-9]{1,2})(-stable-build|-STABLE-BUILD)-([0-9]{1,2})$' | sed 's/BUILD/build/g' | sed 's/STABLE/stable/g') -if [ -n "${NAME_VERIFY}" ]; then - RELEASE="${NAME_VERIFY}" -else - usage -fi +*-stable-build-[0-9]*|*-STABLE-BUILD-[0-9]*) + ## check for HardenedBSD(specific stable build releases) + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '([0-9]{1,2})(-stable-build|-STABLE-BUILD)-([0-9]{1,3})$' | sed 's/BUILD/build/g' | sed 's/STABLE/stable/g') + validate_release + ;; +*-stable-build-latest|*-STABLE-BUILD-LATEST) + ## check for HardenedBSD(latest stable build release) + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '([0-9]{1,2})(-stable-build-latest|-STABLE-BUILD-LATEST)$' | sed 's/STABLE/stable/g' | sed 's/build/BUILD/g' | sed 's/latest/LATEST/g') + validate_release + ;; +*-current-build-[0-9]*|*-CURRENT-BUILD-[0-9]*) + ## check for HardenedBSD(specific current build releases) + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '([0-9]{1,2})(-current-build|-CURRENT-BUILD)-([0-9]{1,3})$' | sed 's/BUILD/build/g' | sed 's/CURRENT/current/g') + validate_release + ;; +*-current-build-latest|*-CURRENT-BUILD-LATEST) + ## check for HardenedBSD(latest current build release) + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '([0-9]{1,2})(-current-build-latest|-CURRENT-BUILD-LATEST)$' | sed 's/CURRENT/current/g' | sed 's/build/BUILD/g' | sed 's/latest/LATEST/g') + validate_release ;; *) echo -e "${COLOR_RED}Unknown Release.${COLOR_RESET}" diff --git a/usr/local/share/bastille/destroy.sh b/usr/local/share/bastille/destroy.sh index 87f4dc61..4f25c23f 100644 --- a/usr/local/share/bastille/destroy.sh +++ b/usr/local/share/bastille/destroy.sh @@ -37,12 +37,12 @@ usage() { } destroy_jail() { - bastille_jail_base="${bastille_jailsdir}/${NAME}" ## dir - bastille_jail_log="${bastille_logsdir}/${NAME}_console.log" ## file + bastille_jail_base="${bastille_jailsdir}/${TARGET}" ## dir + bastille_jail_log="${bastille_logsdir}/${TARGET}_console.log" ## file - if [ "$(jls name | awk "/^${NAME}$/")" ]; then + if [ "$(jls name | awk "/^${TARGET}$/")" ]; then echo -e "${COLOR_RED}Jail running.${COLOR_RESET}" - echo -e "${COLOR_RED}See 'bastille stop ${NAME}'.${COLOR_RESET}" + echo -e "${COLOR_RED}See 'bastille stop ${TARGET}'.${COLOR_RESET}" exit 1 fi @@ -52,12 +52,12 @@ destroy_jail() { fi if [ -d "${bastille_jail_base}" ]; then - echo -e "${COLOR_GREEN}Deleting Jail: ${NAME}.${COLOR_RESET}" + echo -e "${COLOR_GREEN}Deleting Jail: ${TARGET}.${COLOR_RESET}" if [ "${bastille_zfs_enable}" = "YES" ]; then if [ ! -z "${bastille_zfs_zpool}" ]; then - if [ ! -z "${NAME}" ]; then + if [ ! -z "${TARGET}" ]; then ## remove jail zfs dataset recursively - zfs destroy -r ${bastille_zfs_zpool}/${bastille_zfs_prefix}/jails/${NAME} + zfs destroy -r ${bastille_zfs_zpool}/${bastille_zfs_prefix}/jails/${TARGET} fi fi fi @@ -81,15 +81,23 @@ destroy_jail() { } destroy_rel() { - bastille_rel_base="${bastille_releasesdir}/${NAME}" ## dir + ## check release name match before destroy + if [ -n "${NAME_VERIFY}" ]; then + TARGET="${NAME_VERIFY}" + break + else + usage + fi + + bastille_rel_base="${bastille_releasesdir}/${TARGET}" ## dir ## check if this release have containers child BASE_HASCHILD="0" if [ -d "${bastille_jailsdir}" ]; then JAIL_LIST=$(ls "${bastille_jailsdir}" | sed "s/\n//g") for _jail in ${JAIL_LIST}; do - if grep -qwo "${NAME}" ${bastille_jailsdir}/${_jail}/fstab 2>/dev/null; then - echo -e "${COLOR_RED}Notice: (${_jail}) depends on ${NAME} base.${COLOR_RESET}" + if grep -qwo "${TARGET}" ${bastille_jailsdir}/${_jail}/fstab 2>/dev/null; then + echo -e "${COLOR_RED}Notice: (${_jail}) depends on ${TARGET} base.${COLOR_RESET}" BASE_HASCHILD="1" fi done @@ -100,10 +108,10 @@ destroy_rel() { exit 1 else if [ "${BASE_HASCHILD}" -eq "0" ]; then - echo -e "${COLOR_GREEN}Deleting base: ${NAME}.${COLOR_RESET}" + echo -e "${COLOR_GREEN}Deleting base: ${TARGET}.${COLOR_RESET}" if [ "${bastille_zfs_enable}" = "YES" ]; then if [ ! -z "${bastille_zfs_zpool}" ]; then - zfs destroy ${bastille_zfs_zpool}/${bastille_zfs_prefix}/releases/${NAME} + zfs destroy ${bastille_zfs_zpool}/${bastille_zfs_prefix}/releases/${TARGET} fi fi @@ -132,39 +140,39 @@ if [ $# -gt 1 ] || [ $# -lt 1 ]; then usage fi -NAME="$1" +TARGET="$1" ## check what should we clean -case "${NAME}" in +case "${TARGET}" in *-RELEASE|*-release|*-RC1|*-rc1|*-RC2|*-rc2) ## check for FreeBSD releases name - NAME_VERIFY=$(echo "${NAME}" | grep -iwE '^([1-9]{2,2})\.[0-9](-RELEASE|-RC[1-2])$' | tr '[:lower:]' '[:upper:]') - if [ -n "${NAME_VERIFY}" ]; then - NAME="${NAME_VERIFY}" - destroy_rel - else - usage - fi + NAME_VERIFY=$(echo "${TARGET}" | grep -iwE '^([1-9]{2,2})\.[0-9](-RELEASE|-RC[1-2])$' | tr '[:lower:]' '[:upper:]') + destroy_rel ;; *-stable-LAST|*-STABLE-last|*-stable-last|*-STABLE-LAST) ## check for HardenedBSD releases name - NAME_VERIFY=$(echo "${NAME}" | grep -iwE '^([1-9]{2,2})(-stable-LAST|-STABLE-last|-stable-last|-STABLE-LAST)$' | sed 's/STABLE/stable/g' | sed 's/last/LAST/g') - if [ -n "${NAME_VERIFY}" ]; then - NAME="${NAME_VERIFY}" - destroy_rel - else - usage - fi + NAME_VERIFY=$(echo "${TARGET}" | grep -iwE '^([1-9]{2,2})(-stable-LAST|-STABLE-last|-stable-last|-STABLE-LAST)$' | sed 's/STABLE/stable/g' | sed 's/last/LAST/g') + destroy_rel ;; -*-stable-build-*|*-STABLE-BUILD-*) -## check for HardenedBSD(for current changes) -NAME_VERIFY=$(echo "${NAME}" | grep -iwE '([0-9]{1,2})(-stable-build|-STABLE-BUILD)-([0-9]{1,2})$' | sed 's/BUILD/build/g' | sed 's/STABLE/stable/g') - if [ -n "${NAME_VERIFY}" ]; then - NAME="${NAME_VERIFY}" - destroy_rel - else - usage - fi +*-stable-build-[0-9]*|*-STABLE-BUILD-[0-9]*) + ## check for HardenedBSD(specific stable build releases) + NAME_VERIFY=$(echo "${TARGET}" | grep -iwE '([0-9]{1,2})(-stable-build|-STABLE-BUILD)-([0-9]{1,3})$' | sed 's/BUILD/build/g' | sed 's/STABLE/stable/g') + destroy_rel + ;; +*-stable-build-latest|*-STABLE-BUILD-LATEST) + ## check for HardenedBSD(latest stable build release) + NAME_VERIFY=$(echo "${TARGET}" | grep -iwE '([0-9]{1,2})(-stable-build-latest|-STABLE-BUILD-LATEST)$' | sed 's/STABLE/stable/g' | sed 's/build/BUILD/g' | sed 's/latest/LATEST/g') + destroy_rel + ;; +*-current-build-[0-9]*|*-CURRENT-BUILD-[0-9]*) + ## check for HardenedBSD(specific current build releases) + NAME_VERIFY=$(echo "${TARGET}" | grep -iwE '([0-9]{1,2})(-current-build|-CURRENT-BUILD)-([0-9]{1,3})$' | sed 's/BUILD/build/g' | sed 's/CURRENT/current/g') + destroy_rel + ;; +*-current-build-latest|*-CURRENT-BUILD-LATEST) + ## check for HardenedBSD(latest current build release) + NAME_VERIFY=$(echo "${TARGET}" | grep -iwE '([0-9]{1,2})(-current-build-latest|-CURRENT-BUILD-LATEST)$' | sed 's/CURRENT/current/g' | sed 's/build/BUILD/g' | sed 's/latest/LATEST/g') + destroy_rel ;; *) ## just destroy a jail diff --git a/usr/local/share/bastille/list.sh b/usr/local/share/bastille/list.sh index d40a9aa8..28685096 100644 --- a/usr/local/share/bastille/list.sh +++ b/usr/local/share/bastille/list.sh @@ -32,7 +32,7 @@ . /usr/local/etc/bastille/bastille.conf usage() { - echo -e "${COLOR_RED}Usage: bastille list [-j] [release|template|(jail|container)|log|limit].${COLOR_RESET}" + echo -e "${COLOR_RED}Usage: bastille list [-j] [release|template|(jail|container)|log|limit|(import|export|backup)].${COLOR_RESET}" exit 1 } From 5aba0d36f5ca040dafb62bf03e3f1f366f048027 Mon Sep 17 00:00:00 2001 From: Jose Date: Sun, 2 Feb 2020 04:08:24 -0400 Subject: [PATCH 2/7] Do not use suffix version number in HardenedBSD "CURRENT" releases --- usr/local/share/bastille/bootstrap.sh | 16 ++++++++-------- usr/local/share/bastille/create.sh | 8 ++++---- usr/local/share/bastille/destroy.sh | 8 ++++---- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/usr/local/share/bastille/bootstrap.sh b/usr/local/share/bastille/bootstrap.sh index db4e7d08..ae72854f 100644 --- a/usr/local/share/bastille/bootstrap.sh +++ b/usr/local/share/bastille/bootstrap.sh @@ -454,20 +454,20 @@ case "${1}" in UPSTREAM_URL="http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" validate_release_url ;; -*-current-build-[0-9]*|*-CURRENT-BUILD-[0-9]*) +current-build-[0-9]*|*-CURRENT-BUILD-[0-9]*) ## check for HardenedBSD(specific current build releases) - NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '([0-9]{1,2})(-current-build|-CURRENT-BUILD)-([0-9]{1,3})$' | sed 's/BUILD/build/g' | sed 's/CURRENT/current/g') - NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-current-.*/current/g') - NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-current-//g') + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '(current-build|-CURRENT-BUILD)-([0-9]{1,3})' | sed 's/BUILD/build/g' | sed 's/CURRENT/current/g') + NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/current-.*/current/g') + NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/current-//g') UPSTREAM_URL="${bastille_url_hardenedbsd}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" UPSTREAM_ALT="http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" validate_release_url ;; -*-current-build-latest|*-CURRENT-BUILD-LATEST) +current-build-latest|*-CURRENT-BUILD-LATEST) ## check for HardenedBSD(latest current build release) - NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '([0-9]{1,2})(-current-build-latest|-CURRENT-BUILD-LATEST)$' | sed 's/CURRENT/current/g' | sed 's/build/BUILD/g' | sed 's/latest/LATEST/g') - NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-current-.*/current/g') - NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-current-//g') + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '(current-build-latest|-CURRENT-BUILD-LATEST)' | sed 's/CURRENT/current/g' | sed 's/build/BUILD/g' | sed 's/latest/LATEST/g') + NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/current-.*/current/g') + NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/current-//g') UPSTREAM_URL="${bastille_url_hardenedbsd}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" UPSTREAM_ALT="http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" validate_release_url diff --git a/usr/local/share/bastille/create.sh b/usr/local/share/bastille/create.sh index d0984fc2..68b36842 100644 --- a/usr/local/share/bastille/create.sh +++ b/usr/local/share/bastille/create.sh @@ -355,14 +355,14 @@ case "${RELEASE}" in NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '([0-9]{1,2})(-stable-build-latest|-STABLE-BUILD-LATEST)$' | sed 's/STABLE/stable/g' | sed 's/build/BUILD/g' | sed 's/latest/LATEST/g') validate_release ;; -*-current-build-[0-9]*|*-CURRENT-BUILD-[0-9]*) +current-build-[0-9]*|CURRENT-BUILD-[0-9]*) ## check for HardenedBSD(specific current build releases) - NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '([0-9]{1,2})(-current-build|-CURRENT-BUILD)-([0-9]{1,3})$' | sed 's/BUILD/build/g' | sed 's/CURRENT/current/g') + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '(current-build|-CURRENT-BUILD)-([0-9]{1,3})' | sed 's/BUILD/build/g' | sed 's/CURRENT/current/g') validate_release ;; -*-current-build-latest|*-CURRENT-BUILD-LATEST) +current-build-latest|CURRENT-BUILD-LATEST) ## check for HardenedBSD(latest current build release) - NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '([0-9]{1,2})(-current-build-latest|-CURRENT-BUILD-LATEST)$' | sed 's/CURRENT/current/g' | sed 's/build/BUILD/g' | sed 's/latest/LATEST/g') + NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '(current-build-latest|-CURRENT-BUILD-LATEST)' | sed 's/CURRENT/current/g' | sed 's/build/BUILD/g' | sed 's/latest/LATEST/g') validate_release ;; *) diff --git a/usr/local/share/bastille/destroy.sh b/usr/local/share/bastille/destroy.sh index 4f25c23f..2f3dd4e1 100644 --- a/usr/local/share/bastille/destroy.sh +++ b/usr/local/share/bastille/destroy.sh @@ -164,14 +164,14 @@ case "${TARGET}" in NAME_VERIFY=$(echo "${TARGET}" | grep -iwE '([0-9]{1,2})(-stable-build-latest|-STABLE-BUILD-LATEST)$' | sed 's/STABLE/stable/g' | sed 's/build/BUILD/g' | sed 's/latest/LATEST/g') destroy_rel ;; -*-current-build-[0-9]*|*-CURRENT-BUILD-[0-9]*) +current-build-[0-9]*|CURRENT-BUILD-[0-9]*) ## check for HardenedBSD(specific current build releases) - NAME_VERIFY=$(echo "${TARGET}" | grep -iwE '([0-9]{1,2})(-current-build|-CURRENT-BUILD)-([0-9]{1,3})$' | sed 's/BUILD/build/g' | sed 's/CURRENT/current/g') + NAME_VERIFY=$(echo "${TARGET}" | grep -iwE '(current-build|-CURRENT-BUILD)-([0-9]{1,3})' | sed 's/BUILD/build/g' | sed 's/CURRENT/current/g') destroy_rel ;; -*-current-build-latest|*-CURRENT-BUILD-LATEST) +current-build-latest|CURRENT-BUILD-LATEST) ## check for HardenedBSD(latest current build release) - NAME_VERIFY=$(echo "${TARGET}" | grep -iwE '([0-9]{1,2})(-current-build-latest|-CURRENT-BUILD-LATEST)$' | sed 's/CURRENT/current/g' | sed 's/build/BUILD/g' | sed 's/latest/LATEST/g') + NAME_VERIFY=$(echo "${TARGET}" | grep -iwE '(current-build-latest|-CURRENT-BUILD-LATEST)$' | sed 's/CURRENT/current/g' | sed 's/build/BUILD/g' | sed 's/latest/LATEST/g') destroy_rel ;; *) From 9681254d765e942d6dd2103dcfa581c3dee90ea1 Mon Sep 17 00:00:00 2001 From: Jose Date: Sun, 2 Feb 2020 06:50:58 -0400 Subject: [PATCH 3/7] Add force stop option to bastille destroy, minor code cleanup --- usr/local/share/bastille/bootstrap.sh | 7 +++-- usr/local/share/bastille/destroy.sh | 37 +++++++++++++++++++++------ 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/usr/local/share/bastille/bootstrap.sh b/usr/local/share/bastille/bootstrap.sh index ae72854f..2acc16bb 100644 --- a/usr/local/share/bastille/bootstrap.sh +++ b/usr/local/share/bastille/bootstrap.sh @@ -69,7 +69,6 @@ fi validate_release_url() { ## check upstream url, else switch to alternate url if [ -n "${NAME_VERIFY}" ]; then - RELEASE="${NAME_VERIFY}" if ! fetch -qo /dev/null "${UPSTREAM_URL}/MANIFEST" 2>/dev/null; then ## try an alternate url UPSTREAM_URL="${UPSTREAM_ALT}" @@ -425,14 +424,14 @@ case "${1}" in *-RELEASE|*-release|*-RC1|*-rc1|*-RC2|*-rc2) ## check for FreeBSD releases name NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '^([1-9]{2,2})\.[0-9](-RELEASE|-RC[1-2])$' | tr '[:lower:]' '[:upper:]') - UPSTREAM_URL="${bastille_url_freebsd}${HW_MACHINE}/${HW_MACHINE_ARCH}/${RELEASE}" - UPSTREAM_ALT="ftp://ftp.freebsd.org/pub/FreeBSD/releases/${HW_MACHINE}/${HW_MACHINE_ARCH}/${RELEASE}" + UPSTREAM_URL="${bastille_url_freebsd}${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_VERIFY}" + UPSTREAM_ALT="ftp://ftp.freebsd.org/pub/FreeBSD/releases/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_VERIFY}" validate_release_url ;; *-stable-LAST|*-STABLE-last|*-stable-last|*-STABLE-LAST) ## check for HardenedBSD releases name(previous infrastructure, keep for reference) NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '^([1-9]{2,2})(-stable-LAST|-STABLE-last|-stable-last|-STABLE-LAST)$' | sed 's/STABLE/stable/g' | sed 's/last/LAST/g') - UPSTREAM_URL="${bastille_url_hardenedbsd}${HW_MACHINE}/${HW_MACHINE_ARCH}/hardenedbsd-${RELEASE}" + UPSTREAM_URL="${bastille_url_hardenedbsd}${HW_MACHINE}/${HW_MACHINE_ARCH}/hardenedbsd-${NAME_VERIFY}" UPSTREAM_ALT="http://ftp.freebsd.org/pub/FreeBSD/releases/" validate_release_url ;; diff --git a/usr/local/share/bastille/destroy.sh b/usr/local/share/bastille/destroy.sh index 2f3dd4e1..bf170c52 100644 --- a/usr/local/share/bastille/destroy.sh +++ b/usr/local/share/bastille/destroy.sh @@ -32,7 +32,7 @@ . /usr/local/etc/bastille/bastille.conf usage() { - echo -e "${COLOR_RED}Usage: bastille destroy [container|release]${COLOR_RESET}" + echo -e "${COLOR_RED}Usage: bastille destroy [option] | [container|release]${COLOR_RESET}" exit 1 } @@ -41,9 +41,13 @@ destroy_jail() { bastille_jail_log="${bastille_logsdir}/${TARGET}_console.log" ## file if [ "$(jls name | awk "/^${TARGET}$/")" ]; then - echo -e "${COLOR_RED}Jail running.${COLOR_RESET}" - echo -e "${COLOR_RED}See 'bastille stop ${TARGET}'.${COLOR_RESET}" - exit 1 + if [ "${FORCE_STOP}" = "1" ]; then + bastille stop ${TARGET} + else + echo -e "${COLOR_RED}Jail running.${COLOR_RESET}" + echo -e "${COLOR_RED}See 'bastille stop ${TARGET}'.${COLOR_RESET}" + exit 1 + fi fi if [ ! -d "${bastille_jail_base}" ]; then @@ -136,11 +140,28 @@ help|-h|--help) ;; esac -if [ $# -gt 1 ] || [ $# -lt 1 ]; then - usage -fi +OPTION="${1}" +TARGET="${2}" -TARGET="$1" +## handle additional options +case "${OPTION}" in +-f|--forcestop) + if [ $# -gt 2 ] || [ $# -lt 2 ]; then + usage + fi + FORCE_STOP="1" + ;; +-*) + echo -e "${COLOR_RED}Unknown Option.${COLOR_RESET}" + usage + ;; +*) + if [ $# -gt 1 ] || [ $# -lt 1 ]; then + usage + fi + TARGET="${1}" + ;; +esac ## check what should we clean case "${TARGET}" in From 013987f7e14291aede2220384bf4a51cdbed7016 Mon Sep 17 00:00:00 2001 From: Jose Date: Sun, 2 Feb 2020 07:24:16 -0400 Subject: [PATCH 4/7] Fix minor bootstrap.sh regression --- usr/local/share/bastille/bootstrap.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/usr/local/share/bastille/bootstrap.sh b/usr/local/share/bastille/bootstrap.sh index 2acc16bb..97d42ee4 100644 --- a/usr/local/share/bastille/bootstrap.sh +++ b/usr/local/share/bastille/bootstrap.sh @@ -69,6 +69,7 @@ fi validate_release_url() { ## check upstream url, else switch to alternate url if [ -n "${NAME_VERIFY}" ]; then + RELEASE="${NAME_VERIFY}" if ! fetch -qo /dev/null "${UPSTREAM_URL}/MANIFEST" 2>/dev/null; then ## try an alternate url UPSTREAM_URL="${UPSTREAM_ALT}" From 874e3696e34aa2465f929f96de317e88f7b437a4 Mon Sep 17 00:00:00 2001 From: Jose Date: Sun, 2 Feb 2020 12:00:09 -0400 Subject: [PATCH 5/7] Do not hardcode alternate url's in bootstrap.sh --- usr/local/etc/bastille/bastille.conf | 6 ++++-- usr/local/share/bastille/bootstrap.sh | 12 ++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/usr/local/etc/bastille/bastille.conf b/usr/local/etc/bastille/bastille.conf index 6503ae06..8a6240cd 100644 --- a/usr/local/etc/bastille/bastille.conf +++ b/usr/local/etc/bastille/bastille.conf @@ -24,8 +24,10 @@ bastille_tzdata="etc/UTC" ## default bastille_resolv_conf="/etc/resolv.conf" ## default: "/etc/resolv.conf" ## bootstrap urls -bastille_url_freebsd="http://ftp.freebsd.org/pub/FreeBSD/releases/" ## default: "http://ftp.freebsd.org/pub/FreeBSD/releases/" -bastille_url_hardenedbsd="http://installer.hardenedbsd.org/pub/hardenedbsd/" ## default: "https://installer.hardenedbsd.org/pub/HardenedBSD/releases/" +bastille_url_freebsd="http://ftp.freebsd.org/pub/FreeBSD/releases/" ## default: "http://ftp.freebsd.org/pub/FreeBSD/releases/" +bastille_url_freebsd_alt="ftp://ftp.freebsd.org/pub/FreeBSD/releases/" ## default: "ftp://ftp.freebsd.org/pub/FreeBSD/releases/" +bastille_url_hardenedbsd="http://installer.hardenedbsd.org/pub/hardenedbsd/" ## default: "https://installer.hardenedbsd.org/pub/HardenedBSD/releases/" +bastille_url_hardenedbsd_alt="http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/" ## default: "http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/" ## ZFS options bastille_zfs_enable="" ## default: "" diff --git a/usr/local/share/bastille/bootstrap.sh b/usr/local/share/bastille/bootstrap.sh index 97d42ee4..c561dd43 100644 --- a/usr/local/share/bastille/bootstrap.sh +++ b/usr/local/share/bastille/bootstrap.sh @@ -426,14 +426,14 @@ case "${1}" in ## check for FreeBSD releases name NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '^([1-9]{2,2})\.[0-9](-RELEASE|-RC[1-2])$' | tr '[:lower:]' '[:upper:]') UPSTREAM_URL="${bastille_url_freebsd}${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_VERIFY}" - UPSTREAM_ALT="ftp://ftp.freebsd.org/pub/FreeBSD/releases/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_VERIFY}" + UPSTREAM_ALT="${bastille_url_freebsd_alt}${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_VERIFY}" validate_release_url ;; *-stable-LAST|*-STABLE-last|*-stable-last|*-STABLE-LAST) ## check for HardenedBSD releases name(previous infrastructure, keep for reference) NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '^([1-9]{2,2})(-stable-LAST|-STABLE-last|-stable-last|-STABLE-LAST)$' | sed 's/STABLE/stable/g' | sed 's/last/LAST/g') UPSTREAM_URL="${bastille_url_hardenedbsd}${HW_MACHINE}/${HW_MACHINE_ARCH}/hardenedbsd-${NAME_VERIFY}" - UPSTREAM_ALT="http://ftp.freebsd.org/pub/FreeBSD/releases/" + UPSTREAM_ALT="${bastille_url_hardenedbsd_alt}" validate_release_url ;; *-stable-build-[0-9]*|*-STABLE-BUILD-[0-9]*) @@ -442,7 +442,7 @@ case "${1}" in NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/-build-[0-9]\{1,2\}//g') NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-stable-//g') UPSTREAM_URL="${bastille_url_hardenedbsd}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" - UPSTREAM_ALT="http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" + UPSTREAM_ALT="${bastille_url_hardenedbsd_alt}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" validate_release_url ;; *-stable-build-latest|*-STABLE-BUILD-LATEST) @@ -451,7 +451,7 @@ case "${1}" in NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/-BUILD-LATEST//g') NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-stable-//g') UPSTREAM_URL="${bastille_url_hardenedbsd}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" - UPSTREAM_URL="http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" + UPSTREAM_URL="${bastille_url_hardenedbsd_alt}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" validate_release_url ;; current-build-[0-9]*|*-CURRENT-BUILD-[0-9]*) @@ -460,7 +460,7 @@ current-build-[0-9]*|*-CURRENT-BUILD-[0-9]*) NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/current-.*/current/g') NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/current-//g') UPSTREAM_URL="${bastille_url_hardenedbsd}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" - UPSTREAM_ALT="http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" + UPSTREAM_ALT="${bastille_url_hardenedbsd_alt}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" validate_release_url ;; current-build-latest|*-CURRENT-BUILD-LATEST) @@ -469,7 +469,7 @@ current-build-latest|*-CURRENT-BUILD-LATEST) NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/current-.*/current/g') NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/current-//g') UPSTREAM_URL="${bastille_url_hardenedbsd}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" - UPSTREAM_ALT="http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" + UPSTREAM_ALT="${bastille_url_hardenedbsd_alt}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" validate_release_url ;; http?://github.com/*/*|http?://gitlab.com/*/*) From 9517d9608e8eb85b6d5b074d10b21dc3d99b3293 Mon Sep 17 00:00:00 2001 From: Jose Date: Sun, 2 Feb 2020 12:03:35 -0400 Subject: [PATCH 6/7] Fix typo in bootstrap.sh --- usr/local/share/bastille/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr/local/share/bastille/bootstrap.sh b/usr/local/share/bastille/bootstrap.sh index c561dd43..d92132b2 100644 --- a/usr/local/share/bastille/bootstrap.sh +++ b/usr/local/share/bastille/bootstrap.sh @@ -451,7 +451,7 @@ case "${1}" in NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/-BUILD-LATEST//g') NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-stable-//g') UPSTREAM_URL="${bastille_url_hardenedbsd}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" - UPSTREAM_URL="${bastille_url_hardenedbsd_alt}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" + UPSTREAM_ALT="${bastille_url_hardenedbsd_alt}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" validate_release_url ;; current-build-[0-9]*|*-CURRENT-BUILD-[0-9]*) From b3a30a895162773ea02a1111c2859d692e5c6061 Mon Sep 17 00:00:00 2001 From: Jose Date: Sun, 2 Feb 2020 19:55:18 -0400 Subject: [PATCH 7/7] Delete cache files on destroy if force option, remove alternate urls --- usr/local/etc/bastille/bastille.conf | 6 ++---- usr/local/share/bastille/bootstrap.sh | 12 +++--------- usr/local/share/bastille/destroy.sh | 18 +++++++++++++++--- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/usr/local/etc/bastille/bastille.conf b/usr/local/etc/bastille/bastille.conf index 8a6240cd..6503ae06 100644 --- a/usr/local/etc/bastille/bastille.conf +++ b/usr/local/etc/bastille/bastille.conf @@ -24,10 +24,8 @@ bastille_tzdata="etc/UTC" ## default bastille_resolv_conf="/etc/resolv.conf" ## default: "/etc/resolv.conf" ## bootstrap urls -bastille_url_freebsd="http://ftp.freebsd.org/pub/FreeBSD/releases/" ## default: "http://ftp.freebsd.org/pub/FreeBSD/releases/" -bastille_url_freebsd_alt="ftp://ftp.freebsd.org/pub/FreeBSD/releases/" ## default: "ftp://ftp.freebsd.org/pub/FreeBSD/releases/" -bastille_url_hardenedbsd="http://installer.hardenedbsd.org/pub/hardenedbsd/" ## default: "https://installer.hardenedbsd.org/pub/HardenedBSD/releases/" -bastille_url_hardenedbsd_alt="http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/" ## default: "http://ci-01.nyi.hardenedbsd.org/pub/hardenedbsd/" +bastille_url_freebsd="http://ftp.freebsd.org/pub/FreeBSD/releases/" ## default: "http://ftp.freebsd.org/pub/FreeBSD/releases/" +bastille_url_hardenedbsd="http://installer.hardenedbsd.org/pub/hardenedbsd/" ## default: "https://installer.hardenedbsd.org/pub/HardenedBSD/releases/" ## ZFS options bastille_zfs_enable="" ## default: "" diff --git a/usr/local/share/bastille/bootstrap.sh b/usr/local/share/bastille/bootstrap.sh index d92132b2..c9fb8694 100644 --- a/usr/local/share/bastille/bootstrap.sh +++ b/usr/local/share/bastille/bootstrap.sh @@ -67,12 +67,12 @@ if [ "${bastille_zfs_enable}" = "YES" ]; then fi validate_release_url() { - ## check upstream url, else switch to alternate url + ## check upstream url, else warn user if [ -n "${NAME_VERIFY}" ]; then RELEASE="${NAME_VERIFY}" if ! fetch -qo /dev/null "${UPSTREAM_URL}/MANIFEST" 2>/dev/null; then - ## try an alternate url - UPSTREAM_URL="${UPSTREAM_ALT}" + echo -e "${COLOR_RED}Unable to fetch MANIFEST, See 'bootstrap urls'.${COLOR_RESET}" + exit 1 fi bootstrap_directories bootstrap_release @@ -426,14 +426,12 @@ case "${1}" in ## check for FreeBSD releases name NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '^([1-9]{2,2})\.[0-9](-RELEASE|-RC[1-2])$' | tr '[:lower:]' '[:upper:]') UPSTREAM_URL="${bastille_url_freebsd}${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_VERIFY}" - UPSTREAM_ALT="${bastille_url_freebsd_alt}${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_VERIFY}" validate_release_url ;; *-stable-LAST|*-STABLE-last|*-stable-last|*-STABLE-LAST) ## check for HardenedBSD releases name(previous infrastructure, keep for reference) NAME_VERIFY=$(echo "${RELEASE}" | grep -iwE '^([1-9]{2,2})(-stable-LAST|-STABLE-last|-stable-last|-STABLE-LAST)$' | sed 's/STABLE/stable/g' | sed 's/last/LAST/g') UPSTREAM_URL="${bastille_url_hardenedbsd}${HW_MACHINE}/${HW_MACHINE_ARCH}/hardenedbsd-${NAME_VERIFY}" - UPSTREAM_ALT="${bastille_url_hardenedbsd_alt}" validate_release_url ;; *-stable-build-[0-9]*|*-STABLE-BUILD-[0-9]*) @@ -442,7 +440,6 @@ case "${1}" in NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/-build-[0-9]\{1,2\}//g') NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-stable-//g') UPSTREAM_URL="${bastille_url_hardenedbsd}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" - UPSTREAM_ALT="${bastille_url_hardenedbsd_alt}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" validate_release_url ;; *-stable-build-latest|*-STABLE-BUILD-LATEST) @@ -451,7 +448,6 @@ case "${1}" in NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/-BUILD-LATEST//g') NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/[0-9]\{1,2\}-stable-//g') UPSTREAM_URL="${bastille_url_hardenedbsd}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" - UPSTREAM_ALT="${bastille_url_hardenedbsd_alt}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" validate_release_url ;; current-build-[0-9]*|*-CURRENT-BUILD-[0-9]*) @@ -460,7 +456,6 @@ current-build-[0-9]*|*-CURRENT-BUILD-[0-9]*) NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/current-.*/current/g') NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/current-//g') UPSTREAM_URL="${bastille_url_hardenedbsd}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" - UPSTREAM_ALT="${bastille_url_hardenedbsd_alt}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" validate_release_url ;; current-build-latest|*-CURRENT-BUILD-LATEST) @@ -469,7 +464,6 @@ current-build-latest|*-CURRENT-BUILD-LATEST) NAME_RELEASE=$(echo ${NAME_VERIFY} | sed 's/current-.*/current/g') NAME_BUILD=$(echo ${NAME_VERIFY} | sed 's/current-//g') UPSTREAM_URL="${bastille_url_hardenedbsd}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" - UPSTREAM_ALT="${bastille_url_hardenedbsd_alt}${NAME_RELEASE}/${HW_MACHINE}/${HW_MACHINE_ARCH}/${NAME_BUILD}" validate_release_url ;; http?://github.com/*/*|http?://gitlab.com/*/*) diff --git a/usr/local/share/bastille/destroy.sh b/usr/local/share/bastille/destroy.sh index bf170c52..b9b07091 100644 --- a/usr/local/share/bastille/destroy.sh +++ b/usr/local/share/bastille/destroy.sh @@ -41,7 +41,7 @@ destroy_jail() { bastille_jail_log="${bastille_logsdir}/${TARGET}_console.log" ## file if [ "$(jls name | awk "/^${TARGET}$/")" ]; then - if [ "${FORCE_STOP}" = "1" ]; then + if [ "${FORCE}" = "1" ]; then bastille stop ${TARGET} else echo -e "${COLOR_RED}Jail running.${COLOR_RESET}" @@ -116,6 +116,11 @@ destroy_rel() { if [ "${bastille_zfs_enable}" = "YES" ]; then if [ ! -z "${bastille_zfs_zpool}" ]; then zfs destroy ${bastille_zfs_zpool}/${bastille_zfs_prefix}/releases/${TARGET} + if [ "${FORCE}" = "1" ]; then + if [ -d "${bastille_cachedir}/${TARGET}" ]; then + zfs destroy ${bastille_zfs_zpool}/${bastille_zfs_prefix}/cache/${TARGET} + fi + fi fi fi @@ -126,6 +131,13 @@ destroy_rel() { ## remove jail base rm -rf ${bastille_rel_base} fi + + if [ "${FORCE}" = "1" ]; then + ## remove cache on force + if [ -d "${bastille_cachedir}/${TARGET}" ]; then + rm -rf "${bastille_cachedir}/${TARGET}" + fi + fi echo else echo -e "${COLOR_RED}Cannot destroy base with containers child.${COLOR_RESET}" @@ -145,11 +157,11 @@ TARGET="${2}" ## handle additional options case "${OPTION}" in --f|--forcestop) +-f|--force) if [ $# -gt 2 ] || [ $# -lt 2 ]; then usage fi - FORCE_STOP="1" + FORCE="1" ;; -*) echo -e "${COLOR_RED}Unknown Option.${COLOR_RESET}"