xref: /freebsd/usr.sbin/bsdinstall/scripts/hostname (revision e44751530e04ef8326ff22c0d3f7d880c82d3395)
1 #!/bin/sh
2 #-
3 # Copyright (c) 2011 Nathan Whitehorn
4 # Copyright (c) 2015-2018 Devin Teske
5 # All rights reserved.
6 #
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
9 # are met:
10 # 1. Redistributions of source code must retain the above copyright
11 #    notice, this list of conditions and the following disclaimer.
12 # 2. Redistributions in binary form must reproduce the above copyright
13 #    notice, this list of conditions and the following disclaimer in the
14 #    documentation and/or other materials provided with the distribution.
15 #
16 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 # ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 # SUCH DAMAGE.
27 #
28 #
29 ############################################################ INCLUDES
30 
31 BSDCFG_SHARE="/usr/share/bsdconfig"
32 . $BSDCFG_SHARE/common.subr || exit 1
33 f_dprintf "%s: loading_includes..." "$0"
34 f_include $BSDCFG_SHARE/dialog.subr
35 
36 ############################################################ CONFIGURATION
37 
38 #
39 # Default value
40 #
41 : ${HOSTNAME=$( hostname )}
42 
43 #
44 # Default file to store hostname entry in
45 #
46 : ${HOSTNAMEFILE:=$BSDINSTALL_TMPETC/rc.conf.hostname}
47 
48 ############################################################ GLOBALS
49 
50 #
51 # Strings that should be moved to an i18n file and loaded with f_include_lang()
52 #
53 msg_freebsd_installer="$OSNAME Installer"
54 msg_ok="OK"
55 msg_please_choose_a_hostname="Please choose a hostname for this machine.\n\nIf you are running on a managed network, please ask\nyour network administrator for an appropriate name."
56 msg_set_hostname="Set Hostname"
57 
58 #
59 # Command strings for various tasks
60 #
61 ECHO_OVERWRITE='echo "%s" > "%s"'
62 SET_HOSTNAME='hostname -s "%s"'
63 
64 ############################################################ FUNCTIONS
65 
66 # dialog_hostname
67 #
68 # Display input box (without cancel button) for user to enter desired hostname.
69 #
70 dialog_hostname()
71 {
72 	local prompt="$msg_please_choose_a_hostname"
73 	local hline=
74 	local value="$*"
75 
76 	local height width
77 	f_dialog_inputbox_size height width \
78 		"$DIALOG_TITLE" "$DIALOG_BACKTITLE" "$prompt" "$value" "$hline"
79 
80 	$DIALOG \
81 		--title "$DIALOG_TITLE"         \
82 		--backtitle "$DIALOG_BACKTITLE" \
83 		--hline "$hline"                \
84 		--ok-label "$msg_ok"            \
85 		--no-cancel                     \
86 		--inputbox "$prompt"            \
87 		$height $width "$value"         \
88 		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
89 }
90 
91 ############################################################ MAIN
92 
93 #
94 # Initialize
95 #
96 f_dialog_title "$msg_set_hostname"
97 f_dialog_backtitle "$msg_freebsd_installer"
98 
99 #
100 # Get user input
101 #
102 HOSTNAME=$( dialog_hostname "$HOSTNAME" )
103 [ $? -eq $DIALOG_CANCEL ] && exit 1
104 
105 #
106 # Store the user's choice
107 #
108 f_eval_catch "$pgm" echo "$ECHO_OVERWRITE" \
109 	'hostname=\"$HOSTNAME\"' "$HOSTNAMEFILE"
110 retval=$?
111 
112 #
113 # Activate entry if configured
114 #
115 if [ "$BSDINSTALL_CONFIGCURRENT" ]; then
116 	f_eval_catch "$pgm" hostname "$SET_HOSTNAME" "$HOSTNAME"
117 	retval=$?
118 fi
119 
120 exit $retval
121 
122 ################################################################################
123 # END
124 ################################################################################
125