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