Index: usr.sbin/adduser/adduser.sh =================================================================== RCS file: /import/FreeBSD-CVS/src/usr.sbin/adduser/adduser.sh,v retrieving revision 1.32 diff -u -p -u -r1.32 adduser.sh --- usr.sbin/adduser/adduser.sh 27 Jan 2008 10:15:36 -0000 1.32 +++ usr.sbin/adduser/adduser.sh 5 Feb 2008 12:53:23 -0000 @@ -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 Index: usr.sbin/adduser/rmuser.sh =================================================================== RCS file: /import/FreeBSD-CVS/src/usr.sbin/adduser/rmuser.sh,v retrieving revision 1.10 diff -u -p -u -r1.10 rmuser.sh --- usr.sbin/adduser/rmuser.sh 19 Oct 2007 07:18:56 -0000 1.10 +++ usr.sbin/adduser/rmuser.sh 18 Nov 2007 14:30:31 -0000 @@ -217,6 +217,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= @@ -226,6 +265,7 @@ pw_rswitch= userlist= yflag= vflag= +plugindir=/usr/local/share/adduser procowner=`/usr/bin/id -u` if [ "$procowner" != "0" ]; then @@ -356,5 +396,6 @@ for _user in $userlist ; do rm_files $_user rm_mail $_user rm_user $_user + plugins $_user ! verbose && echo "." done