svn commit: r183937 - user/netchild/misc/src/usr.sbin/adduser
Alexander Leidinger
netchild at FreeBSD.org
Thu Oct 16 10:31:10 UTC 2008
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
More information about the svn-src-user
mailing list