diff options
-rwxr-xr-x | setup-hostname.in | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/setup-hostname.in b/setup-hostname.in index b1c2379..f97f487 100755 --- a/setup-hostname.in +++ b/setup-hostname.in @@ -5,9 +5,33 @@ PREFIX= . $PREFIX/lib/libalpine.sh -HOST=`hostname` -echon "Enter system hostname (short form, e.g. 'foo') [$HOST]: " -default_read HOST `hostname` +# http://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names +valid_hostname() { + # check length + if [ $(echo "$1" | wc -c) -gt 63 ]; then + echo "Hostname '$1' is too long." + return 1 + fi + # check that it only contains valid chars + if ! [ -z "$(echo $1 | sed 's/[0-9a-z-]//g')" ]; then + echo "Hostname must only contain letters (a-z), digits (0-9) or -" + return 1 + fi + # must not start with - + case "$1" in + -*) echo "Hostname must not start with a '-'"; return 1;; + esac + return 0 +} + +while true; do + HOST=`hostname` + echon "Enter system hostname (short form, e.g. 'foo') [$HOST]: " + default_read HOST `hostname` + if valid_hostname "$HOST"; then + break + fi +done mkdir -p "$ROOT/etc" echo "$HOST" > "$ROOT/etc/hostname" |