mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 01:39:16 -04:00
- minor changes:
Makefile configure-package added to post-install .ORDER added files/isc-dhcpd.sh.sample some debug() added precious() test inverted lsmod() added safe_chmod() fixed (don't chown .../dev if mounted) safe_mkdir() fixed (don't create .../dev if mounted) check_chuser() fixed (-z "${var}" instead of -z ${var}) setup_umask() fixed (dhcpd_umask -> dhcpd_withumask) dhcpd_stop() fixed (sh $0 force... instead of $0 ...) _dhcpd__uninstall() added dhcpd_uninstall() recursively called to handle all the combinations of dhcpd_chuser_enable and dhcpd_chroot_enable $__dhcpd_uninstall added $_dhcpd_piddir and $_dhcpd_leaddir -> $__dhcpd_* Closes PR: ports/68647 Submitted by: Cyrille Lefevre <cyrille.lefevre@laposte.net> (maintainer)
This commit is contained in:
parent
dcda0e48ce
commit
4ac742785c
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=113018
8 changed files with 444 additions and 116 deletions
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
PORTNAME= dhcp
|
PORTNAME= dhcp
|
||||||
PORTVERSION= 3.0.1.r14
|
PORTVERSION= 3.0.1.r14
|
||||||
PORTREVISION= 1
|
PORTREVISION= 2
|
||||||
CATEGORIES= net
|
CATEGORIES= net
|
||||||
MASTER_SITES= ${MASTER_SITE_ISC}
|
MASTER_SITES= ${MASTER_SITE_ISC}
|
||||||
MASTER_SITE_SUBDIR= dhcp dhcp/dhcp-3.0-history
|
MASTER_SITE_SUBDIR= dhcp dhcp/dhcp-3.0-history
|
||||||
|
@ -42,6 +42,7 @@ HAS_CONFIGURE= yes
|
||||||
CONFIGURE_ARGS= --subsys ${SUBSYS}
|
CONFIGURE_ARGS= --subsys ${SUBSYS}
|
||||||
ALL_TARGET= all.${SUBSYS}
|
ALL_TARGET= all.${SUBSYS}
|
||||||
INSTALL_TARGET= install.${SUBSYS}
|
INSTALL_TARGET= install.${SUBSYS}
|
||||||
|
SCRIPTS_ENV+= PKG_PREFIX=${PREFIX}
|
||||||
|
|
||||||
.if ${SUBSYS} == client
|
.if ${SUBSYS} == client
|
||||||
MAN5= dhclient.conf.5 dhclient.leases.5
|
MAN5= dhclient.conf.5 dhclient.leases.5
|
||||||
|
@ -209,10 +210,14 @@ patch-pkgmessage:
|
||||||
# Post-install
|
# Post-install
|
||||||
#
|
#
|
||||||
|
|
||||||
post-install: strip-binary-files install-startup-files \
|
POST-INSTALL= parallel-post-install configure-package display-message
|
||||||
install-doc-files install-sample-files \
|
.ORDER: ${POST-INSTALL}
|
||||||
create-conf-files create-data-files \
|
post-install: ${POST-INSTALL}
|
||||||
display-message
|
|
||||||
|
parallel-post-install: \
|
||||||
|
strip-binary-files install-startup-files \
|
||||||
|
install-doc-files install-sample-files \
|
||||||
|
create-conf-files create-data-files
|
||||||
|
|
||||||
strip-binary-files:
|
strip-binary-files:
|
||||||
.for f in ${BIN_FILES}
|
.for f in ${BIN_FILES}
|
||||||
|
@ -256,6 +261,9 @@ create-data-files:
|
||||||
.endif
|
.endif
|
||||||
.endfor
|
.endfor
|
||||||
|
|
||||||
|
configure-package:
|
||||||
|
@${SETENV} ${SCRIPTS_ENV} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
|
||||||
|
|
||||||
display-message:
|
display-message:
|
||||||
.if ${SUBSYS} != devel
|
.if ${SUBSYS} != devel
|
||||||
@${ECHO_MSG}
|
@${ECHO_MSG}
|
||||||
|
|
|
@ -44,7 +44,10 @@ safe_run () # rc command [args...]
|
||||||
shift
|
shift
|
||||||
|
|
||||||
if [ "${_rc}" -eq 0 ]; then
|
if [ "${_rc}" -eq 0 ]; then
|
||||||
|
debug safe_run: "$@"
|
||||||
"$@" || _rc=1
|
"$@" || _rc=1
|
||||||
|
else
|
||||||
|
warn safe_run: "$@"
|
||||||
fi
|
fi
|
||||||
return ${_rc}
|
return ${_rc}
|
||||||
}
|
}
|
||||||
|
@ -53,11 +56,30 @@ precious () # entry...
|
||||||
{
|
{
|
||||||
local _entry _rc
|
local _entry _rc
|
||||||
|
|
||||||
_rc=1
|
_rc=0
|
||||||
for _entry; do
|
for _entry; do
|
||||||
# do nothing if /var/run or /var/db
|
# do nothing if /var/run or /var/db
|
||||||
echo ${_entry} | egrep -q '^//*(var//*(run|db)/*)?$' && _rc=0
|
echo ${_entry} | egrep -q '^//*(var//*(run|db)/*)?$' || _rc=1
|
||||||
done
|
done
|
||||||
|
debug precious: "$@" rc=${_rc}
|
||||||
|
return ${_rc}
|
||||||
|
}
|
||||||
|
|
||||||
|
lsmod () # user group file...
|
||||||
|
{
|
||||||
|
local _entry _user _group _rc
|
||||||
|
|
||||||
|
_user=$1 _group=$2
|
||||||
|
shift 2
|
||||||
|
|
||||||
|
_rc=0
|
||||||
|
for _entry; do
|
||||||
|
ls -ld ${_entry} 2> /dev/null |
|
||||||
|
awk -v u=${_user} -v g=${_group} '{
|
||||||
|
exit ((u && $3 != u) || (g && $4 != g))
|
||||||
|
}' || _rc=1
|
||||||
|
done
|
||||||
|
debug lsmod: "$@" rc=${_rc}
|
||||||
return ${_rc}
|
return ${_rc}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,12 +94,12 @@ safe_chmog () # entry...
|
||||||
if [ -n "${_user}" -o -n "${_group}" ]; then
|
if [ -n "${_user}" -o -n "${_group}" ]; then
|
||||||
_usergroup=${_user}${_group:+:${_group}}
|
_usergroup=${_user}${_group:+:${_group}}
|
||||||
for _entry; do
|
for _entry; do
|
||||||
|
if [ -d ${_entry} ] && mounted ${_entry}; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
if [ -e ${_entry} ] &&
|
if [ -e ${_entry} ] &&
|
||||||
! precious ${_entry} &&
|
! precious ${_entry} &&
|
||||||
! ls -ld ${_entry} 2> /dev/null |
|
! lsmod ${_user} ${_group} ${_entry} &&
|
||||||
awk -v u=${_user} -v g=${_group} '{
|
|
||||||
exit ((u && $3 != u) || (g && $4 != g))
|
|
||||||
}' &&
|
|
||||||
! safe_run ${_rc} chown ${_usergroup} ${_entry}; then
|
! safe_run ${_rc} chown ${_usergroup} ${_entry}; then
|
||||||
warn "unable to change permissions of ${_entry}"
|
warn "unable to change permissions of ${_entry}"
|
||||||
_rc=1
|
_rc=1
|
||||||
|
@ -111,7 +133,8 @@ safe_rmdir () # dir...
|
||||||
_rc=0
|
_rc=0
|
||||||
for _dir; do
|
for _dir; do
|
||||||
if [ -d ${_dir} ] &&
|
if [ -d ${_dir} ] &&
|
||||||
! precious ${_dir}; then
|
! precious ${_dir} &&
|
||||||
|
! mounted ${_dir}; then
|
||||||
if safe_run ${_rc} rmdir ${_dir}; then
|
if safe_run ${_rc} rmdir ${_dir}; then
|
||||||
safe_run ${_rc} safe_rmdir ${_dir%/*} || _rc=1
|
safe_run ${_rc} safe_rmdir ${_dir%/*} || _rc=1
|
||||||
else
|
else
|
||||||
|
@ -179,6 +202,7 @@ mounted () # dir...
|
||||||
BEGIN { n = ARGC; ARGC = 2 }
|
BEGIN { n = ARGC; ARGC = 2 }
|
||||||
{ for (i = 2; i != n; i++) if ($3 == ARGV[i]) exit 1 }
|
{ for (i = 2; i != n; i++) if ($3 == ARGV[i]) exit 1 }
|
||||||
' - "$@" || _rc=0
|
' - "$@" || _rc=0
|
||||||
|
debug mounted: "$@" rc=${_rc}
|
||||||
return ${_rc}
|
return ${_rc}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,7 +274,7 @@ check_chuser ()
|
||||||
{
|
{
|
||||||
if checkyesno paranoia; then
|
if checkyesno paranoia; then
|
||||||
if checkyesno dhcpd_chuser_enable &&
|
if checkyesno dhcpd_chuser_enable &&
|
||||||
[ -z ${dhcpd_withuser} -a -z ${dhcpd_withgroup} ]; then
|
[ -z "${dhcpd_withuser}" -a -z "${dhcpd_withgroup}" ]; then
|
||||||
err 1 "one of dhcpd_withuser and dhcpd_withgroup" \
|
err 1 "one of dhcpd_withuser and dhcpd_withgroup" \
|
||||||
"must be set if dhcpd_chuser_enable is enabled"
|
"must be set if dhcpd_chuser_enable is enabled"
|
||||||
fi
|
fi
|
||||||
|
@ -303,8 +327,8 @@ check_chroot ()
|
||||||
rcvar_chuser ()
|
rcvar_chuser ()
|
||||||
{
|
{
|
||||||
if checkyesno paranoia && checkyesno dhcpd_chuser_enable; then
|
if checkyesno paranoia && checkyesno dhcpd_chuser_enable; then
|
||||||
dhcpd_piddir=${_dhcpd_piddir}/${name}
|
dhcpd_piddir=${__dhcpd_piddir}/${name}
|
||||||
dhcpd_leasesdir=${_dhcpd_leasesdir}/${name}
|
dhcpd_leasesdir=${__dhcpd_leasesdir}/${name}
|
||||||
else
|
else
|
||||||
dhcpd_withuser= dhcpd_withgroup=
|
dhcpd_withuser= dhcpd_withgroup=
|
||||||
fi
|
fi
|
||||||
|
@ -328,8 +352,8 @@ rcvar_chroot ()
|
||||||
rcvar_pidnleases ()
|
rcvar_pidnleases ()
|
||||||
{
|
{
|
||||||
if ! checkyesno dhcpd_chuser_enable; then
|
if ! checkyesno dhcpd_chuser_enable; then
|
||||||
dhcpd_piddir=${_dhcpd_piddir}
|
dhcpd_piddir=${__dhcpd_piddir}
|
||||||
dhcpd_leasesdir=${_dhcpd_leasesdir}
|
dhcpd_leasesdir=${__dhcpd_leasesdir}
|
||||||
fi
|
fi
|
||||||
dhcpd_pidfile=${dhcpd_piddir}/${name}.pid
|
dhcpd_pidfile=${dhcpd_piddir}/${name}.pid
|
||||||
dhcpd_leasesfile=${dhcpd_leasesdir}/${name}.leases
|
dhcpd_leasesfile=${dhcpd_leasesdir}/${name}.leases
|
||||||
|
@ -372,8 +396,8 @@ setup_compat ()
|
||||||
|
|
||||||
setup_umask ()
|
setup_umask ()
|
||||||
{
|
{
|
||||||
if [ -n "${dhcpd_umask}" ]; then
|
if [ -n "${dhcpd_withumask}" ]; then
|
||||||
umask ${dhcpd_umask}
|
umask ${dhcpd_withumask}
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,8 +459,8 @@ cleanup_chroot ()
|
||||||
|
|
||||||
dhcpd_stop ()
|
dhcpd_stop ()
|
||||||
{
|
{
|
||||||
if $0 status; then
|
if sh $0 forcestatus; then
|
||||||
$0 stop
|
sh $0 forcestop
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -515,21 +539,71 @@ dhcpd_install ()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_dhcpd_uninstall () # user group root
|
||||||
|
{
|
||||||
|
local _user _group _root
|
||||||
|
|
||||||
|
_user=$1 _group=$2 _root=$3
|
||||||
|
|
||||||
|
if [ -n "${_user}" -o -n "${_group}" ]; then
|
||||||
|
dhcpd_chuser_enable=YES
|
||||||
|
dhcpd_withuser=${_user}
|
||||||
|
dhcpd_withgroup=${_group}
|
||||||
|
else
|
||||||
|
dhcpd_chuser_enable=NO
|
||||||
|
fi
|
||||||
|
if [ -n "${_root}" ]; then
|
||||||
|
dhcpd_chroot_enable=YES
|
||||||
|
dhcpd_rootdir=${_root}
|
||||||
|
else
|
||||||
|
dhcpd_chroot_enable=NO
|
||||||
|
fi
|
||||||
|
dhcpd_check
|
||||||
|
dhcpd_rcvar
|
||||||
|
dhcpd_uninstall
|
||||||
|
}
|
||||||
|
|
||||||
dhcpd_uninstall ()
|
dhcpd_uninstall ()
|
||||||
{
|
{
|
||||||
dhcpd_stop
|
if checkyesno __dhcpd_uninstall; then
|
||||||
remove_pid
|
dhcpd_stop
|
||||||
remove_leases
|
remove_pid
|
||||||
remove_chuser
|
remove_leases
|
||||||
remove_chroot
|
remove_chuser
|
||||||
|
remove_chroot
|
||||||
|
else
|
||||||
|
local _user _group _root
|
||||||
|
|
||||||
|
__dhcpd_uninstall=YES
|
||||||
|
|
||||||
|
_user=${dhcpd_withuser}
|
||||||
|
_group=${dhcpd_withgroup}
|
||||||
|
_root=${dhcpd_rootdir}
|
||||||
|
|
||||||
|
_dhcpd_uninstall "" "" ""
|
||||||
|
|
||||||
|
if checkyesno paranoia; then
|
||||||
|
if [ -n "${_user}" -o -n "${_group}" ]; then
|
||||||
|
_dhcpd_uninstall "${_user}" "${_group}" ""
|
||||||
|
fi
|
||||||
|
if [ -n "${_root}" ]; then
|
||||||
|
_dhcpd_uninstall "" "" "${_root}"
|
||||||
|
fi
|
||||||
|
if [ -n "${_user}" -o -n "${_group}" ] &&
|
||||||
|
[ -n "${_root}" ]; then
|
||||||
|
_dhcpd_uninstall "${_user}" "${_group}" "${_root}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
rcvar=$(set_rcvar)
|
rcvar=$(set_rcvar)
|
||||||
load_rc_config ${name}
|
load_rc_config ${name}
|
||||||
|
|
||||||
_dhcpd_piddir=/var/run # pid file directory
|
__dhcpd_uninstall="NO" # internal use only
|
||||||
_dhcpd_leasesdir=/var/db # leases file directory
|
__dhcpd_piddir=/var/run # pid file directory
|
||||||
#_dhcpd_rootdir=/var/db/${name} # root directory
|
__dhcpd_leasesdir=/var/db # leases file directory
|
||||||
|
#__dhcpd_rootdir=/var/db/${name} # root directory
|
||||||
|
|
||||||
dhcpd_check
|
dhcpd_check
|
||||||
dhcpd_rcvar
|
dhcpd_rcvar
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
PORTNAME= dhcp
|
PORTNAME= dhcp
|
||||||
PORTVERSION= 3.0.1.r14
|
PORTVERSION= 3.0.1.r14
|
||||||
PORTREVISION= 1
|
PORTREVISION= 2
|
||||||
CATEGORIES= net
|
CATEGORIES= net
|
||||||
MASTER_SITES= ${MASTER_SITE_ISC}
|
MASTER_SITES= ${MASTER_SITE_ISC}
|
||||||
MASTER_SITE_SUBDIR= dhcp dhcp/dhcp-3.0-history
|
MASTER_SITE_SUBDIR= dhcp dhcp/dhcp-3.0-history
|
||||||
|
@ -42,6 +42,7 @@ HAS_CONFIGURE= yes
|
||||||
CONFIGURE_ARGS= --subsys ${SUBSYS}
|
CONFIGURE_ARGS= --subsys ${SUBSYS}
|
||||||
ALL_TARGET= all.${SUBSYS}
|
ALL_TARGET= all.${SUBSYS}
|
||||||
INSTALL_TARGET= install.${SUBSYS}
|
INSTALL_TARGET= install.${SUBSYS}
|
||||||
|
SCRIPTS_ENV+= PKG_PREFIX=${PREFIX}
|
||||||
|
|
||||||
.if ${SUBSYS} == client
|
.if ${SUBSYS} == client
|
||||||
MAN5= dhclient.conf.5 dhclient.leases.5
|
MAN5= dhclient.conf.5 dhclient.leases.5
|
||||||
|
@ -209,10 +210,14 @@ patch-pkgmessage:
|
||||||
# Post-install
|
# Post-install
|
||||||
#
|
#
|
||||||
|
|
||||||
post-install: strip-binary-files install-startup-files \
|
POST-INSTALL= parallel-post-install configure-package display-message
|
||||||
install-doc-files install-sample-files \
|
.ORDER: ${POST-INSTALL}
|
||||||
create-conf-files create-data-files \
|
post-install: ${POST-INSTALL}
|
||||||
display-message
|
|
||||||
|
parallel-post-install: \
|
||||||
|
strip-binary-files install-startup-files \
|
||||||
|
install-doc-files install-sample-files \
|
||||||
|
create-conf-files create-data-files
|
||||||
|
|
||||||
strip-binary-files:
|
strip-binary-files:
|
||||||
.for f in ${BIN_FILES}
|
.for f in ${BIN_FILES}
|
||||||
|
@ -256,6 +261,9 @@ create-data-files:
|
||||||
.endif
|
.endif
|
||||||
.endfor
|
.endfor
|
||||||
|
|
||||||
|
configure-package:
|
||||||
|
@${SETENV} ${SCRIPTS_ENV} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
|
||||||
|
|
||||||
display-message:
|
display-message:
|
||||||
.if ${SUBSYS} != devel
|
.if ${SUBSYS} != devel
|
||||||
@${ECHO_MSG}
|
@${ECHO_MSG}
|
||||||
|
|
|
@ -44,7 +44,10 @@ safe_run () # rc command [args...]
|
||||||
shift
|
shift
|
||||||
|
|
||||||
if [ "${_rc}" -eq 0 ]; then
|
if [ "${_rc}" -eq 0 ]; then
|
||||||
|
debug safe_run: "$@"
|
||||||
"$@" || _rc=1
|
"$@" || _rc=1
|
||||||
|
else
|
||||||
|
warn safe_run: "$@"
|
||||||
fi
|
fi
|
||||||
return ${_rc}
|
return ${_rc}
|
||||||
}
|
}
|
||||||
|
@ -53,11 +56,30 @@ precious () # entry...
|
||||||
{
|
{
|
||||||
local _entry _rc
|
local _entry _rc
|
||||||
|
|
||||||
_rc=1
|
_rc=0
|
||||||
for _entry; do
|
for _entry; do
|
||||||
# do nothing if /var/run or /var/db
|
# do nothing if /var/run or /var/db
|
||||||
echo ${_entry} | egrep -q '^//*(var//*(run|db)/*)?$' && _rc=0
|
echo ${_entry} | egrep -q '^//*(var//*(run|db)/*)?$' || _rc=1
|
||||||
done
|
done
|
||||||
|
debug precious: "$@" rc=${_rc}
|
||||||
|
return ${_rc}
|
||||||
|
}
|
||||||
|
|
||||||
|
lsmod () # user group file...
|
||||||
|
{
|
||||||
|
local _entry _user _group _rc
|
||||||
|
|
||||||
|
_user=$1 _group=$2
|
||||||
|
shift 2
|
||||||
|
|
||||||
|
_rc=0
|
||||||
|
for _entry; do
|
||||||
|
ls -ld ${_entry} 2> /dev/null |
|
||||||
|
awk -v u=${_user} -v g=${_group} '{
|
||||||
|
exit ((u && $3 != u) || (g && $4 != g))
|
||||||
|
}' || _rc=1
|
||||||
|
done
|
||||||
|
debug lsmod: "$@" rc=${_rc}
|
||||||
return ${_rc}
|
return ${_rc}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,12 +94,12 @@ safe_chmog () # entry...
|
||||||
if [ -n "${_user}" -o -n "${_group}" ]; then
|
if [ -n "${_user}" -o -n "${_group}" ]; then
|
||||||
_usergroup=${_user}${_group:+:${_group}}
|
_usergroup=${_user}${_group:+:${_group}}
|
||||||
for _entry; do
|
for _entry; do
|
||||||
|
if [ -d ${_entry} ] && mounted ${_entry}; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
if [ -e ${_entry} ] &&
|
if [ -e ${_entry} ] &&
|
||||||
! precious ${_entry} &&
|
! precious ${_entry} &&
|
||||||
! ls -ld ${_entry} 2> /dev/null |
|
! lsmod ${_user} ${_group} ${_entry} &&
|
||||||
awk -v u=${_user} -v g=${_group} '{
|
|
||||||
exit ((u && $3 != u) || (g && $4 != g))
|
|
||||||
}' &&
|
|
||||||
! safe_run ${_rc} chown ${_usergroup} ${_entry}; then
|
! safe_run ${_rc} chown ${_usergroup} ${_entry}; then
|
||||||
warn "unable to change permissions of ${_entry}"
|
warn "unable to change permissions of ${_entry}"
|
||||||
_rc=1
|
_rc=1
|
||||||
|
@ -111,7 +133,8 @@ safe_rmdir () # dir...
|
||||||
_rc=0
|
_rc=0
|
||||||
for _dir; do
|
for _dir; do
|
||||||
if [ -d ${_dir} ] &&
|
if [ -d ${_dir} ] &&
|
||||||
! precious ${_dir}; then
|
! precious ${_dir} &&
|
||||||
|
! mounted ${_dir}; then
|
||||||
if safe_run ${_rc} rmdir ${_dir}; then
|
if safe_run ${_rc} rmdir ${_dir}; then
|
||||||
safe_run ${_rc} safe_rmdir ${_dir%/*} || _rc=1
|
safe_run ${_rc} safe_rmdir ${_dir%/*} || _rc=1
|
||||||
else
|
else
|
||||||
|
@ -179,6 +202,7 @@ mounted () # dir...
|
||||||
BEGIN { n = ARGC; ARGC = 2 }
|
BEGIN { n = ARGC; ARGC = 2 }
|
||||||
{ for (i = 2; i != n; i++) if ($3 == ARGV[i]) exit 1 }
|
{ for (i = 2; i != n; i++) if ($3 == ARGV[i]) exit 1 }
|
||||||
' - "$@" || _rc=0
|
' - "$@" || _rc=0
|
||||||
|
debug mounted: "$@" rc=${_rc}
|
||||||
return ${_rc}
|
return ${_rc}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,7 +274,7 @@ check_chuser ()
|
||||||
{
|
{
|
||||||
if checkyesno paranoia; then
|
if checkyesno paranoia; then
|
||||||
if checkyesno dhcpd_chuser_enable &&
|
if checkyesno dhcpd_chuser_enable &&
|
||||||
[ -z ${dhcpd_withuser} -a -z ${dhcpd_withgroup} ]; then
|
[ -z "${dhcpd_withuser}" -a -z "${dhcpd_withgroup}" ]; then
|
||||||
err 1 "one of dhcpd_withuser and dhcpd_withgroup" \
|
err 1 "one of dhcpd_withuser and dhcpd_withgroup" \
|
||||||
"must be set if dhcpd_chuser_enable is enabled"
|
"must be set if dhcpd_chuser_enable is enabled"
|
||||||
fi
|
fi
|
||||||
|
@ -303,8 +327,8 @@ check_chroot ()
|
||||||
rcvar_chuser ()
|
rcvar_chuser ()
|
||||||
{
|
{
|
||||||
if checkyesno paranoia && checkyesno dhcpd_chuser_enable; then
|
if checkyesno paranoia && checkyesno dhcpd_chuser_enable; then
|
||||||
dhcpd_piddir=${_dhcpd_piddir}/${name}
|
dhcpd_piddir=${__dhcpd_piddir}/${name}
|
||||||
dhcpd_leasesdir=${_dhcpd_leasesdir}/${name}
|
dhcpd_leasesdir=${__dhcpd_leasesdir}/${name}
|
||||||
else
|
else
|
||||||
dhcpd_withuser= dhcpd_withgroup=
|
dhcpd_withuser= dhcpd_withgroup=
|
||||||
fi
|
fi
|
||||||
|
@ -328,8 +352,8 @@ rcvar_chroot ()
|
||||||
rcvar_pidnleases ()
|
rcvar_pidnleases ()
|
||||||
{
|
{
|
||||||
if ! checkyesno dhcpd_chuser_enable; then
|
if ! checkyesno dhcpd_chuser_enable; then
|
||||||
dhcpd_piddir=${_dhcpd_piddir}
|
dhcpd_piddir=${__dhcpd_piddir}
|
||||||
dhcpd_leasesdir=${_dhcpd_leasesdir}
|
dhcpd_leasesdir=${__dhcpd_leasesdir}
|
||||||
fi
|
fi
|
||||||
dhcpd_pidfile=${dhcpd_piddir}/${name}.pid
|
dhcpd_pidfile=${dhcpd_piddir}/${name}.pid
|
||||||
dhcpd_leasesfile=${dhcpd_leasesdir}/${name}.leases
|
dhcpd_leasesfile=${dhcpd_leasesdir}/${name}.leases
|
||||||
|
@ -372,8 +396,8 @@ setup_compat ()
|
||||||
|
|
||||||
setup_umask ()
|
setup_umask ()
|
||||||
{
|
{
|
||||||
if [ -n "${dhcpd_umask}" ]; then
|
if [ -n "${dhcpd_withumask}" ]; then
|
||||||
umask ${dhcpd_umask}
|
umask ${dhcpd_withumask}
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,8 +459,8 @@ cleanup_chroot ()
|
||||||
|
|
||||||
dhcpd_stop ()
|
dhcpd_stop ()
|
||||||
{
|
{
|
||||||
if $0 status; then
|
if sh $0 forcestatus; then
|
||||||
$0 stop
|
sh $0 forcestop
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -515,21 +539,71 @@ dhcpd_install ()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_dhcpd_uninstall () # user group root
|
||||||
|
{
|
||||||
|
local _user _group _root
|
||||||
|
|
||||||
|
_user=$1 _group=$2 _root=$3
|
||||||
|
|
||||||
|
if [ -n "${_user}" -o -n "${_group}" ]; then
|
||||||
|
dhcpd_chuser_enable=YES
|
||||||
|
dhcpd_withuser=${_user}
|
||||||
|
dhcpd_withgroup=${_group}
|
||||||
|
else
|
||||||
|
dhcpd_chuser_enable=NO
|
||||||
|
fi
|
||||||
|
if [ -n "${_root}" ]; then
|
||||||
|
dhcpd_chroot_enable=YES
|
||||||
|
dhcpd_rootdir=${_root}
|
||||||
|
else
|
||||||
|
dhcpd_chroot_enable=NO
|
||||||
|
fi
|
||||||
|
dhcpd_check
|
||||||
|
dhcpd_rcvar
|
||||||
|
dhcpd_uninstall
|
||||||
|
}
|
||||||
|
|
||||||
dhcpd_uninstall ()
|
dhcpd_uninstall ()
|
||||||
{
|
{
|
||||||
dhcpd_stop
|
if checkyesno __dhcpd_uninstall; then
|
||||||
remove_pid
|
dhcpd_stop
|
||||||
remove_leases
|
remove_pid
|
||||||
remove_chuser
|
remove_leases
|
||||||
remove_chroot
|
remove_chuser
|
||||||
|
remove_chroot
|
||||||
|
else
|
||||||
|
local _user _group _root
|
||||||
|
|
||||||
|
__dhcpd_uninstall=YES
|
||||||
|
|
||||||
|
_user=${dhcpd_withuser}
|
||||||
|
_group=${dhcpd_withgroup}
|
||||||
|
_root=${dhcpd_rootdir}
|
||||||
|
|
||||||
|
_dhcpd_uninstall "" "" ""
|
||||||
|
|
||||||
|
if checkyesno paranoia; then
|
||||||
|
if [ -n "${_user}" -o -n "${_group}" ]; then
|
||||||
|
_dhcpd_uninstall "${_user}" "${_group}" ""
|
||||||
|
fi
|
||||||
|
if [ -n "${_root}" ]; then
|
||||||
|
_dhcpd_uninstall "" "" "${_root}"
|
||||||
|
fi
|
||||||
|
if [ -n "${_user}" -o -n "${_group}" ] &&
|
||||||
|
[ -n "${_root}" ]; then
|
||||||
|
_dhcpd_uninstall "${_user}" "${_group}" "${_root}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
rcvar=$(set_rcvar)
|
rcvar=$(set_rcvar)
|
||||||
load_rc_config ${name}
|
load_rc_config ${name}
|
||||||
|
|
||||||
_dhcpd_piddir=/var/run # pid file directory
|
__dhcpd_uninstall="NO" # internal use only
|
||||||
_dhcpd_leasesdir=/var/db # leases file directory
|
__dhcpd_piddir=/var/run # pid file directory
|
||||||
#_dhcpd_rootdir=/var/db/${name} # root directory
|
__dhcpd_leasesdir=/var/db # leases file directory
|
||||||
|
#__dhcpd_rootdir=/var/db/${name} # root directory
|
||||||
|
|
||||||
dhcpd_check
|
dhcpd_check
|
||||||
dhcpd_rcvar
|
dhcpd_rcvar
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
PORTNAME= dhcp
|
PORTNAME= dhcp
|
||||||
PORTVERSION= 3.0.1.r14
|
PORTVERSION= 3.0.1.r14
|
||||||
PORTREVISION= 1
|
PORTREVISION= 2
|
||||||
CATEGORIES= net
|
CATEGORIES= net
|
||||||
MASTER_SITES= ${MASTER_SITE_ISC}
|
MASTER_SITES= ${MASTER_SITE_ISC}
|
||||||
MASTER_SITE_SUBDIR= dhcp dhcp/dhcp-3.0-history
|
MASTER_SITE_SUBDIR= dhcp dhcp/dhcp-3.0-history
|
||||||
|
@ -42,6 +42,7 @@ HAS_CONFIGURE= yes
|
||||||
CONFIGURE_ARGS= --subsys ${SUBSYS}
|
CONFIGURE_ARGS= --subsys ${SUBSYS}
|
||||||
ALL_TARGET= all.${SUBSYS}
|
ALL_TARGET= all.${SUBSYS}
|
||||||
INSTALL_TARGET= install.${SUBSYS}
|
INSTALL_TARGET= install.${SUBSYS}
|
||||||
|
SCRIPTS_ENV+= PKG_PREFIX=${PREFIX}
|
||||||
|
|
||||||
.if ${SUBSYS} == client
|
.if ${SUBSYS} == client
|
||||||
MAN5= dhclient.conf.5 dhclient.leases.5
|
MAN5= dhclient.conf.5 dhclient.leases.5
|
||||||
|
@ -209,10 +210,14 @@ patch-pkgmessage:
|
||||||
# Post-install
|
# Post-install
|
||||||
#
|
#
|
||||||
|
|
||||||
post-install: strip-binary-files install-startup-files \
|
POST-INSTALL= parallel-post-install configure-package display-message
|
||||||
install-doc-files install-sample-files \
|
.ORDER: ${POST-INSTALL}
|
||||||
create-conf-files create-data-files \
|
post-install: ${POST-INSTALL}
|
||||||
display-message
|
|
||||||
|
parallel-post-install: \
|
||||||
|
strip-binary-files install-startup-files \
|
||||||
|
install-doc-files install-sample-files \
|
||||||
|
create-conf-files create-data-files
|
||||||
|
|
||||||
strip-binary-files:
|
strip-binary-files:
|
||||||
.for f in ${BIN_FILES}
|
.for f in ${BIN_FILES}
|
||||||
|
@ -256,6 +261,9 @@ create-data-files:
|
||||||
.endif
|
.endif
|
||||||
.endfor
|
.endfor
|
||||||
|
|
||||||
|
configure-package:
|
||||||
|
@${SETENV} ${SCRIPTS_ENV} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
|
||||||
|
|
||||||
display-message:
|
display-message:
|
||||||
.if ${SUBSYS} != devel
|
.if ${SUBSYS} != devel
|
||||||
@${ECHO_MSG}
|
@${ECHO_MSG}
|
||||||
|
|
|
@ -44,7 +44,10 @@ safe_run () # rc command [args...]
|
||||||
shift
|
shift
|
||||||
|
|
||||||
if [ "${_rc}" -eq 0 ]; then
|
if [ "${_rc}" -eq 0 ]; then
|
||||||
|
debug safe_run: "$@"
|
||||||
"$@" || _rc=1
|
"$@" || _rc=1
|
||||||
|
else
|
||||||
|
warn safe_run: "$@"
|
||||||
fi
|
fi
|
||||||
return ${_rc}
|
return ${_rc}
|
||||||
}
|
}
|
||||||
|
@ -53,11 +56,30 @@ precious () # entry...
|
||||||
{
|
{
|
||||||
local _entry _rc
|
local _entry _rc
|
||||||
|
|
||||||
_rc=1
|
_rc=0
|
||||||
for _entry; do
|
for _entry; do
|
||||||
# do nothing if /var/run or /var/db
|
# do nothing if /var/run or /var/db
|
||||||
echo ${_entry} | egrep -q '^//*(var//*(run|db)/*)?$' && _rc=0
|
echo ${_entry} | egrep -q '^//*(var//*(run|db)/*)?$' || _rc=1
|
||||||
done
|
done
|
||||||
|
debug precious: "$@" rc=${_rc}
|
||||||
|
return ${_rc}
|
||||||
|
}
|
||||||
|
|
||||||
|
lsmod () # user group file...
|
||||||
|
{
|
||||||
|
local _entry _user _group _rc
|
||||||
|
|
||||||
|
_user=$1 _group=$2
|
||||||
|
shift 2
|
||||||
|
|
||||||
|
_rc=0
|
||||||
|
for _entry; do
|
||||||
|
ls -ld ${_entry} 2> /dev/null |
|
||||||
|
awk -v u=${_user} -v g=${_group} '{
|
||||||
|
exit ((u && $3 != u) || (g && $4 != g))
|
||||||
|
}' || _rc=1
|
||||||
|
done
|
||||||
|
debug lsmod: "$@" rc=${_rc}
|
||||||
return ${_rc}
|
return ${_rc}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,12 +94,12 @@ safe_chmog () # entry...
|
||||||
if [ -n "${_user}" -o -n "${_group}" ]; then
|
if [ -n "${_user}" -o -n "${_group}" ]; then
|
||||||
_usergroup=${_user}${_group:+:${_group}}
|
_usergroup=${_user}${_group:+:${_group}}
|
||||||
for _entry; do
|
for _entry; do
|
||||||
|
if [ -d ${_entry} ] && mounted ${_entry}; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
if [ -e ${_entry} ] &&
|
if [ -e ${_entry} ] &&
|
||||||
! precious ${_entry} &&
|
! precious ${_entry} &&
|
||||||
! ls -ld ${_entry} 2> /dev/null |
|
! lsmod ${_user} ${_group} ${_entry} &&
|
||||||
awk -v u=${_user} -v g=${_group} '{
|
|
||||||
exit ((u && $3 != u) || (g && $4 != g))
|
|
||||||
}' &&
|
|
||||||
! safe_run ${_rc} chown ${_usergroup} ${_entry}; then
|
! safe_run ${_rc} chown ${_usergroup} ${_entry}; then
|
||||||
warn "unable to change permissions of ${_entry}"
|
warn "unable to change permissions of ${_entry}"
|
||||||
_rc=1
|
_rc=1
|
||||||
|
@ -111,7 +133,8 @@ safe_rmdir () # dir...
|
||||||
_rc=0
|
_rc=0
|
||||||
for _dir; do
|
for _dir; do
|
||||||
if [ -d ${_dir} ] &&
|
if [ -d ${_dir} ] &&
|
||||||
! precious ${_dir}; then
|
! precious ${_dir} &&
|
||||||
|
! mounted ${_dir}; then
|
||||||
if safe_run ${_rc} rmdir ${_dir}; then
|
if safe_run ${_rc} rmdir ${_dir}; then
|
||||||
safe_run ${_rc} safe_rmdir ${_dir%/*} || _rc=1
|
safe_run ${_rc} safe_rmdir ${_dir%/*} || _rc=1
|
||||||
else
|
else
|
||||||
|
@ -179,6 +202,7 @@ mounted () # dir...
|
||||||
BEGIN { n = ARGC; ARGC = 2 }
|
BEGIN { n = ARGC; ARGC = 2 }
|
||||||
{ for (i = 2; i != n; i++) if ($3 == ARGV[i]) exit 1 }
|
{ for (i = 2; i != n; i++) if ($3 == ARGV[i]) exit 1 }
|
||||||
' - "$@" || _rc=0
|
' - "$@" || _rc=0
|
||||||
|
debug mounted: "$@" rc=${_rc}
|
||||||
return ${_rc}
|
return ${_rc}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,7 +274,7 @@ check_chuser ()
|
||||||
{
|
{
|
||||||
if checkyesno paranoia; then
|
if checkyesno paranoia; then
|
||||||
if checkyesno dhcpd_chuser_enable &&
|
if checkyesno dhcpd_chuser_enable &&
|
||||||
[ -z ${dhcpd_withuser} -a -z ${dhcpd_withgroup} ]; then
|
[ -z "${dhcpd_withuser}" -a -z "${dhcpd_withgroup}" ]; then
|
||||||
err 1 "one of dhcpd_withuser and dhcpd_withgroup" \
|
err 1 "one of dhcpd_withuser and dhcpd_withgroup" \
|
||||||
"must be set if dhcpd_chuser_enable is enabled"
|
"must be set if dhcpd_chuser_enable is enabled"
|
||||||
fi
|
fi
|
||||||
|
@ -303,8 +327,8 @@ check_chroot ()
|
||||||
rcvar_chuser ()
|
rcvar_chuser ()
|
||||||
{
|
{
|
||||||
if checkyesno paranoia && checkyesno dhcpd_chuser_enable; then
|
if checkyesno paranoia && checkyesno dhcpd_chuser_enable; then
|
||||||
dhcpd_piddir=${_dhcpd_piddir}/${name}
|
dhcpd_piddir=${__dhcpd_piddir}/${name}
|
||||||
dhcpd_leasesdir=${_dhcpd_leasesdir}/${name}
|
dhcpd_leasesdir=${__dhcpd_leasesdir}/${name}
|
||||||
else
|
else
|
||||||
dhcpd_withuser= dhcpd_withgroup=
|
dhcpd_withuser= dhcpd_withgroup=
|
||||||
fi
|
fi
|
||||||
|
@ -328,8 +352,8 @@ rcvar_chroot ()
|
||||||
rcvar_pidnleases ()
|
rcvar_pidnleases ()
|
||||||
{
|
{
|
||||||
if ! checkyesno dhcpd_chuser_enable; then
|
if ! checkyesno dhcpd_chuser_enable; then
|
||||||
dhcpd_piddir=${_dhcpd_piddir}
|
dhcpd_piddir=${__dhcpd_piddir}
|
||||||
dhcpd_leasesdir=${_dhcpd_leasesdir}
|
dhcpd_leasesdir=${__dhcpd_leasesdir}
|
||||||
fi
|
fi
|
||||||
dhcpd_pidfile=${dhcpd_piddir}/${name}.pid
|
dhcpd_pidfile=${dhcpd_piddir}/${name}.pid
|
||||||
dhcpd_leasesfile=${dhcpd_leasesdir}/${name}.leases
|
dhcpd_leasesfile=${dhcpd_leasesdir}/${name}.leases
|
||||||
|
@ -372,8 +396,8 @@ setup_compat ()
|
||||||
|
|
||||||
setup_umask ()
|
setup_umask ()
|
||||||
{
|
{
|
||||||
if [ -n "${dhcpd_umask}" ]; then
|
if [ -n "${dhcpd_withumask}" ]; then
|
||||||
umask ${dhcpd_umask}
|
umask ${dhcpd_withumask}
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,8 +459,8 @@ cleanup_chroot ()
|
||||||
|
|
||||||
dhcpd_stop ()
|
dhcpd_stop ()
|
||||||
{
|
{
|
||||||
if $0 status; then
|
if sh $0 forcestatus; then
|
||||||
$0 stop
|
sh $0 forcestop
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -515,21 +539,71 @@ dhcpd_install ()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_dhcpd_uninstall () # user group root
|
||||||
|
{
|
||||||
|
local _user _group _root
|
||||||
|
|
||||||
|
_user=$1 _group=$2 _root=$3
|
||||||
|
|
||||||
|
if [ -n "${_user}" -o -n "${_group}" ]; then
|
||||||
|
dhcpd_chuser_enable=YES
|
||||||
|
dhcpd_withuser=${_user}
|
||||||
|
dhcpd_withgroup=${_group}
|
||||||
|
else
|
||||||
|
dhcpd_chuser_enable=NO
|
||||||
|
fi
|
||||||
|
if [ -n "${_root}" ]; then
|
||||||
|
dhcpd_chroot_enable=YES
|
||||||
|
dhcpd_rootdir=${_root}
|
||||||
|
else
|
||||||
|
dhcpd_chroot_enable=NO
|
||||||
|
fi
|
||||||
|
dhcpd_check
|
||||||
|
dhcpd_rcvar
|
||||||
|
dhcpd_uninstall
|
||||||
|
}
|
||||||
|
|
||||||
dhcpd_uninstall ()
|
dhcpd_uninstall ()
|
||||||
{
|
{
|
||||||
dhcpd_stop
|
if checkyesno __dhcpd_uninstall; then
|
||||||
remove_pid
|
dhcpd_stop
|
||||||
remove_leases
|
remove_pid
|
||||||
remove_chuser
|
remove_leases
|
||||||
remove_chroot
|
remove_chuser
|
||||||
|
remove_chroot
|
||||||
|
else
|
||||||
|
local _user _group _root
|
||||||
|
|
||||||
|
__dhcpd_uninstall=YES
|
||||||
|
|
||||||
|
_user=${dhcpd_withuser}
|
||||||
|
_group=${dhcpd_withgroup}
|
||||||
|
_root=${dhcpd_rootdir}
|
||||||
|
|
||||||
|
_dhcpd_uninstall "" "" ""
|
||||||
|
|
||||||
|
if checkyesno paranoia; then
|
||||||
|
if [ -n "${_user}" -o -n "${_group}" ]; then
|
||||||
|
_dhcpd_uninstall "${_user}" "${_group}" ""
|
||||||
|
fi
|
||||||
|
if [ -n "${_root}" ]; then
|
||||||
|
_dhcpd_uninstall "" "" "${_root}"
|
||||||
|
fi
|
||||||
|
if [ -n "${_user}" -o -n "${_group}" ] &&
|
||||||
|
[ -n "${_root}" ]; then
|
||||||
|
_dhcpd_uninstall "${_user}" "${_group}" "${_root}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
rcvar=$(set_rcvar)
|
rcvar=$(set_rcvar)
|
||||||
load_rc_config ${name}
|
load_rc_config ${name}
|
||||||
|
|
||||||
_dhcpd_piddir=/var/run # pid file directory
|
__dhcpd_uninstall="NO" # internal use only
|
||||||
_dhcpd_leasesdir=/var/db # leases file directory
|
__dhcpd_piddir=/var/run # pid file directory
|
||||||
#_dhcpd_rootdir=/var/db/${name} # root directory
|
__dhcpd_leasesdir=/var/db # leases file directory
|
||||||
|
#__dhcpd_rootdir=/var/db/${name} # root directory
|
||||||
|
|
||||||
dhcpd_check
|
dhcpd_check
|
||||||
dhcpd_rcvar
|
dhcpd_rcvar
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
PORTNAME= dhcp
|
PORTNAME= dhcp
|
||||||
PORTVERSION= 3.0.1.r14
|
PORTVERSION= 3.0.1.r14
|
||||||
PORTREVISION= 1
|
PORTREVISION= 2
|
||||||
CATEGORIES= net
|
CATEGORIES= net
|
||||||
MASTER_SITES= ${MASTER_SITE_ISC}
|
MASTER_SITES= ${MASTER_SITE_ISC}
|
||||||
MASTER_SITE_SUBDIR= dhcp dhcp/dhcp-3.0-history
|
MASTER_SITE_SUBDIR= dhcp dhcp/dhcp-3.0-history
|
||||||
|
@ -42,6 +42,7 @@ HAS_CONFIGURE= yes
|
||||||
CONFIGURE_ARGS= --subsys ${SUBSYS}
|
CONFIGURE_ARGS= --subsys ${SUBSYS}
|
||||||
ALL_TARGET= all.${SUBSYS}
|
ALL_TARGET= all.${SUBSYS}
|
||||||
INSTALL_TARGET= install.${SUBSYS}
|
INSTALL_TARGET= install.${SUBSYS}
|
||||||
|
SCRIPTS_ENV+= PKG_PREFIX=${PREFIX}
|
||||||
|
|
||||||
.if ${SUBSYS} == client
|
.if ${SUBSYS} == client
|
||||||
MAN5= dhclient.conf.5 dhclient.leases.5
|
MAN5= dhclient.conf.5 dhclient.leases.5
|
||||||
|
@ -209,10 +210,14 @@ patch-pkgmessage:
|
||||||
# Post-install
|
# Post-install
|
||||||
#
|
#
|
||||||
|
|
||||||
post-install: strip-binary-files install-startup-files \
|
POST-INSTALL= parallel-post-install configure-package display-message
|
||||||
install-doc-files install-sample-files \
|
.ORDER: ${POST-INSTALL}
|
||||||
create-conf-files create-data-files \
|
post-install: ${POST-INSTALL}
|
||||||
display-message
|
|
||||||
|
parallel-post-install: \
|
||||||
|
strip-binary-files install-startup-files \
|
||||||
|
install-doc-files install-sample-files \
|
||||||
|
create-conf-files create-data-files
|
||||||
|
|
||||||
strip-binary-files:
|
strip-binary-files:
|
||||||
.for f in ${BIN_FILES}
|
.for f in ${BIN_FILES}
|
||||||
|
@ -256,6 +261,9 @@ create-data-files:
|
||||||
.endif
|
.endif
|
||||||
.endfor
|
.endfor
|
||||||
|
|
||||||
|
configure-package:
|
||||||
|
@${SETENV} ${SCRIPTS_ENV} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
|
||||||
|
|
||||||
display-message:
|
display-message:
|
||||||
.if ${SUBSYS} != devel
|
.if ${SUBSYS} != devel
|
||||||
@${ECHO_MSG}
|
@${ECHO_MSG}
|
||||||
|
|
|
@ -44,7 +44,10 @@ safe_run () # rc command [args...]
|
||||||
shift
|
shift
|
||||||
|
|
||||||
if [ "${_rc}" -eq 0 ]; then
|
if [ "${_rc}" -eq 0 ]; then
|
||||||
|
debug safe_run: "$@"
|
||||||
"$@" || _rc=1
|
"$@" || _rc=1
|
||||||
|
else
|
||||||
|
warn safe_run: "$@"
|
||||||
fi
|
fi
|
||||||
return ${_rc}
|
return ${_rc}
|
||||||
}
|
}
|
||||||
|
@ -53,11 +56,30 @@ precious () # entry...
|
||||||
{
|
{
|
||||||
local _entry _rc
|
local _entry _rc
|
||||||
|
|
||||||
_rc=1
|
_rc=0
|
||||||
for _entry; do
|
for _entry; do
|
||||||
# do nothing if /var/run or /var/db
|
# do nothing if /var/run or /var/db
|
||||||
echo ${_entry} | egrep -q '^//*(var//*(run|db)/*)?$' && _rc=0
|
echo ${_entry} | egrep -q '^//*(var//*(run|db)/*)?$' || _rc=1
|
||||||
done
|
done
|
||||||
|
debug precious: "$@" rc=${_rc}
|
||||||
|
return ${_rc}
|
||||||
|
}
|
||||||
|
|
||||||
|
lsmod () # user group file...
|
||||||
|
{
|
||||||
|
local _entry _user _group _rc
|
||||||
|
|
||||||
|
_user=$1 _group=$2
|
||||||
|
shift 2
|
||||||
|
|
||||||
|
_rc=0
|
||||||
|
for _entry; do
|
||||||
|
ls -ld ${_entry} 2> /dev/null |
|
||||||
|
awk -v u=${_user} -v g=${_group} '{
|
||||||
|
exit ((u && $3 != u) || (g && $4 != g))
|
||||||
|
}' || _rc=1
|
||||||
|
done
|
||||||
|
debug lsmod: "$@" rc=${_rc}
|
||||||
return ${_rc}
|
return ${_rc}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,12 +94,12 @@ safe_chmog () # entry...
|
||||||
if [ -n "${_user}" -o -n "${_group}" ]; then
|
if [ -n "${_user}" -o -n "${_group}" ]; then
|
||||||
_usergroup=${_user}${_group:+:${_group}}
|
_usergroup=${_user}${_group:+:${_group}}
|
||||||
for _entry; do
|
for _entry; do
|
||||||
|
if [ -d ${_entry} ] && mounted ${_entry}; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
if [ -e ${_entry} ] &&
|
if [ -e ${_entry} ] &&
|
||||||
! precious ${_entry} &&
|
! precious ${_entry} &&
|
||||||
! ls -ld ${_entry} 2> /dev/null |
|
! lsmod ${_user} ${_group} ${_entry} &&
|
||||||
awk -v u=${_user} -v g=${_group} '{
|
|
||||||
exit ((u && $3 != u) || (g && $4 != g))
|
|
||||||
}' &&
|
|
||||||
! safe_run ${_rc} chown ${_usergroup} ${_entry}; then
|
! safe_run ${_rc} chown ${_usergroup} ${_entry}; then
|
||||||
warn "unable to change permissions of ${_entry}"
|
warn "unable to change permissions of ${_entry}"
|
||||||
_rc=1
|
_rc=1
|
||||||
|
@ -111,7 +133,8 @@ safe_rmdir () # dir...
|
||||||
_rc=0
|
_rc=0
|
||||||
for _dir; do
|
for _dir; do
|
||||||
if [ -d ${_dir} ] &&
|
if [ -d ${_dir} ] &&
|
||||||
! precious ${_dir}; then
|
! precious ${_dir} &&
|
||||||
|
! mounted ${_dir}; then
|
||||||
if safe_run ${_rc} rmdir ${_dir}; then
|
if safe_run ${_rc} rmdir ${_dir}; then
|
||||||
safe_run ${_rc} safe_rmdir ${_dir%/*} || _rc=1
|
safe_run ${_rc} safe_rmdir ${_dir%/*} || _rc=1
|
||||||
else
|
else
|
||||||
|
@ -179,6 +202,7 @@ mounted () # dir...
|
||||||
BEGIN { n = ARGC; ARGC = 2 }
|
BEGIN { n = ARGC; ARGC = 2 }
|
||||||
{ for (i = 2; i != n; i++) if ($3 == ARGV[i]) exit 1 }
|
{ for (i = 2; i != n; i++) if ($3 == ARGV[i]) exit 1 }
|
||||||
' - "$@" || _rc=0
|
' - "$@" || _rc=0
|
||||||
|
debug mounted: "$@" rc=${_rc}
|
||||||
return ${_rc}
|
return ${_rc}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,7 +274,7 @@ check_chuser ()
|
||||||
{
|
{
|
||||||
if checkyesno paranoia; then
|
if checkyesno paranoia; then
|
||||||
if checkyesno dhcpd_chuser_enable &&
|
if checkyesno dhcpd_chuser_enable &&
|
||||||
[ -z ${dhcpd_withuser} -a -z ${dhcpd_withgroup} ]; then
|
[ -z "${dhcpd_withuser}" -a -z "${dhcpd_withgroup}" ]; then
|
||||||
err 1 "one of dhcpd_withuser and dhcpd_withgroup" \
|
err 1 "one of dhcpd_withuser and dhcpd_withgroup" \
|
||||||
"must be set if dhcpd_chuser_enable is enabled"
|
"must be set if dhcpd_chuser_enable is enabled"
|
||||||
fi
|
fi
|
||||||
|
@ -303,8 +327,8 @@ check_chroot ()
|
||||||
rcvar_chuser ()
|
rcvar_chuser ()
|
||||||
{
|
{
|
||||||
if checkyesno paranoia && checkyesno dhcpd_chuser_enable; then
|
if checkyesno paranoia && checkyesno dhcpd_chuser_enable; then
|
||||||
dhcpd_piddir=${_dhcpd_piddir}/${name}
|
dhcpd_piddir=${__dhcpd_piddir}/${name}
|
||||||
dhcpd_leasesdir=${_dhcpd_leasesdir}/${name}
|
dhcpd_leasesdir=${__dhcpd_leasesdir}/${name}
|
||||||
else
|
else
|
||||||
dhcpd_withuser= dhcpd_withgroup=
|
dhcpd_withuser= dhcpd_withgroup=
|
||||||
fi
|
fi
|
||||||
|
@ -328,8 +352,8 @@ rcvar_chroot ()
|
||||||
rcvar_pidnleases ()
|
rcvar_pidnleases ()
|
||||||
{
|
{
|
||||||
if ! checkyesno dhcpd_chuser_enable; then
|
if ! checkyesno dhcpd_chuser_enable; then
|
||||||
dhcpd_piddir=${_dhcpd_piddir}
|
dhcpd_piddir=${__dhcpd_piddir}
|
||||||
dhcpd_leasesdir=${_dhcpd_leasesdir}
|
dhcpd_leasesdir=${__dhcpd_leasesdir}
|
||||||
fi
|
fi
|
||||||
dhcpd_pidfile=${dhcpd_piddir}/${name}.pid
|
dhcpd_pidfile=${dhcpd_piddir}/${name}.pid
|
||||||
dhcpd_leasesfile=${dhcpd_leasesdir}/${name}.leases
|
dhcpd_leasesfile=${dhcpd_leasesdir}/${name}.leases
|
||||||
|
@ -372,8 +396,8 @@ setup_compat ()
|
||||||
|
|
||||||
setup_umask ()
|
setup_umask ()
|
||||||
{
|
{
|
||||||
if [ -n "${dhcpd_umask}" ]; then
|
if [ -n "${dhcpd_withumask}" ]; then
|
||||||
umask ${dhcpd_umask}
|
umask ${dhcpd_withumask}
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,8 +459,8 @@ cleanup_chroot ()
|
||||||
|
|
||||||
dhcpd_stop ()
|
dhcpd_stop ()
|
||||||
{
|
{
|
||||||
if $0 status; then
|
if sh $0 forcestatus; then
|
||||||
$0 stop
|
sh $0 forcestop
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -515,21 +539,71 @@ dhcpd_install ()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_dhcpd_uninstall () # user group root
|
||||||
|
{
|
||||||
|
local _user _group _root
|
||||||
|
|
||||||
|
_user=$1 _group=$2 _root=$3
|
||||||
|
|
||||||
|
if [ -n "${_user}" -o -n "${_group}" ]; then
|
||||||
|
dhcpd_chuser_enable=YES
|
||||||
|
dhcpd_withuser=${_user}
|
||||||
|
dhcpd_withgroup=${_group}
|
||||||
|
else
|
||||||
|
dhcpd_chuser_enable=NO
|
||||||
|
fi
|
||||||
|
if [ -n "${_root}" ]; then
|
||||||
|
dhcpd_chroot_enable=YES
|
||||||
|
dhcpd_rootdir=${_root}
|
||||||
|
else
|
||||||
|
dhcpd_chroot_enable=NO
|
||||||
|
fi
|
||||||
|
dhcpd_check
|
||||||
|
dhcpd_rcvar
|
||||||
|
dhcpd_uninstall
|
||||||
|
}
|
||||||
|
|
||||||
dhcpd_uninstall ()
|
dhcpd_uninstall ()
|
||||||
{
|
{
|
||||||
dhcpd_stop
|
if checkyesno __dhcpd_uninstall; then
|
||||||
remove_pid
|
dhcpd_stop
|
||||||
remove_leases
|
remove_pid
|
||||||
remove_chuser
|
remove_leases
|
||||||
remove_chroot
|
remove_chuser
|
||||||
|
remove_chroot
|
||||||
|
else
|
||||||
|
local _user _group _root
|
||||||
|
|
||||||
|
__dhcpd_uninstall=YES
|
||||||
|
|
||||||
|
_user=${dhcpd_withuser}
|
||||||
|
_group=${dhcpd_withgroup}
|
||||||
|
_root=${dhcpd_rootdir}
|
||||||
|
|
||||||
|
_dhcpd_uninstall "" "" ""
|
||||||
|
|
||||||
|
if checkyesno paranoia; then
|
||||||
|
if [ -n "${_user}" -o -n "${_group}" ]; then
|
||||||
|
_dhcpd_uninstall "${_user}" "${_group}" ""
|
||||||
|
fi
|
||||||
|
if [ -n "${_root}" ]; then
|
||||||
|
_dhcpd_uninstall "" "" "${_root}"
|
||||||
|
fi
|
||||||
|
if [ -n "${_user}" -o -n "${_group}" ] &&
|
||||||
|
[ -n "${_root}" ]; then
|
||||||
|
_dhcpd_uninstall "${_user}" "${_group}" "${_root}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
rcvar=$(set_rcvar)
|
rcvar=$(set_rcvar)
|
||||||
load_rc_config ${name}
|
load_rc_config ${name}
|
||||||
|
|
||||||
_dhcpd_piddir=/var/run # pid file directory
|
__dhcpd_uninstall="NO" # internal use only
|
||||||
_dhcpd_leasesdir=/var/db # leases file directory
|
__dhcpd_piddir=/var/run # pid file directory
|
||||||
#_dhcpd_rootdir=/var/db/${name} # root directory
|
__dhcpd_leasesdir=/var/db # leases file directory
|
||||||
|
#__dhcpd_rootdir=/var/db/${name} # root directory
|
||||||
|
|
||||||
dhcpd_check
|
dhcpd_check
|
||||||
dhcpd_rcvar
|
dhcpd_rcvar
|
||||||
|
|
Loading…
Add table
Reference in a new issue