RT-IPC_camera/bin/vslocal/cgi-bin/net_func.sh

1609 lines
41 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
export PATH=$PATH:/bin/vs/cgi-bin:/bin/vs:/komod
## 加载/卸载 wifi ko
wifiko()
{
if [ $1 = "load" ]
then
$drvload
elif [ $1 = "unload" ]
then
$drvunload
fi
}
wifiko_ap()
{
if [ $1 = "load" ]
then
$drvload_ap
elif [ $1 = "unload" ]
then
$drvunload_ap
fi
}
#$1 ssid
#$2 wifikeytype
#$3 wepid
#$4 wifikey
#$5 wpa_config filename
gen_wpa_config()
{
wifiessid=$1
wifikeytype=$2
wifiwhichkey=$3
wifikey=$4
wifi_wpa_conf=$5
show_dbg2 "gen_wpa_config $*"
show_info "gen wpa ssid:$wifiessid,keytype:$wifikeytype,keyidx:$wifiwhichkey,key:$wifikey,file:$wifi_wpa_conf"
##实时匹配当前ssid的加密类型,如果匹配不上就按原来文件里保存的类型去执行
##这样做的目的是防止用户改了加密类型但是ssid和pwd都没有改从而导致设备连不上route
if [ ! -z $customernum ] && [ $customernum == "123" ];then
echo -n "NOTFOUND" > /etc/network/wifista.conf
fi
rm -Rf $wpa_config_tmp 2>/dev/null
echo "ctrl_interface=/var/run/wpa_supplicant" > $wpa_config_tmp
echo "ap_scan=1" >> $wpa_config_tmp
echo "update_config=1" >> $wpa_config_tmp
#wifikeytype define in file $wifi_config
#wifikeytype =1: no key
#wifikeytype =2: wep
#wifikeytype =3:wpa
if [ $wifikeytype = 1 ]
then
echo "network={" >> $wpa_config_tmp
echo "ssid=${wifiessid} " >> $wpa_config_tmp
echo "key_mgmt=NONE" >> $wpa_config_tmp
echo "}" >> $wpa_config_tmp
elif [ $wifikeytype = 2 ]
then
echo "network={" >> $wpa_config_tmp
echo "ssid=${wifiessid} " >> $wpa_config_tmp
wifikeylen=`expr length "$wifikey"`
show_info wifikey $wifikey wifikeylen is $wifikeylen
if [ $wifikeylen -eq 5 ] || [ $wifikeylen -eq 13 ] || [ $wifikeylen -eq 16 ]
then
##字符
show_info "wepkey char"
echo "wep_key${wifiwhichkey}=\"${wifikey}\"" >> $wpa_config_tmp
elif [ $wifikeylen -eq 10 ] || [ $wifikeylen -eq 26 ] || [ $wifikeylen -eq 32 ]
then
show_info "wepkey hex"
echo "wep_key${wifiwhichkey}=${wifikey}" >> $wpa_config_tmp
else
show_info "wepkey err"
fi
####echo "wep_key${wifiwhichkey}=${wifikey}" >> $wpa_config_tmp
echo "key_mgmt=NONE" >> $wpa_config_tmp
echo "wep_tx_keyidx=${wifiwhichkey}" >> $wpa_config_tmp
echo "auth_alg=OPEN SHARED" >> $wpa_config_tmp
echo " }" >> $wpa_config_tmp
elif [ $wifikeytype = 3 ]
then
if [ x"$wifikey" = x ]
then
echo "ERROR. WifiKey is null"
wifikey="12345678"
fi
wifikeylen=`expr length "$wifikey"`
echo wifikey is $wifikey wifikeylen is $wifikeylen
if [ $wifikeylen -lt 8 ]
then
echo "ERROR. Wifikey length must large than 8"
wifikey="12345678"
fi
#wpa_passphrase "$wifiessid" "$wifikey" >> $wpa_config_tmp
wpaconf $wifiessid $wifikey >> $wpa_config_tmp
fi
#for hide ssid
networkline=`cat $wpa_config_tmp | grep "network={" -n | awk -F ":" '{print $1}'`
if [ -n "$networkline" ];then
networkline=`expr $networkline + 1`
sed -i "$networkline s/^/\tscan_ssid=1\n/" $wpa_config_tmp
fi
sync
}
wifi_sta_connect_ex()
{
show_dbg2 "XXXXXXXXXX DONNOTCALL wifi_sta_connect_ex"
return
sta_ssid=$1
sta_key=$2
sta_key_type=$3
wifiwhichkey=0
#if [ -e "$wpa_config_tmp" ];then
show_info "wifi_sta_connect_ex wifiessid:$sta_ssid wifikey:$sta_key wifikeytype:$sta_key_type"
show_dbg2 "wpa_config_tmp:$wpa_config_tmp"
gen_wpa_config "${sta_ssid}" ${sta_key_type} ${wifiwhichkey} "${sta_key}" "${wpa_config_tmp}"
#mv -f $wpa_config_tmp $wpa_config
#fi
####wifi_ledflash 4
##gen_wpa_config
## 重新启动wpa_supplicant
show_func "wifi_sta_connect_ex"
echo "">$tmpfs_path/wifi.disconnect
if [ ! -z `pidof wpa_supplicant` ]
then
show_info "wifi_sta_connect_ex, stop wpa_supplicant"
wpa_cli -i $wifidev disconnect >>$tmpfs_path/wifi.disconnect 2>&1
wpa_cli -i $wifidev terminate >>$tmpfs_path/wifi.disconnect 2>&1
fi
#ifconfig $wifidev up
net_up $wifidev
show_info "wifi_sta_connect_ex, start wpa_supplicant"
wpa_supplicant -B -d -D$wpa_driver -i $wifidev -c $wpa_config_tmp >$tmpfs_path/wifi.connect 2>&1
####wpa_cli -i $wifidev reconfigure
sleep 3
wpa_cli -i $wifidev disconnect >>$tmpfs_path/wifi.disconnect 2>&1
wpa_cli -i $wifidev select_network 0 >>$tmpfs_path/wifi.disconnect 2>&1
wpa_cli -i $wifidev enable_network 0 >>$tmpfs_path/wifi.disconnect 2>&1
}
#"$wifiessid=$1"
#"$wifikey=$2"
#"$wifikeytype=$3"
wifi_sta_save_info()
{
TmpFile=/tmpfs/wifi_config_tmp
#TmpFile=./wifi_config_tmp
. $wifi_config
###目的是兼容老分支的版本,老版本的wifi配置文件和新分支版本不一样
isIndexExist=0
if [ -z "$last_index" ]
then
isIndexExist=1
fi
#replace
case $1 in
$wifiessid)
last_index=0
wifiessid=wifiessid
wifikey=wifikey
wifikeytype=wifikeytype
;;
$wifiessid1)
last_index=1
wifiessid=wifiessid1
wifikey=wifikey1
wifikeytype=wifikeytype1
;;
$wifiessid2)
last_index=2
wifiessid=wifiessid2
wifikey=wifikey2
wifikeytype=wifikeytype2
;;
*)
if [ $group_index -eq 0 ];then
wifiessid=wifiessid
wifikey=wifikey
wifikeytype=wifikeytype
else
wifiessid=wifiessid$group_index
wifikey=wifikey$group_index
wifikeytype=wifikeytype$group_index
fi
last_index=$group_index
group_index=`expr $group_index + 1`
if [ $group_index -eq 3 ];then
group_index=0
fi
;;
esac
wifiessid_line=`cat $wifi_config | grep ^$wifiessid= -n | cut -d : -f 1`
wifikey_line=`cat $wifi_config | grep ^$wifikey= -n | cut -d : -f 1`
wifikeytype_line=`cat $wifi_config | grep ^$wifikeytype= -n | cut -d : -f 1`
group_index_line=`cat $wifi_config | grep ^group_index= -n | cut -d : -f 1`
last_index_line=`cat $wifi_config | grep ^last_index= -n | cut -d : -f 1`
sta_ssid="$wifiessid=\"$1\""
sta_key="$wifikey=\"$2\""
sta_key_type="$wifikeytype=$3"
sta_group_index="group_index=$group_index"
sta_last_index="last_index=$last_index"
if [ $isIndexExist == 1 ]
then
sed -e "${wifiessid_line}s/^.*$/$sta_ssid/" -e "${wifikeytype_line}s/^.*$/$sta_key_type/" -e "${wifikey_line}s/^.*$/$sta_key/" $wifi_config > $TmpFile
else
sed -e "${last_index_line}s/^.*$/$sta_last_index/" -e "${group_index_line}s/^.*$/$sta_group_index/" -e "${wifiessid_line}s/^.*$/$sta_ssid/" -e "${wifikeytype_line}s/^.*$/$sta_key_type/" -e "${wifikey_line}s/^.*$/$sta_key/" $wifi_config > $TmpFile
fi
sync
mv $TmpFile $wifi_config
}
get_last_ssid()
{
sta_ssid=
. $wifi_config
###老分支版本机器升级新分支版本时因为没有last_index会导致设备进ap,故在此做个判断
if [ -z "$last_index" ]
then
last_index=0
fi
case $last_index in
0)
sta_ssid=$wifiessid
;;
1)
sta_ssid=$wifiessid1
;;
*)
sta_ssid=$wifiessid2
;;
esac
echo "$sta_ssid"
}
gen_last_wpa_config()
{
sta_ssid=$(get_last_ssid)
sta_key=
sta_key_type=
. $wifi_config
case "$sta_ssid" in
"$wifiessid")
sta_key=$wifikey
sta_key_type=$wifikeytype
;;
"$wifiessid1")
sta_key=$wifikey1
sta_key_type=$wifikeytype1
;;
"$wifiessid2")
sta_key=$wifikey2
sta_key_type=$wifikeytype2
;;
*)
echo "err"
return
;;
esac
gen_wpa_config "${sta_ssid}" $sta_key_type $wifiwhichkey "${sta_key}" "${wpa_config_tmp}"
}
connect_last_sta_ssid()
{
sta_ssid=$(get_last_ssid)
#检查最新配置的ssid是否在搜索列表中
sta_ssid_tmp=`cat $wifiscanresult | grep -w "$sta_ssid" | cut -f5 | awk '{print $0}' | head -n 1 `
if [ -n "$sta_ssid_tmp" ];then
oldssidlen=`expr length "$sta_ssid"`
newssidlen=`expr length "$sta_ssid_tmp"`
##如果找到了,需要再比较长度,长度相同说明真正找到了该ssid
if [ $oldssidlen == $newssidlen ];then
echo "$sta_ssid"
show_info "find curr connect ssid"
else
echo ""
show_info "no match ssid"
fi;
else
echo ""
show_info "The match failed to use the user's current input wifi"
fi
}
wifi_sta_connect_ap_list()
{
wifi_scan
. $wifi_config
sta_ssid=$(connect_last_sta_ssid)
sta_key=
sta_key_type=
if [ -z "$sta_ssid" ];then
if [ "$#" -eq 0 ]
then
ssid_index=1
else
ssid_index=`expr $1 + 1`
fi
sta_ssid=`cat $wifiscanresult | grep -E "$wifiessid|$wifiessid1|$wifiessid2" | awk '{print $NF}' | head -n $ssid_index | tail -n 1`
#如所有sta记录都没有在热点列表中默认用最新的一组进行连接
if [ -z "$sta_ssid" ];then
sta_ssid=$(get_last_ssid)
fi
fi
show_info "wifi_sta_connect_ap_list sta_ssid:$sta_ssid"
case "$sta_ssid" in
"$wifiessid")
sta_key=$wifikey
sta_key_type=$wifikeytype
;;
"$wifiessid1")
sta_key=$wifikey1
sta_key_type=$wifikeytype1
;;
"$wifiessid2")
sta_key=$wifikey2
sta_key_type=$wifikeytype2
;;
*)
echo "err"
return
;;
esac
wifi_sta_connect_ex "${sta_ssid}" "${sta_key}" $sta_key_type
echo "ok"
}
wifi_sta_connect()
{
echo "">$tmpfs_path/wifi.disconnect
## 重新启动wpa_supplicant
show_func "wifi_sta_connect"
echo "">$tmpfs_path/wifi.disconnect
if [ ! -z `pidof wpa_supplicant` ]
then
show_info "wifi_sta_connect, stop wpa_supplicant"
wpa_cli -i $wifidev disconnect >>$tmpfs_path/wifi.disconnect 2>&1
wpa_cli -i $wifidev terminate >>$tmpfs_path/wifi.disconnect 2>&1
fi
net_up $wifidev
show_info "wifi_sta_connect, start wpa_supplicant"
wpa_supplicant -B -d -D$wpa_driver -i $wifidev -c $wpa_config >$tmpfs_path/wifi.connect 2>&1
####wpa_cli -i $wifidev reconfigure
#sleep 1
#wpa_cli -i $wifidev disconnect >>$tmpfs_path/wifi.disconnect 2>&1
#wpa_cli -i $wifidev select_network 0 >>$tmpfs_path/wifi.disconnect 2>&1
#wpa_cli -i $wifidev enable_network 0 >>$tmpfs_path/wifi.disconnect 2>&1
}
wifi_sta_disconnect()
{
wpa_cli -i $wifidev disconnect >$tmpfs_path/wifi.disconnect1 2>&1
}
wifi_fixnet_connect()
{
####wifi_ledflash 4
##gen_wpa_config
## 重新启动wpa_supplicant
echo "">$tmpfs_path/wifi.disconnect
if [ ! -z `pidof wpa_supplicant` ]
then
wpa_cli -i $wifidev disconnect >>$tmpfs_path/wifi.disconnect 2>&1
wpa_cli -i $wifidev terminate >>$tmpfs_path/wifi.disconnect 2>&1
sleep 3
fi
#ifconfig $wifidev up
net_up $wifidev
wpa_supplicant -B -d -D$wpa_driver -i $wifidev -c $fixnet_config >$tmpfs_path/wifi.connect 2>&1
####wpa_cli -i $wifidev reconfigure
wpa_cli -i $wifidev disconnect >>$tmpfs_path/wifi.disconnect 2>&1
wpa_cli -i $wifidev select_network 0 >>$tmpfs_path/wifi.disconnect 2>&1
wpa_cli -i $wifidev enable_network 0 >>$tmpfs_path/wifi.disconnect 2>&1
}
outputwifiscanresult()
{
echo -e -n "Content-Type:text/plain\n\r\n\r"
#rt_llq,解决ssid为 "" 时,js报错
cat $wifiscanresult | cut -f5 | awk '{print "var ssid_"NR"=\""$0"\";"}' | sed 's/""""/"\\"\\""/'
cat $wifiscanresult | cut -f3 | awk '{print "var signal_"NR"=\""$1"\";"}'
cat $wifiscanresult | cut -f4 | awk '{print "var secret_"NR"=\""$1"\";"}'
#结果中, 有一个\n, 所以不需要再多一个\n cat /tmpfs/wifiaplist | cut -f5 | awk '{print "var ssid_"NR"=\""$0"\";"}'
echo -e -n "\r\n\r"
}
wifi_scan_old()
{
show_info "wifi_scan"
########如果正在搜索的则直接返回,以免造成搜索结果相互覆盖。
if [ -e /tmpfs/wifi_scan ];then
return ;
else
echo "" > /tmpfs/wifi_scan
fi
wpa_cli -i $wifidev scan > /dev/null 2>&1
sleep 1
wpa_cli -i $wifidev scan_result > $tmpfs_path/tmpresult.lst
echo "">>$tmpfs_path/tmpresult.lst
sleep 2
wpa_cli -i $wifidev scan_result > $tmpfs_path/tmpresult.lst
echo "">>$tmpfs_path/tmpresult.lst
##20140429 sort $tmpfs_path/tmpresult.lst -k1 | awk 'BEGIN{print "bssid signal ssid"}{ if ($1!=bss && $1 != "bssid" && $1 != "") {print $0}; bss=$1}' > $wifiscanresult
sort $tmpfs_path/tmpresult.lst -k1 | awk 'BEGIN{print "bssid signal ssid"}{ if ($1!=bss && $1 != "bssid" && $1 != "") {print $0}; bss=$1}' > $tmpfs_path/tmpresult2.lst
sort -r $tmpfs_path/tmpresult2.lst -k3 > $wifiscanresult
rm /tmpfs/wifi_scan -rf
show_info "wifi_scan exit"
}
wifi_scan()
{
show_info "wifi_scan"
########如果正在搜索的则直接返回,以免造成搜索结果相互覆盖。
if [ -e /tmpfs/wifi_scan ];then
return ;
else
echo "" > /tmpfs/wifi_scan
fi
echo "" > $wifiscanresult
iwlist $wifidev scan > /dev/null 2>&1
sleep 1
iwlist $wifidev scan > $tmpfs_path/tmpresult.lst
ret=`cat $tmpfs_path/tmpresult.lst | grep "No scan results" > /dev/null; echo $?`
if [ $ret"A" == "0A" ];then
rm $tmpfs_path/tmpresult.lst -rf
fi
echo "">>$tmpfs_path/tmpresult.lst
sleep 1
iwlist $wifidev scan > $tmpfs_path/tmpresult.lst
ret=`cat $tmpfs_path/tmpresult.lst | grep "No scan results" > /dev/null; echo $?`
if [ $ret"A" == "0A" ];then
rm $tmpfs_path/tmpresult.lst -rf
fi
echo "">>$tmpfs_path/tmpresult.lst
##20140429 sort $tmpfs_path/tmpresult.lst -k1 | awk 'BEGIN{print "bssid signal ssid"}{ if ($1!=bss && $1 != "bssid" && $1 != "") {print $0}; bss=$1}' > $wifiscanresult
sort $tmpfs_path/tmpresult.lst -k1 | awk 'BEGIN{print "bssid signal ssid"}{ if ($1!=bss && $1 != "bssid" && $1 != "") {print $0}; bss=$1}' > $tmpfs_path/tmpresult2.lst
sort -r $tmpfs_path/tmpresult2.lst -k3 > $wifiscanresult
rm /tmpfs/wifi_scan -rf
show_info "wifi_scan exit"
}
wifi_getstatus()
{
tmpname=$tmpfs_path/wifistatus.$$
wpa_cli -i $wifidev status 1>$tmpname 2>/dev/null
##chmod +x $tmpname
#. $tmpname
wpa_state=`cat /tmpfs/wifistatus.$$ | grep wpa_state | cut -d= -f2`
##COMPLETED ....
if [ -z $wpa_state ]
then
echo "ERROR"
else
echo $wpa_state
fi
rm $tmpname -f 2>/dev/null
}
wifi_wait_connect()
{
retry_times=10
retry_waittimes=4
cnt=0
##show_dbg2 "wifi_wait_connect retry_times $retry_times retry_waittimes $retry_waittimes"
while [ $cnt -lt $retry_times ]
do
linkstatus=$(wifi_getstatus)
if [ -z $linkstatus ]
then
linkstatus=ERROR
break
else
### 只有COMPLETED 才是链接成功, 可能的值为 SCANNING, ASSOCIATING,SCANNING
if [ ${linkstatus} = COMPLETED ]
then
linkstatus="COMPLETED"
break
else
sleep $retry_waittimes
cnt=`expr $cnt + 1`
fi
fi
done
echo $linkstatus
}
## return 1 offline
wifi_module_offline()
{
wifi_online=`/bin/vslocal/cgi-bin/getwifioffline.sh`
echo $wifi_online
}
wifi_getenable()
{
wifienable=0
if [ -e $wifi_config ]
then
#get wifienable
. $wifi_config
else
wifienable=0
fi
wifi_offline=$(wifi_module_offline)
if [ $wifi_offline == 1 ]
then
echo -1
else
echo $wifienable
fi
##ifconfig ra0 >$tmpfs_path/ra0status 2>&1
##ra0status=$?
##if [ $ra0status = 1 ]
##then
## echo -1
##else
## echo $wifienable
##fi
}
###BTTODO, get ap config from config file
wifi_ap_ipcfg()
{
killall -9 udhcpc
killall -9 udhcpd
killall -9 dnsd
show_info "AP ip config as $ap_ip"
hostapd_conf=$tmpfs_path/hostapd.conf
mkdir -p /var/run/hostapd
#wifi_module_type=`/bin/vslocal/cgi-bin/getwifimoduletype.sh`
if [ $wifi_module_type == "7601" ]
then
ap_ssid=`cat $tmpfs_path/RT2870AP.dat | grep SSID -w | cut -d= -f2`
elif [ $wifi_module_type == "8189" ]
then
ap_ssid=`cat /etc/network/wifi8189ap.conf | grep SSID -w | cut -d= -f2`
else
show_error "unknow wifi_module_type $wifi_module_type "
fi
ap_chn=1
if [ $ap_ssid"A" == "A" ];then
ap_ssid="IPCAM-AP"
fi
echo "interface=$wifidev" > $hostapd_conf
echo "ctrl_interface=/var/run/hostapd" >> $hostapd_conf
echo "driver=nl80211" >> $hostapd_conf
echo "hw_mode=g" >> $hostapd_conf
echo "channel=$ap_chn" >> $hostapd_conf
echo "ssid=$ap_ssid" >> $hostapd_conf
echo "beacon_int=100" >> $hostapd_conf
echo "dtim_period=2" >> $hostapd_conf
echo "max_num_sta=5" >> $hostapd_conf
wifiap_conf=/etc/network/wifiap.conf
authMode=`cat $wifiap_conf | grep auth_mode | cut -d "=" -f2`
if [ $authMode"A" == "WPA2PSK""A" ];then
echo wpa=2 >> $hostapd_conf
echo wpa_key_mgmt=WPA-PSK >> $hostapd_conf
echo wpa_pairwise=CCMP >> $hostapd_conf
wpaPsk=`cat $wifiap_conf | grep wpa_psk | cut -d "=" -f2`
echo wpa_passphrase=$wpaPsk >> $hostapd_conf
fi
hostapd $hostapd_conf -d -B
ifconfig $wifidev $ap_ip netmask $ap_mask
#ifconfig $wifidev up
net_up $wifidev
route add default gw $ap_gateway dev $wifidev
route add -net 239.0.0.0 netmask 255.0.0.0 $wifidev 2>/dev/null
udhcpd -S
dnsd -d
. $mac_lined_file
#$1 NETTYPE #$2 IP #$3 MASK #$4 GW #$5 MAC #$6 DHCPFlag #$7 DNSFlag(null for get from ifattr)
net_cache $wifidev $ap_ip $ap_mask $ap_gateway $macaddress "0" "specify"
/bin/vs/mcast.sh 5 &
wifi_scan
#BT#if [ ! -e $ip_cache1 ]
#BT#then
#BT# . $ip_config
#BT# . $mac_lined_file
#BT# if [ $dhcp = "n" ]
#BT# then
#BT# net_cache $wifidev $address $netmask $gateway $macaddress "0" "0"
#BT# else
#BT# net_cache $wifidev $address $netmask $gateway $macaddress "1" "1"
#BT# fi
#BT# #$1 NETTYPE #$2 IP #$3 MASK #$4 GW #$5 MAC #$6 DHCPFlag #$7 DNSFlag
#BT#fi
}
ap_name_set_7601()
{
APSSID=$1
APFile="/etc/Wireless/RT2870AP/RT2870AP.orig.dat"
TmpFile="$tmpfs_path/RT2870AP.dat"
APFileLink="/etc/Wireless/RT2870AP/RT2870AP.dat"
SSIDLine=`cat $APFile | grep ^SSID= -n | cut -d : -f 1`
#SSID=`cat $APFile | grep ^SSID= -n | cut -d : -f 2`
#SSID="SSID=IPCAM-AP-"$P2P_ID
SSID="SSID=$APSSID"
show_info "AP SSID=$APSSID"
sed "${SSIDLine}s/^.*$/$SSID/" $APFile > $TmpFile
if [ -e $APFileLink ]
then
echo "$APFileLink Exist"
if [ ! -L $APFileLink ]
then
echo "$APFileLink Exist. not link"
rm -f $APFileLink
ln -s $TmpFile $APFileLink
fi
else
echo "$APFileLink Not Exist"
ln -s $TmpFile $APFileLink
fi
}
ap_name_set_8189()
{
show_func "ap_name_set_8189 apname = $1"
APSSID=$1
APFile="/etc/network/wifi8189ap.conf"
SSID="SSID=$APSSID"
echo $SSID > $APFile
}
ap_ssid_update()
{
#####get_ap_ssid在ap_ssid.sh实现
APSSID=$(get_ap_ssid)
if [ $APSSID"A" = "null""A" ];then ###未烧录UID显示,默认前缀
APSSID="IPCAM"
fi
#根据wifi类型区分设置
#wifi_module_type=`/bin/vslocal/cgi-bin/getwifimoduletype.sh`
if [ $wifi_module_type == "7601" ]
then
ap_name_set_7601 $APSSID
elif [ $wifi_module_type == "8189" ]
then
ap_name_set_8189 $APSSID
else
show_info "unknow wifi_module_type $wifi_module_type"
fi
}
wifi_ap_start()
{
###AP模式下反复进入时得先stop
wifiM=`cat /tmpfs/wifimode`
if [ $wifiM == "AP" ];then
wifi_ap_stop
fi
show_func "wifi_ap_start"
wifiko_ap load
wifi_setmode "AP"
#声音播放去掉
#wifi_audio_to_ap
# 二维码扫描去掉
#if [ $customernum != "123" ];then
# /bin/vslocal/cgi-bin/netqrcodescan.sh &
#fi
}
wifi_ap_stop()
{
sleep 3
show_func "wifi_ap_stop"
killall -9 hostapd
#ifconfig $wifidev down
net_down $wifidev
wifiko_ap unload
wifi_setmode NONE
killall netqrcodescan.sh
}
### 加载STA
wifi_sta_start()
{
killall -9 wpa_supplicant
killall -9 hostapd
show_func "wifi_sta_start"
wifiko load
wifi_setmode "STA"
wpa_supplicant -B -d -D$wpa_driver -i $wifidev -c $wpa_config >$tmpfs_path/wifi.connect 2>&1
#ifconfig $wifidev up
net_up $wifidev
echo "wifimac=`cat /sys/class/net/${wifidev}/address`" > $mac_wifi_file
}
wifi_sta_stop()
{
show_func "wifi_sta_stop"
killall -9 wpa_supplicant
#ifconfig $wifidev down
net_down $wifidev
wifiko unload
wifi_setmode NONE
}
wifi_fixnet_start()
{
show_func "wifi_fixnet_start"
wifiko load
wifi_setmode "FIXNET"
sleep 1
wpa_supplicant -B -d -D$wpa_driver -i $wifidev -c $fixnet_config >$tmpfs_path/wifi.connect 2>&1
#ifconfig $wifidev up
net_up $wifidev
}
wifi_fixnet_stop()
{
show_func "wifi_fixnet_stop"
killall -9 wpa_supplicant
#ifconfig $wifidev down
net_down $wifidev
wifiko unload
wifi_setmode NONE
}
### 加载smart link
wifi_smtcn_start()
{
show_func "wifi_smtcn_start"
# wifiko load
wifi_setmode "SMTCN"
# sleep 3
smtcn_node=`get_smtcn_node`
show_func "smtcn_node:"$smtcn_node
#ifconfig $wifidev up
net_up $wifidev
##iwpriv $wifidev elian start
if [ -e $smtcn_node ];then
echo "stop" > $smtcn_node
# echo "clear" > $smtcn_node
echo "start" > $smtcn_node
else
show_error "Not support SMARTLINK"
fi
###/bin/vslocal/cgi-bin/netqrcodescan.sh &
}
wifi_smtcn_stop()
{
show_func "wifi_smtcn_stop"
smtcn_node=`get_smtcn_node`
if [ -e $smtcn_node ];then
echo "stop" > $smtcn_node
fi
####iwpriv $wifidev elian stop
###BTTODO. check it need??
wifiko unload
wifi_setmode NONE
killall netqrcodescan.sh
}
wifi_fatcn_stop()
{
show_func "wifi_fatcn_stop"
if [ -e /tmpfs/fastlink.conf ];then
rm /tmpfs/fastlink.conf -rf
fi
killall fastlink
}
###BTTODO, start with wpa_cli
wifi_wps_start()
{
show_func "wifi_wps_start"
#ifconfig $wifidev up
net_up $wifidev
wpa_cli -i $wifidev remove_network 0
wpa_cli -i $wifidev remove_network 1
wpa_cli -i $wifidev wps_pbc
}
###wifi_stop()
###{
### #ifconfig $wifidev 0.0.0.0
### net_off $wifidev
###}
###
wifi_stopall()
{
show_dbg2 "wifi_stop all"
wifi_sta_stop
wifi_ap_stop
wifi_smtcn_stop
}
wifi_wpsOK()
{
wpa_cli -i $wifidev status > $tmpfs_path/wifistatus.$$
chmod +x $tmpfs_path/wifistatus.$$
###. $tmpfs_path/wifistatus.$$ ###这个是以前老的获取ssid的方式现在屏蔽
wpa_cli save_config
###目前测试发现wps只有使用WPA加密NONE才能使用,wps连接成功后会在/tmpfs/下生产一个wpa_supp.conf文件
###以前方式取ssid会因为带空格获取不到完整的ssid字符串,现在将ssid截图加双引号写入文件再获取才能获取到完整的带空格的字符串
ssidtmp="`cat $tmpfs_path/wifistatus.$$ | grep ssid= | sed '1d,$d' | cut -d "=" -f2`"
keytmp=`cat /tmpfs/wpa_supp.conf | grep "psk=" | cut -d "=" -f2`
echo "ssid_tmp=\"${ssidtmp}\"" >> /tmpfs/wifi_tmp
echo "key_tmp=${keytmp}" >> /tmpfs/wifi_tmp
. /tmpfs/wifi_tmp
wifiessid=$ssid_tmp
wifikeytype=3
wifikey=$key_tmp
#wifi_sta_save_info "${wifiessid}" "${wifikey}" ${wifikeytype}
rm /tmpfs/wifi_tmp
#ssid get from wifistatus.$$
#wifiessid=$ssid
#wifiwhichkey=
#wifikeytype=
#wifikeyold=
#wifikey=
#enable=1
cat $wifidev_config > $wifi_config_tmp
echo "wifidev=\"${wifidev}\"" >> $wifi_config_tmp
echo "wifienable=\"${enable}\"" >> $wifi_config_tmp
echo "wifiessid=${wifiessid}" >> $wifi_config_tmp
echo "wifikeytype=$wifikeytype" >> $wifi_config_tmp
echo "wifiwhichkey=$wifiwhichkey" >> $wifi_config_tmp
echo "wifikey=\"$wifikey\"" >> $wifi_config_tmp
rm -f $wifi_config
cp -f $wifi_config_tmp $wifi_config
## when WPS, default dhcp
setinetattr.cgi "cmd=aa&-dhcp=on&-dnsstat=1"
sync
}
SMTCN_TLV_TYPE=""
SMTCN_TLV_LENGHT=""
SMTCN_TLV_VALUE=""
get_tlv_value()
{
TLV_HEX=$1
SMTCN_TLV_TYPE=""
SMTCN_TLV_LENGHT=""
SMTCN_TLV_VALUE=""
SMTCN_TLV_TYPE=`echo $TLV_HEX | cut -f1 -d-`
LENGHT1=`echo $TLV_HEX | cut -f2 -d-`
SMTCN_TLV_LENGHT=`printf "%d" "0x"$LENGHT1`
if [ $SMTCN_TLV_LENGHT == "2" ];then
return ;
fi
RepeatCnt=3
while [ 1 ]
do
if [ $RepeatCnt -gt $SMTCN_TLV_LENGHT ];then
break
fi
TLV_VALUE="0x"`echo $TLV_HEX | cut -f$RepeatCnt -d-`
SMTCN_TLV_VALUE=$SMTCN_TLV_VALUE`echo $TLV_VALUE | num2char `
RepeatCnt=$(( $RepeatCnt + 1 ))
done
}
GET_SMTCN_WKTYPE()
{
SMTCN_SSID=$1
SMTCN_WKTYPE="3"
SMTCN_SSID_LEN="${#SMTCN_SSID}"
echo "3" > /tmpfs/smtcn_wktype
cat $wifiscanresult | while read line
do
RESULT_SSID=`echo $line | grep "\<${SMTCN_SSID}\>" | awk '{print $5}'`
if [ "A""${RESULT_SSID}" == "A" ]
then
continue
fi
RESULT_SSID_LEN="${#RESULT_SSID}"
if [ "$SMTCN_SSID_LEN" == "$RESULT_SSID_LEN" ]
then
RESULT_WKTYPE=`echo $line | awk '{print $4}' | grep WPA`
if [ ! -z $RESULT_WKTYPE ];then
####wpa
SMTCN_WKTYPE="3"
echo "3" > /tmpfs/smtcn_wktype
else
RESULT_WKTYPE=`echo $line | awk '{print $4}' | grep [ESS]`
if [ ! -z $RESULT_WKTYPE ] && [ $RESULT_WKTYPE == "[ESS]" ];then
####no password
SMTCN_WKTYPE="1"
echo "1" > /tmpfs/smtcn_wktype
else
####wep
SMTCN_WKTYPE="2"
echo "2" > /tmpfs/smtcn_wktype
fi
fi
break;
fi
done
cat /tmpfs/smtcn_wktype
rm /tmpfs/smtcn_wktype -rf > /dev/null
}
wifi_smtcnOK()
{
smtcn_node=`get_smtcn_node`
if [ ! -e $smtcn_node ];then
return "1";
fi
cat $smtcn_node
SMTCN_SSID=`cat $smtcn_node | awk -F ", " '{printf $2}' | awk -F "=" '{printf $2}'`
SMTCN_PASSWORD=`cat $smtcn_node | awk -F ", " '{printf $3}' | awk -F "=" '{printf $2}'`
####SMTCN_AUTHMODE=`cat $smtcn_node | grep AUTHMODE | awk -F ": " '{printf $2}'`
SMTCN_TLV_HEX=`cat $smtcn_node | grep TLV_HEX | awk -F ": " '{printf $2}'`
# if [ -z $SMTCN_TLV_HEX ];then
# show_info "SMTCN_TLV_VALUE not set $smtcn_chk!!!!!!!!!!!"
# return "1";
# fi
#
# get_tlv_value $SMTCN_TLV_HEX
# show_info "TLV_HEX:"$SMTCN_TLV_HEX" SMTCN_TLV_TYPE:"$SMTCN_TLV_TYPE" SMTCN_TLV_LENGHT:"$SMTCN_TLV_LENGHT" SMTCN_TLV_VALUE:"$SMTCN_TLV_VALUE
#
# if [ -z $SMTCN_TLV_VALUE ];then
# show_info "SMTCN_TLV_VALUE not set $smtcn_chk!!!!!!!!!!!"
# return "1";
# fi
. $wifi_config
# if [ -z $smtcn_chk ];then
# smtcn_chk="RUNTOP"
# fi
#
# show_info "smtcn_chk:"$smtcn_chk" SMTCN_TLV_VALUE:"$SMTCN_TLV_VALUE
#
# if [ $SMTCN_TLV_VALUE != $smtcn_chk ];then
# show_info "SMTCN_TLV_VALUE not set $smtcn_chk!!!!!!!!!!!"
# return "1";
# fi
####根据之前搜索到wifi列表找出SSID对应的加密类型
# SMTCN_WKTYPE="3"
# RESULT_SSID=`cat $wifiscanresult | grep "\<${SMTCN_SSID}\>" | cut -f5`
# if [ "${RESULT_SSID}""A" != "A" ];then
# RESULT_WKTYPE=`cat $wifiscanresult | grep "${SMTCN_SSID}" | cut -f4 | grep WPA`
# if [ ! -z $RESULT_WKTYPE ];then
# ####wpa
# SMTCN_WKTYPE="3"
# else
# RESULT_WKTYPE=`cat $wifiscanresult | grep "${SMTCN_SSID}" | cut -f4 | grep [ESS]`
# if [ ! -z $RESULT_WKTYPE ] && [ $RESULT_WKTYPE == "[ESS]" ];then
# ####no password
# SMTCN_WKTYPE="1"
# else
# ####wep
# SMTCN_WKTYPE="2"
# fi
# fi
# fi
SMTCN_WKTYPE=`GET_SMTCN_WKTYPE "$SMTCN_SSID"`
show_info "SSID:"$SMTCN_SSID" PASSWORD:"$SMTCN_PASSWORD" WKTYPE:"$SMTCN_WKTYPE
wifi_sta_save_info "${SMTCN_SSID}" "${SMTCN_PASSWORD}" ${SMTCN_WKTYPE}
#cat $wifidev_config > $wifi_config_tmp
#cat $wifidev_config > $wifi_config_tmp
#echo "wifidev=\"${wifidev}\"" >> $wifi_config_tmp
#echo "wifienable=\"1\"" >> $wifi_config_tmp
#echo "wifiessid=\"${SMTCN_SSID}\"" >> $wifi_config_tmp
#echo "wifikeytype=${SMTCN_WKTYPE}" >> $wifi_config_tmp
#echo "wifiwhichkey=$wifiwhichkey" >> $wifi_config_tmp
#echo "wifikey=\"${SMTCN_PASSWORD}\"" >> $wifi_config_tmp
#
#cat $wifi_config_tmp > $wifi_config
#gen_wpa_config "${SMTCN_SSID}" $SMTCN_WKTYPE $wifiwhichkey "${SMTCN_PASSWORD}" $wpa_config_tmp
#
#cp -f $wpa_config_tmp $wpa_config
wifi_smtcn_stop
return "0"
}
wifi_voiceOK()
{
if [ ! -e /tmpfs/voice_wifi ];then
return "1";
fi
cat /tmpfs/voice_wifi
SMTCN_SSID=`cat /tmpfs/voice_wifi | grep SSID | awk -F ": " '{printf $2}'`
SMTCN_PASSWORD=`cat /tmpfs/voice_wifi | grep PASSWORD | awk -F ": " '{printf $2}'`
####SMTCN_AUTHMODE=`cat /tmpfs/voice_wifi | grep AUTHMODE | awk -F ": " '{printf $2}'`
SMTCN_TLV_HEX=`cat /tmpfs/voice_wifi | grep TLV_HEX | awk -F ": " '{printf $2}'`
# if [ -z $SMTCN_TLV_HEX ];then
# show_info "SMTCN_TLV_VALUE not set $smtcn_chk!!!!!!!!!!!"
# return "1";
# fi
#
# get_tlv_value $SMTCN_TLV_HEX
# show_info "TLV_HEX:"$SMTCN_TLV_HEX" SMTCN_TLV_TYPE:"$SMTCN_TLV_TYPE" SMTCN_TLV_LENGHT:"$SMTCN_TLV_LENGHT" SMTCN_TLV_VALUE:"$SMTCN_TLV_VALUE
#
# if [ -z $SMTCN_TLV_VALUE ];then
# show_info "SMTCN_TLV_VALUE not set $smtcn_chk!!!!!!!!!!!"
# return "1";
# fi
. $wifi_config
# if [ -z $smtcn_chk ];then
# smtcn_chk="RUNTOP"
# fi
#
# show_info "smtcn_chk:"$smtcn_chk" SMTCN_TLV_VALUE:"$SMTCN_TLV_VALUE
#
# if [ $SMTCN_TLV_VALUE != $smtcn_chk ];then
# show_info "SMTCN_TLV_VALUE not set $smtcn_chk!!!!!!!!!!!"
# return "1";
# fi
####根据之前搜索到wifi列表找出SSID对应的加密类型
# SMTCN_WKTYPE="3"
# RESULT_SSID=`cat $wifiscanresult | grep "\<${SMTCN_SSID}\>" | cut -f5`
# if [ "${RESULT_SSID}""A" != "A" ];then
# RESULT_WKTYPE=`cat $wifiscanresult | grep "${SMTCN_SSID}" | cut -f4 | grep WPA`
# if [ ! -z $RESULT_WKTYPE ];then
# ####wpa
# SMTCN_WKTYPE="3"
# else
# RESULT_WKTYPE=`cat $wifiscanresult | grep "${SMTCN_SSID}" | cut -f4 | grep [ESS]`
# if [ ! -z $RESULT_WKTYPE ] && [ $RESULT_WKTYPE == "[ESS]" ];then
# ####no password
# SMTCN_WKTYPE="1"
# else
# ####wep
# SMTCN_WKTYPE="2"
# fi
# fi
# fi
SMTCN_WKTYPE=`GET_SMTCN_WKTYPE "$SMTCN_SSID"`
show_info "SSID:"$SMTCN_SSID" PASSWORD:"$SMTCN_PASSWORD" WKTYPE:"$SMTCN_WKTYPE
wifi_sta_save_info "${SMTCN_SSID}" "${SMTCN_PASSWORD}" ${SMTCN_WKTYPE}
#cat $wifidev_config > $wifi_config_tmp
#cat $wifidev_config > $wifi_config_tmp
#echo "wifidev=\"${wifidev}\"" >> $wifi_config_tmp
#echo "wifienable=\"1\"" >> $wifi_config_tmp
#echo "wifiessid=\"${SMTCN_SSID}\"" >> $wifi_config_tmp
#echo "wifikeytype=${SMTCN_WKTYPE}" >> $wifi_config_tmp
#echo "wifiwhichkey=$wifiwhichkey" >> $wifi_config_tmp
#echo "wifikey=\"${SMTCN_PASSWORD}\"" >> $wifi_config_tmp
#
#cat $wifi_config_tmp > $wifi_config
#gen_wpa_config "${SMTCN_SSID}" $SMTCN_WKTYPE $wifiwhichkey "${SMTCN_PASSWORD}" $wpa_config_tmp
#
#cp -f $wpa_config_tmp $wpa_config
#rm /tmpfs/voice_wifi
return "0"
}
wifi_fatcnOK()
{
if [ ! -e /tmpfs/fastlink.conf ];then
return ;
fi
FATCN_SSID=`cat /tmpfs/fastlink.conf | grep SSID | awk -F ": " '{printf $2}'`
FATCN_PASSWORD=`cat /tmpfs/fastlink.conf | grep PASSWORD | awk -F ": " '{printf $2}'`
FATCN_AUTHMODE=`cat /tmpfs/fastlink.conf | grep AUTHMODE | awk -F ": " '{printf $2}'`
if [ $FATCN_AUTHMODE == "0" ];then
########no password
FATCN_WKTYPE="1"
elif [ $FATCN_AUTHMODE == "1" ]||[ $FATCN_AUTHMODE == "1" ];then
########wep
FATCN_WKTYPE="2"
else
########wpa
FATCN_WKTYPE="3"
fi
show_info "SSID:"$FATCN_SSID" PASSWORD:"$FATCN_PASSWORD" WKTYPE:"$FATCN_WKTYPE
wifi_sta_save_info ${FATCN_SSID} ${FATCN_PASSWORD} ${FATCN_WKTYPE}
#. $wifi_config
#
#cat $wifidev_config > $wifi_config_tmp
#cat $wifidev_config > $wifi_config_tmp
#echo "wifidev=\"${wifidev}\"" >> $wifi_config_tmp
#echo "wifienable=\"1\"" >> $wifi_config_tmp
#echo "wifiessid=\"${FATCN_SSID}\"" >> $wifi_config_tmp
#echo "wifikeytype=${FATCN_WKTYPE}" >> $wifi_config_tmp
#echo "wifiwhichkey=$wifiwhichkey" >> $wifi_config_tmp
#echo "wifikey=\"${FATCN_PASSWORD}\"" >> $wifi_config_tmp
#
#cat $wifi_config_tmp > $wifi_config
#
#gen_wpa_config $FATCN_SSID $FATCN_WKTYPE $wifiwhichkey $FATCN_PASSWORD $wpa_config_tmp
#cp -f $wpa_config_tmp $wpa_config
}
wifi_fixnetOK()
{
if [ ! -e $fixnet_config ];then
return ;
fi
FIXNET_SSID=`cat $fixnet_config | grep "ssid=\"" | awk -F "\"" '{print $2}'`
FIXNET_PASSWORD=`cat $fixnet_config | grep "#psk" | awk -F "\"" '{print $2}'`
FIXNET_WKTYPE="3"
show_info "SSID:"$FIXNET_SSID" PASSWORD:"$FIXNET_PASSWORD" WKTYPE:"$FIXNET_WKTYPE
. $wifi_config
cat $wifidev_config > $wifi_config_tmp
cat $wifidev_config > $wifi_config_tmp
echo "wifidev=\"${wifidev}\"" >> $wifi_config_tmp
echo "wifienable=\"1\"" >> $wifi_config_tmp
echo "wifiessid=\"${FIXNET_SSID}\"" >> $wifi_config_tmp
echo "wifikeytype=${FIXNET_WKTYPE}" >> $wifi_config_tmp
echo "wifiwhichkey=$wifiwhichkey" >> $wifi_config_tmp
echo "wifikey=\"${FIXNET_PASSWORD}\"" >> $wifi_config_tmp
cat $wifi_config_tmp > $wifi_config
}
####BTTODO, Get From config file
wifi_audio_connectsuccess()
{
return
# CustomNum=`cat /mnt/config/ipcamera/config_devm.ini | grep customernum= -m1 | cut -d = -f 2 `
if [ ! -z $CustomNum ] && [ $CustomNum == "47" ] || [ $CustomNum == "123" ] || [ $CustomNum == "44" ];#256044a-qks-mw7 不要任何提示音
then
return ;
fi
if [ ! -e /bin/vs/media/connectsuccess.g711a ]
then
show_error "Have no connectsuccess audio"
return
else
wget -O /tmpfs/wifiaudio.log "http://127.0.0.1/web/cgi-bin/hi3510/playaudio.cgi?&-playstate=1&-playfile=connectsuccess"
fi
}
####BTTODO, Get From config file
wifi_audio_connecting()
{
return
# CustomNum=`cat /mnt/config/ipcamera/config_devm.ini | grep customernum= -m1 | cut -d = -f 2 `
###hdx 225056客户要求摄像头开机无wifi声音提示
if [ ! -z $CustomNum ] && [ $CustomNum == "56" ] || [ $CustomNum == "47" ] || [ $CustomNum == "123" ] || [ $CustomNum == "44" ];
then
return ;
fi
if [ ! -e /bin/vs/media/connecting.g711a ]
then
show_error "Have no connecting audio"
return
else
wget -O /tmpfs/wifiaudio.log "http://127.0.0.1/web/cgi-bin/hi3510/playaudio.cgi?&-playstate=1&-playfile=connecting"
fi
}
####BTTODO, Get From config file
wifi_audio_connectfailure()
{
return
# CustomNum=`cat /mnt/config/ipcamera/config_devm.ini | grep customernum= -m1 | cut -d = -f 2 `
###hdx 225056客户要求摄像头开机无wifi声音提示
if [ ! -z $CustomNum ] && [ $CustomNum == "56" ] || [ $CustomNum == "123" ] || [ $CustomNum == "44" ];
then
return ;
fi
if [ ! -e /bin/vs/media/connectfailure.g711a ]
then
show_error "Have no connectfailure audio"
return
else
wget -O /tmpfs/wifiaudio.log "http://127.0.0.1/web/cgi-bin/hi3510/playaudio.cgi?&-playstate=1&-playfile=connectfailure"
fi
}
####BTTODO, Get From config file
wifi_audio_waitconnect()
{
return
# CustomNum=`cat /mnt/config/ipcamera/config_devm.ini | grep customernum= -m1 | cut -d = -f 2 `
###hdx 225056客户要求摄像头开机无wifi声音提示
if [ ! -z $CustomNum ] && [ $CustomNum == "56" ] || [ $CustomNum == "47" ] || [ $CustomNum == "123" ] || [ $CustomNum == "44" ];
then
return ;
fi
if [ ! -e /bin/vs/media/waitconnect.g711a ]
then
show_error "Have no waitconnect audio"
return
else
wget -O /tmpfs/wifiaudio.log "http://127.0.0.1/web/cgi-bin/hi3510/playaudio.cgi?&-playstate=1&-playfile=waitconnect"
fi
}
####BTTODO, Get From config file
wifi_audio_to_ap()
{
return
# CustomNum=`cat /mnt/config/ipcamera/config_devm.ini | grep customernum= -m1 | cut -d = -f 2 `
. $wifi_config
###hdx 225056客户要求摄像头开机无wifi声音提示
if [ ! -z $CustomNum ] && [ $CustomNum == "56" ] || [ $CustomNum == "123" ] || [ $CustomNum == "44" ];
then
return ;
fi
if [ ! -e /bin/vs/media/toap.g711a ]
then
show_error "Have no to_ap audio"
return
else
wget -O /tmpfs/wifiaudio.log "http://127.0.0.1/web/cgi-bin/hi3510/playaudio.cgi?&-playstate=1&-playfile=toap"
fi
}
#$1, 切换模式
#$2, 是否强制切换, 如果不输入, 默认为强制
wifi_modeswitch()
{
if [ -z $1 ]
then
wifimode_new=NONE
else
wifimode_new=$1
fi
if [ -z $2 ]
then
force=Y
else
force=$2
fi
show_dbg "CurrWifiMode $wifimode_curr switchto $wifimode_new, isforce:$force"
if [ $wifimode_new == $wifimode_curr -a $force = N ]
then
show_dbg "same wifimode and not force, do nothing"
return
fi
###BTTODO Why
if [ $wifimode_new == "LINED" ]
then
show_info "Enter LINED Mode"
if [ $wifimode_curr == "AP" ]
then
wifi_ap_stop
killall -9 udhcpd 2>/dev/null
killall -9 dnsd 2>/dev/null
elif [ $wifimode_curr == "SMTCN" ]
then
wifi_smtcn_stop
elif [ $wifimode_curr == "FATCN" ]
then
wifi_fatcn_stop
fi
wifi_setmode "NONE"
wifi_setstate "NONE"
elif [ $wifimode_new == "AP" ]
then
show_info "Enter AP Mode"
ap_ssid_update
if [ $wifimode_curr == "STA" ]
then
#ifconfig $wifidev up
net_up $wifidev
wifi_scan
wifi_sta_stop
elif [ $wifimode_curr == "FIXNET" ]
then
#ifconfig $wifidev up
net_up $wifidev
wifi_scan
wifi_fixnet_stop
elif [ $wifimode_curr == "AP" ]
then
show_info "Now is AP"
elif [ $wifimode_curr == "SMTCN" ]
then
wifi_smtcn_stop
wifi_sta_start
wifi_scan
wifi_sta_stop
elif [ $wifimode_curr == "FATCN" ]
then
wifi_fatcn_stop
#ifconfig $wifidev up
net_up $wifidev
wifi_scan
wifi_sta_stop
else
#wifi_sta_start
#wifi_scan
#wifi_sta_stop
show_info "Enter AP Mode"
fi
wifi_ap_start
wifi_ap_ipcfg
wifi_setmode "AP"
elif [ $wifimode_new == "STA" ]
then
show_info "Enter STA Mode"
rm $wifiscanresult -f 2>/dev/null
if [ $wifimode_curr == "AP" ]
then
wifi_ap_stop
wifi_sta_start
elif [ $wifimode_curr == "NONE" ]
then
wifi_sta_start
elif [ $wifimode_curr == "SMTCN" ]
then
wifi_smtcn_stop
elif [ $wifimode_curr == "FATCN" ]
then
wifi_fatcn_stop
elif [ $wifimode_curr == "FIXNET" ]
then
wifi_sta_start
elif [ $wifimode_curr == "STA" ]
then
wifi_sta_connect
fi
#elif [ $wifimode_curr == "WPS" ]
#then
# wpa_cli -i $wifidev reconfig
#fi
wifi_setmode "STA"
#wifi_sta_connect
wifi_setstate STA_CONNECTING
elif [ $wifimode_new == "WPS" ]
then
show_info "enter WPS mode"
if [ $wifimode_curr == "AP" ]
then
wifi_ap_stop
wifi_sta_start
elif [ $wifimode_curr == "NONE" ]
then
wifi_sta_start
elif [ $wifimode_curr == "SMTCN" ]
then
wifi_smtcn_stop
wifi_sta_start
elif [ $wifimode_curr == "FATCN" ]
then
wifi_fatcn_stop
fi
wifi_wps_start
#wpa_cli -i $wifidev remove_network 0
#wpa_cli -i $wifidev remove_network 1
#wpa_cli -i $wifidev wps_pbc
wifi_setmode WPS
wifi_setstate WPS_CONNECTING
elif [ $wifimode_new == "SMTCN" ]
then
if [ $wifimode_curr == "SMTCN" ]
then
show_info "Now is SMTCN Mode"
return ;
fi
if [ $wifimode_curr == "STA" ]
then
#ifconfig $wifidev up
net_up $wifidev
elif [ $wifimode_curr == "FIXNET" ]
then
#ifconfig $wifidev up
net_up $wifidev
elif [ $wifimode_curr == "AP" ]
then
wifi_ap_stop
wifi_sta_start
#ifconfig $wifidev up
net_up $wifidev
elif [ $wifimode_curr == "FATCN" ]
then
wifi_fatcn_stop
#ifconfig $wifidev up
net_up $wifidev
elif [ $wifimode_curr == "NONE" ]
then
wifi_sta_start
#ifconfig $wifidev up
net_up $wifidev
fi
show_info "Enter SMTCN Mode"
wifi_scan
## wifi_stopall
## sleep 1
wifi_setmode "SMTCN"
wifi_smtcn_start
wifi_setstate SMTCN_CONNECTING
wifi_audio_waitconnect
sleep 3; enter_voice_cfg_wifi_mode.sh
elif [ $wifimode_new == "FATCN" ]
then
show_info "Enter FATCN Mode"
rm $wifiscanresult -f 2>/dev/null
if [ $wifimode_curr == "AP" ]
then
wifi_ap_stop
wifi_sta_start
elif [ $wifimode_curr == "NONE" ]
then
wifi_sta_start
elif [ $wifimode_curr == "SMTCN" ]
then
wifi_smtcn_stop
wifi_sta_start
fi
killall fastlink
rm -rf /tmpfs/fastlink.conf
/bin/vslocal/cgi-bin/fastlink &
wifi_setmode "FATCN"
wifi_setstate FATCN_CONNECTING
wifi_audio_waitconnect
elif [ $wifimode_new == "FIXNET" ]
then
show_info "Enter FIXNET Mode"
rm $wifiscanresult -f 2>/dev/null
if [ $wifimode_curr == "AP" ]
then
wifi_ap_stop
wifi_fixnet_start
elif [ $wifimode_curr == "NONE" ]
then
wifi_fixnet_start
elif [ $wifimode_curr == "SMTCN" ]
then
wifi_smtcn_stop
elif [ $wifimode_curr == "FATCN" ]
then
wifi_fatcn_stop
fi
wifi_setmode "FIXNET"
wifi_fixnet_connect
wifi_setstate FIXNET_CONNECTING
elif [ $wifimode_new == "NONE" ]
then
wifi_ap_stop
wifi_sta_stop
wifi_smtcn_stop
wifi_setmode "NONE"
fi
}