opnsense-src/usr.sbin/bsdinstall/scripts/services
Jessica Clarke 1843da3edb bsdinstall: Fix ntpd_sync_on_start service option
This installer option is currently totally useless, as it ends up
creating an ntpd_sync_on_start_enable="YES" entry in rc.conf, not an
ntpd_sync_on_start="YES" entry, as is the correct name. This can also be
noticed by revisiting the services menu, which parses the previously
written rc.conf.services file to set variables governing the default
menu entry values so that selecting OK regenerates the same file, as the
menu entry will use the correct variable name and thus think the entry
was not selected last time, defaulting back to off and losing the
setting.

Thus, add a special case in the loop for this option. The only other
entry that doesn't follow the *_enable pattern is dumpdev (even moused
does, it just also sets a second variable), but that also deviates in
terms of being explicitly set either way and using AUTO rather than YES,
hence why ntpd_sync_on_start follows a different pattern here and is
special-cased rather than introducing a whole new variable that governs
behaviour outside the loop.

Fixes:	c153a35bfd ("bsdinstall: replace ntpdate by ntpd_sync_on_start")
2022-11-29 03:33:47 +00:00

89 lines
3.2 KiB
Bash
Executable file

#!/bin/sh
#-
# Copyright (c) 2011 Nathan Whitehorn
# 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}
if [ -f $BSDINSTALL_TMPETC/rc.conf.services ]; then
eval $( sed -e s/YES/on/i -e s/NO/off/i \
$BSDINSTALL_TMPETC/rc.conf.services )
else
# Default service states. Everything is off if not enabled.
sshd_enable="on"
fi
echo -n > $BSDINSTALL_TMPETC/rc.conf.services
exec 3>&1
DAEMONS=$( bsddialog --backtitle "$OSNAME Installer" \
--title "System Configuration" --no-cancel --separate-output \
--checklist "Choose the services you would like to be started at boot:" \
0 0 0 \
local_unbound "Local caching validating resolver" ${local_unbound:-off} \
sshd "Secure shell daemon" ${sshd_enable:-off} \
moused "PS/2 mouse pointer on console" ${moused_enable:-off} \
ntpd "Synchronize system and network time" ${ntpd_enable:-off} \
ntpd_sync_on_start "Sync time on ntpd startup, even if offset is high" \
${ntpd_sync_on_start:-off} \
powerd "Adjust CPU frequency dynamically if supported" \
${powerd_enable:-off} \
dumpdev "Enable kernel crash dumps to /var/crash" ${dumpdev:-on} \
2>&1 1>&3 )
retval=$?
exec 3>&-
if [ $retval -ne $BSDDIALOG_OK ]; then
exit 1
fi
havedump=
havemouse=
for daemon in $DAEMONS; do
[ "$daemon" = "dumpdev" ] && havedump=1 continue
[ "$daemon" = "moused" ] && havemouse=1
if [ "$daemon" = "ntpd_sync_on_start" ]; then
rcvar=${daemon}
else
rcvar=${daemon}_enable
fi
echo ${rcvar}=\"YES\" >> $BSDINSTALL_TMPETC/rc.conf.services
done
if [ ! "$havemouse" ]; then
echo moused_nondefault_enable=\"NO\" >> $BSDINSTALL_TMPETC/rc.conf.services
fi
echo '# Set dumpdev to "AUTO" to enable crash dumps, "NO"' \
'to disable' >> $BSDINSTALL_TMPETC/rc.conf.services
if [ "$havedump" ]; then
echo dumpdev=\"AUTO\" >> $BSDINSTALL_TMPETC/rc.conf.services
else
echo dumpdev=\"NO\" >> $BSDINSTALL_TMPETC/rc.conf.services
fi