# License: This file is licensed under the GPL v2.
################################################################################
+# shellcheck disable=SC1091
. /etc/grml/script-functions
check4root || exit 1
if [ -z "$NONINTERACTIVE" ] ; then
NEW_HOSTNAME="$(dialog --stdout --title "${PN}" --extra-button --extra-label "Propose hostname" \
--inputbox "Set hostname (/etc/hostname, /etc/hosts and /etc/postfix/main.cf will be adjusted)\
-\n\nTip: press 'Propose hostname' for another proposal" 14 70 $NEW_HOSTNAME)"
+\\n\\nTip: press 'Propose hostname' for another proposal" 14 70 "$NEW_HOSTNAME")"
retval=$?
else
retval=0
fi
+# stupid + simplified checking for valid hostname (according to RFC 952)
+VALIDATE=$(echo "$NEW_HOSTNAME" | tr --delete '[:alnum:]-')
+if [ -n "$VALIDATE" ] ; then
+ if [ -z "$NONINTERACTIVE" ] ; then
+ dialog --title "${PN}" \
+ --msgbox "Error: invalid characters specified in hostname: '$VALIDATE' can not be used inside hostnames." \
+ 0 0
+ exec "$0"
+ else
+ echo "Error: invalid characters specified in hostname: '$VALIDATE' can not be used inside hostnames." >&2
+ exit 1
+ fi
+fi
+
case $retval in
0)
echo "$NEW_HOSTNAME" > /etc/hostname
echo "$NEW_HOSTNAME" > /etc/mailname
- sed -i "s/^127.0.0.1[ \t]*$OLDHOSTNAME[ \t]*localhost/127.0.0.1 $NEW_HOSTNAME localhost/" /etc/hosts
- sed -i "s/^::1[ \t]*ip6-localhost ip6-loopback[ \t]*$OLDHOSTNAME/::1 ip6-localhost ip6-loopback $NEW_HOSTNAME/" /etc/hosts
+ # shellcheck disable=SC1117
+ sed -ir "s/^\(127.0.0.1\s*\).*localhost.*/\1$NEW_HOSTNAME localhost/" /etc/hosts
+ # shellcheck disable=SC1117
+ sed -ir "s/^\(::1\s*\).*ip6-localhost.*/\1ip6-localhost ip6-loopback $NEW_HOSTNAME/" /etc/hosts
+
POSTFIX=''
if [ -r /etc/postfix/main.cf ] ; then
sed -i "s/^mydestination = .*/mydestination = $NEW_HOSTNAME, localhost, localhost.localdomain/" /etc/postfix/main.cf && \
sed -i "s/^myhostname = .*/myhostname = $NEW_HOSTNAME/" /etc/postfix/main.cf && POSTFIX='
Configuration of myhostname in /etc/postfix/main.cf has been adjusted as well. Do not forget to restart postfix if necessary.'
fi
+
if [ -n "$DISPLAY" ] ; then
- if sudo -u $RUNASUSER xauth add $(xauth -n list | grep "${OLDHOSTNAME}/unix:0" | sed "s|${OLDHOSTNAME}/unix:0|${NEW_HOSTNAME}/unix:0|") ; then
+ if sudo -u $RUNASUSER xauth add "$(xauth -n list | grep "${OLDHOSTNAME}/unix:0" | sed "s|${OLDHOSTNAME}/unix:0|${NEW_HOSTNAME}/unix:0|")" ; then
sudo -u $RUNASUSER xauth remove "${OLDHOSTNAME}/unix:0"
fi
fi
- /etc/init.d/hostname.sh
+ if [ -x /etc/init.d/avahi-daemon ] && pgrep avahi-daemon >/dev/null ; then
+ /etc/init.d/avahi-daemon restart
+ fi
+
+ hostname "$NEW_HOSTNAME"
if [ -z "$NONINTERACTIVE" ] ; then
dialog --stdout --title "${PN}" --msgbox "Setting hostname to $NEW_HOSTNAME was successful.$POSTFIX" 0 0