#!/bin/bash dhcpd_file=/etc/udhcpd.conf hostapd_file=/etc/hostapd.conf interface=wlan0 do_start() { if [ "$1" = "bridge" ]; then interface=br0 if ! grep -E -q "^bridge=$interface\s*$" $hostapd_file; then echo "Enabling bridge=br0 in $hostapd_file" sed -r -i "s/^#?bridge=.*$/bridge=$interface/" $hostapd_file fi fi echo "starting hostap daemon" /etc/init.d/hostapd start if [ "$1" != "bridge" ]; then echo "setting IP address of access point" ifconfig $interface $1 fi if ! grep -E -q "^interface\s+$interface" $dhcpd_file; then echo "Changing dhcpd interface to $interface" sed -r -i "s/^interface\s+.*$/interface $interface/" $dhcpd_file fi ocg-dhcpd start } do_stop() { echo "stopping hostap daemon" /etc/init.d/hostapd stop ocg-dhcpd stop } # main if [[ $# -lt 1 ]] then echo "usage: $0 start|stop|restart [access point IP address|\"bridge\"]" exit 1 elif [[ $# -eq 2 ]] then if [ "$2" != "bridge" ]; then ret=1 if [[ $2 =~ ^([0-9]{1,3}\.){3,3}[0-9]{1,3}$ ]] then OIFS=$IFS IFS='.' ip=($2) IFS=$OFIS [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]] ret=$? fi if [[ ret -ne 0 ]] then echo "invalid IP address" exit 1 fi fi ip=$2 else ip="192.168.2.1" fi case $1 in start) do_start $ip ;; stop) do_stop ;; restart) do_stop sleep 1 do_start $ip ;; esac exit 0