Backout this commit since it breaks startup and some scripts in

certain conditions. I haven't been able to find a better solution yet:

    - Set a two read-only variables (${prefix} and ${etcdir}). This is
    especially useful when using /etc/rc.d scripts with third-party
    software installed from ports.
    - Fix rc.d/sshd to work with openssh from ports using ${etcdir}
    instead of hardcoded /etc.
    - Reflect prefix/etcdir changes in rc.subr.8.

        src/etc/rc.d/sshd: rev 1.9 -> 1.10
        src/etc/rc.subr: rev 1.51 -> 1.52
        src/share/man/man8/rc.subr.8: rev 1.11 -> 1.12

Approved by:	cperciva (mentor)
This commit is contained in:
Florent Thoumie 2006-08-22 11:17:29 +00:00
parent 94733fef16
commit 3081bf98bf
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=161530
3 changed files with 25 additions and 77 deletions

View File

@ -19,8 +19,6 @@ extra_commands="keygen reload"
timeout=300 timeout=300
load_rc_config $name
user_reseed() user_reseed()
{ {
( (
@ -49,46 +47,47 @@ sshd_keygen()
umask 022 umask 022
# Can't do anything if ssh is not installed # Can't do anything if ssh is not installed
[ -x ${prefix}/bin/ssh-keygen ] || { [ -x /usr/bin/ssh-keygen ] || {
warn "${prefix}/bin/ssh-keygen does not exist." warn "/usr/bin/ssh-keygen does not exist."
return 1 return 1
} }
if [ -f ${etcdir}/ssh/ssh_host_key ]; then if [ -f /etc/ssh/ssh_host_key ]; then
echo "You already have an RSA host key" \ echo "You already have an RSA host key" \
"in ${etcdir}/ssh/ssh_host_key" "in /etc/ssh/ssh_host_key"
echo "Skipping protocol version 1 RSA Key Generation" echo "Skipping protocol version 1 RSA Key Generation"
else else
${prefix}/bin/ssh-keygen -t rsa1 -b 1024 \ /usr/bin/ssh-keygen -t rsa1 -b 1024 \
-f ${etcdir}/ssh/ssh_host_key -N '' -f /etc/ssh/ssh_host_key -N ''
fi fi
if [ -f ${etcdir}/ssh/ssh_host_dsa_key ]; then if [ -f /etc/ssh/ssh_host_dsa_key ]; then
echo "You already have a DSA host key" \ echo "You already have a DSA host key" \
"in ${etcdir}/ssh/ssh_host_dsa_key" "in /etc/ssh/ssh_host_dsa_key"
echo "Skipping protocol version 2 DSA Key Generation" echo "Skipping protocol version 2 DSA Key Generation"
else else
${prefix}/bin/ssh-keygen -t dsa -f ${etcdir}/ssh/ssh_host_dsa_key -N '' /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
fi fi
if [ -f ${etcdir}/ssh/ssh_host_rsa_key ]; then if [ -f /etc/ssh/ssh_host_rsa_key ]; then
echo "You already have a RSA host key" \ echo "You already have a RSA host key" \
"in ${etcdir}/ssh/ssh_host_rsa_key" "in /etc/ssh/ssh_host_rsa_key"
echo "Skipping protocol version 2 RSA Key Generation" echo "Skipping protocol version 2 RSA Key Generation"
else else
${prefix}/bin/ssh-keygen -t rsa -f ${etcdir}/ssh/ssh_host_rsa_key -N '' /usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
fi fi
) )
} }
sshd_precmd() sshd_precmd()
{ {
if [ ! -f ${etcdir}/ssh/ssh_host_key -o \ if [ ! -f /etc/ssh/ssh_host_key -o \
! -f ${etcdir}/ssh/ssh_host_dsa_key -o \ ! -f /etc/ssh/ssh_host_dsa_key -o \
! -f ${etcdir}/ssh/ssh_host_rsa_key ]; then ! -f /etc/ssh/ssh_host_rsa_key ]; then
user_reseed user_reseed
run_rc_command keygen run_rc_command keygen
fi fi
} }
load_rc_config $name
run_rc_command "$1" run_rc_command "$1"

View File

@ -506,6 +506,9 @@ run_rc_command()
;; ;;
esac esac
eval _override_command=\$${name}_program
command=${command:+${_override_command:-$command}}
_keywords="start stop restart rcvar $extra_commands" _keywords="start stop restart rcvar $extra_commands"
rc_pid= rc_pid=
_pidcmd= _pidcmd=
@ -873,8 +876,6 @@ run_rc_script()
# #
load_rc_config() load_rc_config()
{ {
local _tmp
_name=$1 _name=$1
if [ -z "$_name" ]; then if [ -z "$_name" ]; then
err 3 'USAGE: load_rc_config name' err 3 'USAGE: load_rc_config name'
@ -893,35 +894,9 @@ load_rc_config()
fi fi
_rc_conf_loaded=true _rc_conf_loaded=true
fi fi
if [ -f /etc/rc.conf.d/"$_name" ]; then
eval _override_command=\$${name}_program
command=${command:+${_override_command:-$command}}
if [ -z "${command}" ]; then
_tmp=`/bin/realpath $0`
prefix=${_tmp%/etc/rc.d/*}/
else
prefix=${command%/*bin/*}/
fi
if [ "${prefix}" = "/" -o "${prefix}" = "/usr/" ] ; then
etcdir="/etc"
else
etcdir="${prefix}etc"
fi
# XXX - Deprecated
if [ -f /etc/rc.conf.d/${_name} -a ${etcdir} != "/etc" ]; then
debug "Sourcing /etc/rc.conf.d/${_name}" debug "Sourcing /etc/rc.conf.d/${_name}"
warn "Warning: /etc/rc.conf.d/${_name} is deprecated, please use ${etcdir}/rc.conf.d/${_name} instead." . /etc/rc.conf.d/"$_name"
if [ -f ${etcdir}/rc.conf.d/${_name} ]; then
warn "Warning: Both /etc/rc.conf.d/${_name} and ${etcdir}/rc.conf.d/${_name} exist."
fi
. /etc/rc.conf.d/${_name}
fi
if [ -f ${etcdir}/rc.conf.d/${_name} ]; then
debug "Sourcing ${etcdir}/rc.conf.d/${_name}"
. ${etcdir}/rc.conf.d/${_name}
fi fi
# XXX - Deprecated variable name support # XXX - Deprecated variable name support

View File

@ -332,38 +332,12 @@ which is not always the case.
Source in the configuration files for Source in the configuration files for
.Ar name . .Ar name .
First, First,
.Pa /etc/defaults/rc.conf
and
.Pa /etc/rc.conf .Pa /etc/rc.conf
are sourced if they have not yet been read in. is sourced if it has not yet been read in.
Then, Then,
.Va etcdir .Pa /etc/rc.conf.d/ Ns Ar name
is set to is sourced if it is an existing file.
.Pa /etc The latter may also contain other variable assignments to override
if
.Va command Ap s
prefix (or
.Va ${name} Ns Va _program Ap s
if it is defined) is
.Pa /
or
.Pa /usr ,
otherwise
.Va etcdir
is set to
.Pa ${prefix} Ns Pa /etc .
Once those variables are set accordingly,
.Pa /etc/rc.conf.d/ Ns Va ${name}
is sourced if the file exists (but it is deprecated if
.Va etcdir
is different than
.Pa /etc )
and then
.Pa ${etcdir} Ns Pa /defaults/ Ns Va ${name}
and
.Va ${etcdir} Ns Pa /rc.conf.d/ Ns Va ${name}
are sourced if these files exist.
All these files may also contain other variable assignments to override
.Ic run_rc_command .Ic run_rc_command
arguments defined by the calling script, to provide an easy arguments defined by the calling script, to provide an easy
mechanism for an administrator to override the behaviour of a given mechanism for an administrator to override the behaviour of a given