04-wireless 2.9 KB

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