2023-04-01 10:00:13 +08:00

60 lines
1.5 KiB
Bash

#!/bin/sh
. "/lib/functions.sh"
log() {
wifilog "In Range" "$@"
}
rm -f /tmp/hot1
cnt=0
trm_ifstatus="false"
while [ ${cnt} -lt 20 ]
do
trm_ifstatus="$(ubus -S call network.wireless status | jsonfilter -l1 -e '@.*.up')"
if [ "${trm_ifstatus}" = "true" ]
then
break
fi
cnt=$((cnt+1))
sleep 1
done
wif=$(uci -q get travelmate.global.freq)
RADIO=$(uci get wireless.wwan$wif.device)
ap_list="$(ubus -S call network.wireless status | jsonfilter -e "@.$RADIO.interfaces[@.config.mode=\"ap\"].ifname")"
trm_scanner="$(which iw)"
for ap in ${ap_list}
do
ssid_list="$(${trm_scanner} dev "${ap}" scan 2>/dev/null > /tmp/scan
cat /tmp/scan | awk '/SSID: /{if(!seen[$0]++){printf "\"";for(i=2; i<=NF; i++)if(i==2)printf $i;else printf " "$i;printf "\" "}}')"
if [ -n "${ssid_list}" ]
then
if [ -f "/etc/hotspot" ]; then
while IFS='|' read -r ssid encrypt key
do
ssidq="\"$ssid\""
if [ -n "$(printf "${ssid_list}" | grep -Fo "${ssidq}")" ]
then
echo $ssid"|"$encrypt"|"$key"|1" >> /tmp/hot1
else
echo $ssid"|"$encrypt"|"$key"|0" >> /tmp/hot1
fi
done <"/etc/hotspot"
fi
else
if [ -f "/etc/hotspot" ]; then
while IFS='|' read -r ssid encrypt key
do
echo $ssid"|"$encrypt"|"$key"|0" >> /tmp/hot1
done <"/etc/hotspot"
fi
fi
done
if [ -f "/tmp/hot1" ]; then
mv -f /tmp/hot1 /tmp/hot
fi