xref: /freebsd/usr.sbin/bsdconfig/share/media/options.subr (revision d3a0f9181641cfebdceac242e7a496001c67c28e)
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"
587323adacSDevin Teske	local menu_list size 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
69*d3a0f918SDevin 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
1147323adacSDevin Teske		f_getvar $VAR_TRY_DHCP cp
1157323adacSDevin Teske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
1167323adacSDevin Teske			' $msg_dhcp' 'YES'
1177323adacSDevin Teske			    '$msg_attempt_automatic_dhcp_configuration'"
1187323adacSDevin Teske		else menu_list="$menu_list
1197323adacSDevin Teske			' $msg_dhcp' 'NO'
1207323adacSDevin Teske			    '$msg_attempt_automatic_dhcp_configuration'"
1217323adacSDevin Teske		fi
1227323adacSDevin Teske
1237323adacSDevin Teske		f_getvar $VAR_TRY_RTSOL cp
1247323adacSDevin Teske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
1257323adacSDevin Teske			' $msg_ipv6' 'YES'
1267323adacSDevin Teske			    '$msg_attempt_ipv6_configuration_of_interfaces'"
1277323adacSDevin Teske		else menu_list="$menu_list
1287323adacSDevin Teske			' $msg_ipv6' 'NO'
1297323adacSDevin Teske			    '$msg_attempt_ipv6_configuration_of_interfaces'"
1307323adacSDevin Teske		fi
1317323adacSDevin Teske
1327323adacSDevin Teske		f_getvar $VAR_FTP_USER cp
1337323adacSDevin Teske		menu_list="$menu_list
1347323adacSDevin Teske			' $msg_ftp_username' '$cp'
1357323adacSDevin Teske			    '$msg_username_and_password_to_use'"
1367323adacSDevin Teske
1377323adacSDevin Teske		f_getvar $VAR_EDITOR cp
1387323adacSDevin Teske		menu_list="$menu_list
1397323adacSDevin Teske			' $msg_editor' '$cp' '$msg_which_text_editor_to_use'"
1407323adacSDevin Teske
1417323adacSDevin Teske		f_getvar $VAR_RELNAME cp
1427323adacSDevin Teske		menu_list="$menu_list
1437323adacSDevin Teske			' $msg_release_name' '$cp'
1447323adacSDevin Teske			    '$msg_which_release_to_attempt_to_load'"
1457323adacSDevin Teske
1467323adacSDevin Teske		if f_struct device_media; then
1477323adacSDevin Teske			device_media get type cp
1487323adacSDevin Teske			case "$cp" in
1497323adacSDevin Teske			$DEVICE_TYPE_UFS|$DEVICE_TYPE_DISK)
1507323adacSDevin Teske				cp="$msg_file_system";;
1517323adacSDevin Teske			$DEVICE_TYPE_DIRECTORY)
1527323adacSDevin Teske				cp="$msg_directory";;
1537323adacSDevin Teske			$DEVICE_TYPE_FLOPPY)
1547323adacSDevin Teske				cp="$msg_floppy";;
1557323adacSDevin Teske			$DEVICE_TYPE_FTP)
1567323adacSDevin Teske				cp="$msg_ftp";;
1577323adacSDevin Teske			$DEVICE_TYPE_HTTP_PROXY)
1587323adacSDevin Teske				cp="$msg_http_proxy";;
1597323adacSDevin Teske			$DEVICE_TYPE_CDROM)
1607323adacSDevin Teske				cp="$msg_cdrom";;
1617323adacSDevin Teske			$DEVICE_TYPE_USB)
1627323adacSDevin Teske				cp="$msg_usb";;
1637323adacSDevin Teske			$DEVICE_TYPE_DOS)
1647323adacSDevin Teske				cp="$msg_dos";;
1657323adacSDevin Teske			$DEVICE_TYPE_NFS)
1667323adacSDevin Teske				cp="$msg_nfs";;
1677323adacSDevin Teske			*)
1687323adacSDevin Teske				cp="<$msg_unknown>"
1697323adacSDevin Teske			esac
1707323adacSDevin Teske		else
1717323adacSDevin Teske			cp="<$msg_not_yet_set>"
1727323adacSDevin Teske		fi
1737323adacSDevin Teske		menu_list="$menu_list
1747323adacSDevin Teske			' $msg_media_type' '$cp'
1757323adacSDevin Teske			    '$msg_the_current_installation_media_type'"
1767323adacSDevin Teske
1777323adacSDevin Teske		f_getvar $VAR_MEDIA_TIMEOUT cp
1787323adacSDevin Teske		menu_list="$menu_list
1797323adacSDevin Teske			' $msg_media_timeout' '$cp'
1807323adacSDevin Teske			    '$msg_timeout_value_in_seconds_for_slow_media'"
1817323adacSDevin Teske
1827323adacSDevin Teske		menu_list="$menu_list
1837323adacSDevin Teske			' $msg_rescan_devices' '<*>'
1847323adacSDevin Teske			    '$msg_rerun_bsdconfig_initial_device_probe'
1857323adacSDevin Teske			' $msg_use_defaults'   '[${msg_reset}]'
1867323adacSDevin Teske			    '$msg_reset_all_values_to_startup_defaults'
1877323adacSDevin Teske		" # END-QUOTE
1887323adacSDevin Teske
1897323adacSDevin Teske		size=$( eval f_dialog_menu_with_help_size \
1907323adacSDevin Teske		        	\"\$title\"  \
1917323adacSDevin Teske		        	\"\$btitle\" \
1927323adacSDevin Teske		        	\"\$prompt\" \
1937323adacSDevin Teske		        	\"\$hline\"  \
1947323adacSDevin Teske		        	$menu_list   )
1957323adacSDevin Teske
1967323adacSDevin Teske		local dialog_menu
1977323adacSDevin Teske
1987323adacSDevin Teske		dialog_menu=$( eval $DIALOG \
1997323adacSDevin Teske			--title \"\$title\"                  \
2007323adacSDevin Teske			--backtitle \"\$btitle\"             \
2017323adacSDevin Teske			--hline \"\$hline\"                  \
2027323adacSDevin Teske			--item-help                          \
2037323adacSDevin Teske			--ok-label \"\$msg_ok\"              \
2047323adacSDevin Teske			--cancel-label \"\$msg_done\"        \
2057323adacSDevin Teske			--help-button                        \
2067323adacSDevin Teske			--help-label \"\$msg_help\"          \
207*d3a0f918SDevin Teske			--default-item \"\$defaultitem\"     \
2087323adacSDevin Teske			${USE_XDIALOG:+--help \"\"}          \
2097323adacSDevin Teske			--menu \"\$prompt\" $size $menu_list \
2107323adacSDevin Teske			2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
2117323adacSDevin Teske		)
2127323adacSDevin Teske		local retval=$?
2137323adacSDevin Teske		setvar DIALOG_MENU_$$ "$dialog_menu"
214*d3a0f918SDevin Teske		defaultitem="$dialog_menu"
2157323adacSDevin Teske
2167323adacSDevin Teske		local mtag
2177323adacSDevin Teske		mtag=$( f_dialog_menutag )
2187323adacSDevin Teske		f_dprintf "retval=%s mtag=[%s]" $retval "$mtag"
2197323adacSDevin Teske
2207323adacSDevin Teske		if [ $retval -eq 2 ]; then
2217323adacSDevin Teske			# The Help button was pressed
2227323adacSDevin Teske			f_show_help "$OPTIONS_HELPFILE"
2237323adacSDevin Teske			continue
2247323adacSDevin Teske		elif [ $retval -ne 0 ]; then
2257323adacSDevin Teske			break # to success
2267323adacSDevin Teske		fi
2277323adacSDevin Teske
2287323adacSDevin Teske		case "$mtag" in
2297323adacSDevin Teske		" $msg_nfs_secure")
2307323adacSDevin Teske			f_getvar $VAR_NFS_SECURE cp
2317323adacSDevin Teske			if [ "$cp" = "YES" ]; then
2327323adacSDevin Teske				export $VAR_NFS_SECURE="NO"
2337323adacSDevin Teske			else
2347323adacSDevin Teske				export $VAR_NFS_SECURE="YES"
2357323adacSDevin Teske			fi ;;
2367323adacSDevin Teske		" $msg_nfs_slow")
2377323adacSDevin Teske			f_getvar $VAR_SLOW_ETHER cp
2387323adacSDevin Teske			if [ "$cp" = "YES" ]; then
2397323adacSDevin Teske				export $VAR_SLOW_ETHER="NO"
2407323adacSDevin Teske			else
2417323adacSDevin Teske				export $VAR_SLOW_ETHER="YES"
2427323adacSDevin Teske			fi ;;
2437323adacSDevin Teske		" $msg_nfs_tcp")
2447323adacSDevin Teske			f_getvar $VAR_NFS_TCP cp
2457323adacSDevin Teske			if [ "$cp" = "YES" ]; then
2467323adacSDevin Teske				export $VAR_NFS_TCP="NO"
2477323adacSDevin Teske			else
2487323adacSDevin Teske				export $VAR_NFS_TCP="YES"
2497323adacSDevin Teske			fi ;;
2507323adacSDevin Teske		" $msg_nfs_version_3")
2517323adacSDevin Teske			f_getvar $VAR_NFS_V3 cp
2527323adacSDevin Teske			if [ "$cp" = "YES" ]; then
2537323adacSDevin Teske				export $VAR_NFS_V3="NO"
2547323adacSDevin Teske			else
2557323adacSDevin Teske				export $VAR_NFS_V3="YES"
2567323adacSDevin Teske			fi ;;
2577323adacSDevin Teske		" $msg_debugging")
2587323adacSDevin Teske			if f_getvar $VAR_DEBUG cp && [ "$cp" ]; then
2597323adacSDevin Teske				unset $VAR_DEBUG
2607323adacSDevin Teske			else
2617323adacSDevin Teske				export $VAR_DEBUG=1
2627323adacSDevin Teske			fi ;;
2637323adacSDevin Teske		" $msg_dhcp")
2647323adacSDevin Teske			f_getvar $VAR_TRY_DHCP cp
2657323adacSDevin Teske			if [ "$cp" = "YES" ]; then
2667323adacSDevin Teske				export $VAR_TRY_DHCP="NO"
2677323adacSDevin Teske			else
2687323adacSDevin Teske				export $VAR_TRY_DHCP="YES"
2697323adacSDevin Teske			fi ;;
2707323adacSDevin Teske		" $msg_ipv6")
2717323adacSDevin Teske			f_getvar $VAR_TRY_RTSOL cp
2727323adacSDevin Teske			if [ "$cp" = "YES" ]; then
2737323adacSDevin Teske				export $VAR_TRY_RTSOL="NO"
2747323adacSDevin Teske			else
2757323adacSDevin Teske				export $VAR_TRY_RTSOL="YES"
2767323adacSDevin Teske			fi ;;
2777323adacSDevin Teske		" $msg_ftp_username")
2787323adacSDevin Teske			f_media_set_ftp_userpass ;;
2797323adacSDevin Teske		" $msg_editor")
2807323adacSDevin Teske			f_variable_get_value $VAR_EDITOR \
2817323adacSDevin Teske			    "$msg_please_specify_the_name_of_the_text_editor"
2827323adacSDevin Teske			;;
2837323adacSDevin Teske		" $msg_release_name")
2847323adacSDevin Teske			f_variable_get_value $VAR_RELNAME \
2857323adacSDevin Teske			    "$msg_please_specify_the_release_you_wish_to_load"
2867323adacSDevin Teske			;;
2877323adacSDevin Teske		" $msg_media_type")
2887323adacSDevin Teske			f_media_get_type ;;
2897323adacSDevin Teske		" $msg_media_timeout")
2907323adacSDevin Teske			f_variable_get_value $VAR_MEDIA_TIMEOUT \
2917323adacSDevin Teske			    "$msg_please_specify_the_number_of_seconds_to_wait"
2927323adacSDevin Teske			;;
2937323adacSDevin Teske		" $msg_rescan_devices")
2947323adacSDevin Teske			f_device_rescan ;;
2957323adacSDevin Teske		" $msg_use_defaults")
2967323adacSDevin Teske			f_variable_set_defaults ;;
2977323adacSDevin Teske		esac
2987323adacSDevin Teske	done
2997323adacSDevin Teske
3007323adacSDevin Teske	# Restore old VAR_NONINTERACTIVE if needed.
3017323adacSDevin Teske	[ "$old_interactive" ] &&
3027323adacSDevin Teske		setvar $VAR_NONINTERACTIVE "$old_interactive"
3037323adacSDevin Teske
3047323adacSDevin Teske	return $SUCCESS
3057323adacSDevin Teske}
3067323adacSDevin Teske
3077323adacSDevin Teske############################################################ MAIN
3087323adacSDevin Teske
3097323adacSDevin Teskef_dprintf "%s: Successfully loaded." media/options.subr
3107323adacSDevin Teske
3117323adacSDevin Teskefi # ! $_MEDIA_OPTIONS_SUBR
312