From owner-svn-src-user@FreeBSD.ORG Thu Oct 16 10:31:10 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DB8EE1065686; Thu, 16 Oct 2008 10:31:10 +0000 (UTC) (envelope-from netchild@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CAC518FC21; Thu, 16 Oct 2008 10:31:10 +0000 (UTC) (envelope-from netchild@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9GAVA7u057956; Thu, 16 Oct 2008 10:31:10 GMT (envelope-from netchild@svn.freebsd.org) Received: (from netchild@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9GAVAgs057954; Thu, 16 Oct 2008 10:31:10 GMT (envelope-from netchild@svn.freebsd.org) Message-Id: <200810161031.m9GAVAgs057954@svn.freebsd.org> From: Alexander Leidinger Date: Thu, 16 Oct 2008 10:31:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r183937 - user/netchild/misc/src/usr.sbin/adduser X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Oct 2008 10:31:10 -0000 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