#!/bin/bash
if [ "$(cat /proc/cpuinfo | grep 'Raspberry')" != "" ]; then
#menu-wifi
sudo cat > /bin/menu-wifi-manager <<- "EOF"
#!/bin/bash
if [ "$(cat /proc/cpuinfo | grep 'Raspberry')" != "" ]; then
while :
do
    choix=$(whiptail --title "WiFi Mannager" --menu "Selecciona una opción:" 15 60 9 \
    1 "Mostrar redes Wi-Fi cercanas" \
    2 "Mostrar redes Wi-Fi almacenadas" \
    3 "Agregar nueva red Wi-Fi" \
    4 "Editar red Wi-Fi existente" \
    5 "Borrar red Wi-Fi" \
    6 "WiFi Signal Meter (wavemon)" \
    7 "IP Tools Manager" \
    8 "Auto AP mode" \
    9 "Salir" 3>&1 1>&2 2>&3)

    exitstatus=$?

    if [ $exitstatus = 0 ]; then
        echo "Opción seleccionada:" $choix
    else
        echo "Has elegido cancelar. Saliendo..."
        break
    fi

    case $choix in
    1)
        echo "Scan redes WiFi:"
        wifi_scan=$(sudo iwlist wlan0 scan | grep ESSID | grep -oP '"\K[^"]+')
        formatted_wifi_scan=$(echo "$wifi_scan" | sed 's/"//g')
        whiptail --title "Scan Redes WiFi Cercanas" --msgbox "$formatted_wifi_scan" 15 60
        ;;
    2)
        echo "Mostrando redes WiFi almacenadas:"
        wifi_list=$(nmcli -t -f NAME,TYPE connection show | awk -F: '$2 == "802-11-wireless" {print $1}' | nl -s " ")
        whiptail --title "Redes WiFi Almacenadas"  --msgbox "$wifi_list" 15 60
        ;;
    3)
    ssid=""
    wpss=""
    if  [ -f "/tmp/ssid.txt" ]; then
      rm /tmp/ssid.txt
    fi
    if  [ -f "/tmp/wpss.txt" ]; then
      rm /tmp/wpss.txt
    fi
    whiptail --title "Agregar nueva red WiFi" --inputbox "Ingresa el SSID de la nueva red WiFi :" 10 60 2>/tmp/ssid.txt
    exitstatus=$?
    
    if [ $exitstatus != 0 ]; then
        echo "You chose cancel. Exiting..."
        exit 1  # Salir del script con un código de error
    fi
    
    ssid=$(cat /tmp/ssid.txt)

whiptail --title "Agregar nueva red WiFi" --inputbox "Ingresa password de $ssid :" 10 60 2>/tmp/wpss.txt
    exitstatus=$?
    
    if [ $exitstatus != 0 ]; then
        echo "You chose cancel. Exiting..."
        exit 1  # Salir del script con un código de error
    fi
    
    wpss=$(cat /tmp/wpss.txt)

    # Agregar la nueva red WiFi utilizando los comandos específicos
    nmcli connection add type wifi ifname wlan0 con-name "$ssid" ssid "$ssid"
    nmcli connection modify "$ssid" wifi-sec.key-mgmt wpa-psk
    nmcli connection modify "$ssid" wifi-sec.psk "$wpss"
    nmcli connection modify "$ssid" connection.autoconnect yes
    sudo systemctl stop NetworkManager
    sudo systemctl start NetworkManager

    echo "Nueva red WiFi agregada con éxito y habilitada en wlan0."
  #  read -p "Presiona Enter para continuar..."
    ;;
    4)
    if  [ -f "/tmp/wnn.txt" ]; then
      rm /tmp/wnn.txt
    fi
    if  [ -f "/tmp/new_password.txt" ]; then
      rm /tmp/new_password.txt
    fi
# Lee el archivo /tmp/wnn.txt y almacena las líneas en un array
nmcli -t -f NAME,TYPE connection show | awk -F: '$2 == "802-11-wireless" {print $1}' >> /tmp/wnn.txt
mapfile -t lines < /tmp/wnn.txt

# Construye el menú con whiptail y formatea las líneas
options=()
for ((i=0; i<${#lines[@]}; i++)); do
  options+=("$((i+1))" "${lines[i]}")
done

# Muestra el menú y guarda la selección
selection=$(whiptail --title "Editar red Wi-Fi existente" --menu "Selecciona red WiFi:" 18 50 10 "${options[@]}" 3>&1 1>&2 2>&3)

# Muestra la selección en el formato solicitado
if [ -n "$selection" ]; then
  index=$(echo "$selection" | cut -d" " -f1)
  formatted_line="${lines[index-1]}"
  whiptail --title "Editar red WiFi" --inputbox "Ingresa la nueva contraseña para '$formatted_line':" 10 60 2>/tmp/new_password.txt
            new_password=$(cat /tmp/new_password.txt)

            # Cambiar la contraseña de la red WiFi utilizando nmcli
            nmcli connection modify "$formatted_line" wifi-sec.psk "$new_password"
            sudo systemctl stop NetworkManager
            sudo systemctl start NetworkManager

            echo "Contraseña de la red WiFi '$formatted_line' actualizada con éxito."
    else
            echo "Número de red WiFi no válido."
        fi
 #   read -p "Presiona Enter para continuar..."
    ;;
    5)
#!/bin/bash
if  [ -f "/tmp/wnn.txt" ]; then
 rm /tmp/wnn.txt
fi
# Lee el archivo /tmp/wnn.txt y almacena las líneas en un array
nmcli -t -f NAME,TYPE connection show | awk -F: '$2 == "802-11-wireless" {print $1}' >> /tmp/wnn.txt
mapfile -t lines < /tmp/wnn.txt

# Construye el menú con whiptail y formatea las líneas
options=()
for ((i=0; i<${#lines[@]}; i++)); do
  options+=("$((i+1))" "${lines[i]}")
done

# Muestra el menú y guarda la selección
selection=$(whiptail --title "Borrar red Wi-Fi" --menu "Selecciona red WiFi:" 18 50 10 "${options[@]}" 3>&1 1>&2 2>&3)

# Muestra la selección en el formato solicitado
if [ -n "$selection" ]; then
  index=$(echo "$selection" | cut -d" " -f1)
  formatted_line="${lines[index-1]}"
  whiptail --title "Borrar red WiFi" --yesno "¿Estás seguro de que deseas borrar la red WiFi '$formatted_line'?" 10 60
if [ $? -eq 0 ]; then
                # Eliminar la red WiFi utilizando nmcli
                nmcli connection delete "$formatted_line"
                echo "Red WiFi '$formatted_line' eliminada con éxito."
            else
                echo "No se ha eliminado ninguna red WiFi."
            fi
        else
            echo "Número de red WiFi no válido."
        fi
#    read -p "Presiona Enter para continuar..."
    ;;
    6)
    sudo wavemon ;;
    7)
    menu-ip ;;
    8)
        options=""
    options=$(whiptail --title "Auto AP mode" --menu "Select mode:" 10 60 2 \
    "1" "Disable auto AP mode" \
    "2" "Enable auto AP mode" 3>&1 1>&2 2>&3)
    
    if [ $? != 0 ]; then
        echo "You chose cancel. Returning to main menu."
        continue  # Regresar al inicio del bucle sin procesar el resto del caso 1
    fi

    case "$options" in
    "1")
        if systemctl status autoap.service | grep "Active: active" >/dev/null 2>&1
        then 
           sudo systemctl stop autoap.service
        fi
        if systemctl status autoap.service | grep "service; enabled;" >/dev/null 2>&1
        then 
            sudo systemctl disable autoap.service
        fi
        cd /opt/wc
        docker-compose down
        network_name="WiFi Connect"
        nmcli connection show "$network_name" &>/dev/null && nmcli connection delete "$network_name" &>/dev/null
        ;;
    "2")
        if ! systemctl status autoap.service | grep "Active: active" >/dev/null 2>&1
        then 
           sudo systemctl stop autoap.service
           sudo systemctl start autoap.service
        fi
        if ! systemctl status autoap.service | grep "service; enabled;" >/dev/null 2>&1
        then 
            sudo systemctl enable autoap.service
        fi
        ;;
    *)
        echo "Invalid selection"
        ;;
    esac
    ;;
    9)
        break
        ;;
    esac
done

exit 0
else 
  whiptail --title "WiFi Mannager" --msgbox "Esta opcion solo esta disponible para Raspberry / This option is only available for Raspberry" 0 50
        exit 0
fi

EOF
#
chmod +x /bin/menu-wifi-manager
ln -sf /bin/menu-wifi-manager /bin/MENU-WIFI-MANAGER
chmod +x /bin/MENU*
############
fi