Date: Thu, 16 Oct 2008 10:31:10 +0000 (UTC) From: Alexander Leidinger <netchild@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r183937 - user/netchild/misc/src/usr.sbin/adduser Message-ID: <200810161031.m9GAVAgs057954@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: netchild Date: Thu Oct 16 10:31:10 2008 New Revision: 183937 URL: http://svn.freebsd.org/changeset/base/183937 Log: Implement plugin interface for adduser and rmuser. Currently the plugins get called with 'add' or 'rm' and the username. Modified: user/netchild/misc/src/usr.sbin/adduser/adduser.sh user/netchild/misc/src/usr.sbin/adduser/rmuser.sh Modified: user/netchild/misc/src/usr.sbin/adduser/adduser.sh ============================================================================== --- user/netchild/misc/src/usr.sbin/adduser/adduser.sh Thu Oct 16 10:28:00 2008 (r183936) +++ user/netchild/misc/src/usr.sbin/adduser/adduser.sh Thu Oct 16 10:31:10 2008 (r183937) @@ -331,6 +331,29 @@ add_user() { info "Sent welcome message to ($username)." } fi + + # If we have some plug-ins, execute them. + if [ -d ${plugindir} ]; then + slist="" + if [ -z "${script_name_sep}" ]; then + script_name_sep=" " + fi + for script in ${plugindir}/*.sh; do + slist="${slist}${script_name_sep}${script}" + done + script_save_sep="$IFS" + IFS="${script_name_sep}" + for script in ${slist}; do + if [ -x "${script}" ]; then + (set -T + trap 'exit 1' 2 + ${script} add ${username}) + elif [ -f "${script}" -o -L "${script}" ]; then + echo -n " (skipping ${script##*/}, not executable)" + fi + done + IFS="${script_save_sep}" + fi } # get_user @@ -884,6 +907,7 @@ defaultclass= defaultLgroup= defaultgroups= defaultshell="${DEFAULTSHELL}" +plugindir=/usr/local/share/adduser defaultHomePerm= # Make sure the user running this program is root. This isn't a security Modified: user/netchild/misc/src/usr.sbin/adduser/rmuser.sh ============================================================================== --- user/netchild/misc/src/usr.sbin/adduser/rmuser.sh Thu Oct 16 10:28:00 2008 (r183936) +++ user/netchild/misc/src/usr.sbin/adduser/rmuser.sh Thu Oct 16 10:31:10 2008 (r183937) @@ -218,6 +218,45 @@ show_usage() { echo " one or more user names must be given" } +reverse_list() +{ + _revlist= + for _revfile in $*; do + _revlist="$_revfile $_revlist" + done + echo $_revlist +} + +# +# plugins +# username +# execute plugins in rm mode +# +plugins() { + # If we have some plug-ins, execute them. + if [ -d ${plugindir} ]; then + slist="" + if [ -z "${script_name_sep}" ]; then + script_name_sep=" " + fi + for script in ${plugindir}/*.sh; do + slist="${slist}${script_name_sep}${script}" + done + script_save_sep="$IFS" + IFS="${script_name_sep}" + for script in `reverse_list ${slist}`; do + if [ -x "${script}" ]; then + (set -T + trap 'exit 1' 2 + ${script} rm $1) + elif [ -f "${script}" -o -L "${script}" ]; then + echo -n " (skipping ${script##*/}, not executable)" + fi + done + IFS="${script_save_sep}" + fi +} + #### END SUBROUTINE DEFENITION #### ffile= @@ -227,6 +266,7 @@ pw_rswitch= userlist= yflag= vflag= +plugindir=/usr/local/share/adduser procowner=`/usr/bin/id -u` if [ "$procowner" != "0" ]; then @@ -357,5 +397,6 @@ for _user in $userlist ; do rm_files $_user rm_mail $_user rm_user $_user + plugins $_user ! verbose && echo "." done
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200810161031.m9GAVAgs057954>