#!/bin/bash
exit
WPA_SUPPLICANT=`which wpa_supplicant`
WPA_CLI=`which wpa_cli`
WPA_SUPPLICANT_CONF="/etc/wpa_supplicant/wpa_supplicant.conf"
WPA_SUPPLICANT_INFO="/etc/wpa_supplicant/run/wpa_supplicant"
WPA_WIRELSS_CONF="/etc/wireless.conf"

if [ "$1" = "off" ];then
	killall -9 wpa_supplicant >/dev/null 2>&1
	exit 1
fi

getboard(){
    uname -a | grep aarch64 > /dev/null
    [ $? -eq 0 ] && return 0
    return 1
}

getboard
if [ $? -eq 0 ]; then
    LINK_FACE=`awk -F= '/LINK_FACE/ {print $2}' $WPA_WIRELSS_CONF`
    LINK_MODE=`awk -F= '/LINK_MODE/ {print $2}' $WPA_WIRELSS_CONF`
    LINK_SSID=`awk -F= '/LINK_SSID/ {print $2}' $WPA_WIRELSS_CONF`
    LINK_ENCT=`awk -F= '/LINK_ENCT/ {print $2}' $WPA_WIRELSS_CONF`
    LINK_PASS=`awk -F= '/LINK_PASS/ {print $2}' $WPA_WIRELSS_CONF`
else
    LINK_FACE=$1
    LINK_MODE=$2
    LINK_SSID=$3
    LINK_ENCT=$4
    LINK_PASS=$5
    if [ "$#" -lt 4 ]; then
        echo "Usage:$0 interface mode essid enc password"
        exit 1
    fi
fi

if [ -z "$LINK_FACE" -o -z "$LINK_MODE" -o -z "$LINK_SSID" -o -z "$LINK_ENCT" ]; then
    echo "Usage: $0 [LINK_FACE] [mode] [ssid] [wpa] [password]"
    exit 1
fi

echo "the mode is $LINK_MODE,the ssid is $LINK_SSID,the passwd is $LINK_PASS,the enc is $LINK_ENCT" 

#0 = infrastructure (Managed) mode, i.e., associate with an AP (default)
#1 = IBSS (ad-hoc, peer-to-peer)
#create conf file info
if [ $LINK_MODE -eq 0 ]; then
	if [ "${LINK_ENCT}" = "OPEN" ]; then
        echo -e "ctrl_interface=$WPA_SUPPLICANT_INFO\nap_scan=1\nupdate_config=1\n" > "$WPA_SUPPLICANT_CONF"
		echo -e "network={
			ssid=\"$LINK_SSID\"
			key_mgmt=NONE
		}" >> "$WPA_SUPPLICANT_CONF"        
	elif [ "${LINK_ENCT}" = "WEP" ]; then
		echo -e "ctrl_interface=$WPA_SUPPLICANT_INFO\nap_scan=2\nupdate_config=1\n" > "$WPA_SUPPLICANT_CONF"
		echo -e "network={
			ssid=\"$LINK_SSID\"
			key_mgmt=NONE
			wep_key0=\"$LINK_PASS\"
			wep_key1=\"$LINK_PASS\"
			wep_key2=\"$LINK_PASS\"
			wep_key3=\"$LINK_PASS\"
			wep_tx_keyidx=0 1 2 3
			priority=5
		}" >> "$WPA_SUPPLICANT_CONF"
		echo -e "network={
			ssid=\"$LINK_SSID\"
			key_mgmt=NONE
			wep_key0=\"$LINK_PASS\"
			wep_key1=\"$LINK_PASS\"
			wep_key2=\"$LINK_PASS\"
			wep_key3=\"$LINK_PASS\"
			wep_tx_keyidx=0 1 2 3
			priority=4
		}" >> "$WPA_SUPPLICANT_CONF" 
		echo -e "network={
			ssid=\"$LINK_SSID\"
			key_mgmt=NONE
			wep_key0=\"$LINK_PASS\"
			wep_key1=\"$LINK_PASS\"
			wep_key2=\"$LINK_PASS\"
			wep_key3=\"$LINK_PASS\"
			wep_tx_keyidx=0 1 2 3
			priority=3
		}" >> "$WPA_SUPPLICANT_CONF"
	elif [ "${LINK_ENCT}" = "WPA" ]; then
		echo -e "ctrl_interface=$WPA_SUPPLICANT_INFO\nap_scan=1\nupdate_config=1\n" > "$WPA_SUPPLICANT_CONF"
		echo -e "network={
			ssid=\"$LINK_SSID\"
			proto=WPA
			key_mgmt=WPA-PSK
			psk=\"$LINK_PASS\"
			priority=5
		}" >> "$WPA_SUPPLICANT_CONF"
		echo -e "network={
			ssid=\"$LINK_SSID\"
			proto=WPA2
			key_mgmt=WPA-PSK
			psk=\"$LINK_PASS\"
			priority=4
		}" >> "$WPA_SUPPLICANT_CONF"
		echo -e "network={
			ssid=\"$LINK_SSID\"
			proto=WPA
			key_mgmt=WPA-PSK
			psk=\"$LINK_PASS\"
			priority=3
		}" >> "$WPA_SUPPLICANT_CONF"
	fi
elif [ $LINK_MODE -eq 1 ]; then
	if [ "${LINK_ENCT}" = "OPEN" ]; then
        echo -e "ctrl_interface=$WPA_SUPPLICANT_INFO\nap_scan=2\nupdate_config=1\n" > "$WPA_SUPPLICANT_CONF"
		echo -e "network={
			ssid=\"$LINK_SSID\"
			key_mgmt=NONE
			mode=1
		}" >> "$WPA_SUPPLICANT_CONF"
	elif [ "${LINK_ENCT}" = "WEP_ASCII" ]; then
    	echo -e "ctrl_interface=$WPA_SUPPLICANT_INFO\nap_scan=2\nupdate_config=1\n" > "$WPA_SUPPLICANT_CONF"
		echo -e "network={
			mode=1
			ssid=\"$LINK_SSID\"
			key_mgmt=NONE
			wep_key0=\"$LINK_PASS\"
			wep_key1=\"$LINK_PASS\"
			wep_key2=\"$LINK_PASS\"
			wep_key3=\"$LINK_PASS\"
			wep_tx_keyidx=0 1 2 3
		}" >> "$WPA_SUPPLICANT_CONF" 
	elif [ "${LINK_ENCT}" = "WEP_HEX" ]; then
    	echo -e "ctrl_interface=$WPA_SUPPLICANT_INFO\nap_scan=2\nupdate_config=1\n" > "$WPA_SUPPLICANT_CONF"
		echo -e "network={
			mode=1
			ssid=\"$LINK_SSID\"
			key_mgmt=NONE
			wep_key0=\"$LINK_PASS\"
			wep_key1=\"$LINK_PASS\"
			wep_key2=\"$LINK_PASS\"
			wep_key3=\"$LINK_PASS\"
		}" >> "$WPA_SUPPLICANT_CONF"
	fi
else
	echo "wrong link mode"
	exit 1
fi

WPA_SUPPLICANT_START(){
    getboard
    if [ $? -eq 0 ]; then
        $WPA_SUPPLICANT -Dnl80211 -c  "$WPA_SUPPLICANT_CONF" -i $LINK_FACE -B > /dev/null 2>&1
    else
        $WPA_SUPPLICANT -Dwext -c  "$WPA_SUPPLICANT_CONF" -i $LINK_FACE -B > /dev/null 2>&1
    fi
    if [ $? -ne 0 ];then
        echo "wpa_supplicant start failed"
        return 1
    fi
    return 0
}

#start wpa server
pids=$(pidof wpa_supplicant 2>/dev/null)
if [ ! -z "$pids" ]; then
    echo "here send a signal to wpa_supplicant"
    killall -9 wpa_supplicant > /dev/null
    WPA_SUPPLICANT_START
    [ $? -ne 0 ] && exit 1
else
    sleep 10
    echo "below is to invoke wpa_supplicant"
    WPA_SUPPLICANT_START
    [ $? -ne 0 ] && exit 1
fi

echo "wpa_supplicant start success"
exit 0
