197 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| TRY=0
 | |
| HOSTAPD=`ps`
 | |
| AMPK_AP=0
 | |
| HOSTAPD=`echo $HOSTAPD | grep hostapd`
 | |
| if [ -n "$HOSTAPD" ]; then
 | |
|         echo "hostapd is running. Try to stop it"
 | |
| 	killall -9 hostapd
 | |
| 	while [ 1 ]
 | |
| 	do
 | |
| 		HOSTAPD=`ps`
 | |
| 		HOSTAPD=`echo $HOSTAPD | grep hostapd`
 | |
| 		if [ -n "$HOSTAPD" ]; then
 | |
| 			if [ $TRY -gt 5 ]; then
 | |
| 				echo "can't stop hostapd"
 | |
| 				exit 255
 | |
| 			else
 | |
| 				echo "TRY=$TRY"
 | |
| 				TRY=$((${TRY}+1))
 | |
| 	                        sleep 1
 | |
| 			fi
 | |
| 		else
 | |
| 			echo "hostapd is stopped"
 | |
| 			break
 | |
| 		fi
 | |
| 	done
 | |
| fi
 | |
| 
 | |
| TRY=0
 | |
| WPA=`ps`
 | |
| WPA=`echo $WPA | grep wpa_supplicant`
 | |
| if [ -n "$WPA" ]; then
 | |
|         echo "wpa_supplicant is running. Try to stop it"
 | |
|         killall -9 wpa_supplicant
 | |
|         while [ 1 ]
 | |
|         do
 | |
| 		WPA=`ps`
 | |
| 		WPA=`echo $WPA | grep wpa_supplicant`
 | |
|                 if [ -n "$WPA" ]; then
 | |
|                         if [ $TRY -gt 5 ]; then
 | |
|                                 echo "can't stop wpa_supplicant"
 | |
|                                 exit 255
 | |
|                         else
 | |
|                                 echo "TRY=$TRY"
 | |
|                                 TRY=$((${TRY}+1))
 | |
|                                 sleep 1
 | |
|                         fi
 | |
|                 else
 | |
|                         echo "wpa_supplicant is stopped"
 | |
|                         break
 | |
|                 fi
 | |
|         done
 | |
| fi
 | |
| 
 | |
| if [ "$1" == "ap" ]; then
 | |
| 	if [ "$2" == "0" ]; then
 | |
| 		ifconfig wlan0 up
 | |
| 		if [ "$3" == "2.4G" ]; then
 | |
| 			/usr/local/bin/dhd_priv setband 2
 | |
| 		elif [ "$3" == "5G" ]; then
 | |
| 			/usr/local/bin/dhd_priv setband 1
 | |
| 		else
 | |
| 			/usr/local/bin/dhd_priv setband 0
 | |
| 		fi
 | |
| 		/usr/local/bin/dhd_priv get_best_channels|grep ret > /var/run/ACS.txt
 | |
| 		filename="/var/run/ACS.txt"
 | |
| 		exec < $filename
 | |
| 		read str
 | |
| 		channel_acs=$(echo $str | cut -d" " -f 4)
 | |
| 		if [ "$3" == "2.4G" ]; then
 | |
| 			echo channel=${channel_acs##*2g=} >> /var/run/hostapd.conf
 | |
| 		elif [ "$3" == "5G" ]; then
 | |
| 			echo channel=${channel_acs##*5g=} >> /var/run/hostapd.conf
 | |
|                 else
 | |
|                         echo channel=${channel_acs##*2g=} >> /var/run/hostapd.conf
 | |
| 		fi
 | |
| 		rm /var/run/ACS.txt
 | |
| 	else
 | |
| 		echo channel=$2 >> /var/run/hostapd.conf
 | |
| 	fi
 | |
| 	echo driver=nl80211 >> /var/run/hostapd.conf
 | |
| 	echo wmm_enabled=1 >> /var/run/hostapd.conf
 | |
| 
 | |
| 	if [ "$AMPK_AP" == "0" ]; then
 | |
| 		/usr/bin/hostapd /var/run/hostapd.conf &
 | |
| 	elif [ "$AMPK_AP" == "1" ]; then
 | |
| 		SSID=$(grep -w ssid /var/run/hostapd.conf|cut -d"=" -f 2)
 | |
| 		CHANNEL=$(grep -w channel /var/run/hostapd.conf|cut -d"=" -f 2)
 | |
| 		WPA=$(grep -w wpa /var/run/hostapd.conf|cut -d"=" -f 2)
 | |
| 		if [ "$WPA" == "2" ]; then
 | |
| 			PSK=$(grep -w wpa_passphrase /var/run/hostapd.conf|cut -d"=" -f 2) 
 | |
| 			/usr/local/bin/dhd_priv iapsta_init mode ap
 | |
| 			/usr/local/bin/dhd_priv iapsta_config ifname wlan0 ssid $SSID chan $CHANNEL amode wpa2psk emode aes key $PSK
 | |
| 			/usr/local/bin/dhd_priv iapsta_enable ifname wlan0
 | |
| 		else
 | |
| 			/usr/local/bin/dhd_priv iapsta_init mode ap
 | |
| 			/usr/local/bin/dhd_priv iapsta_config ifname wlan0 ssid $SSID chan $CHANNEL amode open emode none
 | |
| 			/usr/local/bin/dhd_priv iapsta_enable ifname wlan0
 | |
| 		fi
 | |
| 	fi
 | |
| 
 | |
| 
 | |
| 	TRY=0
 | |
| 	while [ 1 ]
 | |
| 	do
 | |
| 	        UP=`ifconfig wlan0 | grep UP`
 | |
| 	        echo "UP=$UP"
 | |
| 	
 | |
| 	        if [ -z "$UP" ]; then
 | |
| 	                echo "TRY=$TRY"
 | |
| 	                if [ $TRY -gt 5 ]; then
 | |
| 	                        hostapd stop
 | |
| 	                        exit 255
 | |
| 	                else
 | |
| 	                        TRY=$((${TRY}+1))
 | |
| 	                        sleep 1
 | |
| 	                fi
 | |
| 	        else
 | |
| 	                echo "UP ok"
 | |
| 	                ifconfig wlan0 192.168.1.254
 | |
| 			break
 | |
| 	        fi
 | |
| 	done
 | |
| 
 | |
| 	udhcpd /etc/udhcpdw.conf
 | |
| 	TRY=0
 | |
| 	while [ 1 ]
 | |
| 	do
 | |
| 	        DHCP=`ps`
 | |
| 	        DHCP=`echo $DHCP | grep udhcpd`
 | |
| 	        echo "DHCP=$DHCP"
 | |
| 	
 | |
| 	        if [ -z "$DHCP" ]; then
 | |
| 	                echo "TRY=$TRY"
 | |
| 	                if [ $TRY -gt 5 ]; then
 | |
| 	                        echo "Can't run udhcpd"
 | |
| 	                        exit 255
 | |
| 	                else
 | |
| 	                        TRY=$((${TRY}+1))
 | |
| 	                        sleep 1
 | |
| 	                fi
 | |
| 	        else
 | |
| 	                echo "udhcpd ok"
 | |
| 	                exit 0
 | |
| 	        fi
 | |
| 	done
 | |
| elif [ "$1" == "sta" ]; then
 | |
|         wpa_supplicant -Dnl80211 -i wlan0 -c /var/run/wpa_supplicant.conf &
 | |
|         TRY=0
 | |
|         while [ 1 ]
 | |
|         do
 | |
|                 UP=`ifconfig wlan0 | grep UP`
 | |
|                 echo "UP=$UP"
 | |
| 
 | |
|                 if [ -z "$UP" ]; then
 | |
|                         echo "TRY=$TRY"
 | |
|                         if [ $TRY -gt 5 ]; then
 | |
|                                 hostapd stop
 | |
|                                 exit 255
 | |
|                         else
 | |
|                                 TRY=$((${TRY}+1))
 | |
|                                 sleep 1
 | |
|                         fi
 | |
|                 else
 | |
|                         echo "UP ok"
 | |
|                         ifconfig wlan0 192.168.1.1
 | |
|                         break
 | |
|                 fi
 | |
|         done
 | |
| 
 | |
|         udhcpc -i wlan0
 | |
|         TRY=0
 | |
|         while [ 1 ]
 | |
|         do
 | |
|                 DHCP=`ps`
 | |
|                 DHCP=`echo $DHCP | grep udhcpc`
 | |
|                 echo "DHCP=$DHCP"
 | |
| 
 | |
|                 if [ -z "$DHCP" ]; then
 | |
|                         echo "TRY=$TRY"
 | |
|                         if [ $TRY -gt 5 ]; then
 | |
|                                 echo "Can't run udhcpc"
 | |
|                                 exit 255
 | |
|                         else
 | |
|                                 TRY=$((${TRY}+1))
 | |
|                                 sleep 1
 | |
|                         fi
 | |
|                 else
 | |
|                         echo "udhcpd ok"
 | |
|                         exit 0
 | |
|                 fi
 | |
|         done
 | |
| fi
 | |
| 
 | |
| exit 255
 | 
