3 # Copyright (c) 2012 Ron McDowell
4 # Copyright (c) 2012-2013 Devin Teske
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
10 # 1. Redistributions of source code must retain the above copyright
11 # notice, this list of conditions and the following disclaimer.
12 # 2. Redistributions in binary form must reproduce the above copyright
13 # notice, this list of conditions and the following disclaimer in the
14 # documentation and/or other materials provided with the distribution.
16 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 ############################################################ INCLUDES
32 BSDCFG_SHARE="/usr/share/bsdconfig"
33 . $BSDCFG_SHARE/common.subr || exit 1
34 f_dprintf "%s: loading includes..." "$0"
35 f_include $BSDCFG_SHARE/dialog.subr
36 f_include $BSDCFG_SHARE/mustberoot.subr
38 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="070.usermgmt"
39 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
41 USERMGMT_HELPFILE=$BSDCFG_LIBE/$APP_DIR/include/usermgmt.hlp
43 f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
46 ############################################################ FUNCTIONS
50 # Display the dialog(1)-based application main menu.
59 '3' '$msg_delete_login'
63 '6' '$msg_delete_group'
65 local defaultitem= # Calculated below
66 local hline="$hline_arrows_tab_enter"
68 local height width rows
69 eval f_dialog_menu_size height width rows \
71 \"\$DIALOG_BACKTITLE\" \
76 # When using Xdialog(1) we need to bump the width for the buttons
77 [ "$USE_XDIALOG" ] && width=40
79 # Obtain default-item from previously stored selection
80 f_dialog_default_fetch defaultitem
83 menu_choice=$( eval $DIALOG \
84 --title \"\$DIALOG_TITLE\" \
85 --backtitle \"\$DIALOG_BACKTITLE\" \
87 --ok-label \"\$msg_ok\" \
88 --cancel-label \"\$msg_cancel\" \
90 --help-label \"\$msg_help\" \
91 ${USE_XDIALOG:+--help \"\"} \
92 --default-item \"\$defaultitem\" \
94 $height $width $rows \
96 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
99 f_dialog_data_sanitize menu_choice
100 f_dialog_menutag_store "$menu_choice"
102 # Only update default-item on success
103 [ $retval -eq $DIALOG_OK ] && f_dialog_default_store "$menu_choice"
108 ############################################################ MAIN
110 # Incorporate rc-file if it exists
111 [ -f "$HOME/.bsdconfigrc" ] && f_include "$HOME/.bsdconfigrc"
114 # Process command-line arguments
116 while getopts h$GETOPTS_STDARGS flag; do
118 h|\?) f_usage $BSDCFG_LIBE/$APP_DIR/USAGE "PROGRAM_NAME" "$pgm" ;;
121 shift $(( $OPTIND - 1 ))
126 f_dialog_title "$msg_login_management"
127 f_dialog_backtitle "${ipgm:+bsdconfig }$pgm"
131 # Launch application main menu
136 f_dialog_menutag_fetch mtag
137 f_dprintf "retval=%u mtag=[%s]" $retval "$mtag"
139 if [ $retval -eq $DIALOG_HELP ]; then
140 f_show_help "$USERMGMT_HELPFILE"
142 elif [ $retval -ne $DIALOG_OK ]; then
149 1) command=useradd ;; # Add User
150 2) command=useredit ;; # Edit/View User
151 3) command=userdel ;; # Delete User
152 4) command=groupadd ;; # Add Group
153 5) command=groupedit ;; # Edit/View Group
154 6) command=groupdel ;; # Delete Group
157 if [ "$command" ]; then
158 $BSDCFG_LIBE/$APP_DIR/$command ${USE_XDIALOG:+-X}
160 f_die 1 "$msg_unknown_user_management_menu_selection"
166 ################################################################################
168 ################################################################################