ao-mud is a spellbook of well-commented atomic bash scripts that each do one thing. we are building semantic building blocks for an autonomously-evolving digital spellcasting language.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
3.9 KiB

configure_dhcp() {
# Ask for confirmation before proceeding
if ! ask_Yn "The spell of Dynamic Host Configuration Protocol will automatically configure your network settings based on the DHCP server. Would you like to proceed?"; then
return 1
fi
# Check if DHCP is already in use
if ip addr show | grep "dhclient" >/dev/null 2>&1 ; then
printf "DHCP is already in use.\n"
return 0
fi
# Backup the current network configuration
backup_file "/etc/network/interfaces"
# Configure the system to use DHCP
echo "auto lo" > /etc/network/interfaces
echo "iface lo inet loopback" >> /etc/network/interfaces
echo "auto eth0" >> /etc/network/interfaces
echo "iface eth0 inet dhcp" >> /etc/network/interfaces
service networking restart
printf "DHCP has been configured successfully.\n"
}
configure_static_ip() {
# Ask the user for the IP address, netmask, gateway, and DNS server
read -p "Enter the desired IP address: " ip_address
read -p "Enter the netmask (in CIDR notation, e.g. 24): " netmask
read -p "Enter the gateway IP: " gateway
read -p "Enter the DNS server IP: " dns_server
# Check if the static IP address is already configured
if ip addr show | grep -q "$ip_address/$netmask"; then
echo "The static IP address $ip_address/$netmask is already configured. Updating it."
# Delete the existing configuration
sudo ip addr del "$ip_address/$netmask" dev eth0
fi
# Add the new static IP address configuration
sudo ip addr add "$ip_address/$netmask" dev eth0
# Set the gateway
sudo ip route add default via "$gateway"
# Set the DNS server
sudo sed -i "s/^nameserver.*/nameserver $dns_server/" /etc/resolv.conf
echo "Static IP address configuration has been set to $ip_address/$netmask with gateway $gateway and DNS server $dns_server."
}
configure_dhcp() {
# Ask for confirmation before proceeding
ask_Yn "The spell of Dynamic Host Configuration Protocol will automatically configure your network settings based on the DHCP server. Would you like to proceed?"
if [ $? -ne 0 ]; then
return 1
fi
# Check if DHCP is already in use
ip addr show | grep "dhclient" &>/dev/null
if [ $? -eq 0 ]; then
echo -e "${RED}DHCP is already in use.${RESET}"
return 0
fi
# Backup the current network configuration
backup_file "/etc/network/interfaces"
# Configure the system to use DHCP
echo "auto lo" > /etc/network/interfaces
echo "iface lo inet loopback" >> /etc/network/interfaces
echo "auto eth0" >> /etc/network/interfaces
echo "iface eth0 inet dhcp" >> /etc/network/interfaces
service networking restart
echo -e "${GREEN}DHCP has been configured successfully.${RESET}"
}
display_menu() {
# Get the dimensions of the terminal window
window_width=$(tput cols)
window_height=$(tput lines)
# Calculate the number of rows that the menu will occupy
num_rows=$(( ${#items[@]}))
# Calculate the position of the menu
menu_x=$((0))
menu_y=$(row)
# Clear the area of the screen where the menu will be drawn
clear_area $menu_x $menu_y $num_rows $window_width
# Print the menu title
echo -en "\033[$menu_y;$((menu_x + (window_width / 2 - ${#title} / 2)))H$title"
# Print the items and commands
for i in "${!items[@]}"; do
echo -en "\033[$((menu_y + i + 1));$((menu_x + 2))H ${items[$i]}"
done
# Highlight the selected item
echo -en "\033[$((menu_y + selected + 1));$((menu_x + 2))H ${CYAN}${items[$selected]}${RESET}"
# Move the cursor to the selected item
echo -en "\033[$((menu_y + selected + 1));$((menu_x + 2))H"
}
display_menu() {
description="Please choose an option to configure your network settings"
options=("Configure static IP" "Configure DHCP" "Reset to DHCP" "Exit")
commands=("configure_static_ip" "configure_dhcp" "reset_dhcp" "exit")
menu "$description" "${options[@]}" "${commands[@]}"
}