summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormakefu <root@pigstarter.de>2013-06-26 13:09:44 +0200
committermakefu <root@pigstarter.de>2013-06-26 13:09:44 +0200
commit11d994c0a822f83b311ce9a63d1f3dc3c29c7039 (patch)
treeb39cd8edbec59e637a97c2a7ef5b8daf9fed88e5
parenta77e5646569584ab6953c6683e1490791acc32a4 (diff)
refactor vendor matcher
-rw-r--r--usr/lib/autowifi/lib/plugin_core26
-rwxr-xr-xusr/lib/autowifi/plugins/11belkin_wps9
2 files changed, 22 insertions, 13 deletions
diff --git a/usr/lib/autowifi/lib/plugin_core b/usr/lib/autowifi/lib/plugin_core
index da003350..1b83b0c3 100644
--- a/usr/lib/autowifi/lib/plugin_core
+++ b/usr/lib/autowifi/lib/plugin_core
@@ -1,24 +1,38 @@
+#!/bin/sh
parse_plugin_args(){
[ $# -ne 4 ] && plugin_usage && exit 1
# convenience function to put args in ENV variables
ESSID="$1"
- MAC="$2"
+
+ # mac is returned without colon
+ MAC=$(printf "%s" "$2" | sed 's/://g')
+ # split up the mac address to vendor and private part
+ VENDOR_MAC=${MAC:0:6}
+ PRIVATE_MAC=${MAC:6:12}
CHANNEL="$3"
ENC="$4"
- if [ ${#MAC} -ne 17 ] ;then
+ if [ ${#MAC} -ne 12 ] ;then
echo "MAC malformed"
exit 1
fi
}
plugin_usage(){
cat << EOF
-usage: $0 ESSID MAC CHANNEL ENC WPA WPA2"
+usage: $0 ESSID MAC CHANNEL ENC"
ESSID - string
MAC - 00:11:22:33:44:55
- ENC - on | off
- WPA - 0 | 1
- WPA2 - 0 | 1
+ CHANNEL - 4
+ ENC - wpa
EOF
}
+
+check_vendor_mac(){
+ needle="$(printf $1 | tr '[A-Z]' '[a-z]')"
+ shift
+ for i in "$@";do
+ [ "$needle" == "$(printf $i | tr '[A-Z]' '[a-z]')" ] && return 0
+ done
+ return 1
+}
diff --git a/usr/lib/autowifi/plugins/11belkin_wps b/usr/lib/autowifi/plugins/11belkin_wps
index 82140523..65e08624 100755
--- a/usr/lib/autowifi/plugins/11belkin_wps
+++ b/usr/lib/autowifi/plugins/11belkin_wps
@@ -15,13 +15,8 @@ cd $(dirname $(readlink -f $0))
. ../lib/wps
parse_plugin_args "$@"
-MAC=$(printf "%s" $MAC| sed 's/://g')
-VENDOR_MAC=${MAC:0:6}
-PRIVATE_MAC=${MAC:6:12}
-if ! [ $VENDOR_MAC == "002275" -o $VENDOR_MAC == "001CDF" -o $VENDOR_MAC == "09863B" ] ;then
- echo "VENDOR MAC $VENDOR_MAC not affected"
- exit 1
-fi
+
+! check_vendor_mac "$VENDOR_MAC" 002275 001CDF 09863B && echo "VENDOR MAC $VENDOR_MAC not affected" && exit 1
calc_belkin(){
PRIVATE_MAC=${1}