#!/bin/bash
###############################################################################
# #
# IPFire.org - A linux based firewall #
# Copyright (C) 2012 IPFire Network Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see . #
# #
###############################################################################
function wpa_supplicant_config_write() {
local device=${1}
shift
assert isset device
local ssid
local encryption
local key
while [ $# -gt 0 ]; do
case "${1}" in
--ssid=*)
ssid=${1#--ssid=}
;;
--encryption=*)
encryption=${1#--encryption=}
;;
--key=*)
key=${1#--key=}
;;
esac
shift
done
assert isset ssid
assert isset encryption
assert isset key
cat < ${config_file}
wpa_supplicant -i ${device} -D wext -B -c ${config_file} \
-P ${config_dir}/pid
}
function wpa_supplicant_stop() {
local device=${1}
assert isset device
local pid=$(wpa_supplicant_get_pid ${device})
if isset pid; then
process_kill ${pid}
else
warning_log "Could not find pid file for wpa_supplicant process running for ${device}."
fi
rm -rf $(wpa_supplicant_config_dir ${device})
}
function wpa_supplicant_get_pid() {
local device=${1}
assert isset device
local pid_file="$(wpa_supplicant_config_dir ${device})/pid"
[ -e "${pid_file}" ] || return ${EXIT_ERROR}
cat ${pid_file} 2>/dev/null
return ${EXIT_OK}
}
function wpa_supplicant_is_running() {
local device=${1}
assert isset device
local pid=$(wpa_supplicant_get_pid ${device})
if isset pid && [ -d "/proc/${pid}" ]; then
return ${EXIT_OK}
fi
return ${EXIT_ERROR}
}
function wpa_supplicant_get_pid() {
local zone=${1}
shift
}
function wpa_supplicant_stop() {
local zone=${1}
shift
killall wpa_supplicant
}