1
0

04-wireless 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #!/bin/sh
  2. set -e
  3. [ "${IFACE%%[0-9]*}" = "wlan" ] || exit 0
  4. [ "$IF_WIRELESS_SSID" ] || exit 1
  5. [ "$IF_WIRELESS_CHANNEL" ] || exit 1
  6. [ "$IF_WIRELESS_HWMODE" ] || IF_WIRELESS_HWMODE=g
  7. [ "$IF_WIRELESS_EXTENSION" ] || IF_WIRELESS_EXTENSION=0
  8. rfkill unblock wlan 2>/dev/null
  9. wpa=0
  10. wpa1=0
  11. wpa2=0
  12. case "$IF_WIRELESS_SECURITY" in
  13. none)
  14. sec=1
  15. ;;
  16. wep)
  17. sec=2
  18. ;;
  19. wpa)
  20. sec=1
  21. wpa1=1
  22. ;;
  23. wpa2)
  24. sec=1
  25. wpa2=1
  26. ;;
  27. wpa+wpa2)
  28. sec=1
  29. wpa=1
  30. ;;
  31. *)
  32. sec=1
  33. ;;
  34. esac
  35. case "$IF_WIRELESS_MODE" in
  36. ap)
  37. logger -t hostap "Creating hostapd configuration"
  38. cat /etc/hostapd.conf > /tmp/hostapd.conf
  39. chmod 600 /tmp/hostapd.conf
  40. echo "interface=${IFACE}" >> /tmp/hostapd.conf
  41. echo "ssid=$IF_WIRELESS_SSID" >> /tmp/hostapd.conf
  42. echo "channel=$IF_WIRELESS_CHANNEL" >> /tmp/hostapd.conf
  43. echo "hw_mode=$IF_WIRELESS_HWMODE" >> /tmp/hostapd.conf
  44. echo "auth_algs=$sec" >> /tmp/hostapd.conf
  45. [ $wpa -eq 0 ] && [ $wpa1 -eq 0 ] && [ $wpa2 -eq 0 ] && {
  46. logger -t hostap "using no security mechanism"
  47. echo "wpa=0" >> /tmp/hostapd.conf
  48. }
  49. [ $wpa1 -eq 1 ] && {
  50. logger -t hostap "using WPA for security"
  51. echo "wpa=1" >> /tmp/hostapd.conf
  52. echo "wpa_key_mgmt=WPA-PSK" >> /tmp/hostapd.conf
  53. echo "wpa_pairwise=TKIP" >> /tmp/hostapd.conf
  54. echo "wpa_passphrase=$IF_WIRELESS_PASSPHRASE" >> /tmp/hostapd.conf
  55. }
  56. [ $wpa2 -eq 1 ] && {
  57. logger -t hostap "using WPA2 for security"
  58. echo "wpa=2" >> /tmp/hostapd.conf
  59. echo "wpa_key_mgmt=WPA-PSK" >> /tmp/hostapd.conf
  60. echo "rsn_pairwise=CCMP" >> /tmp/hostapd.conf
  61. echo "wpa_passphrase=$IF_WIRELESS_PASSPHRASE" >> /tmp/hostapd.conf
  62. }
  63. [ $wpa -eq 1 ] && {
  64. logger -t hostap "using WPA and WPA2 for security"
  65. echo "wpa=3" >> /tmp/hostapd.conf
  66. echo "wpa_key_mgmt=WPA-PSK" >> /tmp/hostapd.conf
  67. echo "wpa_pairwise=TKIP" >> /tmp/hostapd.conf
  68. echo "rsn_pairwise=CCMP" >> /tmp/hostapd.conf
  69. echo "wpa_passphrase=$IF_WIRELESS_PASSPHRASE" >> /tmp/hostapd.conf
  70. }
  71. ;;
  72. sta)
  73. ip link set up dev ${IFACE}
  74. [ $IF_WIRELESS_EXTENSION -eq 1 ] && {
  75. [ -x /usr/sbin/iwconfig ] || {
  76. logger -t wireless "No wireless-tools found"
  77. exit 1
  78. }
  79. driver=wext
  80. iwconfig ${IFACE} essid $IF_WIRELESS_SSID
  81. } || {
  82. [ -x /usr/sbin/iw ] || {
  83. logger -t wireless "No iw utility found"
  84. exit 1
  85. }
  86. driver=nl80211
  87. [ $sec -eq 2 ] && {
  88. iw dev ${IFACE} connect $IF_WIRELESS_SSID key d:0:$IF_WIRELESS_PASSPHRASE
  89. } || {
  90. iw dev ${IFACE} connect $IF_WIRELESS_SSID
  91. }
  92. }
  93. [ $wpa2 -eq 1 ] && {
  94. [ -x /usr/sbin/wpa_supplicant ] || {
  95. logger -t wireless "No wpa_supplicant found"
  96. exit 1
  97. }
  98. touch /tmp/wpa_supplicant.conf
  99. chmod 600 /tmp/wpa_supplicant.conf
  100. echo "network={" > /tmp/wpa_supplicant.conf
  101. echo " ssid=\"$IF_WIRELESS_SSID\"" >> /tmp/wpa_supplicant.conf
  102. echo " psk=\"$IF_WIRELESS_PASSPHRASE\"" >> /tmp/wpa_supplicant.conf
  103. echo " priority=5" >> /tmp/wpa_supplicant.conf
  104. echo "}" >> /tmp/wpa_supplicant.conf
  105. wpa_supplicant -B -D${driver} -i${IFACE} -c/tmp/wpa_supplicant.conf
  106. }
  107. ;;
  108. *)
  109. echo "Unknown operation mode $IF_WIRELESS_MODE given!"
  110. exit 1
  111. ;;
  112. esac
  113. exit 0