#!/bin/bash
# wpa_tui, script for adding networks when you use systemd-networkd

RED='\e[41m'
BLUE='\e[44m'
ORANGE='\e[46m'
NC='\e[0m'

wireless_interface=$(networkctl | awk '/wlan/ {print $2}')
wpa_config_file=$(echo /etc/wpa_supplicant/wpa_supplicant-$(networkctl | awk '/wlan/ {print $2}').conf)

confirm () {
    # call with a prompt string or use a default
    read -r -p "${1:-Are you sure you want this? [y/N]} " response
    case $response in
        [yY][eE][sS]|[yY]) 
            true
            ;;
        *)
            false
            ;;
    esac
}

setup_networkd()
{
			sudo cp -i /usr/share/wpa_tui/wired.network /etc/systemd/network/wired.network
            sudo cp -i /usr/share/wpa_tui/wireless.network /etc/systemd/network/wireless.network
            sudo mv /etc/wpa_supplicant/wpa_supplicant-interface.conf /etc/wpa_supplicant/wpa_supplicant-$wireless_interface.conf
           	sudo mv /etc/resolv.conf /etc/resolv.conf.bak
			sudo systemctl enable systemd-networkd 
			sudo systemctl enable wpa_supplicant@$wireless_interface
			sudo systemctl enable systemd-resolved
			sudo systemctl start systemd-networkd
			sudo systemctl start wpa_supplicant@$wireless_interface
			sudo systemctl start systemd-resolved
			groups $USER | grep -q wheel || sudo -aG wheel $USER
			sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
}

undo_networkd_setup()
{
			[ -L /etc/resolv.conf ] && sudo rm /etc/resolv.conf 
			[ -e /etc/resolv.conf.bak ] && sudo mv -i /etc/resolv.conf.bak /etc/resolv.conf 
           	sudo rm /etc/systemd/network/wired.network
            sudo rm /etc/systemd/network/wireless.network
           	sudo systemctl disable systemd-networkd 
			sudo systemctl disable wpa_supplicant@$wireless_interface
			sudo systemctl disable systemd-resolved
			sudo systemctl stop systemd-networkd
			sudo systemctl stop wpa_supplicant@$wireless_interface
			sudo systemctl stop systemd-resolved
}

add_network()
{
chosen_network=$(wpa_cli scan_results | awk '!/^bssid/ {print $5}' | fzf-tmux --reverse --exit-0 --prompt="Select a network >")
network_password=$(read -s -p "Password for chosen network: " PASS; echo $PASS)
wpa_passphrase $chosen_network $network_password >> $wpa_config_file
#sudo sh -c "wpa_passphrase $chosen_network $network_password >> $wpa_config_file"
#nnumber=$(wpa_cli tail -n 1 /tmp/network_number)
#wpa_cli add_network > /tmp/network_number #-i $wpa_config_file
#wpa_cli set_network $nnumber ssid $chosen_network #-i $wpa_config_file
#wpa_cli set_network $nnumber psk $network_password #-i $wpa_config_file
}



main()
{
wpa_cli scan
    while true; do
    clear
    echo ""
    echo -e "                   ::wpa_tui:: "
    echo -e "┌──────────────────────────────────────────────────┐"
    echo -e "│ 1 Add a network           2 Show status          │"
    echo -e "│ 3 Edit configration       4 List configured      │"
    echo -e "│ 5 List available networks 6 Show interface status│"
    echo -e "│ 7 Auto-setup networkd     8 Don't use networkd   │"
    echo -e "└──────────────────────────────────────────────────┘"
    echo -e "       Select an item   -   0   Exit "
    echo ""
    read -s -n1 choix
    case $choix in
        1)
            echo
            add_network
            echo ""
            echo "Press any key to continue"
            read
            ;;
        2)
            echo
            wpa_cli status
            echo ""
            echo "Press any key to continue"
            read
            ;;
        3)
            echo
            sudo $EDITOR $wpa_config_file
            echo ""
            echo "Press any key to continue"
            read
            ;;
        4)
            echo
            wpa_cli list_networks
            echo ""
            echo "Press any key to continue"
            read
            ;;
        5)
            echo
            wpa_cli scan_results
            echo ""
            echo "Press any key to continue"
            read
            ;;

        6)
            echo
            networkctl -a --no-pager
            echo ""
            echo "Press any key to continue"
            read
            ;;
        7)
            echo
            echo "Make sure you don't have any other network services enabled"
            echo "(Networkmanager, connman, wicd or netctl)."
            echo "This item replaces your /etc/resov.conf with a symlink to"
            echo "/run/systemd/resolve/resolv.conf. It also enables systemd-networkd, "
            echo "systemd-resolvd and wpa_supplicant@$wireless_interface and creates"
            echo "two .network files in /etc/systemd/network/. Additionally, it"
            echo "adds you to wheel group (if necessary) so that you can add networks"
            echo "withou password"            
            confirm && setup_networkd
            echo ""
            echo "Press any key to continue"
            read
            ;;
        8)
            echo
            echo "This item removes the symlink from /etc/resov.conf and tries to restore"
            echo "your old resolv.conf from backup. It also disables systemd-networkd, "
            echo "systemd-resolvd and wpa_supplicant@$wireless_interface and removes"
            echo "the .network files created by this utility from /etc/systemd/network/."
            confirm && undo_networkd_setup
            echo ""
            echo "Press any key to continue"
            read
            ;;

        0)
            clear && exit
            read
            ;;
        *)
            echo -e "$RED Wrong option $NC"
            echo "Wait and try again later..."
            echo ""
            sleep 3
            clear
            ;;
    esac
    done

}

main
