usermgmt revision 249746
1238438Sdteske#!/bin/sh 2238438Sdteske#- 3238438Sdteske# Copyright (c) 2012 Ron McDowell 4249746Sdteske# Copyright (c) 2012-2013 Devin Teske 5238438Sdteske# All rights reserved. 6238438Sdteske# 7238438Sdteske# Redistribution and use in source and binary forms, with or without 8238438Sdteske# modification, are permitted provided that the following conditions 9238438Sdteske# are met: 10238438Sdteske# 1. Redistributions of source code must retain the above copyright 11238438Sdteske# notice, this list of conditions and the following disclaimer. 12238438Sdteske# 2. Redistributions in binary form must reproduce the above copyright 13238438Sdteske# notice, this list of conditions and the following disclaimer in the 14238438Sdteske# documentation and/or other materials provided with the distribution. 15238438Sdteske# 16238438Sdteske# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17238438Sdteske# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18238438Sdteske# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19238438Sdteske# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20238438Sdteske# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21238438Sdteske# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22238438Sdteske# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23238438Sdteske# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24238438Sdteske# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25238438Sdteske# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26238438Sdteske# SUCH DAMAGE. 27238438Sdteske# 28238438Sdteske# $FreeBSD: head/usr.sbin/bsdconfig/usermgmt/usermgmt 249746 2013-04-22 05:02:34Z dteske $ 29238438Sdteske# 30238438Sdteske############################################################ INCLUDES 31238438Sdteske 32240684SdteskeBSDCFG_SHARE="/usr/share/bsdconfig" 33240684Sdteske. $BSDCFG_SHARE/common.subr || exit 1 34244675Sdteskef_dprintf "%s: loading includes..." "$0" 35240684Sdteskef_include $BSDCFG_SHARE/dialog.subr 36240684Sdteskef_include $BSDCFG_SHARE/mustberoot.subr 37238438Sdteske 38240684SdteskeBSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="070.usermgmt" 39238438Sdteskef_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr 40238438Sdteske 41242123SdteskeUSERMGMT_HELPFILE=$BSDCFG_LIBE/$APP_DIR/include/usermgmt.hlp 42242123Sdteske 43243112Sdteskeipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ) 44238438Sdteske[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm" 45238438Sdteske 46238438Sdteske############################################################ FUNCTIONS 47238438Sdteske 48238438Sdteske# dialog_menu_main 49238438Sdteske# 50238438Sdteske# Display the dialog(1)-based application main menu. 51238438Sdteske# 52238438Sdteskedialog_menu_main() 53238438Sdteske{ 54238438Sdteske local menu_list size 55238438Sdteske local hline="$hline_arrows_tab_enter" 56238438Sdteske 57238438Sdteske menu_list=" 58238438Sdteske 'X' '$msg_exit' 59238438Sdteske '1' '$msg_add_login' 60238438Sdteske '2' '$msg_edit_login' 61238438Sdteske '3' '$msg_delete_login' 62238438Sdteske '-' '-' 63238438Sdteske '4' '$msg_add_group' 64238438Sdteske '5' '$msg_edit_group' 65238438Sdteske '6' '$msg_delete_group' 66238438Sdteske " # END-QUOTE 67238438Sdteske 68238438Sdteske size=$( eval f_dialog_menu_size \ 69238438Sdteske \"\$DIALOG_TITLE\" \ 70238438Sdteske \"\$DIALOG_BACKTITLE\" \ 71238438Sdteske \"\" \ 72238438Sdteske \"\$hline\" \ 73238438Sdteske $menu_list ) 74238438Sdteske 75242123Sdteske if [ "$USE_XDIALOG" ]; then 76242123Sdteske # need to bump the width for the buttons 77242123Sdteske local height menu_height 78242123Sdteske height="${size%%[$IFS]*}" # first word 79242123Sdteske menu_height="${size##*[$IFS]}" # last word 80242123Sdteske size="$height 40 $menu_height" 81242123Sdteske fi 82242123Sdteske 83240768Sdteske local dialog_menu 84240768Sdteske dialog_menu=$( eval $DIALOG \ 85238438Sdteske --clear --title \"\$DIALOG_TITLE\" \ 86238438Sdteske --backtitle \"\$DIALOG_BACKTITLE\" \ 87238438Sdteske --hline \"\$hline\" \ 88238438Sdteske --ok-label \"\$msg_ok\" \ 89238438Sdteske --cancel-label \"\$msg_cancel\" \ 90242123Sdteske --help-button \ 91245401Sdteske --help-label \"\$msg_help\" \ 92242123Sdteske ${USE_XDIALOG:+--help \"\"} \ 93238438Sdteske --menu \"\" $size $menu_list \ 94240768Sdteske 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD 95240768Sdteske ) 96240768Sdteske local retval=$? 97240768Sdteske setvar DIALOG_MENU_$$ "$dialog_menu" 98240768Sdteske return $retval 99238438Sdteske} 100238438Sdteske 101238438Sdteske############################################################ MAIN 102238438Sdteske 103238438Sdteske# Incorporate rc-file if it exists 104238438Sdteske[ -f "$HOME/.bsdconfigrc" ] && f_include "$HOME/.bsdconfigrc" 105238438Sdteske 106238438Sdteske# 107238438Sdteske# Process command-line arguments 108238438Sdteske# 109249746Sdteskewhile getopts dD:hSX flag; do 110238438Sdteske case "$flag" in 111238438Sdteske h|\?) f_usage $BSDCFG_LIBE/$APP_DIR/USAGE "PROGRAM_NAME" "$pgm";; 112238438Sdteske esac 113238438Sdteskedone 114238438Sdteskeshift $(( $OPTIND - 1 )) 115238438Sdteske 116238438Sdteske# 117238438Sdteske# Initialize 118238438Sdteske# 119238438Sdteskef_dialog_title "$msg_login_management" 120238438Sdteskef_dialog_backtitle "${ipgm:+bsdconfig }$pgm" 121238438Sdteskef_mustberoot_init 122238438Sdteske 123238438Sdteske# 124238438Sdteske# Launch application main menu 125238438Sdteske# 126238438Sdteskewhile :; do 127238438Sdteske dialog_menu_main 128238438Sdteske retval=$? 129238438Sdteske mtag=$( f_dialog_menutag ) 130244550Sdteske f_dprintf "retval=%u mtag=[%s]" $retval "$mtag" 131238438Sdteske 132242123Sdteske if [ $retval -eq 2 ]; then 133242123Sdteske # The Help button was pressed 134242123Sdteske f_show_help "$USERMGMT_HELPFILE" 135242123Sdteske continue 136242123Sdteske elif [ $retval -ne $SUCCESS ]; then 137242123Sdteske f_die 138242123Sdteske fi 139238438Sdteske 140238438Sdteske case "$mtag" in 141238438Sdteske X) # Exit 142238438Sdteske exit 0 143238438Sdteske ;; 144238438Sdteske 145238438Sdteske 1) # Add User 146238438Sdteske $BSDCFG_LIBE/$APP_DIR/useradd ${USE_XDIALOG:+-X} 147238438Sdteske ;; 148238438Sdteske 149238438Sdteske 2) # Edit/View User 150238438Sdteske $BSDCFG_LIBE/$APP_DIR/useredit ${USE_XDIALOG:+-X} 151238438Sdteske ;; 152238438Sdteske 153238438Sdteske 3) # Delete User 154238438Sdteske $BSDCFG_LIBE/$APP_DIR/userdel ${USE_XDIALOG:+-X} 155238438Sdteske ;; 156238438Sdteske 157238438Sdteske 4) # Add Group 158238438Sdteske $BSDCFG_LIBE/$APP_DIR/groupadd ${USE_XDIALOG:+-X} 159238438Sdteske ;; 160238438Sdteske 161238438Sdteske 5) # Edit/View Group 162238438Sdteske $BSDCFG_LIBE/$APP_DIR/groupedit ${USE_XDIALOG:+-X} 163238438Sdteske ;; 164238438Sdteske 165238438Sdteske 6) # Delete Group 166238438Sdteske $BSDCFG_LIBE/$APP_DIR/groupdel ${USE_XDIALOG:+-X} 167238438Sdteske ;; 168238438Sdteske 169238438Sdteske esac 170238438Sdteskedone 171238438Sdteske 172238438Sdteske################################################################################ 173238438Sdteske# END 174238438Sdteske################################################################################ 175