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