aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Pronchery <pierre@freebsdfoundation.org>2023-10-02 18:28:07 +0000
committerEd Maste <emaste@FreeBSD.org>2023-10-13 16:19:39 +0000
commita6d202077deedcdadc589e10399119d52f7cf71a (patch)
tree4a75e823cc567e9dba0dda3cc50a00b6c1769e3c
parent7ca90db2f3ee15d9d0343d76f06a90efb8426d92 (diff)
downloadsrc-a6d202077deedcdadc589e10399119d52f7cf71a.tar.gz
src-a6d202077deedcdadc589e10399119d52f7cf71a.zip
bsdinstall: revisit the finalconfig step
This moves the "finalconfig" step into a dedicated script, where it uses a loop instead of recursing into itself. Reviewed by: bapt Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D42046
-rw-r--r--usr.sbin/bsdinstall/scripts/Makefile1
-rwxr-xr-xusr.sbin/bsdinstall/scripts/auto54
-rwxr-xr-xusr.sbin/bsdinstall/scripts/finalconfig81
3 files changed, 83 insertions, 53 deletions
diff --git a/usr.sbin/bsdinstall/scripts/Makefile b/usr.sbin/bsdinstall/scripts/Makefile
index 2d226f418783..e4ef00ecba59 100644
--- a/usr.sbin/bsdinstall/scripts/Makefile
+++ b/usr.sbin/bsdinstall/scripts/Makefile
@@ -7,6 +7,7 @@ SCRIPTS=auto \
docsinstall \
entropy \
fetchmissingdists \
+ finalconfig \
hardening \
hostname \
jail \
diff --git a/usr.sbin/bsdinstall/scripts/auto b/usr.sbin/bsdinstall/scripts/auto
index 742f319e15ad..9f4b5b52fe5d 100755
--- a/usr.sbin/bsdinstall/scripts/auto
+++ b/usr.sbin/bsdinstall/scripts/auto
@@ -370,60 +370,8 @@ fi
"Would you like to add users to the installed system now?" 0 0 && \
bsdinstall adduser
-finalconfig() {
- exec 5>&1
- REVISIT=$(bsddialog --backtitle "$OSNAME Installer" \
- --title "Final Configuration" --no-cancel --menu \
- "Setup of your $OSNAME system is nearly complete. You can now modify your configuration choices. After this screen, you will have an opportunity to make more complex changes using a shell." 0 0 0 \
- "Exit" "Apply configuration and exit installer" \
- "Add User" "Add a user to the system" \
- "Root Password" "Change root password" \
- "Hostname" "Set system hostname" \
- "Network" "Networking configuration" \
- "Services" "Set daemons to run on startup" \
- "System Hardening" "Set security options" \
- "Time Zone" "Set system timezone" \
- "Handbook" "Install $OSNAME Handbook (requires network)" 2>&1 1>&5)
- exec 5>&-
-
- case "$REVISIT" in
- "Add User")
- bsdinstall adduser
- finalconfig
- ;;
- "Root Password")
- bsdinstall rootpass
- finalconfig
- ;;
- "Hostname")
- bsdinstall hostname
- finalconfig
- ;;
- "Network")
- bsdinstall netconfig
- finalconfig
- ;;
- "Services")
- bsdinstall services
- finalconfig
- ;;
- "System Hardening")
- bsdinstall hardening
- finalconfig
- ;;
- "Time Zone")
- bsdinstall time
- finalconfig
- ;;
- "Handbook")
- bsdinstall docsinstall
- finalconfig
- ;;
- esac
-}
-
# Allow user to change his mind
-[ -z "$BSDINSTALL_SKIP_FINALCONFIG" ] && finalconfig
+[ -z "$BSDINSTALL_SKIP_FINALCONFIG" ] && bsdinstall finalconfig
trap error SIGINT # SIGINT is bad again
bsdinstall config || error "Failed to save config"
diff --git a/usr.sbin/bsdinstall/scripts/finalconfig b/usr.sbin/bsdinstall/scripts/finalconfig
new file mode 100755
index 000000000000..a1c0d804754f
--- /dev/null
+++ b/usr.sbin/bsdinstall/scripts/finalconfig
@@ -0,0 +1,81 @@
+#!/bin/sh
+#-
+# Copyright (c) 2011 Nathan Whitehorn
+# Copyright (c) 2013-2018 Devin Teske
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+
+BSDCFG_SHARE="/usr/share/bsdconfig"
+. $BSDCFG_SHARE/common.subr || exit 1
+
+: ${BSDDIALOG_OK=0}
+
+while true; do
+ exec 5>&1
+ REVISIT=$(bsddialog --backtitle "$OSNAME Installer" \
+ --title "Final Configuration" --no-cancel --menu \
+ "Setup of your $OSNAME system is nearly complete. You can now modify your configuration choices. After this screen, you will have an opportunity to make more complex changes using a shell." 0 0 0 \
+ "Exit" "Apply configuration and exit installer" \
+ "Add User" "Add a user to the system" \
+ "Root Password" "Change root password" \
+ "Hostname" "Set system hostname" \
+ "Network" "Networking configuration" \
+ "Services" "Set daemons to run on startup" \
+ "System Hardening" "Set security options" \
+ "Time Zone" "Set system timezone" \
+ "Handbook" "Install $OSNAME Handbook (requires network)" 2>&1 1>&5)
+ retval=$?
+ exec 5>&-
+
+ case "$REVISIT" in
+ "Add User")
+ bsdinstall adduser
+ ;;
+ "Root Password")
+ bsdinstall rootpass
+ ;;
+ "Hostname")
+ bsdinstall hostname
+ ;;
+ "Network")
+ bsdinstall netconfig
+ ;;
+ "Services")
+ bsdinstall services
+ ;;
+ "System Hardening")
+ bsdinstall hardening
+ ;;
+ "Time Zone")
+ bsdinstall time
+ ;;
+ "Handbook")
+ bsdinstall docsinstall
+ ;;
+ *)
+ break
+ ;;
+ esac
+done