#!/bin/sh reset_conf() { echo "config corrupted, reset wifi.conf" cp /usr/local/share/script/wifi.conf /pref/wifi.conf cat /pref/wifi.conf | sed -e 's/$/\r/' > /tmp/fuse_d/MISC/wifi.conf killall hostapd dnsmasq 2>/dev/null } apply_ap_conf() { #Load the parameter settings conf=`cat /pref/wifi.conf | grep -Ev "^#"` #LOCAL_IP LOCAL_IP=`echo "${conf}" | grep LOCAL_IP | cut -c 10-` echo "LOCAL_IP=${LOCAL_IP}" killall udhcpc ifconfig wlan0 $LOCAL_IP if [ $? -ne 0 ]; then reset_conf return 1 fi route add default gw $LOCAL_IP #LOCAL_NETMASK LOCAL_NETMASK=`echo "${conf}" | grep LOCAL_NETMASK | cut -c 15-` echo "LOCAL_NETMASK=${LOCAL_NETMASK}" ifconfig wlan0 netmask $LOCAL_NETMASK if [ $? -ne 0 ]; then reset_conf return 1 fi #DHCP_IP_START DHCP_IP_END DHCP_IP_START=`echo "${conf}" | grep DHCP_IP_START | cut -c 15-` echo "DHCP_IP_START=${DHCP_IP_START}" DHCP_IP_END=`echo "${conf}" | grep DHCP_IP_END | cut -c 13-` echo "DHCP_IP_END=${DHCP_IP_END}" dnsmasq -5 -K -R -n --dhcp-range=$DHCP_IP_START,$DHCP_IP_END,1h if [ $? -ne 0 ]; then reset_conf return 1 fi #generate hostapd.conf echo "interface=wlan0" > /tmp/hostapd.conf echo "ctrl_interface=/var/run/hostapd" >> /tmp/hostapd.conf echo "beacon_int=100" >> /tmp/hostapd.conf echo "dtim_period=1" >> /tmp/hostapd.conf echo "preamble=0" >> /tmp/hostapd.conf #AP_SSID AP_SSID=`echo "${conf}" | grep AP_SSID | cut -c 9-` echo "AP_SSID=${AP_SSID}" echo "ssid=${AP_SSID}" >> /tmp/hostapd.conf #AP_MAXSTA AP_MAXSTA=`echo "${conf}" | grep AP_MAXSTA | cut -c 11-` echo "AP_MAXSTA=${AP_MAXSTA}" echo "max_num_sta=${AP_MAXSTA}" >> /tmp/hostapd.conf #AP_CHANNEL AP_CHANNEL=`echo "${conf}" | grep AP_CHANNEL | cut -c 12-` echo "AP_CHANNEL=${AP_CHANNEL}" if [ ${AP_CHANNEL} -lt 0 ]; then reset_conf return 1 fi if [ $AP_CHANNEL -ne 0 ]; then echo "channel_num=${AP_CHANNEL}" >> /tmp/hostapd.conf fi #WEP, WPA, No Security AP_PUBLIC=`echo "${conf}" | grep AP_PUBLIC | cut -c 11-` echo "AP_PUBLIC=${AP_PUBLIC}" AP_WEP=`echo "${conf}" | grep AP_WEP | cut -c 8-` echo "AP_WEP=${AP_WEP}" if [ "${AP_PUBLIC}" != "yes" ] && [ "${AP_PUBLIC}" != "Yes" ] && [ "${AP_PUBLIC}" != "YES" ]; then if [ "${AP_WEP}" != "yes" ] && [ "${AP_WEP}" != "Yes" ] && [ "${AP_WEP}" != "YES" ]; then #WPA WPA_VERSION=`echo "${conf}" | grep WPA_VERSION | cut -c 13-` echo "WPA_VERSION=${WPA_VERSION}" echo "wpa=${WPA_VERSION}" >> /tmp/hostapd.conf WPA_PAIRWISE=`echo "${conf}" | grep WPA_PAIRWISE | cut -c 14-` echo "WPA_PAIRWISE=${WPA_PAIRWISE}" echo "wpa_pairwise=${WPA_PAIRWISE}" >> /tmp/hostapd.conf AP_PASSWD=`echo "${conf}" | grep AP_PASSWD | cut -c 11-` echo "AP_PASSWD=${AP_PASSWD}" echo "wpa_passphrase=${AP_PASSWD}" >> /tmp/hostapd.conf echo "wpa_key_mgmt=WPA-PSK" >> /tmp/hostapd.conf else #WEP WEP_DEFAULT_KEY=`echo "${conf}" | grep WEP_DEFAULT_KEY | cut -c 17-` echo "WEP_DEFAULT_KEY=${WEP_DEFAULT_KEY}" echo "wep_default_key=${WEP_DEFAULT_KEY}" >> /tmp/hostapd.conf WEP_KEY0=`echo "${conf}" | grep WEP_KEY0 | cut -c 10-` echo "WEP_KEY0=${WEP_KEY0}" echo "wep_key0=${WEP_KEY0}" >> /tmp/hostapd.conf WEP_KEY1=`echo "${conf}" | grep WEP_KEY1 | cut -c 10-` echo "WEP_KEY1=${WEP_KEY1}" echo "wep_key1=${WEP_KEY1}" >> /tmp/hostapd.conf WEP_KEY2=`echo "${conf}" | grep WEP_KEY2 | cut -c 10-` echo "WEP_KEY2=${WEP_KEY2}" echo "wep_key2=${WEP_KEY2}" >> /tmp/hostapd.conf WEP_KEY3=`echo "${conf}" | grep WEP_KEY3 | cut -c 10-` echo "WEP_KEY3=${WEP_KEY3}" echo "wep_key3=${WEP_KEY3}" >> /tmp/hostapd.conf AUTH_ALGS=`echo "${conf}" | grep AUTH_ALGS | cut -c 11-` echo "AUTH_ALGS=${AUTH_ALGS}" echo "auth_algs=${AUTH_ALGS}" >> /tmp/hostapd.conf fi fi hostapd -B /tmp/hostapd.conf if [ $? -ne 0 ]; then reset_conf return 1 fi if [ $AP_CHANNEL -eq 0 ]; then #ACS (Automatic Channel Selection) between 1, 6, 11 iwconfig wlan0 channel 0 iwconfig wlan0 commit fi #send wifi status update message (Wifi On, AP mode, need to do wifi_postproc) #SendToItron 0xf403002c 2 1 boot_done 1 2 1 return 0 } apply_ap_conf rval=$? echo -e "rval=${rval}\n" if [ ${rval} -ne 0 ]; then killall -9 hostapd dnsmasq 2>/dev/null apply_ap_conf fi