xref: /freebsd/usr.sbin/bsdconfig/share/media/options.subr (revision 74036c4de983981ee2b23f91e285363293aa7c3c)
17323adacSDevin Teskeif [ ! "$_MEDIA_OPTIONS_SUBR" ]; then _MEDIA_OPTIONS_SUBR=1
27323adacSDevin Teske#
37323adacSDevin Teske# Copyright (c) 2012-2013 Devin Teske
47323adacSDevin Teske# All Rights Reserved.
57323adacSDevin Teske#
67323adacSDevin Teske# Redistribution and use in source and binary forms, with or without
77323adacSDevin Teske# modification, are permitted provided that the following conditions
87323adacSDevin Teske# are met:
97323adacSDevin Teske# 1. Redistributions of source code must retain the above copyright
107323adacSDevin Teske#    notice, this list of conditions and the following disclaimer.
117323adacSDevin Teske# 2. Redistributions in binary form must reproduce the above copyright
127323adacSDevin Teske#    notice, this list of conditions and the following disclaimer in the
137323adacSDevin Teske#    documentation and/or other materials provided with the distribution.
147323adacSDevin Teske#
157323adacSDevin Teske# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
167323adacSDevin Teske# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, THE
177323adacSDevin Teske# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
187323adacSDevin Teske# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
197323adacSDevin Teske# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
207323adacSDevin Teske# DAMAGES (INLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
217323adacSDevin Teske# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
227323adacSDevin Teske# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
237323adacSDevin Teske# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
247323adacSDevin Teske# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
257323adacSDevin Teske# SUCH DAMAGE.
267323adacSDevin Teske#
277323adacSDevin Teske# $FreeBSD$
287323adacSDevin Teske#
297323adacSDevin Teske############################################################ INCLUDES
307323adacSDevin Teske
317323adacSDevin TeskeBSDCFG_SHARE="/usr/share/bsdconfig"
327323adacSDevin Teske. $BSDCFG_SHARE/common.subr || exit 1
337323adacSDevin Teskef_dprintf "%s: loading includes..." media/options.subr
347323adacSDevin Teskef_include $BSDCFG_SHARE/dialog.subr
357323adacSDevin Teskef_include $BSDCFG_SHARE/struct.subr
367323adacSDevin Teskef_include $BSDCFG_SHARE/variable.subr
377323adacSDevin Teskef_include $BSDCFG_SHARE/media/any.subr
387323adacSDevin Teskef_include $BSDCFG_SHARE/media/ftp.subr
397323adacSDevin Teske
407323adacSDevin TeskeBSDCFG_LIBE="/usr/libexec/bsdconfig"
417323adacSDevin Teskef_include_lang $BSDCFG_LIBE/include/messages.subr
427323adacSDevin Teske
437323adacSDevin TeskeOPTIONS_HELPFILE=$BSDCFG_LIBE/include/options.hlp
447323adacSDevin Teske
457323adacSDevin Teske############################################################ FUNCTIONS
467323adacSDevin Teske
477323adacSDevin Teske# f_media_options_menu
487323adacSDevin Teske#
497323adacSDevin Teske# Prompt the user to confirm/edit various media settings. Returns success.
507323adacSDevin Teske#
517323adacSDevin Teskef_media_options_menu()
527323adacSDevin Teske{
537323adacSDevin Teske	f_dialog_title "$msg_options_editor"
547323adacSDevin Teske	local title="$DIALOG_TITLE" btitle="$DIALOG_BACKTITLE"
557323adacSDevin Teske	f_dialog_title_restore
567323adacSDevin Teske	local prompt=""
577323adacSDevin Teske	local hline="$hline_arrows_tab_enter"
58*74036c4dSDevin Teske	local menu_list cp
597323adacSDevin Teske
607323adacSDevin Teske	#
617323adacSDevin Teske	# A hack so that the dialogs below are always interactive in a script
627323adacSDevin Teske	#
637323adacSDevin Teske	local old_interactive=
647323adacSDevin Teske	if ! f_interactive; then
657323adacSDevin Teske		f_getvar $VAR_NONINTERACTIVE old_interactive
667323adacSDevin Teske		unset $VAR_NONINTERACTIVE
677323adacSDevin Teske	fi
687323adacSDevin Teske
69d3a0f918SDevin Teske	local defaultitem=
707323adacSDevin Teske	while :; do
717323adacSDevin Teske		menu_list=""
727323adacSDevin Teske
737323adacSDevin Teske		f_getvar $VAR_NFS_SECURE cp
747323adacSDevin Teske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
757323adacSDevin Teske			' $msg_nfs_secure' 'YES'
767323adacSDevin Teske			    '$msg_nfs_server_talks_only_on_a_secure_port'"
777323adacSDevin Teske		else menu_list="$menu_list
787323adacSDevin Teske			' $msg_nfs_secure' 'NO'
797323adacSDevin Teske			    '$msg_nfs_server_talks_only_on_a_secure_port'"
807323adacSDevin Teske		fi
817323adacSDevin Teske
827323adacSDevin Teske		f_getvar $VAR_SLOW_ETHER cp
837323adacSDevin Teske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
847323adacSDevin Teske			' $msg_nfs_slow' 'YES'
857323adacSDevin Teske			    '$msg_user_is_using_a_slow_pc_or_ethernet_card'"
867323adacSDevin Teske		else menu_list="$menu_list
877323adacSDevin Teske			' $msg_nfs_slow' 'NO'
887323adacSDevin Teske			    '$msg_user_is_using_a_slow_pc_or_ethernet_card'"
897323adacSDevin Teske		fi
907323adacSDevin Teske
917323adacSDevin Teske		f_getvar $VAR_NFS_TCP cp
927323adacSDevin Teske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
937323adacSDevin Teske			' $msg_nfs_tcp' 'YES' '$msg_use_tcp_protocol_for_nfs'"
947323adacSDevin Teske		else menu_list="$menu_list
957323adacSDevin Teske			' $msg_nfs_tcp' 'NO' '$msg_use_tcp_protocol_for_nfs'"
967323adacSDevin Teske		fi
977323adacSDevin Teske
987323adacSDevin Teske		f_getvar $VAR_NFS_V3 cp
997323adacSDevin Teske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
1007323adacSDevin Teske			' $msg_nfs_version_3' 'YES' '$msg_use_nfs_version_3'"
1017323adacSDevin Teske		else menu_list="$menu_list
1027323adacSDevin Teske			' $msg_nfs_version_3' 'NO' '$msg_use_nfs_version_3'"
1037323adacSDevin Teske		fi
1047323adacSDevin Teske
1057323adacSDevin Teske		f_getvar $VAR_DEBUG cp
1067323adacSDevin Teske		if [ "$cp" ]; then menu_list="$menu_list
1077323adacSDevin Teske			' $msg_debugging' 'YES'
1087323adacSDevin Teske			    '$msg_emit_extra_debugging_output'"
1097323adacSDevin Teske		else menu_list="$menu_list
1107323adacSDevin Teske			' $msg_debugging' 'NO'
1117323adacSDevin Teske			    '$msg_emit_extra_debugging_output'"
1127323adacSDevin Teske		fi
1137323adacSDevin Teske
11487c16275SDevin Teske		f_getvar $VAR_NO_CONFIRM cp
11587c16275SDevin Teske		if [ "$cp" ]; then menu_list="$menu_list
11687c16275SDevin Teske			' $msg_yes_to_all' 'YES'
11787c16275SDevin Teske			    '$msg_assume_yes_to_all_non_critical_dialogs'"
11887c16275SDevin Teske		else menu_list="$menu_list
11987c16275SDevin Teske			' $msg_yes_to_all' 'NO'
12087c16275SDevin Teske			    '$msg_assume_yes_to_all_non_critical_dialogs'"
12187c16275SDevin Teske		fi
12287c16275SDevin Teske
1237323adacSDevin Teske		f_getvar $VAR_TRY_DHCP cp
1247323adacSDevin Teske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
1257323adacSDevin Teske			' $msg_dhcp' 'YES'
1267323adacSDevin Teske			    '$msg_attempt_automatic_dhcp_configuration'"
1277323adacSDevin Teske		else menu_list="$menu_list
1287323adacSDevin Teske			' $msg_dhcp' 'NO'
1297323adacSDevin Teske			    '$msg_attempt_automatic_dhcp_configuration'"
1307323adacSDevin Teske		fi
1317323adacSDevin Teske
1327323adacSDevin Teske		f_getvar $VAR_TRY_RTSOL cp
1337323adacSDevin Teske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
1347323adacSDevin Teske			' $msg_ipv6' 'YES'
1357323adacSDevin Teske			    '$msg_attempt_ipv6_configuration_of_interfaces'"
1367323adacSDevin Teske		else menu_list="$menu_list
1377323adacSDevin Teske			' $msg_ipv6' 'NO'
1387323adacSDevin Teske			    '$msg_attempt_ipv6_configuration_of_interfaces'"
1397323adacSDevin Teske		fi
1407323adacSDevin Teske
1417323adacSDevin Teske		f_getvar $VAR_FTP_USER cp
1427323adacSDevin Teske		menu_list="$menu_list
1437323adacSDevin Teske			' $msg_ftp_username' '$cp'
1447323adacSDevin Teske			    '$msg_username_and_password_to_use'"
1457323adacSDevin Teske
1467323adacSDevin Teske		f_getvar $VAR_EDITOR cp
1477323adacSDevin Teske		menu_list="$menu_list
1487323adacSDevin Teske			' $msg_editor' '$cp' '$msg_which_text_editor_to_use'"
1497323adacSDevin Teske
1507323adacSDevin Teske		f_getvar $VAR_RELNAME cp
1517323adacSDevin Teske		menu_list="$menu_list
1527323adacSDevin Teske			' $msg_release_name' '$cp'
1537323adacSDevin Teske			    '$msg_which_release_to_attempt_to_load'"
1547323adacSDevin Teske
1557323adacSDevin Teske		if f_struct device_media; then
1567323adacSDevin Teske			device_media get type cp
1577323adacSDevin Teske			case "$cp" in
1587323adacSDevin Teske			$DEVICE_TYPE_UFS|$DEVICE_TYPE_DISK)
1597323adacSDevin Teske				cp="$msg_file_system";;
1607323adacSDevin Teske			$DEVICE_TYPE_DIRECTORY)
1617323adacSDevin Teske				cp="$msg_directory";;
1627323adacSDevin Teske			$DEVICE_TYPE_FLOPPY)
1637323adacSDevin Teske				cp="$msg_floppy";;
1647323adacSDevin Teske			$DEVICE_TYPE_FTP)
1657323adacSDevin Teske				cp="$msg_ftp";;
1667323adacSDevin Teske			$DEVICE_TYPE_HTTP_PROXY)
1677323adacSDevin Teske				cp="$msg_http_proxy";;
1687323adacSDevin Teske			$DEVICE_TYPE_CDROM)
1697323adacSDevin Teske				cp="$msg_cdrom";;
1707323adacSDevin Teske			$DEVICE_TYPE_USB)
1717323adacSDevin Teske				cp="$msg_usb";;
1727323adacSDevin Teske			$DEVICE_TYPE_DOS)
1737323adacSDevin Teske				cp="$msg_dos";;
1747323adacSDevin Teske			$DEVICE_TYPE_NFS)
1757323adacSDevin Teske				cp="$msg_nfs";;
1767323adacSDevin Teske			*)
1777323adacSDevin Teske				cp="<$msg_unknown>"
1787323adacSDevin Teske			esac
1797323adacSDevin Teske		else
1807323adacSDevin Teske			cp="<$msg_not_yet_set>"
1817323adacSDevin Teske		fi
1827323adacSDevin Teske		menu_list="$menu_list
1837323adacSDevin Teske			' $msg_media_type' '$cp'
1847323adacSDevin Teske			    '$msg_the_current_installation_media_type'"
1857323adacSDevin Teske
1867323adacSDevin Teske		f_getvar $VAR_MEDIA_TIMEOUT cp
1877323adacSDevin Teske		menu_list="$menu_list
1887323adacSDevin Teske			' $msg_media_timeout' '$cp'
1897323adacSDevin Teske			    '$msg_timeout_value_in_seconds_for_slow_media'"
1907323adacSDevin Teske
19187c16275SDevin Teske		f_getvar $VAR_PKG_TMPDIR cp
19287c16275SDevin Teske		menu_list="$menu_list
19387c16275SDevin Teske			' $msg_package_temp' '$cp'
19487c16275SDevin Teske			    '$msg_directory_where_package_temporary_files_go'"
19587c16275SDevin Teske
1967323adacSDevin Teske		menu_list="$menu_list
1977323adacSDevin Teske			' $msg_rescan_devices' '<*>'
1987323adacSDevin Teske			    '$msg_rerun_bsdconfig_initial_device_probe'
1997323adacSDevin Teske			' $msg_use_defaults'   '[${msg_reset}]'
2007323adacSDevin Teske			    '$msg_reset_all_values_to_startup_defaults'
2017323adacSDevin Teske		" # END-QUOTE
2027323adacSDevin Teske
203*74036c4dSDevin Teske		local height width rows
204*74036c4dSDevin Teske		eval f_dialog_menu_with_help_size height width rows \
2057323adacSDevin Teske		                                  \"\$title\"  \
2067323adacSDevin Teske		                                  \"\$btitle\" \
2077323adacSDevin Teske		                                  \"\$prompt\" \
2087323adacSDevin Teske		                                  \"\$hline\"  \
209*74036c4dSDevin Teske		                                  $menu_list
2107323adacSDevin Teske
2117323adacSDevin Teske		local dialog_menu
2127323adacSDevin Teske
2137323adacSDevin Teske		dialog_menu=$( eval $DIALOG \
2147323adacSDevin Teske			--title \"\$title\"              \
2157323adacSDevin Teske			--backtitle \"\$btitle\"         \
2167323adacSDevin Teske			--hline \"\$hline\"              \
2177323adacSDevin Teske			--item-help                      \
2187323adacSDevin Teske			--ok-label \"\$msg_ok\"          \
2197323adacSDevin Teske			--cancel-label \"\$msg_done\"    \
2207323adacSDevin Teske			--help-button                    \
2217323adacSDevin Teske			--help-label \"\$msg_help\"      \
222d3a0f918SDevin Teske			--default-item \"\$defaultitem\" \
2237323adacSDevin Teske			${USE_XDIALOG:+--help \"\"}      \
224*74036c4dSDevin Teske			--menu \"\$prompt\"              \
225*74036c4dSDevin Teske			$height $width $rows             \
226*74036c4dSDevin Teske			$menu_list                       \
2277323adacSDevin Teske			2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
2287323adacSDevin Teske		)
2297323adacSDevin Teske		local retval=$?
2307323adacSDevin Teske		setvar DIALOG_MENU_$$ "$dialog_menu"
231d3a0f918SDevin Teske		defaultitem="$dialog_menu"
2327323adacSDevin Teske
2337323adacSDevin Teske		local mtag
2347323adacSDevin Teske		mtag=$( f_dialog_menutag )
2357323adacSDevin Teske		f_dprintf "retval=%s mtag=[%s]" $retval "$mtag"
2367323adacSDevin Teske
2377323adacSDevin Teske		if [ $retval -eq 2 ]; then
2387323adacSDevin Teske			# The Help button was pressed
2397323adacSDevin Teske			f_show_help "$OPTIONS_HELPFILE"
2407323adacSDevin Teske			continue
2417323adacSDevin Teske		elif [ $retval -ne 0 ]; then
2427323adacSDevin Teske			break # to success
2437323adacSDevin Teske		fi
2447323adacSDevin Teske
2457323adacSDevin Teske		case "$mtag" in
2467323adacSDevin Teske		" $msg_nfs_secure")
2477323adacSDevin Teske			f_getvar $VAR_NFS_SECURE cp
2487323adacSDevin Teske			if [ "$cp" = "YES" ]; then
2497323adacSDevin Teske				export $VAR_NFS_SECURE="NO"
2507323adacSDevin Teske			else
2517323adacSDevin Teske				export $VAR_NFS_SECURE="YES"
2527323adacSDevin Teske			fi ;;
2537323adacSDevin Teske		" $msg_nfs_slow")
2547323adacSDevin Teske			f_getvar $VAR_SLOW_ETHER cp
2557323adacSDevin Teske			if [ "$cp" = "YES" ]; then
2567323adacSDevin Teske				export $VAR_SLOW_ETHER="NO"
2577323adacSDevin Teske			else
2587323adacSDevin Teske				export $VAR_SLOW_ETHER="YES"
2597323adacSDevin Teske			fi ;;
2607323adacSDevin Teske		" $msg_nfs_tcp")
2617323adacSDevin Teske			f_getvar $VAR_NFS_TCP cp
2627323adacSDevin Teske			if [ "$cp" = "YES" ]; then
2637323adacSDevin Teske				export $VAR_NFS_TCP="NO"
2647323adacSDevin Teske			else
2657323adacSDevin Teske				export $VAR_NFS_TCP="YES"
2667323adacSDevin Teske			fi ;;
2677323adacSDevin Teske		" $msg_nfs_version_3")
2687323adacSDevin Teske			f_getvar $VAR_NFS_V3 cp
2697323adacSDevin Teske			if [ "$cp" = "YES" ]; then
2707323adacSDevin Teske				export $VAR_NFS_V3="NO"
2717323adacSDevin Teske			else
2727323adacSDevin Teske				export $VAR_NFS_V3="YES"
2737323adacSDevin Teske			fi ;;
2747323adacSDevin Teske		" $msg_debugging")
2757323adacSDevin Teske			if f_getvar $VAR_DEBUG cp && [ "$cp" ]; then
2767323adacSDevin Teske				unset $VAR_DEBUG
2777323adacSDevin Teske			else
2787323adacSDevin Teske				export $VAR_DEBUG=1
2797323adacSDevin Teske			fi ;;
28087c16275SDevin Teske		" $msg_yes_to_all")
28187c16275SDevin Teske			if f_getvar $VAR_NO_CONFIRM cp && [ "$cp" ]; then
28287c16275SDevin Teske				unset $VAR_NO_CONFIRM
28387c16275SDevin Teske			else
28487c16275SDevin Teske				export $VAR_NO_CONFIRM=1
28587c16275SDevin Teske			fi ;;
2867323adacSDevin Teske		" $msg_dhcp")
2877323adacSDevin Teske			f_getvar $VAR_TRY_DHCP cp
2887323adacSDevin Teske			if [ "$cp" = "YES" ]; then
2897323adacSDevin Teske				export $VAR_TRY_DHCP="NO"
2907323adacSDevin Teske			else
2917323adacSDevin Teske				export $VAR_TRY_DHCP="YES"
2927323adacSDevin Teske			fi ;;
2937323adacSDevin Teske		" $msg_ipv6")
2947323adacSDevin Teske			f_getvar $VAR_TRY_RTSOL cp
2957323adacSDevin Teske			if [ "$cp" = "YES" ]; then
2967323adacSDevin Teske				export $VAR_TRY_RTSOL="NO"
2977323adacSDevin Teske			else
2987323adacSDevin Teske				export $VAR_TRY_RTSOL="YES"
2997323adacSDevin Teske			fi ;;
3007323adacSDevin Teske		" $msg_ftp_username")
3017323adacSDevin Teske			f_media_set_ftp_userpass ;;
3027323adacSDevin Teske		" $msg_editor")
3037323adacSDevin Teske			f_variable_get_value $VAR_EDITOR \
3047323adacSDevin Teske			    "$msg_please_specify_the_name_of_the_text_editor"
3057323adacSDevin Teske			;;
3067323adacSDevin Teske		" $msg_release_name")
3077323adacSDevin Teske			f_variable_get_value $VAR_RELNAME \
3087323adacSDevin Teske			    "$msg_please_specify_the_release_you_wish_to_load"
3097323adacSDevin Teske			;;
3107323adacSDevin Teske		" $msg_media_type")
3117323adacSDevin Teske			f_media_get_type ;;
3127323adacSDevin Teske		" $msg_media_timeout")
3137323adacSDevin Teske			f_variable_get_value $VAR_MEDIA_TIMEOUT \
3147323adacSDevin Teske			    "$msg_please_specify_the_number_of_seconds_to_wait"
3157323adacSDevin Teske			;;
31687c16275SDevin Teske		" $msg_package_temp")
31787c16275SDevin Teske			f_variable_get_value $VAR_PKG_TMPDIR \
31887c16275SDevin Teske			    "$msg_please_specify_a_temporary_directory"
31987c16275SDevin Teske			;;
3207323adacSDevin Teske		" $msg_rescan_devices")
3217323adacSDevin Teske			f_device_rescan ;;
3227323adacSDevin Teske		" $msg_use_defaults")
3237323adacSDevin Teske			f_variable_set_defaults ;;
3247323adacSDevin Teske		esac
3257323adacSDevin Teske	done
3267323adacSDevin Teske
3277323adacSDevin Teske	# Restore old VAR_NONINTERACTIVE if needed.
3287323adacSDevin Teske	[ "$old_interactive" ] &&
3297323adacSDevin Teske		setvar $VAR_NONINTERACTIVE "$old_interactive"
3307323adacSDevin Teske
3317323adacSDevin Teske	return $SUCCESS
3327323adacSDevin Teske}
3337323adacSDevin Teske
3347323adacSDevin Teske############################################################ MAIN
3357323adacSDevin Teske
3367323adacSDevin Teskef_dprintf "%s: Successfully loaded." media/options.subr
3377323adacSDevin Teske
3387323adacSDevin Teskefi # ! $_MEDIA_OPTIONS_SUBR
339