start.sh 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. #!/bin/sh
  2. DIR="$( cd "$( dirname "$0" )" && pwd )"
  3. WPAS=$DIR/../../wpa_supplicant/wpa_supplicant
  4. WPACLI=$DIR/../../wpa_supplicant/wpa_cli
  5. HAPD=$DIR/../../hostapd/hostapd
  6. HAPD_AS=$DIR/../../hostapd/hostapd
  7. HAPDCLI=$DIR/../../hostapd/hostapd_cli
  8. WLANTEST=$DIR/../../wlantest/wlantest
  9. HLR_AUC_GW=$DIR/../../hostapd/hlr_auc_gw
  10. DATE="$(date +%s)"
  11. if [ -z "$LOGDIR" ] ; then
  12. LOGDIR="$DIR/logs/$DATE"
  13. mkdir -p $LOGDIR
  14. else
  15. if [ -e $LOGDIR/alt-wpa_supplicant/wpa_supplicant/wpa_supplicant ]; then
  16. WPAS=$LOGDIR/alt-wpa_supplicant/wpa_supplicant/wpa_supplicant
  17. # extra code coverage
  18. $WPAS > /dev/null 2>&1
  19. $WPAS -efoo -Ifoo -mfoo -ofoo -Ofoo -pfoo -Pfoo -h > /dev/null 2>&1
  20. $WPAS -bfoo -B -Cfoo -q -W -N -L > /dev/null 2>&1
  21. $WPAS -T -v > /dev/null 2>&1
  22. $WPAS -u -z > /dev/null 2>&1
  23. fi
  24. if [ -e $LOGDIR/alt-hostapd/hostapd/hostapd ]; then
  25. HAPD=$LOGDIR/alt-hostapd/hostapd/hostapd
  26. # extra code coverage
  27. $HAPD > /dev/null 2>&1
  28. $HAPD -v > /dev/null 2>&1
  29. $HAPD -B -efoo -Pfoo -T -bfoo -h > /dev/null 2>&1
  30. $HAPD -ufoo > /dev/null 2>&1
  31. $HAPD -u00:11:22:33:44:55 > /dev/null 2>&1
  32. $HAPD -gfoo > /dev/null 2>&1
  33. $HAPD -Gfoo-not-exists > /dev/null 2>&1
  34. $HAPD -z > /dev/null 2>&1
  35. fi
  36. if [ -e $LOGDIR/alt-hostapd-as/hostapd/hostapd ]; then
  37. HAPD_AS=$LOGDIR/alt-hostapd-as/hostapd/hostapd
  38. fi
  39. if [ -e $LOGDIR/alt-hlr_auc_gw/hostapd/hlr_auc_gw ]; then
  40. HLR_AUC_GW=$LOGDIR/alt-hlr_auc_gw/hostapd/hlr_auc_gw
  41. # extra code coverage
  42. $HLR_AUC_GW > /dev/null 2>&1
  43. $HLR_AUC_GW -Dfoo -i7 -sfoo -h > /dev/null 2>&1
  44. $HLR_AUC_GW -i100 > /dev/null 2>&1
  45. $HLR_AUC_GW -z > /dev/null 2>&1
  46. fi
  47. fi
  48. if test -w "$DIR/logs" ; then
  49. rm -rf $DIR/logs/current
  50. ln -sf $DATE $DIR/logs/current
  51. fi
  52. if groups | tr ' ' "\n" | grep -q ^admin$; then
  53. GROUP=admin
  54. else
  55. GROUP=adm
  56. fi
  57. for i in 0 1 2; do
  58. sed "s/ GROUP=.*$/ GROUP=$GROUP/" "$DIR/p2p$i.conf" > "$LOGDIR/p2p$i.conf"
  59. done
  60. sed "s/group=admin/group=$GROUP/" "$DIR/auth_serv/as.conf" > "$LOGDIR/as.conf"
  61. sed "s/group=admin/group=$GROUP/;s%LOGDIR%$LOGDIR%" "$DIR/auth_serv/as2.conf" > "$LOGDIR/as2.conf"
  62. if [ "$1" = "valgrind" ]; then
  63. VALGRIND=y
  64. VALGRIND_WPAS="valgrind --log-file=$LOGDIR/valgrind-wlan%d"
  65. VALGRIND_HAPD="valgrind --log-file=$LOGDIR/valgrind-hostapd"
  66. chmod -f a+rx $WPAS
  67. chmod -f a+rx $HAPD
  68. chmod -f a+rx $HAPD_AS
  69. HAPD_AS="valgrind --log-file=$LOGDIR/valgrind-auth-serv $HAPD_AS"
  70. shift
  71. else
  72. unset VALGRIND
  73. VALGRIND_WPAS=
  74. VALGRIND_HAPD=
  75. fi
  76. if [ "$1" = "trace" ]; then
  77. TRACE="T"
  78. shift
  79. else
  80. TRACE=""
  81. fi
  82. $DIR/stop.sh
  83. TMP=$1
  84. if [ x${TMP%=[0-9]*} = "xchannels" ]; then
  85. NUM_CH=${TMP#channels=}
  86. shift
  87. else
  88. NUM_CH=1
  89. fi
  90. test -f /proc/modules && sudo modprobe mac80211_hwsim radios=6 channels=$NUM_CH support_p2p_device=0
  91. sudo ifconfig hwsim0 up
  92. sudo $WLANTEST -i hwsim0 -n $LOGDIR/hwsim0.pcapng -c -dt -L $LOGDIR/hwsim0 &
  93. for i in 0 1 2; do
  94. sudo $(printf -- "$VALGRIND_WPAS" $i) $WPAS -g /tmp/wpas-wlan$i -G$GROUP -Dnl80211 -iwlan$i -c $LOGDIR/p2p$i.conf \
  95. -ddKt$TRACE -f $LOGDIR/log$i &
  96. done
  97. sudo $(printf -- "$VALGRIND_WPAS" 5) $WPAS -g /tmp/wpas-wlan5 -G$GROUP \
  98. -ddKt$TRACE -f $LOGDIR/log5 &
  99. sudo $VALGRIND_HAPD $HAPD -ddKt$TRACE -g /var/run/hostapd-global -G $GROUP -ddKt -f $LOGDIR/hostapd &
  100. if [ -x $HLR_AUC_GW ]; then
  101. cp $DIR/auth_serv/hlr_auc_gw.milenage_db $LOGDIR/hlr_auc_gw.milenage_db
  102. sudo $HLR_AUC_GW -u -m $LOGDIR/hlr_auc_gw.milenage_db -g $DIR/auth_serv/hlr_auc_gw.gsm > $LOGDIR/hlr_auc_gw &
  103. fi
  104. touch $LOGDIR/hostapd.db
  105. sudo $HAPD_AS -ddKt $LOGDIR/as.conf $LOGDIR/as2.conf > $LOGDIR/auth_serv &
  106. # wait for programs to be fully initialized
  107. for i in 0 1 2 3 4 5 6 7 8 9; do
  108. if [ -e /tmp/wpas-wlan0 ]; then
  109. break
  110. fi
  111. sleep 0.05
  112. done
  113. for i in 0 1 2; do
  114. for j in `seq 1 10`; do
  115. if $WPACLI -g /tmp/wpas-wlan$i ping | grep -q PONG; then
  116. break
  117. fi
  118. if [ $j = "10" ]; then
  119. echo "Could not connect to /tmp/wpas-wlan$i"
  120. exit 1
  121. fi
  122. sleep 1
  123. done
  124. done
  125. for j in `seq 1 10`; do
  126. if $WPACLI -g /var/run/hostapd-global ping | grep -q PONG; then
  127. break
  128. fi
  129. if [ $j = "10" ]; then
  130. echo "Could not connect to /var/run/hostapd-global"
  131. exit 1
  132. fi
  133. sleep 1
  134. done
  135. for j in `seq 1 10`; do
  136. if $HAPDCLI -i as ping | grep -q PONG; then
  137. break
  138. fi
  139. if [ $j = "10" ]; then
  140. echo "Could not connect to hostapd-as-RADIUS-server"
  141. exit 1
  142. fi
  143. sleep 1
  144. done
  145. if [ $USER = "0" -o $USER = "root" ]; then
  146. exit 0
  147. fi
  148. sleep 0.75
  149. sudo chown -f $USER $LOGDIR/hwsim0.pcapng $LOGDIR/hwsim0 $LOGDIR/log* $LOGDIR/hostapd
  150. if [ "x$VALGRIND" = "xy" ]; then
  151. sudo chown -f $USER $LOGDIR/*valgrind*
  152. fi
  153. exit 0