parent
718ea69e46
commit
0ba638f780
50
create_ap
50
create_ap
@ -112,6 +112,21 @@ get_adapter_info() {
|
|||||||
iw phy $PHY info
|
iw phy $PHY info
|
||||||
}
|
}
|
||||||
|
|
||||||
|
can_have_sta_and_ap() {
|
||||||
|
# iwconfig does not provide this information, assume false
|
||||||
|
[[ $USE_IWCONFIG -eq 1 ]] && return 1
|
||||||
|
get_adapter_info "$1" | grep -E '{.* managed.* AP.*}' > /dev/null 2>&1 && return 0
|
||||||
|
get_adapter_info "$1" | grep -E '{.* AP.* managed.*}' > /dev/null 2>&1 && return 0
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
can_have_ap() {
|
||||||
|
# iwconfig does not provide this information, assume true
|
||||||
|
[[ $USE_IWCONFIG -eq 1 ]] && return 0
|
||||||
|
get_adapter_info "$1" | grep -E '\* AP$' > /dev/null 2>&1 && return 0
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
can_transmit_to_channel() {
|
can_transmit_to_channel() {
|
||||||
IFACE=$1
|
IFACE=$1
|
||||||
CHANNEL=$2
|
CHANNEL=$2
|
||||||
@ -130,6 +145,15 @@ can_transmit_to_channel() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is_wifi_connected() {
|
||||||
|
if [[ $USE_IWCONFIG -eq 0 ]]; then
|
||||||
|
iw dev "$1" link 2>&1 | grep -E '^Connected to' > /dev/null 2>&1 && return 0
|
||||||
|
else
|
||||||
|
iwconfig "$1" 2>&1 | grep -E 'Access Point: [0-9a-fA-F]{2}:' > /dev/null 2>&1 && return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
get_macaddr() {
|
get_macaddr() {
|
||||||
ip link show "$1" | grep ether | grep -Eo '([0-9a-f]{2}:){5}[0-9a-f]{2}[[:space:]]' | tr -d '[[:space:]]'
|
ip link show "$1" | grep ether | grep -Eo '([0-9a-f]{2}:){5}[0-9a-f]{2}[[:space:]]' | tr -d '[[:space:]]'
|
||||||
}
|
}
|
||||||
@ -445,12 +469,18 @@ if ! is_wifi_interface ${WIFI_IFACE}; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $NO_VIRT -eq 0 && $USE_IWCONFIG -eq 1 ]]; then
|
if ! can_have_ap ${WIFI_IFACE}; then
|
||||||
NO_VIRT=1
|
echo "ERROR: Your adapter does not support AP (master) mode" >&2
|
||||||
if which iw > /dev/null 2>&1; then
|
exit 1
|
||||||
echo "'iw' can not recognize your adapter, virtual interface can not be created" >&2
|
fi
|
||||||
else
|
|
||||||
echo "'iw' is not installed, virtual interface can not be created" >&2
|
if ! can_have_sta_and_ap ${WIFI_IFACE}; then
|
||||||
|
if is_wifi_connected ${WIFI_IFACE}; then
|
||||||
|
echo "ERROR: Your adapter can not be connected to an AP and at the same time transmit as an AP" >&2
|
||||||
|
exit 1
|
||||||
|
elif [[ $NO_VIRT -eq 0 ]]; then
|
||||||
|
echo "WARN: Your adapter does not fully support AP virtual interface, enabling --no-virt" >&2
|
||||||
|
NO_VIRT=1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -522,6 +552,12 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ $NO_VIRT -eq 1 && "$WIFI_IFACE" == "$INTERNET_IFACE" ]]; then
|
||||||
|
echo -n "ERROR: You can not share your connection from the same" >&2
|
||||||
|
echo " interface if you are using --no-virt option." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
CONFDIR=$(mktemp -d /tmp/create_ap.${WIFI_IFACE}.conf.XXXXXXXX)
|
CONFDIR=$(mktemp -d /tmp/create_ap.${WIFI_IFACE}.conf.XXXXXXXX)
|
||||||
echo "Config dir: $CONFDIR"
|
echo "Config dir: $CONFDIR"
|
||||||
|
|
||||||
@ -560,8 +596,6 @@ if [[ $NO_VIRT -eq 0 ]]; then
|
|||||||
OLD_MACADDR=$(get_macaddr ${VWIFI_IFACE})
|
OLD_MACADDR=$(get_macaddr ${VWIFI_IFACE})
|
||||||
[[ ${OLD_MACADDR} == $(get_macaddr ${WIFI_IFACE}) ]] && NEW_MACADDR=$(get_new_macaddr ${VWIFI_IFACE})
|
[[ ${OLD_MACADDR} == $(get_macaddr ${WIFI_IFACE}) ]] && NEW_MACADDR=$(get_new_macaddr ${VWIFI_IFACE})
|
||||||
WIFI_IFACE=${VWIFI_IFACE}
|
WIFI_IFACE=${VWIFI_IFACE}
|
||||||
else
|
|
||||||
[[ "$WIFI_IFACE" == "$INTERNET_IFACE" ]] && die "You can not share your connection from the same interface if you are using --no-virt option."
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
can_transmit_to_channel ${WIFI_IFACE} ${CHANNEL} || die "Your adapter can not transmit to channel ${CHANNEL}."
|
can_transmit_to_channel ${WIFI_IFACE} ${CHANNEL} || die "Your adapter can not transmit to channel ${CHANNEL}."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user