#!/bin/bash # # Variables # TEMP=/tmp/dnse/dnse.$$ # # Remove temporary files and exit script # clean_up() { # rm -f /tmp/dnse.* # rm -f /tmp/dnse_input.* # rm -f /tmp/dnse_input2.* rm -rf /tmp/dnse exit } # # Edit the DNS settings # edit_dns() { dialog --nocancel \ --backtitle "DNS Editor v1.0" \ --title "Edit DNS settings" \ --menu "Use [UP] [DOWN] to move, [ENTER] to select and [ESC] to exit. \ Doing this will over write your current /etc/resolv.conf. Only do these steps if you're sure you wish to do so" 20 40 4 \ Stored "Use stored settings" \ New "Change to new settings" \ Main "Go back to the main menu" \ Exit "Exit the script" 2>$TEMP OPT=$? SELECT=`cat $TEMP` case $OPT in 0) case $SELECT in Stored) if [ $(id -u) != "0" ]; then dialog --backtitle "DNS Editor v1.0" \ --title "Alert : Root Required!" \ --yesno "You are currently not running as root! This feature is unavailable. Please exit and rerun this script to enable this feature. \ Would you like to exit?" 6 80 SEL=$? case $SEL in 0) clean_up;; 1) edit_dns;; esac else if [ -e $HOME/.dnseditor ] ; then cp ~/.dnseditor /etc/resolv.conf dialog --backtitle "DNS Editor v1.0" \ --title "Copying settings" \ --infobox "Copying stored DNS settings to /etc/resolv.conf" 5 40 else dialog --backtitle "DNS Editor v1.0" \ --title "Error" \ --infobox "Could not find ~/.dnseditor. Please go to create new settings and select the save option!" 8 40 fi fi sleep 1s edit_dns;; New) if [ $(id -u) != "0" ]; then dialog --backtitle "DNS Editor v1.0" \ --title "Alert : Root Required!" \ --yesno "You are currently not running as root! This feature is unavailable. Please exit and rerun this script as root to enable this feature. \ Would you like to exit?" 6 80 SEL=$? case $SEL in 0) clean_up;; 1) edit_dns;; esac else dialog --nocancel \ --backtitle "DNS Editor v1.0" \ --title "DNS Server #1" \ --inputbox "Enter 1st DNS setting" 8 40 2>/tmp/dnse/input.$$ SEL=$? NA=`cat /tmp/dnse/input.$$` case $SEL in 0) dialog --extra-button \ --extra-label "Save" \ --nocancel \ --backtitle "DNS Editor v1.0" \ --title "DNS server #2" \ --inputbox "Enter 2nd DNS setting" 8 40 2>/tmp/dnse/input2.$$ SEL=$? NA1=`cat /tmp/dnse/input2.$$` case $SEL in 0) `echo "nameserver $NA" > /etc/resolv.conf` `echo "nameserver $NA1" >> /etc/resolv.conf` dialog --backtitle "DNS Editor v1.0" \ --title "Copying DNS settings" \ --infobox "Copying new settings to /etc/resolv.conf. Please wait.\n$NA\n$NA1" 8 40 sleep 1s;; 3) `echo "nameserver $NA" > $HOME/.dnseditor` `echo "nameserver $NA1" >> $HOME/.dnseditor` cp $HOME/.dnseditor /etc/resolv.conf dialog --backtitle "DNS Editor v1.0" \ --title "Saving" \ --infobox "Saving and setting your current settings of \n$NA\n$NA1" 8 40 sleep 1s;; esac esac edit_dns fi sleep 1s edit_dns;; Main) main_menu;; Exit) clean_up;; esac;; 255) clean_up;; esac } # # View the current DNS settings # view_dns() { CURRENT=`cat /etc/resolv.conf` dialog --backtitle "DNS Editor v1.0" \ --title "Current DNS settings" \ --infobox "Your current DNS settings are:\n$CURRENT" 6 35 sleep 2s main_menu } # # The main menu of the script # main_menu() { dialog --nocancel \ --backtitle "DNS Editor v1.0" \ --title "Main Menu" \ --menu "Use [UP] [DOWN] to move, [ENTER] to select and [ESC] to exit" 20 40 3 \ View "View the current DNS settings" \ Edit "Edit the DNS settings" \ Exit "Exit the script" 2>$TEMP OPT=$? SELECT=`cat $TEMP` case $OPT in 0) case $SELECT in View) view_dns;; Edit) edit_dns;; Exit) clean_up;; esac;; 255) clean_up;; esac } # # Check if the user is running the script as root # mkdir /tmp/dnse if [ $(id -u) != "0" ]; then dialog --backtitle "DNS Editor v1.0" \ --title "Alert : Root Required" \ --yesno "\nYou are currently not running as root! Some features in this script will not be usable. Would you like to continue anyway?" 8 60 SEL=$? case $SEL in 0) main_menu;; 1) clean_up;; 255) clean_up;; esac else main_menu fi