1247280Sdteskeif [ ! "$_MEDIA_OPTIONS_SUBR" ]; then _MEDIA_OPTIONS_SUBR=1
2247280Sdteske#
3247280Sdteske# Copyright (c) 2012-2013 Devin Teske
4252980Sdteske# All rights reserved.
5247280Sdteske#
6247280Sdteske# Redistribution and use in source and binary forms, with or without
7247280Sdteske# modification, are permitted provided that the following conditions
8247280Sdteske# are met:
9247280Sdteske# 1. Redistributions of source code must retain the above copyright
10247280Sdteske#    notice, this list of conditions and the following disclaimer.
11247280Sdteske# 2. Redistributions in binary form must reproduce the above copyright
12247280Sdteske#    notice, this list of conditions and the following disclaimer in the
13247280Sdteske#    documentation and/or other materials provided with the distribution.
14247280Sdteske#
15247280Sdteske# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16252987Sdteske# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17247280Sdteske# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18247280Sdteske# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19247280Sdteske# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20252987Sdteske# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21247280Sdteske# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22247280Sdteske# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23247280Sdteske# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24247280Sdteske# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25247280Sdteske# SUCH DAMAGE.
26247280Sdteske#
27247280Sdteske# $FreeBSD: releng/11.0/usr.sbin/bsdconfig/share/media/options.subr 256181 2013-10-09 08:12:26Z dteske $
28247280Sdteske#
29247280Sdteske############################################################ INCLUDES
30247280Sdteske
31247280SdteskeBSDCFG_SHARE="/usr/share/bsdconfig"
32247280Sdteske. $BSDCFG_SHARE/common.subr || exit 1
33247280Sdteskef_dprintf "%s: loading includes..." media/options.subr
34247280Sdteskef_include $BSDCFG_SHARE/dialog.subr
35252077Sdteskef_include $BSDCFG_SHARE/media/any.subr
36252077Sdteskef_include $BSDCFG_SHARE/media/ftp.subr
37247280Sdteskef_include $BSDCFG_SHARE/struct.subr
38247280Sdteskef_include $BSDCFG_SHARE/variable.subr
39247280Sdteske
40247280SdteskeBSDCFG_LIBE="/usr/libexec/bsdconfig"
41247280Sdteskef_include_lang $BSDCFG_LIBE/include/messages.subr
42247280Sdteske
43247280SdteskeOPTIONS_HELPFILE=$BSDCFG_LIBE/include/options.hlp
44247280Sdteske
45247280Sdteske############################################################ FUNCTIONS
46247280Sdteske
47247280Sdteske# f_media_options_menu
48247280Sdteske#
49247280Sdteske# Prompt the user to confirm/edit various media settings. Returns success.
50247280Sdteske#
51247280Sdteskef_media_options_menu()
52247280Sdteske{
53247280Sdteske	f_dialog_title "$msg_options_editor"
54247280Sdteske	local title="$DIALOG_TITLE" btitle="$DIALOG_BACKTITLE"
55247280Sdteske	f_dialog_title_restore
56251264Sdteske	local prompt=
57251264Sdteske	local menu_list # Calculated below
58251264Sdteske	local defaultitem=
59247280Sdteske	local hline="$hline_arrows_tab_enter"
60247280Sdteske
61247280Sdteske	#
62247280Sdteske	# A hack so that the dialogs below are always interactive in a script
63247280Sdteske	#
64247280Sdteske	local old_interactive=
65247280Sdteske	if ! f_interactive; then
66247280Sdteske		f_getvar $VAR_NONINTERACTIVE old_interactive
67247280Sdteske		unset $VAR_NONINTERACTIVE
68247280Sdteske	fi
69247280Sdteske
70251264Sdteske	local cp
71247280Sdteske	while :; do
72251269Sdteske		menu_list=
73247280Sdteske
74247280Sdteske		f_getvar $VAR_NFS_SECURE cp
75247280Sdteske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
76247280Sdteske			' $msg_nfs_secure' 'YES'
77247280Sdteske			    '$msg_nfs_server_talks_only_on_a_secure_port'"
78247280Sdteske		else menu_list="$menu_list
79247280Sdteske			' $msg_nfs_secure' 'NO'
80247280Sdteske			    '$msg_nfs_server_talks_only_on_a_secure_port'"
81247280Sdteske		fi
82247280Sdteske
83247280Sdteske		f_getvar $VAR_SLOW_ETHER cp
84247280Sdteske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
85247280Sdteske			' $msg_nfs_slow' 'YES'
86247280Sdteske			    '$msg_user_is_using_a_slow_pc_or_ethernet_card'"
87247280Sdteske		else menu_list="$menu_list
88247280Sdteske			' $msg_nfs_slow' 'NO'
89247280Sdteske			    '$msg_user_is_using_a_slow_pc_or_ethernet_card'"
90247280Sdteske		fi
91247280Sdteske
92247280Sdteske		f_getvar $VAR_NFS_TCP cp
93247280Sdteske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
94247280Sdteske			' $msg_nfs_tcp' 'YES' '$msg_use_tcp_protocol_for_nfs'"
95247280Sdteske		else menu_list="$menu_list
96247280Sdteske			' $msg_nfs_tcp' 'NO' '$msg_use_tcp_protocol_for_nfs'"
97247280Sdteske		fi
98247280Sdteske
99247280Sdteske		f_getvar $VAR_NFS_V3 cp
100247280Sdteske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
101247280Sdteske			' $msg_nfs_version_3' 'YES' '$msg_use_nfs_version_3'"
102247280Sdteske		else menu_list="$menu_list
103247280Sdteske			' $msg_nfs_version_3' 'NO' '$msg_use_nfs_version_3'"
104247280Sdteske		fi
105247280Sdteske
106247280Sdteske		f_getvar $VAR_DEBUG cp
107247280Sdteske		if [ "$cp" ]; then menu_list="$menu_list
108247280Sdteske			' $msg_debugging' 'YES'
109247280Sdteske			    '$msg_emit_extra_debugging_output'"
110247280Sdteske		else menu_list="$menu_list
111247280Sdteske			' $msg_debugging' 'NO'
112247280Sdteske			    '$msg_emit_extra_debugging_output'"
113247280Sdteske		fi
114247280Sdteske
115250323Sdteske		f_getvar $VAR_NO_CONFIRM cp
116250323Sdteske		if [ "$cp" ]; then menu_list="$menu_list
117250323Sdteske			' $msg_yes_to_all' 'YES'
118250323Sdteske			    '$msg_assume_yes_to_all_non_critical_dialogs'"
119250323Sdteske		else menu_list="$menu_list
120250323Sdteske			' $msg_yes_to_all' 'NO'
121250323Sdteske			    '$msg_assume_yes_to_all_non_critical_dialogs'"
122250323Sdteske		fi
123250323Sdteske
124247280Sdteske		f_getvar $VAR_TRY_DHCP cp
125247280Sdteske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
126247280Sdteske			' $msg_dhcp' 'YES'
127247280Sdteske			    '$msg_attempt_automatic_dhcp_configuration'"
128247280Sdteske		else menu_list="$menu_list
129247280Sdteske			' $msg_dhcp' 'NO'
130247280Sdteske			    '$msg_attempt_automatic_dhcp_configuration'"
131247280Sdteske		fi
132247280Sdteske
133247280Sdteske		f_getvar $VAR_TRY_RTSOL cp
134247280Sdteske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
135247280Sdteske			' $msg_ipv6' 'YES'
136247280Sdteske			    '$msg_attempt_ipv6_configuration_of_interfaces'"
137247280Sdteske		else menu_list="$menu_list
138247280Sdteske			' $msg_ipv6' 'NO'
139247280Sdteske			    '$msg_attempt_ipv6_configuration_of_interfaces'"
140247280Sdteske		fi
141247280Sdteske
142247280Sdteske		f_getvar $VAR_FTP_USER cp
143247280Sdteske		menu_list="$menu_list
144247280Sdteske			' $msg_ftp_username' '$cp'
145247280Sdteske			    '$msg_username_and_password_to_use'"
146247280Sdteske
147247280Sdteske		f_getvar $VAR_EDITOR cp
148247280Sdteske		menu_list="$menu_list
149247280Sdteske			' $msg_editor' '$cp' '$msg_which_text_editor_to_use'"
150247280Sdteske
151247280Sdteske		f_getvar $VAR_RELNAME cp
152247280Sdteske		menu_list="$menu_list
153247280Sdteske			' $msg_release_name' '$cp'
154247280Sdteske			    '$msg_which_release_to_attempt_to_load'"
155247280Sdteske
156247280Sdteske		if f_struct device_media; then
157247280Sdteske			device_media get type cp
158247280Sdteske			case "$cp" in
159247280Sdteske			$DEVICE_TYPE_UFS|$DEVICE_TYPE_DISK)
160252076Sdteske				cp="$msg_file_system" ;;
161252112Sdteske			$DEVICE_TYPE_DIRECTORY)  cp="$msg_directory"   ;;
162252112Sdteske			$DEVICE_TYPE_FLOPPY)     cp="$msg_floppy"      ;;
163252112Sdteske			$DEVICE_TYPE_FTP)        cp="$msg_ftp"         ;;
164252112Sdteske			$DEVICE_TYPE_HTTP_PROXY) cp="$msg_http_proxy"  ;;
165252112Sdteske			$DEVICE_TYPE_HTTP)       cp="$msg_http_direct" ;;
166252112Sdteske			$DEVICE_TYPE_CDROM)      cp="$msg_cdrom"       ;;
167252112Sdteske			$DEVICE_TYPE_USB)        cp="$msg_usb"         ;;
168252112Sdteske			$DEVICE_TYPE_DOS)        cp="$msg_dos"         ;;
169252112Sdteske			$DEVICE_TYPE_NFS)        cp="$msg_nfs"         ;;
170247280Sdteske			*)
171247280Sdteske				cp="<$msg_unknown>"
172247280Sdteske			esac
173247280Sdteske		else
174247280Sdteske			cp="<$msg_not_yet_set>"
175247280Sdteske		fi
176247280Sdteske		menu_list="$menu_list
177247280Sdteske			' $msg_media_type' '$cp'
178247280Sdteske			    '$msg_the_current_installation_media_type'"
179247280Sdteske
180247280Sdteske		f_getvar $VAR_MEDIA_TIMEOUT cp
181247280Sdteske		menu_list="$menu_list
182247280Sdteske			' $msg_media_timeout' '$cp'
183247280Sdteske			    '$msg_timeout_value_in_seconds_for_slow_media'"
184247280Sdteske
185250323Sdteske		f_getvar $VAR_PKG_TMPDIR cp
186247280Sdteske		menu_list="$menu_list
187250323Sdteske			' $msg_package_temp' '$cp'
188250323Sdteske			    '$msg_directory_where_package_temporary_files_go'"
189250323Sdteske
190250323Sdteske		menu_list="$menu_list
191247280Sdteske			' $msg_rescan_devices' '<*>'
192247280Sdteske			    '$msg_rerun_bsdconfig_initial_device_probe'
193247280Sdteske			' $msg_use_defaults'   '[${msg_reset}]'
194247280Sdteske			    '$msg_reset_all_values_to_startup_defaults'
195247280Sdteske		" # END-QUOTE
196247280Sdteske
197251190Sdteske		local height width rows
198251190Sdteske		eval f_dialog_menu_with_help_size height width rows \
199251190Sdteske		                                  \"\$title\"  \
200251190Sdteske		                                  \"\$btitle\" \
201251190Sdteske		                                  \"\$prompt\" \
202251190Sdteske		                                  \"\$hline\"  \
203251190Sdteske		                                  $menu_list
204247280Sdteske
205251236Sdteske		local mtag
206251236Sdteske		mtag=$( eval $DIALOG \
207251190Sdteske			--title \"\$title\"              \
208251190Sdteske			--backtitle \"\$btitle\"         \
209251190Sdteske			--hline \"\$hline\"              \
210251190Sdteske			--item-help                      \
211251190Sdteske			--ok-label \"\$msg_ok\"          \
212251190Sdteske			--cancel-label \"\$msg_done\"    \
213251190Sdteske			--help-button                    \
214251190Sdteske			--help-label \"\$msg_help\"      \
215251190Sdteske			--default-item \"\$defaultitem\" \
216251190Sdteske			${USE_XDIALOG:+--help \"\"}      \
217251190Sdteske			--menu \"\$prompt\"              \
218251190Sdteske			$height $width $rows             \
219251190Sdteske			$menu_list                       \
220247280Sdteske			2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
221247280Sdteske		)
222247280Sdteske		local retval=$?
223251236Sdteske		f_dialog_data_sanitize mtag
224251236Sdteske		defaultitem="$mtag"
225247280Sdteske		f_dprintf "retval=%s mtag=[%s]" $retval "$mtag"
226247280Sdteske
227256181Sdteske		if [ $retval -eq $DIALOG_HELP ]; then
228247280Sdteske			f_show_help "$OPTIONS_HELPFILE"
229247280Sdteske			continue
230256181Sdteske		elif [ $retval -ne $DIALOG_OK ]; then
231247280Sdteske			break # to success
232247280Sdteske		fi
233247280Sdteske
234247280Sdteske		case "$mtag" in
235247280Sdteske		" $msg_nfs_secure")
236247280Sdteske			f_getvar $VAR_NFS_SECURE cp
237247280Sdteske			if [ "$cp" = "YES" ]; then
238247280Sdteske				export $VAR_NFS_SECURE="NO"
239247280Sdteske			else
240247280Sdteske				export $VAR_NFS_SECURE="YES"
241247280Sdteske			fi ;;
242247280Sdteske		" $msg_nfs_slow")
243247280Sdteske			f_getvar $VAR_SLOW_ETHER cp
244247280Sdteske			if [ "$cp" = "YES" ]; then
245247280Sdteske				export $VAR_SLOW_ETHER="NO"
246247280Sdteske			else
247247280Sdteske				export $VAR_SLOW_ETHER="YES"
248247280Sdteske			fi ;;
249247280Sdteske		" $msg_nfs_tcp")
250247280Sdteske			f_getvar $VAR_NFS_TCP cp
251247280Sdteske			if [ "$cp" = "YES" ]; then
252247280Sdteske				export $VAR_NFS_TCP="NO"
253247280Sdteske			else
254247280Sdteske				export $VAR_NFS_TCP="YES"
255247280Sdteske			fi ;;
256247280Sdteske		" $msg_nfs_version_3")
257247280Sdteske			f_getvar $VAR_NFS_V3 cp
258247280Sdteske			if [ "$cp" = "YES" ]; then
259247280Sdteske				export $VAR_NFS_V3="NO"
260247280Sdteske			else
261247280Sdteske				export $VAR_NFS_V3="YES"
262247280Sdteske			fi ;;
263247280Sdteske		" $msg_debugging")
264247280Sdteske			if f_getvar $VAR_DEBUG cp && [ "$cp" ]; then
265247280Sdteske				unset $VAR_DEBUG
266247280Sdteske			else
267247280Sdteske				export $VAR_DEBUG=1
268247280Sdteske			fi ;;
269250323Sdteske		" $msg_yes_to_all")
270250323Sdteske			if f_getvar $VAR_NO_CONFIRM cp && [ "$cp" ]; then
271250323Sdteske				unset $VAR_NO_CONFIRM
272250323Sdteske			else
273250323Sdteske				export $VAR_NO_CONFIRM=1
274250323Sdteske			fi ;;
275247280Sdteske		" $msg_dhcp")
276247280Sdteske			f_getvar $VAR_TRY_DHCP cp
277247280Sdteske			if [ "$cp" = "YES" ]; then
278247280Sdteske				export $VAR_TRY_DHCP="NO"
279247280Sdteske			else
280247280Sdteske				export $VAR_TRY_DHCP="YES"
281247280Sdteske			fi ;;
282247280Sdteske		" $msg_ipv6")
283247280Sdteske			f_getvar $VAR_TRY_RTSOL cp
284247280Sdteske			if [ "$cp" = "YES" ]; then
285247280Sdteske				export $VAR_TRY_RTSOL="NO"
286247280Sdteske			else
287247280Sdteske				export $VAR_TRY_RTSOL="YES"
288247280Sdteske			fi ;;
289247280Sdteske		" $msg_ftp_username")
290247280Sdteske			f_media_set_ftp_userpass ;;
291247280Sdteske		" $msg_editor")
292247280Sdteske			f_variable_get_value $VAR_EDITOR \
293247280Sdteske			    "$msg_please_specify_the_name_of_the_text_editor"
294247280Sdteske			;;
295247280Sdteske		" $msg_release_name")
296247280Sdteske			f_variable_get_value $VAR_RELNAME \
297247280Sdteske			    "$msg_please_specify_the_release_you_wish_to_load"
298247280Sdteske			;;
299247280Sdteske		" $msg_media_type")
300247280Sdteske			f_media_get_type ;;
301247280Sdteske		" $msg_media_timeout")
302247280Sdteske			f_variable_get_value $VAR_MEDIA_TIMEOUT \
303247280Sdteske			    "$msg_please_specify_the_number_of_seconds_to_wait"
304247280Sdteske			;;
305250323Sdteske		" $msg_package_temp")
306250323Sdteske			f_variable_get_value $VAR_PKG_TMPDIR \
307250323Sdteske			    "$msg_please_specify_a_temporary_directory"
308250323Sdteske			;;
309247280Sdteske		" $msg_rescan_devices")
310247280Sdteske			f_device_rescan ;;
311247280Sdteske		" $msg_use_defaults")
312247280Sdteske			f_variable_set_defaults ;;
313247280Sdteske		esac
314247280Sdteske	done
315247280Sdteske
316247280Sdteske	# Restore old VAR_NONINTERACTIVE if needed.
317247280Sdteske	[ "$old_interactive" ] &&
318247280Sdteske		setvar $VAR_NONINTERACTIVE "$old_interactive"
319247280Sdteske
320247280Sdteske	return $SUCCESS
321247280Sdteske}
322247280Sdteske
323247280Sdteske############################################################ MAIN
324247280Sdteske
325247280Sdteskef_dprintf "%s: Successfully loaded." media/options.subr
326247280Sdteske
327247280Sdteskefi # ! $_MEDIA_OPTIONS_SUBR
328