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