X-Git-Url: http://git.ipfire.org/?p=ipfire-2.x.git;a=blobdiff_plain;f=src%2Fscripts%2Fconvert-dns-settings;fp=src%2Fscripts%2Fconvert-dns-settings;h=fe4089ca3e3bf9623b999ff6c6a7cfbdb075ba48;hp=f70d1382a33bbec59f97f5d30456e2a82e62c235;hb=5d6ccc7a43d0f262a26dea4c510407861b9d9640;hpb=d3236de23a139dbcf5b66f0ed1d6731801a9c106 diff --git a/src/scripts/convert-dns-settings b/src/scripts/convert-dns-settings index f70d1382a3..fe4089ca3e 100755 --- a/src/scripts/convert-dns-settings +++ b/src/scripts/convert-dns-settings @@ -23,55 +23,33 @@ main() { # Do not convert anything if we already have some servers set if [ ! -s "/var/ipfire/dns/servers" ]; then # Array to store all found DNS servers. - SERVERS=() - - # Try to get the DNS servers from ethernet settings file. - local DNS1 DNS2 - eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings) - - # Add the grabbed DNS servers to the servers array. - SERVERS+=($DNS1 $DNS2) - - # Check if the ppp settings file is not empty. - if [ -s "/var/ipfire/ppp/settings" ]; then - # Loop though all profile files. - for file in /var/ipfire/ppp/settings*; do - local DNS1 DNS2 - eval $(/usr/local/bin/readhash $file) - - # Add the DNS servers to the array of SERVERS. - for var in DNS1 DNS2; do - local server="${!var}" - - # Check if the servers array is empty. - if [ ${#SERVERS[@]} -eq 0 ]; then - # Allways add the first found nameserver to the array. - SERVERS+=($server) - else - # Check if the current server is allready part ot the array. - if [[ ! "${SERVERS[@]}" =~ "${server}" ]]; then - # Add the server to the array. - SERVERS+=($server) - fi - fi + local SERVERS=() + + # Loop through all PPP profiles + local file + for file in /var/ipfire/ethernet/settings /var/ipfire/dns/settings /var/ipfire/ppp/settings-*; do + if [ -s "${file}" ]; then + local DNS0 DNS1 DNS2 + eval $(/usr/local/bin/readhash "${file}") + + # Add the DNS servers to the array of SERVERS + local var + for var in DNS0 DNS1 DNS2; do + SERVERS+=( "${!var}" ) done - # Remove DNS1 and DNS2 settings from profile file. - sed -i "/^DNS[12]=/d" $file - - # Unset the local variables for the next round. - unset DNS1 DNS2 - done - - elif [ -s "/var/ipfire/dns/settings" ]; then - eval $(/usr/local/bin/readhash /var/ipfire/dns/settings) - fi + # Remove DNS0, DNS1 and DNS2 settings from profile file + sed -i "/^DNS[012]=/d" "${file}" + fi + done local server local i=3 - for server in "${SERVERS[@]}"; do - echo "${i},${server},,enabled," - (( i++ )) + for server in $(printf "%s\n" "${SERVERS[@]}" | sort -u); do + if [ -n "${server}" ]; then + echo "${i},${server},,enabled," + (( i++ )) + fi done > /var/ipfire/dns/servers # Empty the old settings file