#!/bin/sh

iface="wlan0"
passfile="$HOME/.wifi_passwords"

if [ "$1" = "off" ]; then
    echo "🔌 Disconnessione da Wi-Fi..."
    killall wpa_supplicant 2>/dev/null
    killall udhcpc 2>/dev/null
    ifconfig "$iface" down
    echo "✅ Wi-Fi disattivato"
    exit 0
fi

# 🔄 Reset dell'interfaccia
echo "🔄 Reset $iface..."
killall wpa_supplicant 2>/dev/null
killall udhcpc 2>/dev/null
ifconfig "$iface" down
sleep 1
ifconfig "$iface" up
sleep 1

# 🔍 Scansione reti
ssids=$(iw dev "$iface" scan | awk -F: '/SSID:/ {print $2}' | sed '/^\s*$/d' | uniq)
[ -z "$ssids" ] && { echo "❌ Nessuna rete trovata."; exit 1; }

# 📋 Mostra le reti con numeri
i=0
echo "📡 Reti Wi-Fi trovate:"
for ssid in $ssids; do
    echo "$i) $ssid"
    eval "ssid_$i=\"$ssid\""
    i=$((i + 1))
done

# 📥 Scelta
printf "Scegli una rete (numero): "
read -r scelta
ssid=$(eval echo "\$ssid_$scelta")
[ -z "$ssid" ] && { echo "❌ Scelta non valida."; exit 1; }

# 🔐 Password
psk=""
[ -f "$passfile" ] && psk=$(grep "^$ssid=" "$passfile" | cut -d= -f2-)
if [ -z "$psk" ]; then
    printf "Password per \"$ssid\": "
    read -r psk
    echo "$ssid=$psk" >> "$passfile"
fi

# 📝 Configurazione WPA temporanea
wpa_passphrase "$ssid" "$psk" > /etc/wpa_supplicant.conf

# 🚀 Avvio connessione
echo "🔌 Connessione a \"$ssid\"..."
wpa_supplicant -B -i "$iface" -c /etc/wpa_supplicant.conf || { echo "❌ Errore wpa_supplicant"; exit 1; }
sleep 3
udhcpc -i "$iface" && echo "✅ Connesso a $ssid" || echo "❌ DHCP fallito"
