xref: /freebsd/usr.sbin/bsdconfig/share/media/options.subr (revision 7323adac99d399e58bdec71236a0db9ee6bfb6d2)
1*7323adacSDevin Teskeif [ ! "$_MEDIA_OPTIONS_SUBR" ]; then _MEDIA_OPTIONS_SUBR=1
2*7323adacSDevin Teske#
3*7323adacSDevin Teske# Copyright (c) 2012-2013 Devin Teske
4*7323adacSDevin Teske# All Rights Reserved.
5*7323adacSDevin Teske#
6*7323adacSDevin Teske# Redistribution and use in source and binary forms, with or without
7*7323adacSDevin Teske# modification, are permitted provided that the following conditions
8*7323adacSDevin Teske# are met:
9*7323adacSDevin Teske# 1. Redistributions of source code must retain the above copyright
10*7323adacSDevin Teske#    notice, this list of conditions and the following disclaimer.
11*7323adacSDevin Teske# 2. Redistributions in binary form must reproduce the above copyright
12*7323adacSDevin Teske#    notice, this list of conditions and the following disclaimer in the
13*7323adacSDevin Teske#    documentation and/or other materials provided with the distribution.
14*7323adacSDevin Teske#
15*7323adacSDevin Teske# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16*7323adacSDevin Teske# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, THE
17*7323adacSDevin Teske# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18*7323adacSDevin Teske# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19*7323adacSDevin Teske# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20*7323adacSDevin Teske# DAMAGES (INLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21*7323adacSDevin Teske# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22*7323adacSDevin Teske# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23*7323adacSDevin Teske# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24*7323adacSDevin Teske# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25*7323adacSDevin Teske# SUCH DAMAGE.
26*7323adacSDevin Teske#
27*7323adacSDevin Teske# $FreeBSD$
28*7323adacSDevin Teske#
29*7323adacSDevin Teske############################################################ INCLUDES
30*7323adacSDevin Teske
31*7323adacSDevin TeskeBSDCFG_SHARE="/usr/share/bsdconfig"
32*7323adacSDevin Teske. $BSDCFG_SHARE/common.subr || exit 1
33*7323adacSDevin Teskef_dprintf "%s: loading includes..." media/options.subr
34*7323adacSDevin Teskef_include $BSDCFG_SHARE/dialog.subr
35*7323adacSDevin Teskef_include $BSDCFG_SHARE/struct.subr
36*7323adacSDevin Teskef_include $BSDCFG_SHARE/variable.subr
37*7323adacSDevin Teskef_include $BSDCFG_SHARE/media/any.subr
38*7323adacSDevin Teskef_include $BSDCFG_SHARE/media/ftp.subr
39*7323adacSDevin Teske
40*7323adacSDevin TeskeBSDCFG_LIBE="/usr/libexec/bsdconfig"
41*7323adacSDevin Teskef_include_lang $BSDCFG_LIBE/include/messages.subr
42*7323adacSDevin Teske
43*7323adacSDevin TeskeOPTIONS_HELPFILE=$BSDCFG_LIBE/include/options.hlp
44*7323adacSDevin Teske
45*7323adacSDevin Teske############################################################ FUNCTIONS
46*7323adacSDevin Teske
47*7323adacSDevin Teske# f_media_options_menu
48*7323adacSDevin Teske#
49*7323adacSDevin Teske# Prompt the user to confirm/edit various media settings. Returns success.
50*7323adacSDevin Teske#
51*7323adacSDevin Teskef_media_options_menu()
52*7323adacSDevin Teske{
53*7323adacSDevin Teske	f_dialog_title "$msg_options_editor"
54*7323adacSDevin Teske	local title="$DIALOG_TITLE" btitle="$DIALOG_BACKTITLE"
55*7323adacSDevin Teske	f_dialog_title_restore
56*7323adacSDevin Teske	local prompt=""
57*7323adacSDevin Teske	local hline="$hline_arrows_tab_enter"
58*7323adacSDevin Teske	local menu_list size cp
59*7323adacSDevin Teske
60*7323adacSDevin Teske	#
61*7323adacSDevin Teske	# A hack so that the dialogs below are always interactive in a script
62*7323adacSDevin Teske	#
63*7323adacSDevin Teske	local old_interactive=
64*7323adacSDevin Teske	if ! f_interactive; then
65*7323adacSDevin Teske		f_getvar $VAR_NONINTERACTIVE old_interactive
66*7323adacSDevin Teske		unset $VAR_NONINTERACTIVE
67*7323adacSDevin Teske	fi
68*7323adacSDevin Teske
69*7323adacSDevin Teske	while :; do
70*7323adacSDevin Teske		menu_list=""
71*7323adacSDevin Teske
72*7323adacSDevin Teske		f_getvar $VAR_NFS_SECURE cp
73*7323adacSDevin Teske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
74*7323adacSDevin Teske			' $msg_nfs_secure' 'YES'
75*7323adacSDevin Teske			    '$msg_nfs_server_talks_only_on_a_secure_port'"
76*7323adacSDevin Teske		else menu_list="$menu_list
77*7323adacSDevin Teske			' $msg_nfs_secure' 'NO'
78*7323adacSDevin Teske			    '$msg_nfs_server_talks_only_on_a_secure_port'"
79*7323adacSDevin Teske		fi
80*7323adacSDevin Teske
81*7323adacSDevin Teske		f_getvar $VAR_SLOW_ETHER cp
82*7323adacSDevin Teske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
83*7323adacSDevin Teske			' $msg_nfs_slow' 'YES'
84*7323adacSDevin Teske			    '$msg_user_is_using_a_slow_pc_or_ethernet_card'"
85*7323adacSDevin Teske		else menu_list="$menu_list
86*7323adacSDevin Teske			' $msg_nfs_slow' 'NO'
87*7323adacSDevin Teske			    '$msg_user_is_using_a_slow_pc_or_ethernet_card'"
88*7323adacSDevin Teske		fi
89*7323adacSDevin Teske
90*7323adacSDevin Teske		f_getvar $VAR_NFS_TCP cp
91*7323adacSDevin Teske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
92*7323adacSDevin Teske			' $msg_nfs_tcp' 'YES' '$msg_use_tcp_protocol_for_nfs'"
93*7323adacSDevin Teske		else menu_list="$menu_list
94*7323adacSDevin Teske			' $msg_nfs_tcp' 'NO' '$msg_use_tcp_protocol_for_nfs'"
95*7323adacSDevin Teske		fi
96*7323adacSDevin Teske
97*7323adacSDevin Teske		f_getvar $VAR_NFS_V3 cp
98*7323adacSDevin Teske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
99*7323adacSDevin Teske			' $msg_nfs_version_3' 'YES' '$msg_use_nfs_version_3'"
100*7323adacSDevin Teske		else menu_list="$menu_list
101*7323adacSDevin Teske			' $msg_nfs_version_3' 'NO' '$msg_use_nfs_version_3'"
102*7323adacSDevin Teske		fi
103*7323adacSDevin Teske
104*7323adacSDevin Teske		f_getvar $VAR_DEBUG cp
105*7323adacSDevin Teske		if [ "$cp" ]; then menu_list="$menu_list
106*7323adacSDevin Teske			' $msg_debugging' 'YES'
107*7323adacSDevin Teske			    '$msg_emit_extra_debugging_output'"
108*7323adacSDevin Teske		else menu_list="$menu_list
109*7323adacSDevin Teske			' $msg_debugging' 'NO'
110*7323adacSDevin Teske			    '$msg_emit_extra_debugging_output'"
111*7323adacSDevin Teske		fi
112*7323adacSDevin Teske
113*7323adacSDevin Teske		f_getvar $VAR_TRY_DHCP cp
114*7323adacSDevin Teske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
115*7323adacSDevin Teske			' $msg_dhcp' 'YES'
116*7323adacSDevin Teske			    '$msg_attempt_automatic_dhcp_configuration'"
117*7323adacSDevin Teske		else menu_list="$menu_list
118*7323adacSDevin Teske			' $msg_dhcp' 'NO'
119*7323adacSDevin Teske			    '$msg_attempt_automatic_dhcp_configuration'"
120*7323adacSDevin Teske		fi
121*7323adacSDevin Teske
122*7323adacSDevin Teske		f_getvar $VAR_TRY_RTSOL cp
123*7323adacSDevin Teske		if [ "$cp" = "YES" ]; then menu_list="$menu_list
124*7323adacSDevin Teske			' $msg_ipv6' 'YES'
125*7323adacSDevin Teske			    '$msg_attempt_ipv6_configuration_of_interfaces'"
126*7323adacSDevin Teske		else menu_list="$menu_list
127*7323adacSDevin Teske			' $msg_ipv6' 'NO'
128*7323adacSDevin Teske			    '$msg_attempt_ipv6_configuration_of_interfaces'"
129*7323adacSDevin Teske		fi
130*7323adacSDevin Teske
131*7323adacSDevin Teske		f_getvar $VAR_FTP_USER cp
132*7323adacSDevin Teske		menu_list="$menu_list
133*7323adacSDevin Teske			' $msg_ftp_username' '$cp'
134*7323adacSDevin Teske			    '$msg_username_and_password_to_use'"
135*7323adacSDevin Teske
136*7323adacSDevin Teske		f_getvar $VAR_EDITOR cp
137*7323adacSDevin Teske		menu_list="$menu_list
138*7323adacSDevin Teske			' $msg_editor' '$cp' '$msg_which_text_editor_to_use'"
139*7323adacSDevin Teske
140*7323adacSDevin Teske		f_getvar $VAR_RELNAME cp
141*7323adacSDevin Teske		menu_list="$menu_list
142*7323adacSDevin Teske			' $msg_release_name' '$cp'
143*7323adacSDevin Teske			    '$msg_which_release_to_attempt_to_load'"
144*7323adacSDevin Teske
145*7323adacSDevin Teske		if f_struct device_media; then
146*7323adacSDevin Teske			device_media get type cp
147*7323adacSDevin Teske			case "$cp" in
148*7323adacSDevin Teske			$DEVICE_TYPE_UFS|$DEVICE_TYPE_DISK)
149*7323adacSDevin Teske				cp="$msg_file_system";;
150*7323adacSDevin Teske			$DEVICE_TYPE_DIRECTORY)
151*7323adacSDevin Teske				cp="$msg_directory";;
152*7323adacSDevin Teske			$DEVICE_TYPE_FLOPPY)
153*7323adacSDevin Teske				cp="$msg_floppy";;
154*7323adacSDevin Teske			$DEVICE_TYPE_FTP)
155*7323adacSDevin Teske				cp="$msg_ftp";;
156*7323adacSDevin Teske			$DEVICE_TYPE_HTTP_PROXY)
157*7323adacSDevin Teske				cp="$msg_http_proxy";;
158*7323adacSDevin Teske			$DEVICE_TYPE_CDROM)
159*7323adacSDevin Teske				cp="$msg_cdrom";;
160*7323adacSDevin Teske			$DEVICE_TYPE_USB)
161*7323adacSDevin Teske				cp="$msg_usb";;
162*7323adacSDevin Teske			$DEVICE_TYPE_DOS)
163*7323adacSDevin Teske				cp="$msg_dos";;
164*7323adacSDevin Teske			$DEVICE_TYPE_NFS)
165*7323adacSDevin Teske				cp="$msg_nfs";;
166*7323adacSDevin Teske			*)
167*7323adacSDevin Teske				cp="<$msg_unknown>"
168*7323adacSDevin Teske			esac
169*7323adacSDevin Teske		else
170*7323adacSDevin Teske			cp="<$msg_not_yet_set>"
171*7323adacSDevin Teske		fi
172*7323adacSDevin Teske		menu_list="$menu_list
173*7323adacSDevin Teske			' $msg_media_type' '$cp'
174*7323adacSDevin Teske			    '$msg_the_current_installation_media_type'"
175*7323adacSDevin Teske
176*7323adacSDevin Teske		f_getvar $VAR_MEDIA_TIMEOUT cp
177*7323adacSDevin Teske		menu_list="$menu_list
178*7323adacSDevin Teske			' $msg_media_timeout' '$cp'
179*7323adacSDevin Teske			    '$msg_timeout_value_in_seconds_for_slow_media'"
180*7323adacSDevin Teske
181*7323adacSDevin Teske		menu_list="$menu_list
182*7323adacSDevin Teske			' $msg_rescan_devices' '<*>'
183*7323adacSDevin Teske			    '$msg_rerun_bsdconfig_initial_device_probe'
184*7323adacSDevin Teske			' $msg_use_defaults'   '[${msg_reset}]'
185*7323adacSDevin Teske			    '$msg_reset_all_values_to_startup_defaults'
186*7323adacSDevin Teske		" # END-QUOTE
187*7323adacSDevin Teske
188*7323adacSDevin Teske		size=$( eval f_dialog_menu_with_help_size \
189*7323adacSDevin Teske		        	\"\$title\"  \
190*7323adacSDevin Teske		        	\"\$btitle\" \
191*7323adacSDevin Teske		        	\"\$prompt\" \
192*7323adacSDevin Teske		        	\"\$hline\"  \
193*7323adacSDevin Teske		        	$menu_list   )
194*7323adacSDevin Teske
195*7323adacSDevin Teske		local dialog_menu
196*7323adacSDevin Teske
197*7323adacSDevin Teske		dialog_menu=$( eval $DIALOG \
198*7323adacSDevin Teske			--title \"\$title\"                  \
199*7323adacSDevin Teske			--backtitle \"\$btitle\"             \
200*7323adacSDevin Teske			--hline \"\$hline\"                  \
201*7323adacSDevin Teske			--item-help                          \
202*7323adacSDevin Teske			--ok-label \"\$msg_ok\"              \
203*7323adacSDevin Teske			--cancel-label \"\$msg_done\"        \
204*7323adacSDevin Teske			--help-button                        \
205*7323adacSDevin Teske			--help-label \"\$msg_help\"          \
206*7323adacSDevin Teske			${USE_XDIALOG:+--help \"\"}          \
207*7323adacSDevin Teske			--menu \"\$prompt\" $size $menu_list \
208*7323adacSDevin Teske			2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
209*7323adacSDevin Teske		)
210*7323adacSDevin Teske		local retval=$?
211*7323adacSDevin Teske		setvar DIALOG_MENU_$$ "$dialog_menu"
212*7323adacSDevin Teske
213*7323adacSDevin Teske		local mtag
214*7323adacSDevin Teske		mtag=$( f_dialog_menutag )
215*7323adacSDevin Teske		f_dprintf "retval=%s mtag=[%s]" $retval "$mtag"
216*7323adacSDevin Teske
217*7323adacSDevin Teske		if [ $retval -eq 2 ]; then
218*7323adacSDevin Teske			# The Help button was pressed
219*7323adacSDevin Teske			f_show_help "$OPTIONS_HELPFILE"
220*7323adacSDevin Teske			continue
221*7323adacSDevin Teske		elif [ $retval -ne 0 ]; then
222*7323adacSDevin Teske			break # to success
223*7323adacSDevin Teske		fi
224*7323adacSDevin Teske
225*7323adacSDevin Teske		case "$mtag" in
226*7323adacSDevin Teske		" $msg_nfs_secure")
227*7323adacSDevin Teske			f_getvar $VAR_NFS_SECURE cp
228*7323adacSDevin Teske			if [ "$cp" = "YES" ]; then
229*7323adacSDevin Teske				export $VAR_NFS_SECURE="NO"
230*7323adacSDevin Teske			else
231*7323adacSDevin Teske				export $VAR_NFS_SECURE="YES"
232*7323adacSDevin Teske			fi ;;
233*7323adacSDevin Teske		" $msg_nfs_slow")
234*7323adacSDevin Teske			f_getvar $VAR_SLOW_ETHER cp
235*7323adacSDevin Teske			if [ "$cp" = "YES" ]; then
236*7323adacSDevin Teske				export $VAR_SLOW_ETHER="NO"
237*7323adacSDevin Teske			else
238*7323adacSDevin Teske				export $VAR_SLOW_ETHER="YES"
239*7323adacSDevin Teske			fi ;;
240*7323adacSDevin Teske		" $msg_nfs_tcp")
241*7323adacSDevin Teske			f_getvar $VAR_NFS_TCP cp
242*7323adacSDevin Teske			if [ "$cp" = "YES" ]; then
243*7323adacSDevin Teske				export $VAR_NFS_TCP="NO"
244*7323adacSDevin Teske			else
245*7323adacSDevin Teske				export $VAR_NFS_TCP="YES"
246*7323adacSDevin Teske			fi ;;
247*7323adacSDevin Teske		" $msg_nfs_version_3")
248*7323adacSDevin Teske			f_getvar $VAR_NFS_V3 cp
249*7323adacSDevin Teske			if [ "$cp" = "YES" ]; then
250*7323adacSDevin Teske				export $VAR_NFS_V3="NO"
251*7323adacSDevin Teske			else
252*7323adacSDevin Teske				export $VAR_NFS_V3="YES"
253*7323adacSDevin Teske			fi ;;
254*7323adacSDevin Teske		" $msg_debugging")
255*7323adacSDevin Teske			if f_getvar $VAR_DEBUG cp && [ "$cp" ]; then
256*7323adacSDevin Teske				unset $VAR_DEBUG
257*7323adacSDevin Teske			else
258*7323adacSDevin Teske				export $VAR_DEBUG=1
259*7323adacSDevin Teske			fi ;;
260*7323adacSDevin Teske		" $msg_dhcp")
261*7323adacSDevin Teske			f_getvar $VAR_TRY_DHCP cp
262*7323adacSDevin Teske			if [ "$cp" = "YES" ]; then
263*7323adacSDevin Teske				export $VAR_TRY_DHCP="NO"
264*7323adacSDevin Teske			else
265*7323adacSDevin Teske				export $VAR_TRY_DHCP="YES"
266*7323adacSDevin Teske			fi ;;
267*7323adacSDevin Teske		" $msg_ipv6")
268*7323adacSDevin Teske			f_getvar $VAR_TRY_RTSOL cp
269*7323adacSDevin Teske			if [ "$cp" = "YES" ]; then
270*7323adacSDevin Teske				export $VAR_TRY_RTSOL="NO"
271*7323adacSDevin Teske			else
272*7323adacSDevin Teske				export $VAR_TRY_RTSOL="YES"
273*7323adacSDevin Teske			fi ;;
274*7323adacSDevin Teske		" $msg_ftp_username")
275*7323adacSDevin Teske			f_media_set_ftp_userpass ;;
276*7323adacSDevin Teske		" $msg_editor")
277*7323adacSDevin Teske			f_variable_get_value $VAR_EDITOR \
278*7323adacSDevin Teske			    "$msg_please_specify_the_name_of_the_text_editor"
279*7323adacSDevin Teske			;;
280*7323adacSDevin Teske		" $msg_release_name")
281*7323adacSDevin Teske			f_variable_get_value $VAR_RELNAME \
282*7323adacSDevin Teske			    "$msg_please_specify_the_release_you_wish_to_load"
283*7323adacSDevin Teske			;;
284*7323adacSDevin Teske		" $msg_media_type")
285*7323adacSDevin Teske			f_media_get_type ;;
286*7323adacSDevin Teske		" $msg_media_timeout")
287*7323adacSDevin Teske			f_variable_get_value $VAR_MEDIA_TIMEOUT \
288*7323adacSDevin Teske			    "$msg_please_specify_the_number_of_seconds_to_wait"
289*7323adacSDevin Teske			;;
290*7323adacSDevin Teske		" $msg_rescan_devices")
291*7323adacSDevin Teske			f_device_rescan ;;
292*7323adacSDevin Teske		" $msg_use_defaults")
293*7323adacSDevin Teske			f_variable_set_defaults ;;
294*7323adacSDevin Teske		esac
295*7323adacSDevin Teske	done
296*7323adacSDevin Teske
297*7323adacSDevin Teske	# Restore old VAR_NONINTERACTIVE if needed.
298*7323adacSDevin Teske	[ "$old_interactive" ] &&
299*7323adacSDevin Teske		setvar $VAR_NONINTERACTIVE "$old_interactive"
300*7323adacSDevin Teske
301*7323adacSDevin Teske	return $SUCCESS
302*7323adacSDevin Teske}
303*7323adacSDevin Teske
304*7323adacSDevin Teske############################################################ MAIN
305*7323adacSDevin Teske
306*7323adacSDevin Teskef_dprintf "%s: Successfully loaded." media/options.subr
307*7323adacSDevin Teske
308*7323adacSDevin Teskefi # ! $_MEDIA_OPTIONS_SUBR
309