first commit
This commit is contained in:
50
etc_org/wpa_supplicant/action_wpa.sh
Executable file
50
etc_org/wpa_supplicant/action_wpa.sh
Executable file
@ -0,0 +1,50 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Action script to enable/disable wpa-roam interfaces in reaction to
|
||||
# ifplugd events.
|
||||
#
|
||||
# Copyright: Copyright (c) 2008-2010, Kel Modderman <kel@otaku42.de>
|
||||
# License: GPL-2
|
||||
#
|
||||
|
||||
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
||||
|
||||
if [ ! -x /sbin/wpa_action ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# ifplugd(8) - <iface> <action>
|
||||
#
|
||||
# If an ifplugd managed interface is brought up, disconnect any
|
||||
# wpa-roam managed interfaces so that only one "roaming" interface
|
||||
# remains active on the system.
|
||||
|
||||
IFPLUGD_IFACE="${1}"
|
||||
|
||||
case "${2}" in
|
||||
up)
|
||||
COMMAND=disconnect
|
||||
;;
|
||||
down)
|
||||
COMMAND=reconnect
|
||||
;;
|
||||
*)
|
||||
echo "$0: unknown arguments: ${@}" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
for CTRL in /run/wpa_supplicant/*; do
|
||||
[ -S "${CTRL}" ] || continue
|
||||
|
||||
IFACE="${CTRL#/run/wpa_supplicant/}"
|
||||
|
||||
# skip if ifplugd is managing this interface
|
||||
if [ "${IFPLUGD_IFACE}" = "${IFACE}" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
if wpa_action "${IFACE}" check; then
|
||||
wpa_cli -i "${IFACE}" "${COMMAND}"
|
||||
fi
|
||||
done
|
1006
etc_org/wpa_supplicant/functions.sh
Executable file
1006
etc_org/wpa_supplicant/functions.sh
Executable file
File diff suppressed because it is too large
Load Diff
172
etc_org/wpa_supplicant/ifupdown.sh
Executable file
172
etc_org/wpa_supplicant/ifupdown.sh
Executable file
@ -0,0 +1,172 @@
|
||||
#!/bin/sh
|
||||
|
||||
#####################################################################
|
||||
## Purpose
|
||||
# This file is executed by ifupdown in pre-up, post-up, pre-down and
|
||||
# post-down phases of network interface configuration. It allows
|
||||
# ifup(8), and ifdown(8) to manage wpa_supplicant(8) and wpa_cli(8)
|
||||
# processes running in daemon mode.
|
||||
#
|
||||
# /etc/wpa_supplicant/functions.sh is sourced by this file.
|
||||
#
|
||||
# This file is provided by the wpasupplicant package.
|
||||
|
||||
#####################################################################
|
||||
# Copyright (C) 2006 - 2009 Debian/Ubuntu wpasupplicant Maintainers
|
||||
# <pkg-wpa-devel@lists.alioth.debian.org>
|
||||
#
|
||||
# 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 2
|
||||
# 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.
|
||||
#
|
||||
# On Debian GNU/Linux systems, the text of the GPL license,
|
||||
# version 2, can be found in /usr/share/common-licenses/GPL-2.
|
||||
|
||||
if [ -n "$IF_WPA_MAINT_DEBUG" ]; then
|
||||
set -x
|
||||
fi
|
||||
|
||||
# quit if we're called for the loopback
|
||||
if [ "$IFACE" = lo ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# allow wpa_supplicant interface to be specified via wpa-iface
|
||||
# useful for starting wpa_supplicant on one interface of a bridge
|
||||
if [ -n "$IF_WPA_IFACE" ]; then
|
||||
WPA_IFACE="$IF_WPA_IFACE"
|
||||
else
|
||||
WPA_IFACE="$IFACE"
|
||||
fi
|
||||
|
||||
# source functions
|
||||
if [ -f /etc/wpa_supplicant/functions.sh ]; then
|
||||
. /etc/wpa_supplicant/functions.sh
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# quit if executables are not installed
|
||||
if [ ! -x "$WPA_SUP_BIN" ] || [ ! -x "$WPA_CLI_BIN" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
do_start () {
|
||||
if test_wpa_cli; then
|
||||
# if wpa_action is active for this IFACE, do nothing
|
||||
ifupdown_locked && exit 0
|
||||
|
||||
# if the administrator is calling ifup, say something useful
|
||||
if [ "$PHASE" = "pre-up" ]; then
|
||||
wpa_msg stderr "wpa_action is managing ifup/ifdown state of $WPA_IFACE"
|
||||
wpa_msg stderr "execute \`ifdown --force $WPA_IFACE' to stop wpa_action"
|
||||
fi
|
||||
exit 1
|
||||
elif ! set | grep -q "^IF_WPA"; then
|
||||
# no wpa- option defined for IFACE, do nothing
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# ensure stale ifupdown_lock marker is purged
|
||||
ifupdown_unlock
|
||||
|
||||
# preliminary sanity checks for roaming daemon
|
||||
if [ -n "$IF_WPA_ROAM" ]; then
|
||||
if [ "$METHOD" != "manual" ]; then
|
||||
wpa_msg stderr "wpa-roam can only be used with the \"manual\" inet METHOD"
|
||||
exit 1
|
||||
fi
|
||||
if [ -n "$IF_WPA_MAPPING_SCRIPT" ]; then
|
||||
if ! type "$IF_WPA_MAPPING_SCRIPT" >/dev/null; then
|
||||
wpa_msg stderr "wpa-mapping-script \"$IF_WPA_MAPPING_SCRIPT\" is not valid"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ -n "$IF_WPA_MAPPING_SCRIPT_PRIORITY" ] && [ -z "$IF_WPA_MAPPING_SCRIPT" ]; then
|
||||
wpa_msg stderr "\"wpa-mapping-script-priority 1\" is invalid without a wpa-mapping-script"
|
||||
exit 1
|
||||
fi
|
||||
IF_WPA_CONF="$IF_WPA_ROAM"
|
||||
WPA_ACTION_SCRIPT="/sbin/wpa_action"
|
||||
fi
|
||||
|
||||
# master function; determines if ifupdown.sh should do something or not
|
||||
if [ -n "$IF_WPA_CONF" ] && [ "$IF_WPA_CONF" != "managed" ]; then
|
||||
if [ ! -s "$IF_WPA_CONF" ]; then
|
||||
wpa_msg stderr "cannot read contents of $IF_WPA_CONF"
|
||||
exit 1
|
||||
fi
|
||||
WPA_SUP_CONF_CTRL_DIR=$(sed -n -e 's/[[:space:]]*#.*//g' -e 's/[[:space:]]\+.*$//g' \
|
||||
-e 's/^ctrl_interface=\(DIR=\)\?\(.*\)/\2/p' "$IF_WPA_CONF")
|
||||
if [ -n "$WPA_SUP_CONF_CTRL_DIR" ]; then
|
||||
WPA_CTRL_DIR="$WPA_SUP_CONF_CTRL_DIR"
|
||||
WPA_SUP_CONF="-c $IF_WPA_CONF"
|
||||
else
|
||||
# specify the default ctrl_interface since none was defined in
|
||||
# the given IF_WPA_CONF
|
||||
WPA_SUP_CONF="-c $IF_WPA_CONF -C $WPA_CTRL_DIR"
|
||||
fi
|
||||
else
|
||||
# specify the default ctrl_interface
|
||||
WPA_SUP_CONF="-C $WPA_CTRL_DIR"
|
||||
fi
|
||||
}
|
||||
|
||||
do_stop () {
|
||||
if test_wpa_cli; then
|
||||
# if wpa_action is active for this IFACE and calling ifdown,
|
||||
# do nothing
|
||||
ifupdown_locked && exit 0
|
||||
elif test_wpa_supplicant; then
|
||||
# wpa_supplicant process exists for this IFACE, but wpa_cli
|
||||
# process does not. Allow stop mode to kill this process.
|
||||
:
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
case "$MODE" in
|
||||
start)
|
||||
do_start
|
||||
case "$PHASE" in
|
||||
pre-up)
|
||||
kill_wpa_supplicant
|
||||
init_wpa_supplicant || exit 1
|
||||
conf_wpa_supplicant || { kill_wpa_supplicant; exit 1; }
|
||||
;;
|
||||
post-up)
|
||||
init_wpa_cli || { kill_wpa_supplicant; exit 1; }
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
stop)
|
||||
do_stop
|
||||
case "$PHASE" in
|
||||
pre-down)
|
||||
kill_wpa_cli
|
||||
;;
|
||||
post-down)
|
||||
kill_wpa_supplicant
|
||||
;;
|
||||
*)
|
||||
wpa_msg stderr "unknown phase: \"$PHASE\""
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
*)
|
||||
wpa_msg stderr "unknown mode: \"$MODE\""
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
Reference in New Issue
Block a user