create_ap

create a nat-ed wifi ap
git clone git://git.2f30.org/create_ap
Log | Files | Refs | README | LICENSE

commit bddf2dd0e8b3f2c06cd1807723b2c38becd1b0f3
parent 27c39948ca380ab51ef33c0bd988077758889d74
Author: oblique <psyberbits@gmail.com>
Date:   Thu, 16 Apr 2015 22:12:23 +0300

Merge pull request #66 from hashken/bash_completion

Add bash completion
Diffstat:
MMakefile | 2++
Abash_completion | 134+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 136 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile @@ -4,3 +4,5 @@ all: install: cp create_ap /usr/bin/create_ap [ ! -d /lib/systemd/system ] || cp create_ap.service /lib/systemd/system + mkdir -p /usr/share/bash-completion/completions + cp bash_completion /usr/share/bash-completion/completions/create_ap diff --git a/bash_completion b/bash_completion @@ -0,0 +1,134 @@ +# +# Bash Completion routine for create_ap +# + +_create_ap() { + local awk_cmd=' + ($1 ~ /^-/) { + for (i = 1; i <= NF; i++) { + if ($i ~ /,$/) { + print substr ($i, 0, length ($i)-1) + } + else { + print $i + break + } + } + } + ' + + local cur prev opts + COMPREPLY=() + cur="$2" + prev="$3" + opts=$("$1" --help | awk "$awk_cmd") + + case "$prev" in + -h|--help) + # No Options + ;; + --version) + # No Options + ;; + -c) + # Refer http://en.wikipedia.org/wiki/List_of_WLAN_channels + opts=$( + iw list | grep ' MHz \[[[:digit:]]\+\] ' | + grep -v 'no IR\|disabled' | + sed 's/.*\[\(.*\)\].*/\1/' | sort -n | uniq + ) + ;; + -w) + opts="1 2 1+2" + ;; + -n) + # No Options + ;; + -m) + opts="nat bridge none" + ;; + --hidden) + # No Options + ;; + --ieee80211n) + # No Options + ;; + --ht_capab) + # Refer http://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf + opts=' + [LDPC] [HT40-] [HT40+] [SMPS-STATIC] [SMPS-DYNAMIC] + [GF] [SHORT-GI-20] [SHORT-GI-40] [TX-STBC] + [RX-STBC1] [RX-STBC12] [RX-STBC123] [DELAYED-BA] + [MAX-AMSDU-7935] [DSSS_CCK-40] [40-INTOLERANT] + [LSIG-TXOP-PROT] + ' + ;; + --country) + local reg_file=/usr/lib/crda/regulatory.bin + if command -v regdbdump > /dev/null && [[ -f "$reg_file" ]]; then + local country_awk_cmd=' + ($1 ~ /^country/) { + print substr ($2, 0, length ($2)-1) + } + ' + opts=$(regdbdump "$reg_file" 2>/dev/null | awk "$country_awk_cmd") + else + opts=' + AD AE AF AI AL AM AN AR AS AT AU AW AZ BA BB BD BE + BF BG BH BL BM BN BO BR BS BT BY BZ CA CF CH CI CL + CN CO CR CX CY CZ DE DK DM DO DZ EC EE EG ES ET FI + FM FR GB GD GE GF GH GL GP GR GT GU GY HK HN HR HT + HU ID IE IL IN IR IS IT JM JO JP KE KH KN KP KR KW + KY KZ LB LC LI LK LS LT LU LV MA MC MD ME MF MH MK + MN MO MP MQ MR MT MU MW MX MY NG NI NL NO NP NZ OM + PA PE PF PG PH PK PL PM PR PT PW PY QA RE RO RS RU + RW SA SE SG SI SK SN SR SV SY TC TD TG TH TN TR TT + TW TZ UA UG US UY UZ VC VE VI VN VU WF WS YE YT ZA + ZW 00 + ' + fi + ;; + --freq-band) + opts="2.4 5" + ;; + --driver) + # Refer http://w1.fi/cgit/hostap/tree/src/drivers + # Not going to implement + ;; + --no-virt) + # No Options + ;; + --no-haveged) + # No Options + ;; + --fix-unmanaged) + # No Options + ;; + --mac) + # Not going to implement + ;; + --daemon) + # No Options + ;; + --stop) + opts=$("$1" --list) + ;; + --list) + # No Options + ;; + -g) + # Not going to implement + ;; + -d) + # No Options + ;; + *) + ;; + esac + + COMPREPLY=( $(compgen -W "$opts" -- $cur) ) + return 0 +} +complete -F _create_ap create_ap + +# vim: set ft=sh: