[Ovirt-devel] [PATCH] Prevents duplicate DNS and NTP server entries.
Mike Burns
mburns at redhat.com
Wed Mar 24 19:50:06 UTC 2010
On Wed, 2010-03-24 at 15:18 -0400, Darryl L. Pierce wrote:
> Checks any entered address for DNS and NTP servers against previously
> entered ones in order to prevent duplicates.
>
> Resolves: rhbz#555373
>
> Signed-off-by: Darryl L. Pierce <dpierce at redhat.com>
> ---
> scripts/ovirt-config-networking | 47 +++++++++++++++++++++++++-------------
> scripts/ovirt-functions | 7 +++++
> 2 files changed, 38 insertions(+), 16 deletions(-)
>
> diff --git a/scripts/ovirt-config-networking b/scripts/ovirt-config-networking
> index 6c2bd21..4d412ac 100755
> --- a/scripts/ovirt-config-networking
> +++ b/scripts/ovirt-config-networking
> @@ -357,8 +357,9 @@ function configure_dns
> for dns in first second; do
> while true; do
> printf "\n"
> - read -ep "Please enter the ${dns} DNS server (or ENTER to exit): "
> - if [[ -z "${REPLY}" ]]; then
> + read -erp "Please enter the ${dns} DNS server (or ENTER to exit): "
> + local ADDRESS=$(trim_whitespace $REPLY)
> + if [[ -z "${ADDRESS}" ]]; then
> if [[ -z "${DNS}" ]]; then
> printf "\nAborted...\n"
> return
> @@ -366,15 +367,20 @@ function configure_dns
> break
> fi
> fi
> - if is_valid_ipv4 $REPLY; then
> + if is_valid_ipv4 $ADDRESS; then
> if [[ -z "${DNS}" ]]; then
> - DNS="${REPLY}"
> - elif [[ -n "${REPLY}" ]]; then
> - DNS="${DNS}:${REPLY}"
> + DNS="${ADDRESS}"
> + break
> + elif [[ -n "${ADDRESS}" ]]; then
> + if [[ ! $DNS =~ "${ADDRESS}" ]]; then
> + DNS="${DNS}:${ADDRESS}"
> + break
> + else
> + printf "${ADDRESS} is already defined as a DNS server.\n"
> + fi
> fi
> - break
> else
> - printf "${REPLY} is an invalid address.\n"
> + printf "${ADDRESS} is an invalid address.\n"
> fi
> done
> done
> @@ -403,19 +409,28 @@ function configure_ntp
> {
> local AUTO=$2
> if [[ "$AUTO" == "AUTO" && -n "$OVIRT_NTP" ]]; then
> - NTPSERVERS=$OVIRT_NTP
> + NTPSERVERS=$OVIRT_NTP
> else
> - NTPSERVERS=""
> + NTPSERVERS=""
> fi
>
> if [ -z "$AUTO" ]; then
> if has_configured_interface true; then
> - while true; do
> - read -ep "Enter an NTP server (hit return when finished): "
> + while true; do
> + read -rp "Enter an NTP server (hit return when finished): "
> + local ADDRESS=$(trim_whitespace $REPLY)
>
> - if [ -z "$REPLY" ]; then break; fi
> - NTPSERVERS="${NTPSERVERS}:${REPLY}"
> - done
> + if [ -z "${ADDRESS}" ]; then break; fi
> + if is_valid_ipv4 $ADDRESS; then
> + if [[ ! $NTPSERVERS =~ $ADDRESS ]]; then
> + NTPSERVERS="${NTPSERVERS}:${ADDRESS}"
> + else
> + printf "${ADDRESS} is already defined as an NTP server.\n"
> + fi
> + else
> + printf "${ADDRESS} is an invalid address.\n"
> + fi
> + done
> fi
> fi
> }
> diff --git a/scripts/ovirt-functions b/scripts/ovirt-functions
> index 482441a..d8aa008 100644
> --- a/scripts/ovirt-functions
> +++ b/scripts/ovirt-functions
> @@ -665,6 +665,13 @@ add_if_not_exist() {
> || echo "$string" >> "$file"
> }
>
> +# $1 - the string to be trimmed
> +trim_whitespace () {
> + local text=${1}
> +
> + printf "$text" | awk '{gsub(/^[ ]*/,"",$0); gsub(/[ ]*$/,"",$0) ; print }'
> +}
> +
> is_numeric() {
> printf "$1" | grep -q -E '^[0-9]+$'
> }
ACK
More information about the ovirt-devel
mailing list