diff options
Diffstat (limited to 'usr.sbin/bsdconfig/password/share')
| -rw-r--r-- | usr.sbin/bsdconfig/password/share/Makefile | 4 | ||||
| -rw-r--r-- | usr.sbin/bsdconfig/password/share/Makefile.depend | 10 | ||||
| -rw-r--r-- | usr.sbin/bsdconfig/password/share/password.subr | 123 | 
3 files changed, 137 insertions, 0 deletions
| diff --git a/usr.sbin/bsdconfig/password/share/Makefile b/usr.sbin/bsdconfig/password/share/Makefile new file mode 100644 index 000000000000..f21b6e8f961d --- /dev/null +++ b/usr.sbin/bsdconfig/password/share/Makefile @@ -0,0 +1,4 @@ +FILESDIR=	${SHAREDIR}/bsdconfig/password +FILES=		password.subr + +.include <bsd.prog.mk> diff --git a/usr.sbin/bsdconfig/password/share/Makefile.depend b/usr.sbin/bsdconfig/password/share/Makefile.depend new file mode 100644 index 000000000000..11aba52f82cf --- /dev/null +++ b/usr.sbin/bsdconfig/password/share/Makefile.depend @@ -0,0 +1,10 @@ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + + +.include <dirdeps.mk> + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif diff --git a/usr.sbin/bsdconfig/password/share/password.subr b/usr.sbin/bsdconfig/password/share/password.subr new file mode 100644 index 000000000000..2ae3ea275f8b --- /dev/null +++ b/usr.sbin/bsdconfig/password/share/password.subr @@ -0,0 +1,123 @@ +if [ ! "$_PASSWORD_PASSWORD_SUBR" ]; then _PASSWORD_PASSWORD_SUBR=1 +# +# Copyright (c) 2012-2013 Devin Teske +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +#    notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +#    notice, this list of conditions and the following disclaimer in the +#    documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# +############################################################ INCLUDES + +BSDCFG_SHARE="/usr/share/bsdconfig" +. $BSDCFG_SHARE/common.subr || exit 1 +f_dprintf "%s: loading includes..." password/password.subr +f_include $BSDCFG_SHARE/dialog.subr + +BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="040.password" +f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr + +############################################################ FUNCTIONS + +# f_dialog_input_password +# +# Prompt the user to enter a password (twice). If the user does not cancel or +# press ESC, the $pw_password environment variable will hold the password. +# +f_dialog_input_password() +{ +	local prompt1="$msg_enter_new_password" +	local prompt2="$msg_reenter_password" +	local hline="$hline_alnum_punc_tab_enter" + +	local height1 width1 +	f_dialog_inputbox_size height1 width1 \ +	                       "$DIALOG_TITLE"     \ +	                       "$DIALOG_BACKTITLE" \ +	                       "$prompt1"          \ +	                       ""                  \ +	                       "$hline" + +	local height2 width2 +	f_dialog_inputbox_size height2 width2 \ +	                       "$DIALOG_TITLE"     \ +	                       "$DIALOG_BACKTITLE" \ +	                       "$prompt2"          \ +	                       ""                  \ +	                       "$hline" + +	# +	# Loop until the user provides taint-free/valid input +	# +	local _password1 _password2 +	while :; do +		_password1=$( $DIALOG \ +			--title "$DIALOG_TITLE"         \ +			--backtitle "$DIALOG_BACKTITLE" \ +			--hline "$hline"                \ +			--ok-label "$msg_ok"            \ +			--cancel-label "$msg_cancel"    \ +			--insecure                      \ +			--passwordbox "$prompt1"        \ +			$height1 $width1                \ +			2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD +		) || return $? +			# Return if user either pressed ESC or chose Cancel/No +		debug= f_dialog_line_sanitize _password1 + +		_password2=$( $DIALOG \ +			--title "$DIALOG_TITLE"         \ +			--backtitle "$DIALOG_BACKTITLE" \ +			--hline "$hline"                \ +			--ok-label "$msg_ok"            \ +			--cancel-label "$msg_cancel"    \ +			--insecure                      \ +			--passwordbox "$prompt2"        \ +			$height2 $width2                \ +			2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD +		) || return $? +			# Return if user either pressed ESC or chose Cancel/No +		debug= f_dialog_line_sanitize _password2 + +		# Check for NULL entry +		if ! [ "$_password1" -o "$_password2" ]; then +			f_show_msg "$msg_password_is_empty" +			continue +		fi + +		# Check for password mismatch +		if [ "$_password1" != "$_password2" ]; then +			f_show_msg "$msg_passwords_do_not_match" +			continue +		fi + +		pw_password="$_password1" +		break +	done + +	return $DIALOG_OK +} + +############################################################ MAIN + +f_dprintf "%s: Successfully loaded." password/password.subr + +fi # ! $_PASSWORD_PASSWORD_SUBR | 
