Upstream vwifi v7.0 (Raizo62/vwifi @ 4a9842e)
Unmodified upstream source from https://github.com/Raizo62/vwifi Commit: 4a9842e "CMakeLists.txt : VERSION = 7.0" Simulator of WiFi (802.11) interfaces to communicate between several Virtual Machines via mac80211_hwsim + TCP relay. License: Apache-2.0
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
#!/bin/bash
|
||||
|
||||
MODE="d" # dhcp , s : static
|
||||
INET="wlan1"
|
||||
CONN="o" # wpa : w , open : o
|
||||
|
||||
WPA_CONF_FILE_PATH="tests/wpa_supplicant.conf"
|
||||
IP="10.0.0.2/8"
|
||||
|
||||
help(){
|
||||
|
||||
echo "Help : $0 -m s|d -c o|w interface IP_STATIC/MASQUE"
|
||||
|
||||
echo " -m : IP Configuration mode"
|
||||
echo " d : dhcp "
|
||||
echo " s : static"
|
||||
|
||||
echo " -c : Connection mode"
|
||||
echo " o : open "
|
||||
echo " w : wpa"
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (( $# == 0 ))
|
||||
then
|
||||
|
||||
help
|
||||
exit 1
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
while getopts "m:c:" option ; do
|
||||
|
||||
case $option in
|
||||
|
||||
m) MODE="${OPTARG}"
|
||||
;;
|
||||
|
||||
c) CONN="${OPTARG}"
|
||||
;;
|
||||
|
||||
*) help
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
shift $(($OPTIND - 1))
|
||||
|
||||
INET=$1
|
||||
IP="$2"
|
||||
|
||||
|
||||
#######################
|
||||
|
||||
if [ $CONN == "w" ] ; then
|
||||
|
||||
wpa_supplicant -Dnl80211 -i ${INET} -c ${WPA_CONF_FILE_PATH} &
|
||||
|
||||
else
|
||||
ip link set up ${INET}
|
||||
iw dev ${INET} connect mac80211_open
|
||||
|
||||
|
||||
fi
|
||||
|
||||
sleep 3
|
||||
|
||||
if [ ${MODE} == "s" ] ; then
|
||||
|
||||
ip a a ${IP} dev wlan0
|
||||
else
|
||||
dhclient -v -i ${INET}
|
||||
|
||||
fi
|
||||
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script : fast-vwifi-update
|
||||
# Ecris par : David Ansart
|
||||
# Ecris pour : Live Raizo / http://live-raizo.sourceforge.net
|
||||
# But : Mettre à jour vwifi-server avec les positions des VMs dans GNS3
|
||||
|
||||
LOGIN=user
|
||||
PASSWORD=user
|
||||
SERVER=localhost
|
||||
|
||||
CERROR='\e[0;1;31m' # Rouge
|
||||
SansCouleur='\e[0;m'
|
||||
|
||||
OptionVWifiQEmu=vwifi0
|
||||
|
||||
if [ -z "$(pgrep -xf '/usr/bin/python3 /usr/bin/gns3.*')" ]
|
||||
then
|
||||
>&2 echo -e "${CERROR}Error: Your GNS3 project must be open !!!${SansCouleur}"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if [ -z "$(pgrep 'vwifi-server')" ]
|
||||
then
|
||||
>&2 echo -e "${CERROR}Error: vwifi-server is not started !!!${SansCouleur}"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# récupère l'identifiant du projet
|
||||
IdProjet=$(wget -q --user="$LOGIN" --password="$PASSWORD" "http://${SERVER}:3080/v2/projects" -O - | jq -M -r --unbuffered '.[] | select (.status=="opened") | .project_id')
|
||||
if [ -z "${IdProjet}" ]
|
||||
then
|
||||
>&2 echo -e "${CERROR}Error: No project is open !!!${SansCouleur}"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# récupère la configuration du projet
|
||||
ConfigProjectGNS3="$(mktemp fast-vwifi-update.XXXXXXXXXX --tmpdir=/tmp)"
|
||||
wget -q --user="$LOGIN" --password="$PASSWORD" "http://${SERVER}:3080/v2/projects/${IdProjet}/nodes" -O "${ConfigProjectGNS3}"
|
||||
|
||||
NbValue=0
|
||||
VMWithWifi=false
|
||||
|
||||
IFS=$'\n'
|
||||
for line in $(jq -M '.[] | select (.node_type=="qemu") | {name: .name, x: .x, y: .y, z: .z , option: .command_line} ' "${ConfigProjectGNS3}")
|
||||
do
|
||||
if [[ "${line}" =~ ^[[:space:]]+\"name\":.* ]]
|
||||
then
|
||||
((NbValue++))
|
||||
# attention au decallage du print (?)
|
||||
Name=$(echo "${line}" | awk -F '[:, ]' '{print $5}' | tr -d '"' )
|
||||
elif [[ "${line}" =~ ^[[:space:]]+\"x\":.* ]]
|
||||
then
|
||||
((NbValue++))
|
||||
# attention au decallage du print (?)
|
||||
X=$(echo "${line}" | awk -F '[:, ]' '{print $5}')
|
||||
elif [[ "${line}" =~ ^[[:space:]]+\"y\":.* ]]
|
||||
then
|
||||
((NbValue++))
|
||||
# attention au decallage du print (?)
|
||||
Y=$(echo "${line}" | awk -F '[:, ]' '{print $5}')
|
||||
elif [[ "${line}" =~ ^[[:space:]]+\"z\":.* ]]
|
||||
then
|
||||
((NbValue++))
|
||||
# attention au decallage du print (?)
|
||||
Z=$(echo "${line}" | awk -F '[:, ]' '{print $5}')
|
||||
elif [[ "${line}" =~ ^[[:space:]]+\"option\":.* ]]
|
||||
then
|
||||
((NbValue++))
|
||||
CID=$(echo "${line}" | grep -E -o 'id='${OptionVWifiQEmu}',guest-cid=[[:digit:]]+' | sed 's/id='${OptionVWifiQEmu}',guest-cid=//')
|
||||
if [ -n "${CID}" ]
|
||||
then
|
||||
VMWithWifi=true
|
||||
fi
|
||||
fi
|
||||
|
||||
if (( NbValue == 5 ))
|
||||
then
|
||||
NbValue=0
|
||||
if ${VMWithWifi}
|
||||
then
|
||||
echo "${CID}" "(${Name})" "${X}" "${Y}" "${Z}"
|
||||
vwifi-ctrl setname "${CID}" "${Name}" > /dev/null
|
||||
vwifi-ctrl set "${CID}" "${X}" "${Y}" "${Z}" > /dev/null
|
||||
VMWithWifi=false
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
rm -f "${ConfigProjectGNS3}"
|
||||
@@ -0,0 +1,49 @@
|
||||
#!/bin/bash
|
||||
|
||||
FOLDER_VWIFI='/hosthome/vwifi'
|
||||
|
||||
DEFAULT_PREFIX_MAC_ADDRESS='74:F8:F6'
|
||||
|
||||
# -------------------
|
||||
|
||||
cd "${FOLDER_VWIFI}"
|
||||
|
||||
if (( $# == 0 ))
|
||||
then
|
||||
NbrWifi=2
|
||||
else
|
||||
NbrWifi="$1"
|
||||
fi
|
||||
|
||||
if [ -e /sys/module/mac80211_hwsim ]
|
||||
then
|
||||
OldNbrWifi=$(cat /sys/module/mac80211_hwsim/parameters/radios)
|
||||
if (( NbrWifi != OldNbrWifi ))
|
||||
then
|
||||
modprobe -r mac80211_hwsim
|
||||
fi
|
||||
fi
|
||||
|
||||
modprobe mac80211_hwsim radios=0
|
||||
|
||||
hexchars="0123456789ABCDEF"
|
||||
middle=$( for i in {1..4} ; do echo -n ${hexchars:$(( $RANDOM % 16 )):1} ; done | sed -e 's/\(..\)/:\1/g' )
|
||||
MAC_ADDRESS="${DEFAULT_PREFIX_MAC_ADDRESS}${middle}"
|
||||
|
||||
./vwifi-add-interfaces "${NbrWifi}" "${MAC_ADDRESS}"
|
||||
|
||||
if [ "$(tty)" = '/dev/ttyS0' ]
|
||||
then
|
||||
# In Console Mode -> Tmux can be usefull
|
||||
if [ -v TMUX ]
|
||||
then
|
||||
# Already in tmux
|
||||
./vwifi-client
|
||||
else
|
||||
tmux new-session -s vwifi "bash --rcfile <(echo '. ~/.bashrc; ./vwifi-client')" ; detach &> /dev/null
|
||||
|
||||
tmux attach -t vwifi
|
||||
fi
|
||||
else
|
||||
./vwifi-client
|
||||
fi
|
||||
Reference in New Issue
Block a user