04-wireless 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #!/bin/sh
  2. set -e
  3. [ "${IFACE%%[0-9]*}" = "wlan" ] || exit 0
  4. [ "$IF_WIRELESS_SSID" ] || exit 1
  5. [ "$IF_WIRELESS_HWMODE" ] || IF_WIRELESS_HWMODE=g
  6. [ "$IF_WIRELESS_EXTENSION" ] || IF_WIRELESS_EXTENSION=0
  7. [ -x /usr/sbin/rfkill ] && rfkill unblock wlan 2>/dev/null
  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 ] && [ $wpa1 -eq 0 ] && [ $wpa2 -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. [ $sec -eq 2 ] && {
  87. iw dev ${IFACE} connect $IF_WIRELESS_SSID key d:0:$IF_WIRELESS_PASSPHRASE
  88. } || {
  89. iw dev ${IFACE} connect $IF_WIRELESS_SSID
  90. }
  91. }
  92. [ $wpa2 -eq 1 ] && {
  93. [ -x /usr/sbin/wpa_supplicant ] || {
  94. logger -t wireless "No wpa_supplicant found"
  95. exit 1
  96. }
  97. touch /tmp/wpa_supplicant.conf
  98. chmod 600 /tmp/wpa_supplicant.conf
  99. echo "network={" > /tmp/wpa_supplicant.conf
  100. echo " ssid=\"$IF_WIRELESS_SSID\"" >> /tmp/wpa_supplicant.conf
  101. echo " psk=\"$IF_WIRELESS_PASSPHRASE\"" >> /tmp/wpa_supplicant.conf
  102. echo " priority=5" >> /tmp/wpa_supplicant.conf
  103. echo "}" >> /tmp/wpa_supplicant.conf
  104. wpa_supplicant -B -D${driver} -i${IFACE} -P/var/run/wpa_supplicant.pid -c/tmp/wpa_supplicant.conf
  105. }
  106. ;;
  107. *)
  108. echo "Unknown operation mode $IF_WIRELESS_MODE given!"
  109. exit 1
  110. ;;
  111. esac
  112. exit 0