04-wireless 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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. [ -x /usr/sbin/hostapd ] || {
  37. logger -t hostap "No hostapd program found"
  38. exit 1
  39. }
  40. logger -t hostap "Creating hostapd configuration"
  41. cat /etc/hostapd.conf > /tmp/hostapd.conf
  42. chmod 600 /tmp/hostapd.conf
  43. echo "interface=${IFACE}" >> /tmp/hostapd.conf
  44. echo "ssid=$IF_WIRELESS_SSID" >> /tmp/hostapd.conf
  45. echo "channel=$IF_WIRELESS_CHANNEL" >> /tmp/hostapd.conf
  46. echo "hw_mode=$IF_WIRELESS_HWMODE" >> /tmp/hostapd.conf
  47. echo "auth_algs=$sec" >> /tmp/hostapd.conf
  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. logger -t hostap "Starting hostapd"
  71. hostapd -B /tmp/hostapd.conf
  72. ;;
  73. sta)
  74. [ -x /usr/sbin/iw ] || {
  75. logger -t wireless "No iw utility found"
  76. exit 1
  77. }
  78. ip link set up dev ${IFACE}
  79. iw dev ${IFACE} set channel $IF_WIRELESS_CHANNEL
  80. iw dev ${IFACE} connect $IF_WIRELESS_SSID
  81. [ $wpa2 -eq 1 ] && {
  82. [ -x /usr/sbin/wpa_supplicant ] || {
  83. logger -t wireless "No wpa_supplicant found"
  84. exit 1
  85. }
  86. touch /tmp/wpa_supplicant.conf
  87. chmod 600 /tmp/wpa_supplicant.conf
  88. echo "network={" > /tmp/wpa_supplicant.conf
  89. echo " ssid=\"$IF_WIRELESS_SSID\"" >> /tmp/wpa_supplicant.conf
  90. echo " psk=\"$IF_WIRELESS_PASSPHRASE\"" >> /tmp/wpa_supplicant.conf
  91. echo " priority=5" >> /tmp/wpa_supplicant.conf
  92. echo "}" >> /tmp/wpa_supplicant.conf
  93. wpa_supplicant -B -Dnl80211 -i${IFACE} -c/tmp/wpa_supplicant.conf
  94. }
  95. ;;
  96. *)
  97. echo "Unknown operation mode $IF_WIRELESS_MODE given!"
  98. exit 1
  99. ;;
  100. esac
  101. exit 0